@splinetool/loader 0.9.117 → 0.9.119

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,14 +1,14 @@
1
- var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDescriptor;var fh=Object.getOwnPropertyNames;var mh=Object.getPrototypeOf,hh=Object.prototype.hasOwnProperty;var Ic=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Lc=(n,t)=>{for(var e in t)rs(n,e,{get:t[e],enumerable:!0})},Oc=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fh(t))!hh.call(n,o)&&o!==e&&rs(n,o,{get:()=>t[o],enumerable:!(r=dh(t,o))||r.enumerable});return n};var Mc=(n,t,e)=>(e=n!=null?ph(mh(n)):{},Oc(t||!n||!n.__esModule?rs(e,"default",{value:n,enumerable:!0}):e,n)),gh=n=>Oc(rs({},"__esModule",{value:!0}),n);var Pm=Ic((Va,Nm)=>{(function(n,t){typeof Va=="object"&&typeof Nm<"u"?t(Va):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Va,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,c,p,l,u,d,f,m,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],D=[],w=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(w).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var L,T=new Array(v).fill(0);for(y=0;y<A;y++)for(s=0;s<v;s++)b[y][s]=t[y][s];for(y=0;y<v;y++){for(S[y]=d,m=0,c=y+1,s=y;s<A;s++)m+=Math.pow(b[s][y],2);if(m<i)d=0;else for(f=(u=b[y][y])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y]=u-d,s=c;s<v;s++){for(m=0,a=y;a<A;a++)m+=b[a][y]*b[a][s];for(u=m/f,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[y][s],2);if(m<i)d=0;else{for(f=(u=b[y][y+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y+1]=u-d,s=c;s<v;s++)S[s]=b[y][s]/f;for(s=c;s<A;s++){for(m=0,a=c;a<v;a++)m+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+m*S[a]}}h<(g=Math.abs(T[y])+Math.abs(S[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(f=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/f;for(s=c;s<v;s++){for(m=0,a=c;a<v;a++)m+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+m*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=S[y],c=y}if(e){if(e==="f")for(y=v;y<A;y++){for(s=v;s<A;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=T[y],s=c;s<w;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<w;s++){for(m=0,a=c;a<A;a++)m+=b[a][y]*b[a][s];for(u=m/f,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(L=!1,c=a;0<=c;c--){if(Math.abs(S[c])<=o){L=!0;break}if(Math.abs(T[c-1])<=o)break}if(!L){for(l=0,p=c-(m=1),y=c;y<a+1&&(u=m*S[y],S[y]=l*S[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(f=T[y]),m=-u/f,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*m,b[s][y]=-g*m+x*l}if(x=T[a],c===a){if(x<0&&(T[a]=-x,r))for(s=0;s<v;s++)D[s][a]=-D[s][a];break}for(h=T[c],u=(((g=T[a-1])-x)*(g+x)+((d=S[a-1])-(f=S[a]))*(d+f))/(2*f*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(g/(u<0?u-d:u+d)-f))/h,y=c+(m=l=1);y<a+1;y++){if(d=S[y],g=T[y],f=m*d,d*=l,x=Math.sqrt(u*u+f*f),u=h*(l=u/(S[y-1]=x))+d*(m=f/x),d=-h*m+d*l,f=g*m,g*=l,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*l+x*m,D[s][y]=-h*m+x*l;if(x=Math.sqrt(u*u+f*f),u=(l=u/(T[y-1]=x))*d+(m=f/x)*g,h=-m*d+l*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*l+x*m,b[s][y]=-g*m+x*l}S[c]=0,S[a]=u,T[a]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var km=Ic(Ua=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||t;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||t;if(l=parseFloat(l),u.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return u}return u._volume},mute:function(l){var u=this||t;u.ctx||p(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return u},stop:function(){for(var l=this||t,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||t,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,p()),l},codecs:function(l){return(this||t)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||t;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||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var d=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,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,x=f.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return l._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,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:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&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||t;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(d){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(),g=0;g<h.length;g++){var x=l._howls[m]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}l._autoResume();var v=l.ctx.createBufferSource();v.buffer=l._scratchBuffer,v.connect(l.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),v.onended=function(){v.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 A=0;A<l._howls.length;A++)l._howls[A]._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||t;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||t;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var d=0;d<l._howls[u]._sounds.length;d++)if(!l._howls[u]._sounds[d]._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"||!t.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 t=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 t.ctx||p(),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=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._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(t.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var d=0;d<l._src.length;d++){var f,m;if(l._format&&l._format[d])f=l._format[d];else{if(m=l._src[d],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&&t.codecs(f)){u=l._src[d];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 r(l),l._webAudio&&i(l),l},play:function(l,u){var d=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&d._state==="loaded"&&!d._sprite[l])return null;if(typeof l>"u"&&(l="__default",!d._playLock)){for(var m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?l=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!l&&(l=g._sprite||"__default"),d._state!=="loaded"){g._sprite=l,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(f&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[l][0]/1e3),A=Math.max(0,(d._sprite[l][0]+d._sprite[l][1])/1e3-v),S=A*1e3/Math.abs(g._rate),b=d._sprite[l][0]/1e3,D=(d._sprite[l][0]+d._sprite[l][1])/1e3;g._sprite=l,g._ended=!1;var w=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[l][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var L=function(){d._playLock=!1,w(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,v,86400):y.bufferSource.noteGrainOn(0,v,A):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,A),S!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?L():(d._playLock=!0,d.once("resume",L),d._clearTimer(g._id))}else{var T=function(){y.currentTime=v,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,w(),N.then(function(){d._playLock=!1,y._unlocked=!0,u?d._loadQueue():d._emit("play",g._id)}).catch(function(){d._playLock=!1,d._emit("playerror",g._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."),g._ended=!0,g._paused=!0})):u||(d._playLock=!1,w(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._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"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(k){d._emit("playerror",g._id,k)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var I=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||I)T();else{d._playLock=!0,d._state="loading";var C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),d._clearTimer(g._id)}}return g._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 d=u._getSoundIds(l),f=0;f<d.length;f++){u._clearTimer(d[f]);var m=u._soundById(d[f]);if(m&&!m._paused&&(m._seek=u.seek(d[f]),m._rateSeek=0,m._paused=!0,u._stopFade(d[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 d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(l)}}),d;for(var f=d._getSoundIds(l),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._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&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(l,u)}}),d;if(typeof u>"u")if(typeof l=="boolean")d._muted=l;else return d._muted;for(var f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=l,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:l),d._emit("mute",h._id))}return d},volume:function(){var l=this,u=arguments,d,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):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=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=d),f=l._getSoundIds(f);for(var x=0;x<f.length;x++)g=l._soundById(f[x]),g&&(g._volume=d,u[2]||l._stopFade(f[x]),l._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),l._emit("volume",g._id))}else return g=f?l._soundById(f):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,u,d,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(l,f);for(var h=m._getSoundIds(f),g=0;g<h.length;g++){var x=m._soundById(h[g]);if(x){if(f||m._stopFade(h[g]),m._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=l,x._node.gain.setValueAtTime(l,v),x._node.gain.linearRampToValueAtTime(u,A)}m._startFadeInterval(x,l,u,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(l,u,d,f,m,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),S=Math.max(4,A>0?f/A:f),b=Date.now();l._fadeTo=d,l._interval=setInterval(function(){var D=(Date.now()-b)/f;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?l._volume=x:g.volume(x,l._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,g.volume(d,l._id),g._emit("fade",l._id))},S)},_stopFade:function(l){var u=this,d=u._soundById(l);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,l),d._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,d,f,m;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return m=l._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=l._getSoundIds(f),g=0;g<h.length;g++)m=l._soundById(h[g]),m&&(m._loop=d,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[g])&&(l.pause(h[g],!0),l.play(h[g],!0)))));return l},rate:function(){var l=this,u=arguments,d,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):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var g;if(typeof d=="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=d),f=l._getSoundIds(f);for(var x=0;x<f.length;x++)if(g=l._soundById(f[x]),g){l.playing(f[x])&&(g._rateSeek=l.seek(f[x]),g._playStart=l._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,l._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=l.seek(f[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,S=A*1e3/Math.abs(g._rate);(l._endTimers[f[x]]||!g._paused)&&(l._clearTimer(f[x]),l._endTimers[f[x]]=setTimeout(l._ended.bind(l,g),S)),l._emit("rate",g._id)}}else return g=l._soundById(f),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,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,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var g=l._soundById(f);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(f);x&&l.pause(f,!0),g._seek=d,g._ended=!1,l._clearTimer(f),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(f,!0),l._emit("seek",f)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var S=l.playing(f)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+S*Math.abs(g._rate))}else return g._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var d=u._soundById(l);return d?!d._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,d=u._duration,f=u._soundById(l);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,d=0;d<u.length;d++)u[d]._paused||l.stop(u[d]._id),l._webAudio||(l._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,l._clearTimer(u[d]._id);var f=t._howls.indexOf(l);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,f){var m=this,h=m["_on"+l];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(l,u,d){var f=this,m=f["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var g=d===m[h].id;if(u===m[h].fn&&g||!u&&g){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var x=Object.keys(f);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(f[x[h]])&&(f[x[h]]=[])}return f},once:function(l,u,d){var f=this;return f.on(l,u,d,1),f},_emit:function(l,u,d){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(g){g.call(this,u,d)}.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 d=u._queue[0];d.event===l&&(u._queue.shift(),u._loadQueue()),l||d.action()}return u},_ended:function(l){var u=this,d=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[d][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=t.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),t._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 d=u._soundById(l);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,d=0;d<u._sounds.length;d++)if(l===u._sounds[d]._id)return u._sounds[d];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 r(l)},_drain:function(){var l=this,u=l._pool,d=0,f=0;if(!(l._sounds.length<u)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&d++;for(f=l._sounds.length-1;f>=0;f--){if(d<=u)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=t.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,t.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),d))try{l.bufferSource.buffer=t._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(l){this._parent=l,this.init()};r.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=++t._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,d=t._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),l._node.gain.setValueAtTime(d,t.ctx.currentTime),l._node.paused=!0,l._node.connect(t.masterGain)):t.noAudio||(l._node=t._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(t._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=d*t.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=++t._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(t._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 d=atob(u.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.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(g){h.setRequestHeader(g,l._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="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 d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(l).then(f).catch(d):t.ctx.decodeAudioData(l,f,d)},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())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(l&&d&&d<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Ua<"u"&&(Ua.Howler=t,Ua.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],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(t,e,r,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,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")a._orientation=[t,e,r,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,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(t,e,r,o,i,s);else return c;return a},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._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},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),s=0;s<i.length;s++){var a=r._soundById(i[s]);if(a)if(typeof t=="number")a._stereo=t,a._pos=[t,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(t,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(t,0,0):a._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",a._id);else return a._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];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 t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];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 t=="number")c._orientation=[t,e,r],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(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),a=0;a<s.length;a++)if(i=t._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var ew={};Lc(ew,{default:()=>ja});module.exports=gh(ew);var ka=require("three");function os(n,t){return Object.setPrototypeOf(n,t),n}function Dc(n){return Array.isArray(n)?n:[n]}var yh=typeof global=="object"&&global&&global.Object===Object&&global,ns=yh;var xh=typeof self=="object"&&self&&self.Object===Object&&self,vh=ns||xh||Function("return this")(),Xe=vh;var bh=Xe.Symbol,gt=bh;var Bc=Object.prototype,Sh=Bc.hasOwnProperty,wh=Bc.toString,$n=gt?gt.toStringTag:void 0;function _h(n){var t=Sh.call(n,$n),e=n[$n];try{n[$n]=void 0;var r=!0}catch{}var o=wh.call(n);return r&&(t?n[$n]=e:delete n[$n]),o}var Ec=_h;var Th=Object.prototype,Ah=Th.toString;function Ch(n){return Ah.call(n)}var Gc=Ch;var Nh="[object Null]",Ph="[object Undefined]",Rc=gt?gt.toStringTag:void 0;function Ih(n){return n==null?n===void 0?Ph:Nh:Rc&&Rc in Object(n)?Ec(n):Gc(n)}var Bt=Ih;function Lh(n){return n!=null&&typeof n=="object"}var dt=Lh;var Oh="[object Symbol]";function Mh(n){return typeof n=="symbol"||dt(n)&&Bt(n)==Oh}var Vo=Mh;function Dh(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var is=Dh;var Bh=Array.isArray,Fe=Bh;var Eh=1/0,Fc=gt?gt.prototype:void 0,Vc=Fc?Fc.toString:void 0;function zc(n){if(typeof n=="string")return n;if(Fe(n))return is(n,zc)+"";if(Vo(n))return Vc?Vc.call(n):"";var t=n+"";return t=="0"&&1/n==-Eh?"-0":t}var Uc=zc;function Gh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Ze=Gh;function Rh(n){return n}var ss=Rh;var Fh="[object AsyncFunction]",Vh="[object Function]",zh="[object GeneratorFunction]",Uh="[object Proxy]";function jh(n){if(!Ze(n))return!1;var t=Bt(n);return t==Vh||t==zh||t==Fh||t==Uh}var zo=jh;var kh=Xe["__core-js_shared__"],as=kh;var jc=function(){var n=/[^.]+$/.exec(as&&as.keys&&as.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Hh(n){return!!jc&&jc in n}var kc=Hh;var Wh=Function.prototype,qh=Wh.toString;function $h(n){if(n!=null){try{return qh.call(n)}catch{}try{return n+""}catch{}}return""}var Or=$h;var Xh=/[\\^$.*+?()[\]{}|]/g,Yh=/^\[object .+?Constructor\]$/,Kh=Function.prototype,Qh=Object.prototype,Zh=Kh.toString,Jh=Qh.hasOwnProperty,eg=RegExp("^"+Zh.call(Jh).replace(Xh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tg(n){if(!Ze(n)||kc(n))return!1;var t=zo(n)?eg:Yh;return t.test(Or(n))}var Hc=tg;function rg(n,t){return n?.[t]}var Wc=rg;function og(n,t){var e=Wc(n,t);return Hc(e)?e:void 0}var _t=og;var ng=_t(Xe,"WeakMap"),ls=ng;var qc=Object.create,ig=function(){function n(){}return function(t){if(!Ze(t))return{};if(qc)return qc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),$c=ig;function sg(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Xc=sg;function ag(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var cs=ag;var lg=800,cg=16,ug=Date.now;function pg(n){var t=0,e=0;return function(){var r=ug(),o=cg-(r-e);if(e=r,o>0){if(++t>=lg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Yc=pg;function dg(n){return function(){return n}}var Kc=dg;var fg=function(){try{var n=_t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Uo=fg;var mg=Uo?function(n,t){return Uo(n,"toString",{configurable:!0,enumerable:!1,value:Kc(t),writable:!0})}:ss,Qc=mg;var hg=Yc(Qc),us=hg;function gg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Zc=gg;var yg=9007199254740991,xg=/^(?:0|[1-9]\d*)$/;function vg(n,t){var e=typeof n;return t=t??yg,!!t&&(e=="number"||e!="symbol"&&xg.test(n))&&n>-1&&n%1==0&&n<t}var jr=vg;function bg(n,t,e){t=="__proto__"&&Uo?Uo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var jo=bg;function Sg(n,t){return n===t||n!==n&&t!==t}var kr=Sg;var wg=Object.prototype,_g=wg.hasOwnProperty;function Tg(n,t,e){var r=n[t];(!(_g.call(n,t)&&kr(r,e))||e===void 0&&!(t in n))&&jo(n,t,e)}var ko=Tg;function Ag(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],c=r?r(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?jo(e,a,c):ko(e,a,c)}return e}var zt=Ag;var Jc=Math.max;function Cg(n,t,e){return t=Jc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Jc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Xc(n,this,a)}}var ps=Cg;function Ng(n,t){return us(ps(n,t,ss),n+"")}var eu=Ng;var Pg=9007199254740991;function Ig(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Pg}var Ho=Ig;function Lg(n){return n!=null&&Ho(n.length)&&!zo(n)}var Hr=Lg;function Og(n,t,e){if(!Ze(e))return!1;var r=typeof t;return(r=="number"?Hr(e)&&jr(t,e.length):r=="string"&&t in e)?kr(e[t],n):!1}var tu=Og;function Mg(n){return eu(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&tu(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var ru=Mg;var Dg=Object.prototype;function Bg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Dg;return n===e}var Wo=Bg;function Eg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var ou=Eg;var Gg="[object Arguments]";function Rg(n){return dt(n)&&Bt(n)==Gg}var Wa=Rg;var nu=Object.prototype,Fg=nu.hasOwnProperty,Vg=nu.propertyIsEnumerable,zg=Wa(function(){return arguments}())?Wa:function(n){return dt(n)&&Fg.call(n,"callee")&&!Vg.call(n,"callee")},Mr=zg;function Ug(){return!1}var iu=Ug;var lu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,su=lu&&typeof module=="object"&&module&&!module.nodeType&&module,jg=su&&su.exports===lu,au=jg?Xe.Buffer:void 0,kg=au?au.isBuffer:void 0,Hg=kg||iu,qo=Hg;var Wg="[object Arguments]",qg="[object Array]",$g="[object Boolean]",Xg="[object Date]",Yg="[object Error]",Kg="[object Function]",Qg="[object Map]",Zg="[object Number]",Jg="[object Object]",ey="[object RegExp]",ty="[object Set]",ry="[object String]",oy="[object WeakMap]",ny="[object ArrayBuffer]",iy="[object DataView]",sy="[object Float32Array]",ay="[object Float64Array]",ly="[object Int8Array]",cy="[object Int16Array]",uy="[object Int32Array]",py="[object Uint8Array]",dy="[object Uint8ClampedArray]",fy="[object Uint16Array]",my="[object Uint32Array]",Me={};Me[sy]=Me[ay]=Me[ly]=Me[cy]=Me[uy]=Me[py]=Me[dy]=Me[fy]=Me[my]=!0;Me[Wg]=Me[qg]=Me[ny]=Me[$g]=Me[iy]=Me[Xg]=Me[Yg]=Me[Kg]=Me[Qg]=Me[Zg]=Me[Jg]=Me[ey]=Me[ty]=Me[ry]=Me[oy]=!1;function hy(n){return dt(n)&&Ho(n.length)&&!!Me[Bt(n)]}var cu=hy;function gy(n){return function(t){return n(t)}}var $o=gy;var uu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xn=uu&&typeof module=="object"&&module&&!module.nodeType&&module,yy=Xn&&Xn.exports===uu,qa=yy&&ns.process,xy=function(){try{var n=Xn&&Xn.require&&Xn.require("util").types;return n||qa&&qa.binding&&qa.binding("util")}catch{}}(),Dr=xy;var pu=Dr&&Dr.isTypedArray,vy=pu?$o(pu):cu,ds=vy;var by=Object.prototype,Sy=by.hasOwnProperty;function wy(n,t){var e=Fe(n),r=!e&&Mr(n),o=!e&&!r&&qo(n),i=!e&&!r&&!o&&ds(n),s=e||r||o||i,a=s?ou(n.length,String):[],c=a.length;for(var p in n)(t||Sy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||jr(p,c)))&&a.push(p);return a}var fs=wy;function _y(n,t){return function(e){return n(t(e))}}var ms=_y;var Ty=ms(Object.keys,Object),du=Ty;var Ay=Object.prototype,Cy=Ay.hasOwnProperty;function Ny(n){if(!Wo(n))return du(n);var t=[];for(var e in Object(n))Cy.call(n,e)&&e!="constructor"&&t.push(e);return t}var fu=Ny;function Py(n){return Hr(n)?fs(n):fu(n)}var Xo=Py;function Iy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var mu=Iy;var Ly=Object.prototype,Oy=Ly.hasOwnProperty;function My(n){if(!Ze(n))return mu(n);var t=Wo(n),e=[];for(var r in n)r=="constructor"&&(t||!Oy.call(n,r))||e.push(r);return e}var hu=My;function Dy(n){return Hr(n)?fs(n,!0):hu(n)}var sr=Dy;var By=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ey=/^\w*$/;function Gy(n,t){if(Fe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Vo(n)?!0:Ey.test(n)||!By.test(n)||t!=null&&n in Object(t)}var gu=Gy;var Ry=_t(Object,"create"),Br=Ry;function Fy(){this.__data__=Br?Br(null):{},this.size=0}var yu=Fy;function Vy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var xu=Vy;var zy="__lodash_hash_undefined__",Uy=Object.prototype,jy=Uy.hasOwnProperty;function ky(n){var t=this.__data__;if(Br){var e=t[n];return e===zy?void 0:e}return jy.call(t,n)?t[n]:void 0}var vu=ky;var Hy=Object.prototype,Wy=Hy.hasOwnProperty;function qy(n){var t=this.__data__;return Br?t[n]!==void 0:Wy.call(t,n)}var bu=qy;var $y="__lodash_hash_undefined__";function Xy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Br&&t===void 0?$y:t,this}var Su=Xy;function Yo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Yo.prototype.clear=yu;Yo.prototype.delete=xu;Yo.prototype.get=vu;Yo.prototype.has=bu;Yo.prototype.set=Su;var $a=Yo;function Yy(){this.__data__=[],this.size=0}var wu=Yy;function Ky(n,t){for(var e=n.length;e--;)if(kr(n[e][0],t))return e;return-1}var Wr=Ky;var Qy=Array.prototype,Zy=Qy.splice;function Jy(n){var t=this.__data__,e=Wr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Zy.call(t,e,1),--this.size,!0}var _u=Jy;function ex(n){var t=this.__data__,e=Wr(t,n);return e<0?void 0:t[e][1]}var Tu=ex;function tx(n){return Wr(this.__data__,n)>-1}var Au=tx;function rx(n,t){var e=this.__data__,r=Wr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Cu=rx;function Ko(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Ko.prototype.clear=wu;Ko.prototype.delete=_u;Ko.prototype.get=Tu;Ko.prototype.has=Au;Ko.prototype.set=Cu;var qr=Ko;var ox=_t(Xe,"Map"),$r=ox;function nx(){this.size=0,this.__data__={hash:new $a,map:new($r||qr),string:new $a}}var Nu=nx;function ix(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Pu=ix;function sx(n,t){var e=n.__data__;return Pu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Xr=sx;function ax(n){var t=Xr(this,n).delete(n);return this.size-=t?1:0,t}var Iu=ax;function lx(n){return Xr(this,n).get(n)}var Lu=lx;function cx(n){return Xr(this,n).has(n)}var Ou=cx;function ux(n,t){var e=Xr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Mu=ux;function Qo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Qo.prototype.clear=Nu;Qo.prototype.delete=Iu;Qo.prototype.get=Lu;Qo.prototype.has=Ou;Qo.prototype.set=Mu;var Yn=Qo;var px="Expected a function";function Xa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(px);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(Xa.Cache||Yn),e}Xa.Cache=Yn;var Du=Xa;var dx=500;function fx(n){var t=Du(n,function(r){return e.size===dx&&e.clear(),r}),e=t.cache;return t}var Bu=fx;var mx=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hx=/\\(\\)?/g,gx=Bu(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(mx,function(e,r,o,i){t.push(o?i.replace(hx,"$1"):r||e)}),t}),Eu=gx;function yx(n){return n==null?"":Uc(n)}var Gu=yx;function xx(n,t){return Fe(n)?n:gu(n,t)?[n]:Eu(Gu(n))}var Ut=xx;var vx=1/0;function bx(n){if(typeof n=="string"||Vo(n))return n;var t=n+"";return t=="0"&&1/n==-vx?"-0":t}var Yr=bx;function Sx(n,t){t=Ut(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Yr(t[e++])];return e&&e==r?n:void 0}var hs=Sx;function wx(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Zo=wx;var Ru=gt?gt.isConcatSpreadable:void 0;function _x(n){return Fe(n)||Mr(n)||!!(Ru&&n&&n[Ru])}var Fu=_x;function Vu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Fu),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Vu(a,t-1,e,r,o):Zo(o,a):r||(o[o.length]=a)}return o}var zu=Vu;function Tx(n){var t=n==null?0:n.length;return t?zu(n,1):[]}var Uu=Tx;function Ax(n){return us(ps(n,void 0,Uu),n+"")}var gs=Ax;var Cx=ms(Object.getPrototypeOf,Object),Jo=Cx;var Nx="[object Object]",Px=Function.prototype,Ix=Object.prototype,ju=Px.toString,Lx=Ix.hasOwnProperty,Ox=ju.call(Object);function Mx(n){if(!dt(n)||Bt(n)!=Nx)return!1;var t=Jo(n);if(t===null)return!0;var e=Lx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&ju.call(e)==Ox}var ys=Mx;function Dx(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var ku=Dx;function Bx(){this.__data__=new qr,this.size=0}var Hu=Bx;function Ex(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Wu=Ex;function Gx(n){return this.__data__.get(n)}var qu=Gx;function Rx(n){return this.__data__.has(n)}var $u=Rx;var Fx=200;function Vx(n,t){var e=this.__data__;if(e instanceof qr){var r=e.__data__;if(!$r||r.length<Fx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Yn(r)}return e.set(n,t),this.size=e.size,this}var Xu=Vx;function en(n){var t=this.__data__=new qr(n);this.size=t.size}en.prototype.clear=Hu;en.prototype.delete=Wu;en.prototype.get=qu;en.prototype.has=$u;en.prototype.set=Xu;var xs=en;function zx(n,t){return n&&zt(t,Xo(t),n)}var Yu=zx;function Ux(n,t){return n&&zt(t,sr(t),n)}var Ku=Ux;var ep=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qu=ep&&typeof module=="object"&&module&&!module.nodeType&&module,jx=Qu&&Qu.exports===ep,Zu=jx?Xe.Buffer:void 0,Ju=Zu?Zu.allocUnsafe:void 0;function kx(n,t){if(t)return n.slice();var e=n.length,r=Ju?Ju(e):new n.constructor(e);return n.copy(r),r}var vs=kx;function Hx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var tp=Hx;function Wx(){return[]}var bs=Wx;var qx=Object.prototype,$x=qx.propertyIsEnumerable,rp=Object.getOwnPropertySymbols,Xx=rp?function(n){return n==null?[]:(n=Object(n),tp(rp(n),function(t){return $x.call(n,t)}))}:bs,tn=Xx;function Yx(n,t){return zt(n,tn(n),t)}var op=Yx;var Kx=Object.getOwnPropertySymbols,Qx=Kx?function(n){for(var t=[];n;)Zo(t,tn(n)),n=Jo(n);return t}:bs,Ss=Qx;function Zx(n,t){return zt(n,Ss(n),t)}var np=Zx;function Jx(n,t,e){var r=t(n);return Fe(n)?r:Zo(r,e(n))}var ws=Jx;function e0(n){return ws(n,Xo,tn)}var ip=e0;function t0(n){return ws(n,sr,Ss)}var _s=t0;var r0=_t(Xe,"DataView"),Ts=r0;var o0=_t(Xe,"Promise"),As=o0;var n0=_t(Xe,"Set"),Cs=n0;var sp="[object Map]",i0="[object Object]",ap="[object Promise]",lp="[object Set]",cp="[object WeakMap]",up="[object DataView]",s0=Or(Ts),a0=Or($r),l0=Or(As),c0=Or(Cs),u0=Or(ls),go=Bt;(Ts&&go(new Ts(new ArrayBuffer(1)))!=up||$r&&go(new $r)!=sp||As&&go(As.resolve())!=ap||Cs&&go(new Cs)!=lp||ls&&go(new ls)!=cp)&&(go=function(n){var t=Bt(n),e=t==i0?n.constructor:void 0,r=e?Or(e):"";if(r)switch(r){case s0:return up;case a0:return sp;case l0:return ap;case c0:return lp;case u0:return cp}return t});var rn=go;var p0=Object.prototype,d0=p0.hasOwnProperty;function f0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&d0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var pp=f0;var m0=Xe.Uint8Array,Ya=m0;function h0(n){var t=new n.constructor(n.byteLength);return new Ya(t).set(new Ya(n)),t}var on=h0;function g0(n,t){var e=t?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var dp=g0;var y0=/\w*$/;function x0(n){var t=new n.constructor(n.source,y0.exec(n));return t.lastIndex=n.lastIndex,t}var fp=x0;var mp=gt?gt.prototype:void 0,hp=mp?mp.valueOf:void 0;function v0(n){return hp?Object(hp.call(n)):{}}var gp=v0;function b0(n,t){var e=t?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ns=b0;var S0="[object Boolean]",w0="[object Date]",_0="[object Map]",T0="[object Number]",A0="[object RegExp]",C0="[object Set]",N0="[object String]",P0="[object Symbol]",I0="[object ArrayBuffer]",L0="[object DataView]",O0="[object Float32Array]",M0="[object Float64Array]",D0="[object Int8Array]",B0="[object Int16Array]",E0="[object Int32Array]",G0="[object Uint8Array]",R0="[object Uint8ClampedArray]",F0="[object Uint16Array]",V0="[object Uint32Array]";function z0(n,t,e){var r=n.constructor;switch(t){case I0:return on(n);case S0:case w0:return new r(+n);case L0:return dp(n,e);case O0:case M0:case D0:case B0:case E0:case G0:case R0:case F0:case V0:return Ns(n,e);case _0:return new r;case T0:case N0:return new r(n);case A0:return fp(n);case C0:return new r;case P0:return gp(n)}}var yp=z0;function U0(n){return typeof n.constructor=="function"&&!Wo(n)?$c(Jo(n)):{}}var Ps=U0;var j0="[object Map]";function k0(n){return dt(n)&&rn(n)==j0}var xp=k0;var vp=Dr&&Dr.isMap,H0=vp?$o(vp):xp,bp=H0;var W0="[object Set]";function q0(n){return dt(n)&&rn(n)==W0}var Sp=q0;var wp=Dr&&Dr.isSet,$0=wp?$o(wp):Sp,_p=$0;var X0=1,Y0=2,K0=4,Tp="[object Arguments]",Q0="[object Array]",Z0="[object Boolean]",J0="[object Date]",ev="[object Error]",Ap="[object Function]",tv="[object GeneratorFunction]",rv="[object Map]",ov="[object Number]",Cp="[object Object]",nv="[object RegExp]",iv="[object Set]",sv="[object String]",av="[object Symbol]",lv="[object WeakMap]",cv="[object ArrayBuffer]",uv="[object DataView]",pv="[object Float32Array]",dv="[object Float64Array]",fv="[object Int8Array]",mv="[object Int16Array]",hv="[object Int32Array]",gv="[object Uint8Array]",yv="[object Uint8ClampedArray]",xv="[object Uint16Array]",vv="[object Uint32Array]",Le={};Le[Tp]=Le[Q0]=Le[cv]=Le[uv]=Le[Z0]=Le[J0]=Le[pv]=Le[dv]=Le[fv]=Le[mv]=Le[hv]=Le[rv]=Le[ov]=Le[Cp]=Le[nv]=Le[iv]=Le[sv]=Le[av]=Le[gv]=Le[yv]=Le[xv]=Le[vv]=!0;Le[ev]=Le[Ap]=Le[lv]=!1;function Is(n,t,e,r,o,i){var s,a=t&X0,c=t&Y0,p=t&K0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Ze(n))return n;var l=Fe(n);if(l){if(s=pp(n),!a)return cs(n,s)}else{var u=rn(n),d=u==Ap||u==tv;if(qo(n))return vs(n,a);if(u==Cp||u==Tp||d&&!o){if(s=c||d?{}:Ps(n),!a)return c?np(n,Ku(s,n)):op(n,Yu(s,n))}else{if(!Le[u])return o?n:{};s=yp(n,u,a)}}i||(i=new xs);var f=i.get(n);if(f)return f;i.set(n,s),_p(n)?n.forEach(function(g){s.add(Is(g,t,e,g,n,i))}):bp(n)&&n.forEach(function(g,x){s.set(x,Is(g,t,e,x,n,i))});var m=p?c?_s:ip:c?sr:Xo,h=l?void 0:m(n);return Zc(h||n,function(g,x){h&&(x=g,g=n[x]),ko(s,x,Is(g,t,e,x,n,i))}),s}var Ls=Is;var bv=1,Sv=4;function wv(n){return Ls(n,bv|Sv)}var Kn=wv;function _v(n,t){return n!=null&&t in Object(n)}var Np=_v;function Tv(n,t,e){t=Ut(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Yr(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&Ho(o)&&jr(s,o)&&(Fe(n)||Mr(n)))}var Pp=Tv;function Av(n,t){return n!=null&&Pp(n,t,Np)}var Ip=Av;function Cv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var c=s[n?a:++o];if(e(i[c],c,i)===!1)break}return t}}var Lp=Cv;var Nv=Lp(),Op=Nv;function Pv(n,t,e){(e!==void 0&&!kr(n[t],e)||e===void 0&&!(t in n))&&jo(n,t,e)}var Qn=Pv;function Iv(n){return dt(n)&&Hr(n)}var Mp=Iv;function Lv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Zn=Lv;function Ov(n){return zt(n,sr(n))}var Dp=Ov;function Mv(n,t,e,r,o,i,s){var a=Zn(n,e),c=Zn(t,e),p=s.get(c);if(p){Qn(n,e,p);return}var l=i?i(a,c,e+"",n,t,s):void 0,u=l===void 0;if(u){var d=Fe(c),f=!d&&qo(c),m=!d&&!f&&ds(c);l=c,d||f||m?Fe(a)?l=a:Mp(a)?l=cs(a):f?(u=!1,l=vs(c,!0)):m?(u=!1,l=Ns(c,!0)):l=[]:ys(c)||Mr(c)?(l=a,Mr(a)?l=Dp(a):(!Ze(a)||zo(a))&&(l=Ps(c))):u=!1}u&&(s.set(c,l),o(l,c,r,i,s),s.delete(c)),Qn(n,e,l)}var Bp=Mv;function Ep(n,t,e,r,o){n!==t&&Op(t,function(i,s){if(o||(o=new xs),Ze(i))Bp(n,t,s,e,Ep,r,o);else{var a=r?r(Zn(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Qn(n,s,a)}},sr)}var Gp=Ep;function Dv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Rp=Dv;function Bv(n,t){return t.length<2?n:hs(n,ku(t,0,-1))}var Fp=Bv;var Ev=ru(function(n,t,e){Gp(n,t,e)}),yo=Ev;function Gv(n,t){return t=Ut(t,n),n=Fp(n,t),n==null||delete n[Yr(Rp(t))]}var Vp=Gv;function Rv(n){return ys(n)?void 0:n}var zp=Rv;var Fv=1,Vv=2,zv=4,Uv=gs(function(n,t){var e={};if(n==null)return e;var r=!1;t=is(t,function(i){return i=Ut(i,n),r||(r=i.length>1),i}),zt(n,_s(n),e),r&&(e=Ls(e,Fv|Vv|zv,zp));for(var o=t.length;o--;)Vp(e,t[o]);return e}),nn=Uv;function jv(n,t,e,r){if(!Ze(n))return n;t=Ut(t,n);for(var o=-1,i=t.length,s=i-1,a=n;a!=null&&++o<i;){var c=Yr(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];p=r?r(l,c,a):void 0,p===void 0&&(p=Ze(l)?l:jr(t[o+1])?[]:{})}ko(a,c,p),a=a[c]}return n}var Up=jv;function kv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],a=hs(n,s);e(a,s)&&Up(i,Ut(s,n),a)}return i}var jp=kv;function Hv(n,t){return jp(n,t,function(e,r){return Ip(n,r)})}var kp=Hv;var Wv=gs(function(n,t){return n==null?{}:kp(n,t)}),Ka=Wv;var sn;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(sn||(sn={}));var xo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(xo||(xo={}));var Hp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(Hp||(Hp={}));var an;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(an||(an={}));var Wp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(Wp||(Wp={}));var Kr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var c=0,p=s.length;c<p;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=r})(Kr||(Kr={}));var Tt;(c=>{c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,l){return p.r===l.r&&p.g===l.g&&p.b===l.b}c.equals=s;function a(p,l,u){return{r:p.r+(l.r-p.r)*u,g:p.g+(l.g-p.g)*u,b:p.b+(l.b-p.b)*u}}c.lerp=a})(Tt||(Tt={}));var Et;(a=>{a.white={...Tt.white,a:1},a.transparent={...Tt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function r(c,p){return{...Tt.fromHex(c),a:p}}a.fromHexAndA=r;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,p){return Tt.equals(c,p)&&c.a===p.a}a.equals=i;function s(c,p,l){return{r:c.r+(p.r-c.r)*l,g:c.g+(p.g-c.g)*l,b:c.b+(p.b-c.b)*l,a:c.a+(p.a-c.a)*l}}a.lerp=s})(Et||(Et={}));var Os;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Os||(Os={}));var qp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(qp||(qp={}));var $p;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})($p||($p={}));var Ms;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(Ms||(Ms={}));var Ye=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Ye.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,a={...e,[i]:s};return Object.setPrototypeOf(a,Ye.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ye.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Jn(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Jn(r)}return Object.freeze(n)}function Xp(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Ds=class extends Error{};function ar(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function vo(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 Yp(){return typeof process<"u"}function Kp(n,t){for(let e of n)t(e.id,e.data),Kp(e.children,t)}function Qp(n,t){t(n.id,n.data);for(let e of n.children)Qp(e,t)}var At=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,At.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Jn(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);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)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)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,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Qp(o,r)}}traverse(e){Kp(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,r){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:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(l=>l.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:a}}Object.setPrototypeOf(i,At.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)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return p=[...p,l],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(l),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(p=>p.id===r);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:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Ds("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=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:d,id:i}}}previous(e,r){if(r===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===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Xp(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return ar(0,o,o);{let s=i[0].fi;return ar(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==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 ar(c,c+o,o)}else return ar(s.fi,a.fi,o)}}};var Bs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(Bs||(Bs={}));var De=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,De.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Jn(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,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,De.prototype);let r=e;return Yp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((p,l)=>p.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);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:r,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:r};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 r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return ar(0,r,r);{let i=o[0].fi;return ar(i-r,i,r)}}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 ar(a,a+r,r)}else return ar(i.fi,s.fi,r)}}};var Er=class{unusedFun(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;)e.push(r),r=r===void 0?void 0:r[t.path[o]],o+=1;r={...r};for(let[c,p]of Object.entries(t.props)){let l=r[c];i[c]=l,p===void 0?delete r[c]:r[c]=p}for(;o>0;)Object.keys(r).length===0?(r={...e[o-1]},delete r[t.path[o-1]]):r={...e[o-1],[t.path[o-1]]:r},o-=1;let s=Object.setPrototypeOf(r,Er.prototype),a={...t,props:i};return{data:s,actual:t,reverse:a}}},Zp;(e=>{function n(r,o){return ei(r,o)??r}e.apply=n;function t(r,o){if(o.type===0){let i=bo.zoom(r,o.path);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||vo(i))return;if(i&&typeof i=="object"){let s={...o.props};for(let a of Object.keys(i))delete s[a];return{...o,props:s}}else return}else if(o.type===1||o.type===4||o.type===7){let i=bo.zoom(r,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||vo(i))return;if(i&&typeof i=="object"){let s={...o.data,...i};return{...o,data:s}}else return}else return o}e.filterOp=t})(Zp||(Zp={}));function Jp(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=ei(o.data,t[i]);e=e||s!==void 0,s===void 0&&(s=o.data);let a=Jp(o.children,t);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}});if(e)return r}function qv(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=ei(o.data,t[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ei(n,t){if(t!==void 0)if(n instanceof At){let e=Jp(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof De)return qv(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let s=ei(o,t[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let s=ei(i,t[o]);r=r||s!==void 0,s===void 0&&(s=i),e[o]=s}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}else return t??n}}var ed=Symbol(),ti=Symbol(),So=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof Es);){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,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ti];r&&r(),delete this._children[t]}}}},Za=class extends So{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,Bs.runOp(this._current,t),t.path)}},Ja=class extends So{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Ye.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},td={get(n,t){if(t===ti)return()=>{n._parent=null};if(t===ed)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=Gs(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t 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,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},$v={...td,set(n,t,e){let r={type:0,props:{[t]:Xt(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},Xv={...td,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},ln=class extends So{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ti]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=Gs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},el=class extends So{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r,this[ti]=()=>{this._parent=null}}feedOp(t){let{path:e,...r}=t;this.reportOp(r,this._current.runOp(t),e)}},cn=class extends So{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ti]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=Gs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Qa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&bo.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var Es=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Qa(this.ts,e,t),Qa(this.actual,r,t),Qa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Gs(n,t,e){return e instanceof At?new ln(n,t,e):e instanceof De?new cn(n,t,e):e instanceof Er?new el(n,t,e):e instanceof Ye?new Proxy(new Ja(n,t,e),Xv):e!==null&&typeof e=="object"?vo(e)?e:new Proxy(new Za(n,t,e),$v):e}function tl(n){let t=new Es(n);return[Gs(t,"",n),t]}function rl(n,t){let[e,r]=tl(n);return t(e),r.result()}function Xt(n){return n instanceof ln||n instanceof cn?n._current:n!==null&&typeof n=="object"?n[ed]:n}var bo;(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 t(i,s,a){let c=r(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let p={...s};return Object.keys(c).forEach(l=>{delete p[l]}),p}else return s}o.removeOverridden=t;function e(i,s){if((i instanceof At||i instanceof ln)&&typeof s=="string")return i.data(s);if((i instanceof De||i instanceof cn)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object")return i[s]}o.zoomOnce=e;function r(i,s,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=r})(bo||(bo={}));var Rs=class{},ri=class extends Rs{constructor(e){super();this.id=e}},oi=class extends Rs{constructor(e){super();this.data=e}};var nl;try{nl=new TextDecoder}catch{}var te,Zr,_=0;var cd=[],il=cd,sl=0,Ct={},we,Qr,jt=0,lr=0,Gt,Gr,yt=[],Ne,rd={useRecords:!1,mapsAsObjects:!0},ni=class{},ll=new ni;ll.name="MessagePack 0xC1";var un=!1,cr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return md(()=>(Vs(),this?this.unpack(t,e):cr.prototype.unpack.call(rd,t,e)));Zr=e>-1?e:t.length,_=0,sl=0,lr=0,Qr=null,il=cd,Gt=null,te=t;try{Ne=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof cr){if(Ct=this,this.structures)return we=this.structures,Fs();(!we||we.length>0)&&(we=[])}else Ct=rd,(!we||we.length>0)&&(we=[]);return Fs()}unpackMultiple(t,e){let r,o=0;try{un=!0;let i=t.length,s=this?this.unpack(t,i):js.unpack(t,i);if(e){for(e(s);_<i;)if(o=_,e(Fs())===!1)return}else{for(r=[s];_<i;)o=_,r.push(Fs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{un=!1,Vs()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Fs(){try{if(!Ct.trusted&&!un){let t=we.sharedLength||0;t<we.length&&(we.length=t)}let n=Ve();if(_==Zr)we.restoreStructures&&od(),we=null,te=null,Gr&&(Gr=null);else if(_>Zr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!un)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&od(),Vs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function od(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Ve(){let n=te[_++];if(n<160)if(n<128){if(n<64)return n;{let t=we[n&63]||Ct.getStructures&&ud()[n&63];return t?(t.read||(t.read=cl(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Ct.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[dd()]=Ve();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ve(),Ve());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ve();return t}else if(n<192){let t=n-160;if(lr>=_)return Qr.slice(_-jt,(_+=t)-jt);if(lr==0&&Zr<140){let e=t<16?ul(t):pd(t);if(e!=null)return e}return al(t)}else{let t;switch(n){case 192:return null;case 193:return Gt?(t=Ve(),t>0?Gt[1].slice(Gt.position1,Gt.position1+=t):Gt[0].slice(Gt.position0,Gt.position0-=t)):ll;case 194:return!1;case 195:return!0;case 196:return ol(te[_++]);case 197:return t=Ne.getUint16(_),_+=2,ol(t);case 198:return t=Ne.getUint32(_),_+=4,ol(t);case 199:return wo(te[_++]);case 200:return t=Ne.getUint16(_),_+=2,wo(t);case 201:return t=Ne.getUint32(_),_+=4,wo(t);case 202:if(t=Ne.getFloat32(_),Ct.useFloat32>2){let e=Us[(te[_]&127)<<1|te[_+1]>>7];return _+=4,(e*t+(t>0?.5:-.5)>>0)/e}return _+=4,t;case 203:return t=Ne.getFloat64(_),_+=8,t;case 204:return te[_++];case 205:return t=Ne.getUint16(_),_+=2,t;case 206:return t=Ne.getUint32(_),_+=4,t;case 207:return Ct.int64AsNumber?(t=Ne.getUint32(_)*4294967296,t+=Ne.getUint32(_+4)):t=Ne.getBigUint64(_),_+=8,t;case 208:return Ne.getInt8(_++);case 209:return t=Ne.getInt16(_),_+=2,t;case 210:return t=Ne.getInt32(_),_+=4,t;case 211:return Ct.int64AsNumber?(t=Ne.getInt32(_)*4294967296,t+=Ne.getUint32(_+4)):t=Ne.getBigInt64(_),_+=8,t;case 212:if(t=te[_++],t==114)return ld(te[_++]&63);{let e=yt[t];if(e)return e.read?(_++,e.read(Ve())):e.noBuffer?(_++,e()):e(te.subarray(_,++_));throw new Error("Unknown extension "+t)}case 213:return t=te[_],t==114?(_++,ld(te[_++]&63,te[_++])):wo(2);case 214:return wo(4);case 215:return wo(8);case 216:return wo(16);case 217:return t=te[_++],lr>=_?Qr.slice(_-jt,(_+=t)-jt):Kv(t);case 218:return t=Ne.getUint16(_),_+=2,lr>=_?Qr.slice(_-jt,(_+=t)-jt):Qv(t);case 219:return t=Ne.getUint32(_),_+=4,lr>=_?Qr.slice(_-jt,(_+=t)-jt):Zv(t);case 220:return t=Ne.getUint16(_),_+=2,id(t);case 221:return t=Ne.getUint32(_),_+=4,id(t);case 222:return t=Ne.getUint16(_),_+=2,sd(t);case 223:return t=Ne.getUint32(_),_+=4,sd(t);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 Yv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function cl(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Yv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ve);return n.highByte===0&&(n.read=nd(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Ve()}return r}return e.count=0,n.highByte===0?nd(t,e):e}var nd=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=we[r]||ud()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=cl(o,n)),o.read()};function ud(){let n=md(()=>(te=null,Ct.getStructures()));return we=Ct._mergeStructures(n,we)}var al=zs,Kv=zs,Qv=zs,Zv=zs;function zs(n){let t;if(n<16&&(t=ul(n)))return t;if(n>64&&nl)return nl.decode(te.subarray(_,_+=n));let e=_+n,r=[];for(t="";_<e;){let o=te[_++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[_++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[_++]&63,s=te[_++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[_++]&63,s=te[_++]&63,a=te[_++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=nt.apply(String,r),r.length=0)}return r.length>0&&(t+=nt.apply(String,r)),t}function id(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ve();return t}function sd(n){if(Ct.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[dd()]=Ve();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ve(),Ve());return t}}var nt=String.fromCharCode;function pd(n){let t=_,e=new Array(n);for(let r=0;r<n;r++){let o=te[_++];if((o&128)>0){_=t;return}e[r]=o}return nt.apply(String,e)}function ul(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[_++];if((t&128)>1){_-=1;return}return nt(t)}}else{let t=te[_++],e=te[_++];if((t&128)>0||(e&128)>0){_-=2;return}if(n<3)return nt(t,e);let r=te[_++];if((r&128)>0){_-=3;return}return nt(t,e,r)}else{let t=te[_++],e=te[_++],r=te[_++],o=te[_++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){_-=4;return}if(n<6){if(n===4)return nt(t,e,r,o);{let i=te[_++];if((i&128)>0){_-=5;return}return nt(t,e,r,o,i)}}else if(n<8){let i=te[_++],s=te[_++];if((i&128)>0||(s&128)>0){_-=6;return}if(n<7)return nt(t,e,r,o,i,s);let a=te[_++];if((a&128)>0){_-=7;return}return nt(t,e,r,o,i,s,a)}else{let i=te[_++],s=te[_++],a=te[_++],c=te[_++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){_-=8;return}if(n<10){if(n===8)return nt(t,e,r,o,i,s,a,c);{let p=te[_++];if((p&128)>0){_-=9;return}return nt(t,e,r,o,i,s,a,c,p)}}else if(n<12){let p=te[_++],l=te[_++];if((p&128)>0||(l&128)>0){_-=10;return}if(n<11)return nt(t,e,r,o,i,s,a,c,p,l);let u=te[_++];if((u&128)>0){_-=11;return}return nt(t,e,r,o,i,s,a,c,p,l,u)}else{let p=te[_++],l=te[_++],u=te[_++],d=te[_++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){_-=12;return}if(n<14){if(n===12)return nt(t,e,r,o,i,s,a,c,p,l,u,d);{let f=te[_++];if((f&128)>0){_-=13;return}return nt(t,e,r,o,i,s,a,c,p,l,u,d,f)}}else{let f=te[_++],m=te[_++];if((f&128)>0||(m&128)>0){_-=14;return}if(n<15)return nt(t,e,r,o,i,s,a,c,p,l,u,d,f,m);let h=te[_++];if((h&128)>0){_-=15;return}return nt(t,e,r,o,i,s,a,c,p,l,u,d,f,m,h)}}}}}function ol(n){return Ct.copyBuffers?Uint8Array.prototype.slice.call(te,_,_+=n):te.subarray(_,_+=n)}function wo(n){let t=te[_++];if(yt[t])return yt[t](te.subarray(_,_+=n));throw new Error("Unknown extension type "+t)}var ad=new Array(4096);function dd(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,lr>=_)return Qr.slice(_-jt,(_+=n)-jt);if(!(lr==0&&Zr<180))return al(n)}else return _--,Ve();let t=(n<<5^(n>1?Ne.getUint16(_):n>0?te[_]:0))&4095,e=ad[t],r=_,o=_+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ne.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return _=r,e.string;o-=3,r=_}for(e=[],ad[t]=e,e.bytes=n;r<o;)i=Ne.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let a=n<16?ul(n):pd(n);return a!=null?e.string=a:e.string=al(n)}var ld=(n,t)=>{var e=Ve();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=cl(e,r),e.read()},fd=typeof self=="object"?self:global;yt[0]=()=>{};yt[0].noBuffer=!0;yt[101]=()=>{let n=Ve();return(fd[n[0]]||Error)(n[1])};yt[105]=n=>{let t=Ne.getUint32(_-4);Gr||(Gr=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Gr.set(t,o);let i=Ve();return o.used?Object.assign(r,i):(o.target=i,i)};yt[112]=n=>{let t=Ne.getUint32(_-4),e=Gr.get(t);return e.used=!0,e.target};yt[115]=()=>new Set(Ve());var pl=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");yt[116]=n=>{let t=n[0],e=pl[t];if(!e)throw new Error("Could not find typed array for code "+t);return new fd[e](Uint8Array.prototype.slice.call(n,1).buffer)};yt[120]=()=>{let n=Ve();return new RegExp(n[0],n[1])};yt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=_;_+=t-4,Gt=[Ve(),Ve()],Gt.position0=0,Gt.position1=0;let r=_;_=e;try{return Ve()}finally{_=r}};yt[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 md(n){let t=Zr,e=_,r=sl,o=jt,i=lr,s=Qr,a=il,c=Gr,p=Gt,l=new Uint8Array(te.slice(0,Zr)),u=we,d=we.slice(0,we.length),f=Ct,m=un,h=n();return Zr=t,_=e,sl=r,jt=o,lr=i,Qr=s,il=a,Gr=c,Gt=p,te=l,un=m,we=u,we.splice(0,we.length,...d),Ct=f,Ne=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function Vs(){te=null,Gr=null,we=null}function hd(n){n.unpack?yt[n.type]=n.unpack:yt[n.type]=n}var Us=new Array(147);for(let n=0;n<256;n++)Us[n]=+("1e"+Math.floor(45.15-n*.30103));var js=new cr({useRecords:!1}),Jv=js.unpack,eb=js.unpackMultiple,tb=js.unpack,ks={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rb=new Float32Array(1),hL=new Uint8Array(rb.buffer,0,4);var Hs;try{Hs=new TextEncoder}catch{}var Ws,fl,qs=typeof Buffer<"u",dl=qs?Buffer.allocUnsafeSlow:Uint8Array,vd=qs?Buffer:Uint8Array,gd=qs?4294967296:2144337920,R,ke,P=0,ur,pr=null,ob=/[\u0080-\uFFFF]/,ii=Symbol("record-id"),_o=class extends cr{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,c=0,p=vd.prototype.utf8Write?function(y,L,T){return R.utf8Write(y,L,T)}:Hs&&Hs.encodeInto?function(y,L){return Hs.encodeInto(y,R.subarray(L)).written}:!1,l=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,g=f+64,x=f+m+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,S=0;this.pack=this.encode=function(y,L){if(R||(R=new dl(8192),ke=new DataView(R.buffer,0,8192),P=0),ur=R.length-10,ur-P<2048?(R=new dl(R.length),ke=new DataView(R.buffer,0,R.length),ur=R.length-10,P=0):P=P+7&2147483640,r=P,a=l.structuredClone?new Map:null,l.bundleStrings?(pr=["",""],R[P++]=214,R[P++]=98,pr.position=P-r,P+=4):pr=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 I=0;I<T;I++){let C=o[I];if(!C)continue;let N,k=o.transitions;for(let W=0,ne=C.length;W<ne;W++){let ue=C[W];N=k[ue],N||(N=k[ue]=Object.create(null)),k=N}k[ii]=I+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),pr){ke.setUint32(pr.position+r,P-pr.position-r);let T=pr;pr=null,b(T[0]),b(T[1])}if(l.offset=P,a&&a.idsToInsert){P+=a.idsToInsert.length*6,P>ur&&w(P),l.offset=P;let T=ib(R.subarray(r,P),a.idsToInsert);return a=null,T}return L&Sd?(R.start=r,R.end=P,R):R.subarray(r,P)}finally{if(o){if(S<10&&S++,A>1e4)o.transitions=null,S=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,I=v.length;T<I;T++)v[T][ii]=0;v=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let I=R.subarray(r,P);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,I)}}L&db&&(P=r)}};let b=y=>{P>ur&&(R=w(P));var L=typeof y,T;if(L==="string"){let I=y.length;if(pr&&I>=8&&I<4096){let k=ob.test(y);pr[k?0:1]+=y,R[P++]=193,b(k?-I:I);return}let C;I<32?C=1:I<256?C=2:I<65536?C=3:C=5;let N=I*3;if(P+N>ur&&(R=w(P+N)),I<64||!p){let k,W,ne,ue=P+C;for(k=0;k<I;k++)W=y.charCodeAt(k),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=y.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),k++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);T=ue-P-C}else T=p(y,P+C,N);T<32?R[P++]=160|T:T<256?(C<2&&R.copyWithin(P+2,P+1,P+1+T),R[P++]=217,R[P++]=T):T<65536?(C<3&&R.copyWithin(P+3,P+2,P+2+T),R[P++]=218,R[P++]=T>>8,R[P++]=T&255):(C<5&&R.copyWithin(P+5,P+3,P+3+T),R[P++]=219,ke.setUint32(P,T),P+=4),P+=T}else if(L==="number")if(y>>>0===y)y<64?R[P++]=y:y<256?(R[P++]=204,R[P++]=y):y<65536?(R[P++]=205,R[P++]=y>>8,R[P++]=y&255):(R[P++]=206,ke.setUint32(P,y),P+=4);else if(y>>0===y)y>=-32?R[P++]=256+y:y>=-128?(R[P++]=208,R[P++]=y+256):y>=-32768?(R[P++]=209,ke.setInt16(P,y),P+=2):(R[P++]=210,ke.setInt32(P,y),P+=4);else{let I;if((I=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[P++]=202,ke.setFloat32(P,y);let C;if(I<4||(C=y*Us[(R[P]&127)<<1|R[P+1]>>7])>>0===C){P+=4;return}else P--}R[P++]=203,ke.setFloat64(P,y),P+=8}else if(L==="object")if(!y)R[P++]=192;else{if(a){let C=a.get(y);if(C){if(!C.id){let N=a.idsToInsert||(a.idsToInsert=[]);C.id=N.push(C)}R[P++]=214,R[P++]=112,ke.setUint32(P,C.id),P+=4;return}else a.set(y,{offset:P-r})}let I=y.constructor;if(I===Object)D(y,!0);else if(I===Array){T=y.length,T<16?R[P++]=144|T:T<65536?(R[P++]=220,R[P++]=T>>8,R[P++]=T&255):(R[P++]=221,ke.setUint32(P,T),P+=4);for(let C=0;C<T;C++)b(y[C])}else if(I===Map){T=y.size,T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,ke.setUint32(P,T),P+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=Ws.length;C<N;C++){let k=fl[C];if(y instanceof k){let W=Ws[C];if(W.write){W.type&&(R[P++]=212,R[P++]=W.type,R[P++]=0),b(W.write.call(this,y));return}let ne=R,ue=ke,se=P;R=null;let K;try{K=W.pack.call(this,y,U=>(R=ne,ne=null,P+=U,P>ur&&w(P),{target:R,targetView:ke,position:P-U}),b)}finally{ne&&(R=ne,ke=ue,P=se,ur=R.length-10)}K&&(K.length+P>ur&&w(K.length+P),P=nb(K,R,P,W.type));return}}D(y,!y.hasOwnProperty)}}else if(L==="boolean")R[P++]=y?195:194;else if(L==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[P++]=211,ke.setBigInt64(P,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[P++]=207,ke.setBigUint64(P,y);else if(this.largeBigIntToFloat)R[P++]=203,ke.setFloat64(P,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");P+=8}else if(L==="undefined")this.encodeUndefinedAsNil?R[P++]=192:(R[P++]=212,R[P++]=0,R[P++]=0);else if(L==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+L)},D=this.useRecords===!1?this.variableMapSize?y=>{let L=Object.keys(y),T=L.length;T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,ke.setUint32(P,T),P+=4);let I;for(let C=0;C<T;C++)b(I=L[C]),b(y[I])}:(y,L)=>{R[P++]=222;let T=P-r;P+=2;let I=0;for(let C in y)(L||y.hasOwnProperty(C))&&(b(C),b(y[C]),I++);R[T+++r]=I>>8,R[T+r]=I&255}:y=>{let L=Object.keys(y),T,I=s.transitions||(s.transitions=Object.create(null)),C=0;for(let k=0,W=L.length;k<W;k++){let ne=L[k];T=I[ne],T||(T=I[ne]=Object.create(null),C++),I=T}let N=I[ii];if(N)N>=96&&h?(R[P++]=((N-=96)&31)+96,R[P++]=N>>5):R[P++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(L)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let k=L.highByte=N>=96&&h?N-96>>5:-1;I[ii]=N,s[N-64]=L,N<g?(L.isShared=!0,s.sharedLength=N-63,i=!0,k>=0?(R[P++]=(N&31)+96,R[P++]=k):R[P++]=N):(k>=0?(R[P++]=213,R[P++]=114,R[P++]=(N&31)+96,R[P++]=k):(R[P++]=212,R[P++]=114,R[P++]=N),C&&(A+=S*C),v.length>=m&&(v.shift()[ii]=0),v.push(I),b(L))}for(let k=0,W=L.length;k<W;k++)b(y[L[k]])},w=y=>{let L;if(y>16777216){if(y-r>gd)throw new Error("Packed buffer would be larger than maximum buffer size");L=Math.min(gd,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else L=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new dl(L);return ke=new DataView(T.buffer,0,L),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),P-=r,r=0,ur=T.length-10,R=T}}useBuffer(t){R=t,ke=new DataView(R.buffer,R.byteOffset,R.byteLength),P=0}};fl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ni];Ws=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?yd(n,16,t):xd(qs?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==vd&&this.structuredClone?yd(n,pl.indexOf(e.name),t):xd(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function yd(n,t,e,r){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++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function xd(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function nb(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function ib(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;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 Jr(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)");fl.unshift(n.Class),Ws.unshift(n)}hd(n)}var bd=new _o({useRecords:!1}),sb=bd.pack,ab=bd.pack;var{NEVER:lb,ALWAYS:cb,DECIMAL_ROUND:ub,DECIMAL_FIT:pb}=ks,Sd=512,db=1024;var wd=new _o({structuredClone:!0});Jr({Class:Ye.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ye.prototype),n}});Jr({Class:De.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,De.prototype),n}});Jr({Class:At.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,At.prototype),n}});Jr({Class:ri.prototype.constructor,type:4,write(n){return n.id},read(n){return new ri(n)}});Jr({Class:oi.prototype.constructor,type:5,write(n){return n.data},read(n){return new oi(n)}});Jr({Class:Er.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Er.prototype),n}});function fb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function ml(n){if(vo(n))return n;if(Array.isArray(n))return n.map(ml);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=ml(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var $s;(r=>{function n(o){return wd.pack(o)}r.serialize=n;function t(o){return wd.unpack(o)}r.deserialize=t;function e(o){return fb(n(ml(o))).toString()}r.checksum=e})($s||($s={}));var Xs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Xs||(Xs={}));var Ys;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Et.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ys||(Ys={}));var hl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(hl||(hl={}));var gl;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(gl||(gl={}));var Ks;(t=>t.defaultData={...gl.defaultData,...hl.defaultData,cloner:null,booleanExclude:null})(Ks||(Ks={}));var yl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(yl||{}),xl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(xl||{}),vl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(vl||{}),Qs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Et.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Qs||(Qs={}));var _d=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Td=["wrapping","image"],eo;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Tt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,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{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,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{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Et.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,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:Et.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Et.fromHexAndA(0,1),contourColor:Et.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{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(eo||(eo={}));var Yt;(a=>{function n(c){return!c.layers.some(l=>{if(l.data.type==="texture"&&l.data.projection!==0||l.data.type==="depth"&&!l.data.isWorldSpace||l.data.type==="noise"||l.data.type==="displace")return!0})&&!e(c)}a.isMergable=n;function t(c){let p="";return c.layers.forEach(l=>{Object.entries(l.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):p+=`${d}`})}),p}a.getHash=t;function e(c){let p=0;for(let l of c.layers)"alpha"in l.data&&l.data.type!=="light"&&l.data.type!=="fresnel"&&(p+=(1-p)*l.data.alpha);return p<1}a.isTransparent=e;function r(){return{layers:new De}}a.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}a.defaultData=o;function i(c,p="layer1",l="layer2"){let u=new De;return u.push({fi:0,data:eo.defaultData("light",c),id:p}),u.push({fi:1,data:eo.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=i;function s(c,p="basic",l="layer1",u="layer2"){let d=eo.defaultData("texture");Object.assign(d.texture,{image:c});let f=new De;return f.push({fi:0,data:d,id:l}),f.push({fi:1,data:eo.defaultData("light",p),id:u}),{layers:f}}a.defaultTwoLayerTextureData=s})(Yt||(Yt={}));var pn;(t=>{function n(){return{points:new De,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(pn||(pn={}));var Zs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Zs||(Zs={}));var si;(t=>{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==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:pn.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(si||(si={}));var ai;(o=>{o.identity={...Os.identity,hiddenMatrix:Kr.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;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 r(i,s){return{position:an.isEqual(i.position,s.position)?null:s.position,rotation:an.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:an.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Kr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(ai||(ai={}));var bl;(t=>t.defaultData={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]})(bl||(bl={}));var Rr;(t=>t.defaultData={states:new De,events:new De,visible:!0,raycastLock:!1,physics:null,...ai.identity})(Rr||(Rr={}));var Ad;(t=>t.defaultData={type:"Empty",...Rr.defaultData})(Ad||(Ad={}));var Js;(t=>t.defaultData={type:"Mesh",...Rr.defaultData,...Ks.defaultData})(Js||(Js={}));var Cd;(t=>t.defaultData={type:"TextFrame",...Rr.defaultData,...Qs.defaultData})(Cd||(Cd={}));var ea;(t=>t.defaultData={...Rr.defaultData,...ai.identity,...xo.defaultData})(ea||(ea={}));var Nd;(t=>{function n(e){return{...Rr.defaultData,...Ys.defaultData(e)}}t.defaultData=n})(Nd||(Nd={}));var Pd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Kr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:bl.defaultData,states:new De,events:new De,...xo.defaultData},r.defaultMeshObject={name:"Rectangle",...Rr.defaultData,...Js.defaultData,geometry:si.defaultData("RectangleGeometry"),material:Yt.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Rr.defaultData,...Js.defaultData,geometry:si.defaultData("BooleanGeometry"),material:Yt.defaultTwoLayerData("phong","layer1","layer2")}))(Pd||(Pd={}));var Id;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=rl(i.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&yo(p,c)}}).data),i.materials&&o.materials&&(i.materials=rl(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let c=o.materials[a];if(typeof c!="string")for(let[p,l]of Object.entries(c.layers)){let u=s[a]?.layers?.data(p);u&&yo(u,l)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,ai.merge(i,o)),sn.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Xs.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=Tt.clone(s.color))}return i}e.patch=t})(Id||(Id={}));var dn;(t=>t.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})(dn||(dn={}));var ta;(t=>t.defaultData={orbitControls:dn.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(ta||(ta={}));var ra;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},os(r,Ye.prototype)}e.defaultColors=n;function t(){return{materials:new Ye,images:new Ye,colors:new Ye,audios:new Ye,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(ra||(ra={}));function Ld(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...Ka(Xt(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Xt(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Sl(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function wl(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function mb(n){Object.assign(n.scene.publish,{orbitControls:{...dn.defaultData,...Xt(n.scene.publish.orbitControls)}})}function hb(n){Object.assign(n.scene.publish.settings,{video:{...ta.defaultData.settings.video,...Xt(n.scene.publish.settings.video)}})}function gb(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((_d.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,a]of Object.entries(i))(Td.includes(s)||typeof a=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function yb(n){n.scene.publish.withBackground=!0}function xb(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function vb(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function bb(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function Sb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function Od(n){n.layers===void 0&&Object.assign(n,Yt.defaultTwoLayerData("lambert"))}function _l(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...Xt(t),colors:e,steps:r};Object.assign(t,o)}})}function wb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Md(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&_l(r)}):"material"in e&&typeof e.material!="string"&&_l(e.material)}),Object.values(n.shared.materials).forEach(t=>_l(t))}function _b(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,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 Tb(n){n.shared.audios=os({},Ye.prototype)}function Ab(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function Cb(n){Object.entries(Xt(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(Xt(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function Nb(n){n.scene.publish.settings.web.preload=!1}function Dd(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}var Bd=19;function Ed(n){let t=n.schema??0;t!==Bd&&(console.warn("updating from ",t,"to ",Bd),t<1&&(wl(n,Ld),Sl(n,Ld),n.schema=1),t<2&&(mb(n),n.schema=2),t<3&&(gb(n),n.schema=3),t<4&&(yb(n),n.schema=4),t<5&&(xb(n),n.schema=5),t<6&&(vb(n),n.schema=6),t<7&&(bb(n),n.schema=7),t<8&&(Sb(n),n.schema=8),t<9&&(Md(n),n.schema=9),t<10&&(wb(n),n.schema=10),t<11&&(_b(n),n.schema=11),t<12&&(Md(n),n.schema=12),t<13&&(Tb(n),n.schema=13),t<14&&(Ab(n),n.schema=14),t<15&&(Cb(n),n.schema=15),t<16&&(Nb(n),n.schema=16),t<17&&(wl(n,Dd),Sl(n,Dd),n.schema=17),t<18&&(wl(n,Od),Sl(n,Od),n.schema=18),t<19&&(hb(n),n.schema=19))}var oa;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(oa||(oa={}));var Ke=require("three");var Gd=require("three"),Tl=class extends Gd.Object3D{},na=class extends Tl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var To=class extends Ke.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),i=.1;this.parameters=Ms.defaultData(o.toArray(),i),yo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}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)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new na(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*Ke.MathUtils.DEG2RAD,i=r.end*Ke.MathUtils.DEG2RAD,s=o-i,a=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD),c;switch(r.axis){case"z":c=new Ke.Vector3(0,0,1);break;case"y":c=new Ke.Vector3(0,1,0);break;default:case"x":c=new Ke.Vector3(1,0,0);break}for(let[p,l]of this.children.entries()){l.scale.x=r.scale[0],l.scale.y=r.scale[1],l.scale.z=r.scale[2],l.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":l.rotation.set(0,u,0);break;case"y":l.rotation.set(0,0,u);break;case"z":l.rotation.set(u,0,0);break}l.translateOnAxis(c,r.radius),l.position.x+=r.position[0],l.position.y+=r.position[1],l.position.z+=r.position[2],r.alignment===!0?(l.rotation.x+=a.x,l.rotation.y+=a.y,l.rotation.z+=a.z):l.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Ke.Vector3(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let l=this.children[r++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*a-s.x,l.position.y=o.size[1]*c-s.y,l.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),yo(this.parameters,e),this.update(),this}};var Ir=require("three");var Ge=require("three");var Rd=require("three"),dr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Rd.BoxBufferGeometry(30,30,30),t};var ct=require("three");var ft=require("three"),ia=new ft.Ray,Al=new ft.Sphere,Fd=new ft.Matrix4,fr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Al.copy(i.boundingSphere),Al.applyMatrix4(s),e.ray.intersectsSphere(Al)===!1||(Fd.copy(s).invert(),ia.copy(e.ray).applyMatrix4(Fd),i.boundingBox!==null&&ia.intersectsBox(i.boundingBox)===!1))return;let a,c,p,l,u=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let x=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=x,h=v;m<h;m+=3)if(c=u.getX(m),p=u.getX(m+1),l=u.getX(m+2),a=g(n,e,ia,d,c,p,l),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let v=i.attributes.position,A=new ft.Vector3,S=new ft.Vector3,b=new ft.Vector3,D=new ft.Vector3,w=2,L=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=L*L,I=Math.max(0,f.start),C=Math.min(v.count,f.start+f.count);for(let N=I,k=C-1;N<k;N+=w){if(A.fromBufferAttribute(v,N),S.fromBufferAttribute(v,N+1),ia.distanceSqToSegment(A,S,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let ne=e.ray.origin.distanceTo(D);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,S,b,D,w){let y=new ft.Vector3,L=new ft.Vector3,T=new ft.Vector3,I=new ft.Vector3,C=new ft.Vector3;if(y.fromBufferAttribute(S,b),L.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(y,L,T,!1,I)===null)return null;C.copy(I),C.applyMatrix4(x.matrixWorld);let k=v.ray.origin.distanceTo(C);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:C.clone(),object:x}}};var sa=new ct.Vector3,kt=new ct.Camera,Cl=class extends ct.LineSegments{constructor(e){let r=new ct.BufferGeometry,o=new ct.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new ct.Color(15711266),p=new ct.Color(15711266),l=new ct.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",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l);function u(f,m,h){d(f,h),d(m,h)}function d(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)}r.setAttribute("position",new ct.Float32BufferAttribute(i,3)),r.setAttribute("color",new ct.Float32BufferAttribute(s,3));super(r,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,r=this.pointMap,o=!0;kt.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;Kt("n1",r,e,kt,-i,-s,a),Kt("n2",r,e,kt,i,-s,a),Kt("n3",r,e,kt,-i,s,a),Kt("n4",r,e,kt,i,s,a);let c=a;Kt("f1",r,e,kt,-i,-s,c),Kt("f2",r,e,kt,i,-s,c),Kt("f3",r,e,kt,-i,s,c),Kt("f4",r,e,kt,i,s,c);let p=c,l=.5;Kt("u1",r,e,kt,i*.7*l,s*1.1,p),Kt("u2",r,e,kt,-i*.7*l,s*1.1,p),Kt("u3",r,e,kt,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Kt(n,t,e,r,o,i,s){sa.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let c=e.getAttribute("position");for(let p=0,l=a.length;p<l;p++)c.setXYZ(a[p],sa.x,sa.y,sa.z)}}var aa=class extends dr(Cl){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,r){fr(this.object,this.geometry,e,r,!0)}};var Vd=require("three");var fn=class extends dr(Vd.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,fn.geometryHelper,e,r)}};var zd=require("three");var mn=class extends dr(zd.AxesHelper){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){fr(this.object,mn.geometryHelper,e,r)}update(){}};var Ud=require("three");var hn=class extends dr(Ud.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,hn.geometryHelper,e,r)}};var ca=require("three");var la=class extends dr(ca.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,la.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=la._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),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)}}},ci=la;ci._vector=new ca.Vector3;var he=require("three"),ui=1e-12,gn=class{constructor(t){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new gn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},yn=class extends gn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new yn(this.parent).copy(this)}},Qt=class extends gn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new yn(this),new yn(this))}static create(e,r){let o=new Qt(e,new he.Vector2(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?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 Qt(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),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new he.Vector2,r=new he.Vector2){let[o,i]=this.computeTangents();return o&&i&&(jd(o,e),jd(i,r)),[e,r]}computeTangent(e=new he.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function jd(n,t=new he.Vector2){let e=n.length();return t.set(-n.y/e,n.x/e)}var Pl=n=>n,xn=new he.Vector2,ua=new he.Vector2,Ib=new he.Vector2,Lb=new he.Vector2,Ob=new he.Vector2,Mb=new he.Vector2,Hd=new he.Vector3,Wd=new he.Vector3;function qd(n){let t=new he.Vector2;t.addVectors(n.v0,xn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(n.v2,ua.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(n.v0,t,e,n.v2)}function pi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Db(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Bb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Il(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.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+r*r-i*i)/(2*o*r))}function $d(n,t,e){return kd(n,t)&&kd(t,e)&&Nl(n.position,t.position,e.position)}function Nl(n,t,e){return xn.copy(t).sub(n).cross(ua.copy(e).sub(n))===0}function Xd(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+c,s+p),o.set(a-c,s-p),[r,o]}function Yd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Kd(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,c=e.x-n.x,p=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+p)*(a+p)),u;return Il(t,n,e)>Math.PI&&(l*=-1),pi(p,a)?u=(a+p)*(r/l-.5)*8/3/(s-c):u=(s+c)*(r/l-.5)*8/3/(p-a),o.set(t.x-u*a,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function Ll(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function kd(n,t){return Nl(n.position,n.controls[1].position,t.position)&&Nl(n.position,t.controls[0].position,t.position)}function Qd(n,t,e,r,o=.5){let i=xn.subVectors(t,n).multiplyScalar(o).add(n),s=ua.subVectors(e,t).multiplyScalar(o).add(t),a=Ib.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=Lb.subVectors(s,i).multiplyScalar(o).add(i),l=Ob.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Mb.subVectors(l,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,l.x,l.y,u.x,u.y,r.x,r.y]}function Zd(n,t,e=12,r=!0){let o=Wd.set(0,0,0),i,s=0,a=[];for(let c=0;c<t.length;c++){let p=Pl(t[c]),l=xn,u=to(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof he.CubicBezierCurve||p instanceof he.QuadraticBezierCurve||p instanceof he.LineCurve){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),i!==void 0&&Bb(i,o))continue;i===void 0&&(i=Hd),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&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 Jd(n,t,e,r=12,o=!0){let i=Wd.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=Pl(t[c]),u=xn,d=to(l,r);a.push(d);for(let f=0;f<=d;f++)if(l instanceof he.CubicBezierCurve||l instanceof he.QuadraticBezierCurve||l instanceof he.LineCurve){if(l.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Hd:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.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 Ol(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=to(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=to(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=to(n[0].roundedCurveCorner,t)*.5),r}function to(n,t=12){return n&&n instanceof he.EllipseCurve?t*2:n&&(n instanceof he.LineCurve||n instanceof he.LineCurve3)?1:n&&n instanceof he.SplineCurve?t*n.points.length:t}function ef(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=Pl(t[s]),c=to(a,e),p=xn;for(let l=0;l<=c;l++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(l/c,p),o!==void 0&&Db(o,p,ui))continue;o===void 0&&(o=ua),o.copy(p),n.push(p.x,p.y),i++}}return pi(n[0],n[n.length-2],ui)&&pi(n[1],n[n.length-1],ui)&&(n.pop(),n.pop()),r&&i>1&&!(pi(n[i-1],n[1],ui)&&pi(n[i-2],n[0],ui))&&(n.push(n[0],n[1]),i++),n}var po=require("three");var be=require("three");var Ml=new be.Vector2,Eb=new be.Vector2,Gb=new be.Vector2,Rb=new be.Vector2,Fb=new be.Vector2,Vb=new be.Vector2,Ae=class extends be.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Ae;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Qt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Ae.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,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 r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],p=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=p;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 r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=e-r;if(a<=s.points.length-1)return s.points[a];r+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=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 r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=Ml.set(e,r);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,r);this._update(!1)}createPoint(e,r=0,o=be.MathUtils.generateUUID()){let i;e instanceof be.Vector2?i=e:i=new be.Vector2(e,r);let s=new Qt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Zd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Ol(this.points,e,!1),this.roundedCurveDivisions=Ol(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Jd(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),ef(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=to(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(Ll(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(Ml.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=a[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){Ll(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.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,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],l=a.roundness,u=c&&p&&$d(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,f=a.curveAfter;if(d===void 0||f===void 0)continue;let m=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=f.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),S=Math.min(v,A),b=1-S/g,D=S/x,w=d.getPointAt(b,Ml),y=f.getPointAt(D,Eb);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,y);let L;if(this.useCubicForRoundedCorners){let T=Il(w,a.position,y)/2,I=Math.tan(T)*w.distanceTo(a.position),[C,N]=Xd(w,y,I,Gb,Rb),k=Yd(C,N,a.position),[W,ne]=Kd(k,w,y,I,Fb,Vb);L=new be.CubicBezierCurve(w.clone(),W.clone(),ne.clone(),y.clone())}else L=new be.QuadraticBezierCurve(w.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=L,this.roundedCurves.splice(i+o,0,L),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof be.LineCurve)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,c=r,p=a.getUtoTmapping(o,0),l=Qd(a.v0,a.v1,a.v2,a.v3,p);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 r}clone(){let e=new Ae(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],a=e.points[i+1],c=e.points[i+2],p=e.points[i+3],l=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Qt(be.MathUtils.generateUUID(),new be.Vector2(s,a));f.controls[0].position.set(c,p),f.controls[1].position.set(l,u),f.roundness=d,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 r=(i,s)=>{s instanceof be.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 be.QuadraticBezierCurve&&(i[a]=qd(i[a]));for(a=0,c=i.length;a<c;a++){let u=i[a],d=a>0?i[a-1]:null,f;u instanceof be.CubicBezierCurve?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof be.LineCurve&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],l=!1;return p instanceof be.CubicBezierCurve?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof be.LineCurve&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Ae;return s.fromShape(i),s})),this.update(),this}};var Co=require("three");var Ee;(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"})(Ee||(Ee={}));var Je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Je||(Je={}));function pe(n,t){if(!n)throw t||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){pe(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){pe(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){pe(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){pe(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,a,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),di=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}(),pa=function(){function n(t){this.side=t,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(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),vn=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}(),tf=function(){function n(){var t=new vn,e=new di,r=new pa(0),o=new pa(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new pa(0),r=new pa(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;pe(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;pe(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new vn,e=new vn,r=new di,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new vn;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new di;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new di;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new vn;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new di;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,a,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,c,p;for(i=t,i=t;(o=i.next)!==t;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),p=r,p=r;(c=p.next)!==r;p=c)pe(c.Sym.next===p.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===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),rf=function(){function n(){this.handle=null}return n}(),of=function(){function n(){this.key=null,this.node=0}return n}(),zb=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new rf,this.handles[r]=new of;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,pe(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;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 rf;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new of}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;pe(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),Dl=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}(),nf=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Ub=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new nf,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(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new nf;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),jb=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var a=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new Dl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ee.ODD:return(e&1)!==0;case Ee.NONZERO:return e!==0;case Ee.POSITIVE:return e>0;case Ee.NEGATIVE:return e<0;case Ee.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,c,p,l,u=!0;p=r;do pe(ae.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),p=a.eUp.Sym,p.Org===l.Org;)p.Onext!==l&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(l.Oprev,p)),a.windingNumber=c.windingNumber-p.winding,a.inside=n.isWindingInside(t,a.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,l),n.deleteRegion(t,c),t.mesh.delete(l)),u=!1,c=a,l=p;c.dirty=!0,pe(c.windingNumber-p.winding===a.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),i=ae.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(pe(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,c=o.Dst,p=i.Dst,l,u,d=new vn,f,m;if(pe(!ae.vertEq(p,c)),pe(ae.edgeSign(c,t.event,s)<=0),pe(ae.edgeSign(p,t.event,a)>=0),pe(s!==t.event&&a!==t.event),pe(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,p.t),l>u))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(p,s,a)>0)return!1}else if(ae.edgeSign(c,a,s)<0)return!1;return n.debugEvent(t),ae.intersect(c,s,p,a,d),pe(Math.min(s.t,c.t)<=d.t),pe(d.t<=Math.max(a.t,p.t)),pe(Math.min(p.s,c.s)<=d.s),pe(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ae.vertLeq(s,a)?s:a,ae.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)>=0||!ae.vertEq(p,t.event)&&ae.edgeSign(p,t.event,d)<=0?p===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(ae.edgeSign(c,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,a,p),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),a=e.eUp,c=s.eUp,p=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),ae.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}ae.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,a,c;if(o=e.eUp,ae.vertEq(o.Org,r)){pe(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);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(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,c,p=new Dl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=t.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);pe(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new Dl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new Ub(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++r===1)),pe(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new zb(i,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),kb=function(){function n(){this.mesh=new tf,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=Ee.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(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,a,c=[0,0,0],p=[0,0,0],l=[0,0,0],u=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,m[g]=e,c[g]=i,f[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,m[x]=e),i>c[x]&&(c[x]=i,f[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=m[v],o=f[v],l[0]=r.coords[0]-o.coords[0],l[1]=r.coords[1]-o.coords[1],l[2]=r.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],d[0]=l[1]*u[2]-l[2]*u[1],d[1]=l[2]*u[0]-l[0]*u[2],d[2]=l[0]*u[1]-l[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;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=r.next;e!==r;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 t=this.mesh.vHead,e=[0,0,0],r,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),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,a=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>r)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Je.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===Je.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==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,p=0,l=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new tf),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Ee.ODD),e===void 0&&(e=Je.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=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),jb.computeInterior(this,s);var a=this.mesh;return e===Je.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Je.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function Ao(n){var t=n.windingRule,e=t===void 0?Ee.ODD:t,r=n.elementType,o=r===void 0?Je.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,p=n.normal,l=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new kb;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,l,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var JM=Ee.ODD,e2=Ee.NONZERO,t2=Ee.POSITIVE,r2=Ee.NEGATIVE,o2=Ee.ABS_GEQ_TWO,n2=Je.POLYGONS,i2=Je.CONNECTED_POLYGONS,s2=Je.BOUNDARY_CONTOURS;var bn=class extends Co.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ee.ODD;this.elementType=Je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ee.ODD,elementType:Je.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,p=!0,l,u;for(let m=0,h=i.length/2;m<h;m++){let g=m*2,x=i[g+0],v=i[g+1];if(l!==void 0&&x!==l&&(c=!1),u!==void 0&&v!==u&&(p=!1),l=x,u=v,!c&&!p)break}!c&&!p&&(a=Ao({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new Co.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new Co.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new Co.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new Co.BufferAttribute(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,g=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=a.vertices[D+0],y=a.vertices[D+1];w<m&&(m=w),w>h&&(h=w),y<g&&(g=y),y>x&&(x=y)}let v=h-m,A=x-g;for(let S=0,b=d;S<b;S++){let D=S*2,w=a.vertices[D+0],y=a.vertices[D+1],L=(w-m)/v,T=(y-g)/A;this._positionAttribute.setXYZ(S,w,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,L,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=a.elements[D+0],y=a.elements[D+1],L=a.elements[D+2];this._indexAttribute.setX(D+0,w),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,L)}}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 bn(this._shape,this._curveSegments);return e.userData=Kn(this.userData),e}};var No=require("three");var da=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*da.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*da.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=p,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},fi=da;fi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Bl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Sn=class extends No.BufferGeometry{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(w=>{let y=w.extractShapePointsToFlatArray([],i),L=[];for(let T=y.length-1;T>=1;T-=2){let I=y[T-1],C=y[T-0];L.push(I,C)}return L}),p=Ao({windingRule:Ee.ODD,elementType:Je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=Ao({windingRule:Ee.ODD,elementType:Je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(l){p.elementCount+=l.elementCount;for(let w=0;w<l.elements.length;w++){let y=l.elements[w],L=w%2===0?p.vertexCount:0;p.elements.push(y+L)}for(let w=0;w<l.vertexIndices.length;w++){let y=l.vertexIndices[w],L=p.vertexCount;p.vertexIndices.push(y+L)}for(let w=0;w<l.vertices.length;w++){let y=l.vertices[w];p.vertices.push(y)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,y=p.vertexCount;w<y;w++){let L=w*2,T=p.vertices[L+0],I=p.vertices[L+1];T<d&&(d=T),T>f&&(f=T),I<m&&(m=I),I>h&&(h=I)}this._minX=d,this._minY=m,this._width=f-d,this._height=h-m;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new fi(g);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let y=w>=u,L=w*2,T=p.elements[L+0],I=p.elements[L+1],C=T+I,N={start:T,count:I,normals:[],continuous:[],concave:[]},k=T,W=C-1,ne=T+1,ue=this._shape.roundedCurves.length;do{let F=k-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],O=p.vertices[k*2+0],G=p.vertices[k*2+1],Q=p.vertices[ne*2+0],j=p.vertices[ne*2+1],V=O-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=O-Q,J=G-j,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[k];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[Z].getTangent($),me=this._shape.roundedCurves[re].getTangent(ce);N.continuous[F]=ie.dot(me)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,k,ne]=[k,ne,ne+1],ne>=C&&(ne-=I)}while(ne!==T+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((F,E)=>[E,E]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,O=[],G=[],Q=[],j=[],V=0;for(let M=0;M<I;M++){let q=M*2,J=(M-1+I)%I*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,ce=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ie=Math.atan2($,Z),me=Math.atan2(ce,re);me>ie&&(me-=Math.PI*2);let Re=me-ie;if(N.continuous[M]||y){let ge=ie+Re/2,$e=Math.cos(ge)*B,Te=Math.sin(ge)*B;O[2*V+0]=ee+$e*(y?-1:1),O[2*V+1]=H+Te*(y?-1:1),j[V]=M,V++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Re)/Math.PI));for(let $e=0;$e<=ge;$e++){let Te=ie+Re*($e/ge),St=Math.cos(Te)*B,Vt=Math.sin(Te)*B;O[2*V+0]=ee+St,O[2*V+1]=H+Vt,j[V]=M,V++}}}else O[2*V+0]=ee+Z,O[2*V+1]=H+$,j[V]=M,G[M]=V,V++,O[2*V+0]=ee,O[2*V+1]=H,j[V]=M,V++,O[2*V+0]=ee+re,O[2*V+1]=H+ce,j[V]=M,Q[M]=V,V++}let z=Ao({windingRule:Ee.POSITIVE,elementType:Je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:M=>{let J=M.Org.idx,ee=j[J],H=j[(J+1)%j.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=I);for(let H=q;H<ee;H++){let Z=H%I,$=(H+1)%I;if(!N.continuous[Z]||!N.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}se.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:j,insetPoints:O})}let K=(F,E,B)=>{let O=0,G=F.boundary.vertexIndices.length;for(;O<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,O++;return O},U=x.length;for(let F=1;F<se.length;F++){let E=se[F-1],B=se[F],O=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!O||!G)break;let Q=N.concave.length,j=0,V=Bl(j,I);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)j++,V=Bl(j,I);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%O;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));j=(j+1)%I;let q=j,J=this.buildBevelVert(N,E,(z-1+O)%O),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,ce=!1;do{V=Bl(j,I);let ie=K(E,z,V),me=K(B,M,V),Re=ce;if(ce=!1,ie&&!me){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%O,ge/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;ce=!0}else if(!ie&&me)for(let ge=0;ge<me;ge++)re=this.buildBevelVert(N,B,(M+ge)%G,ge/(me-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ie&&me)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Re?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ie===me)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%O,ge/(ie-1)),re=this.buildBevelVert(N,B,(M+ge)%G,ge/(me-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ie>me){let ge=ie/me,$e=0;for(let Te=1;Te<ie;Te++)$=this.buildBevelVert(N,E,(z+Te)%O,Te/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,Te>($e+1)*ge&&($e++,re=this.buildBevelVert(N,B,(M+$e)%G,$e/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let ge=me/ie,$e=0;for(let Te=1;Te<me;Te++)re=this.buildBevelVert(N,B,(M+Te)%G,Te/(me-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,Te>($e+1)*ge&&($e++,$=this.buildBevelVert(N,E,(z+$e)%O,$e/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ie)%O,M=(M+me)%G,j=(j+1)%Q}while(j!==q)}{let F=se[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,O.topN,O.bottomN),x.push(G.topP,O.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],O=x[E-1],G=x[E-0];F.push(G,O,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=se[se.length-1].boundary.vertices[E-1],O=se[se.length-1].boundary.vertices[E-0];F.push(B,O)}v.push(F)}if(!y){let F=se[se.length-1],E=Ao({windingRule:se.length>1?Ee.POSITIVE:Ee.ODD,elementType:Je.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let O=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(O.top,G.top,Q.top),x.push(Q.bottom,G.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new No.BufferAttribute(Uint32Array.from(x),1),S=new No.BufferAttribute(this._buffer.positions,3),b=new No.BufferAttribute(this._buffer.normals,3),D=new No.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),l=p*3,u=p*2,d={top:p+0,bottom:p+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[u+0]=a,this._buffer.uvs[u+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[u+2]=a,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=r.boundary.vertexIndices[o],p,l,u,d;a!==c?(l=a,p=c,d=!1,u=e.continuous[l]&&e.continuous[p]):(p=a,l=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,g=p*2,x=l*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,w=e.normals[g+0],y=e.normals[g+1],L=e.normals[x+0],T=e.normals[x+1];if(d){let W=L-w,ne=T-y;w=w+W*(1-i),y=y+ne*(1-i);let ue=Math.sqrt(w*w+y*y);w/=ue,y/=ue}let I=this._buffer.get(u?2:4),C=I*3,N=I*2,k={i:o,fi:p,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-S,this._buffer.normals[C+0]=w*f,this._buffer.normals[C+1]=y*f,this._buffer.normals[C+2]=m,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=S,this._buffer.normals[C+3]=w*f,this._buffer.normals[C+4]=y*f,this._buffer.normals[C+5]=-m,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(I+=2,C+=6,N+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-S,this._buffer.normals[C+0]=L*f,this._buffer.normals[C+1]=T*f,this._buffer.normals[C+2]=m,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=S,this._buffer.normals[C+3]=L*f,this._buffer.normals[C+4]=T*f,this._buffer.normals[C+5]=-m,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=k,k}clone(){let e=new Sn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Kn(this.userData),e}};var xt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ae?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ae(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new Ae(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:a}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new bn(n.shape,o):s=new Sn(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var Ea=require("three");var lf=require("three");var Be=require("three"),af=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,radiusTop:p,radiusBottom:l,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new mi(p,l,r,o,i,s,a,c*Math.PI/180,u,u,d,f):m=new Be.CylinderBufferGeometry(p,l,r,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function ro(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function sf(n){return new Be.Vector2(n.y,-n.x)}var mi=class extends Be.BufferGeometry{constructor(t,e,r,o,i,s,a,c,p,l,u,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||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&&(p=0,l=0);let m=[],h=[],g=[],x=[],v=0,A=r/2,S=new Be.Vector3,b=new Be.Vector3;f&&t==0&&(t=p),f&&e==0&&(e=l);let D=new Be.Vector2(t,A),w=new Be.Vector2(e,-A),y=null,L=null,T=null,I=null,C=D.clone().sub(w),N=0,k=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),k=t-N,W=e-N);let ne=D.clone();ne.x-=N;let ue=Math.PI-C.angle(),se=C.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-k)/E,C.length()/F),l=Math.min(l,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new Be.Vector2(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(l>0){let z=l/U;L=w.clone().sub(new Be.Vector2(z,-l)),w.add(C.clone().setLength(z)),d&&(I=L.clone(),I.x-=N-F*l,ne.sub(C.clone().setLength(z)))}C=D.clone().sub(w);let O=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+a,ee=new Be.Vector2(Math.sin(J),Math.cos(J));I&&L?(Q(M,q,ee,ue,l,I,-1,!0),Q(M,q,ee,se,l,L,-1,!1)):L?(j(M,ee,L.x,0,-1),Q(M,q,ee,se,l,L,-1,!1)):s||j(M,ee,e,W,-1);let H=sf(C).normalize();if(ro(H,ee,S),!O)for(let Z=0;Z<=i;Z++){let $=Z/i,re=C.clone().multiplyScalar($).add(w);ro(re,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ue,p,y,1,!1),Q(M,q,ee,se,p,T,1,!0)):y?(Q(M,q,ee,ue,p,y,1,!1),j(M,ee,y.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Z=sf(C).multiplyScalar(-1).normalize();ro(Z,ee,S);for(let $=0;$<=i;$++){let re=$/i,ce=C.clone().multiplyScalar(-re).add(ne);ro(ce,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];m.push(q,J,H),(Z!=0||$!=0)&&m.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new Be.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Be.Float32BufferAttribute(g,3)),this.setAttribute("uv",new Be.Float32BufferAttribute(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let ce=re/u,ie=Z<0?ce:1-ce;$&&(ie-=1),ie*=J;let me=new Be.Vector2(Math.sin(ie),Math.cos(ie)*Z),Re=me.clone().multiplyScalar(ee).add(H);ro(Re,q,b),h.push(b.x,b.y,b.z),ro(me,q,S),g.push(S.x,S.y,S.z),x.push(M,.5+b.y/r),z.push(v++)}}function j(z,M,q,J,ee){let H=new Be.Vector3,Z=new Be.Vector2,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),ro(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new Be.Vector2(Math.sin(q),Math.cos(q)),ee=new Be.Vector2(-Math.cos(q),Math.sin(q)),H=new Be.Vector3,Z=z<0?(ce,ie,me)=>m.push(ce,ie,me):(ce,ie,me)=>m.push(ce,me,ie),$=new Be.Vector2((t+e+k+W)/4,0);ro($,J,H),h.push(H.x,H.y,H.z),g.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let ce of M){let ie=h.slice(ce*3,ce*3+3);h.push(...ie),g.push(ee.x,0,ee.y);let me=x.slice(ce*2,ce*2+2);x.push(...me),v++}for(let ce=re+1;ce<v-1;ce++)Z(re,ce,ce+1);Z(re,v-1,re+1)}}};var cf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:l,cornerSegments:u}=n.parameters,d;return p>0||l>0||c<360?d=new mi(0,t/2,r,o,i,s,a,c*Math.PI/180,p,l,u,0,!0):d=new lf.ConeBufferGeometry(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var Nt=require("three"),uf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,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:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:c}=n.parameters,p;return a==0?p=new Nt.BoxBufferGeometry(t,e,r,o,i,s):p=new Gl(t,e,r,o,i,s,a,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},El=Math.PI/2,Gl=class extends Nt.BufferGeometry{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,t/2,e/2,r/2);let l=[],u=[],d=[],f=[],m=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Nt.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Nt.Float32BufferAttribute(d,3)),this.setAttribute("uv",new Nt.Float32BufferAttribute(f,2));function g(A,S,b,D,w,y,L,T,I,C,N){let k=(y-2*a)/I,W=(L-2*a)/C,ne=y/2-a,ue=L/2-a,se=T/2,K=I+1,U=C+1,F=0,E=0,B=new Nt.Vector3;for(let O=0;O<U;O++){let G=O*W-ue;for(let Q=0;Q<K;Q++){let j=Q*k-ne;B[A]=j*D,B[S]=G*w,B[b]=se,u.push(B.x,B.y,B.z),B[A]=0,B[S]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),f.push(Q/I),f.push(1-O/C),F+=1}}for(let O=0;O<C;O++)for(let G=0;G<I;G++){let Q=m+G+K*O,j=m+G+K*(O+1),V=m+(G+1)+K*(O+1),z=m+(G+1)+K*O;l.push(Q,j,z),l.push(j,V,z),E+=6}p.addGroup(h,E,N),h+=E,m+=F}function x(A,S,b,D,w,y,L,T,I,C,N){let k=(L-2*a)/C,W=L/2-a,ne=T/2-a,ue=I/2,se=C+1,K=0,U=0,F=new Nt.Vector3,E=new Nt.Vector3;for(let B=0;B<c+1;B++){let O=B/c*El,G=Math.sin(O)*a,Q=(1-Math.cos(O))*a,j=Math.sin(O),V=Math.cos(O);F[S]=(ne+G)*w,F[b]=(ue-Q)*y,E[A]=0,E[S]=j*Math.sign(F[S]),E[b]=V*Math.sign(F[b]);for(let z=0;z<se;z++){let M=z*k-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),f.push(z/C),f.push(0),K+=1}}for(let B=0;B<c;B++)for(let O=0;O<C;O++){let G=m+O+se*B,Q=m+O+se*(B+1),j=m+(O+1)+se*(B+1),V=m+(O+1)+se*B;l.push(G,Q,V),l.push(Q,j,V),U+=6}p.addGroup(h,U,N),h+=U,m+=K}function v(A,S,b){let D=new Nt.Vector3,w=new Nt.Vector3(t/2,e/2,r/2);w.subScalar(a);let y=[],L=A*S*b>0?(I,C,N)=>l.push(I,C,N):(I,C,N)=>l.push(I,N,C);for(let I=0;I<=c;I++){let C=[],N=El*(1-I/c),k=Math.cos(N),W=Math.sin(N),ne=0;for(let ue=0;ue<=I;ue++){let se=Math.cos(ne),K=Math.sin(ne);D.x=k*se,D.y=W,D.z=k*K;let U=w.clone().addScaledVector(D,a);u.push(A*U.x,S*U.y,b*U.z),d.push(A*D.x,S*D.y,b*D.z),f.push(0,0),C.push(m++),ne+=El/I}y.push(C)}let T=y.length-1;for(let I=0;I<T;I++){let C=y[I],N=y[I+1],k=C.length-1;L(C[0],N[1],N[0]);for(let W=1;W<=k;W++)L(C[W-1],C[W],N[W]),L(C[W],N[W+1],N[W])}}}};var ze=require("three"),oo=class extends ze.BufferGeometry{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new ze.Float32BufferAttribute(a,3)),this.setAttribute("normal",new ze.Float32BufferAttribute(p,3)),this.setAttribute("uv",new ze.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}[r],m=new ze.Vector3,h=m.clone(),g=new ze.Triangle,x=i*o,v=o-x,A=s+1,S=new ze.Vector3,b=(K,U)=>S.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),w=D(t.length/3,(K,U)=>new ze.Vector3().fromArray(t,U*3).setLength(o)),y=[],L=1e6;for(let K=0;K<w.length;K++){let U=w[K],F=[],E,B,O,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],O=U.distanceToSquared(w[E]),G=Math.min(G,O),F.push([E,B,O])}G+=1e-6;let j=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,O]=F[V];let q=y[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*L),V=F.findIndex(J=>J[0]==B)}y.push(j)}let T=[];{let K=0,U=0,F,E,B=f==3;for(let O=0;O<=s;O++){F=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let G=0;G<s-O;G++)[K,U]=[F+G+O+2,E+G+O+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let I=m.clone(),C=m.clone(),N=m.clone(),k=m.clone(),W=m.clone(),ne=[],ue=D(w.length,()=>D(f,()=>m.clone()));for(let K=0;K<w.length;K++){m.copy(w[K]).normalize(),I.copy(m).multiplyScalar(v);let U=y[K];for(let j=0;j<U.length;j++){let V=U[j],z=U[(j+1)%f];g.setFromPointsAndIndices(w,K,V%L,z%L),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(I,ue[K][j])}let F=[],E=[],B=[],O=new ze.Vector3;s==0&&[...ue[K]].reduce((j,V)=>j.add(V),O).multiplyScalar(1/f);for(let j=0;j<f;j++){let V=[],z=(j-1+f)%f,M=ue[K][z],q=ue[K][j];m.copy(M).sub(I),h.copy(q).sub(I);let J=I.angleTo(m),ee=m.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(O):C.copy(I).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],ce=Z[$+1];k.subVectors(re,I),W.subVectors(ce,I),N.crossVectors(k,W).normalize();for(let ie=0;ie<A;ie++){let me=[J,ee][$]*ie/A;m.copy(k).applyAxisAngle(N,me).add(I),F.push(m.clone()),$&&(b(m,I),V.push([ie==0?re:m.clone(),S.clone()]))}$&&(b(ce,I),V.push([ce,S.clone()]))}B.push(V)}ne.push(B);let G=2*A,Q=2;for(let j=0;j<f;j++){let V=G*j,z=G*((j+1)%f),M=[F[V]];for(let J=1;J<A;J++){k=F[V+J],W=F[z+J],M.push(k);for(let ee=1,H=J-Q+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(I).setLength(E[j]).add(I),M.push(m.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[z+A]);let q=T.map(J=>M[J]);a.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let K=0;K<y.length;K++)for(let U=0;U<f;U++){let F=y[K][U];if(F<L){let E=y[F].findIndex(G=>G%L==K),B=ne[K][U],O=ne[F][E];for(let G=0;G<A;G++){let Q=B[G],j=O[A-G],V=B[G+1],z=O[A-(G+1)];[Q,j,V,V,j,z].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}se.push(B[0][0],O[A][0],B[A][0],O[0][0])}}for(;se.length;){let K,U,F,E;[K,U]=se.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=se.indexOf(U),E=F%2,U=se.splice(F-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +O],B[G+1-+O],B[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new ze.Vector3;for(let w=0;w<a.length;w+=3){d.x=a[w+0],d.y=a[w+1],d.z=a[w+2];let y=b(d)/2/Math.PI+.5,L=D(d)/Math.PI+.5;c.push(y,1-L)}let f=new ze.Vector3,m=new ze.Vector3,h=new ze.Vector3,g=new ze.Vector3,x=new ze.Vector2,v=new ze.Vector2,A=new ze.Vector2,S=(w,y,L,T)=>{T<0&&w.x===1&&(c[y]=w.x-1),L.x===0&&L.z===0&&(c[y]=T/2/Math.PI+.5)};for(let w=0,y=0;w<a.length;w+=9,y+=6){f.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),h.set(a[w+6],a[w+7],a[w+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(f).add(m).add(h).divideScalar(3);let L=b(g);S(x,y+0,f,L),S(v,y+2,m,L),S(A,y+4,h,L)}for(let w=0;w<c.length;w+=6){let y=c[w+0],L=c[w+2],T=c[w+4],I=Math.max(y,L,T),C=Math.min(y,L,T);I>.9&&C<.1&&(y<.2&&(c[w+0]+=1),L<.2&&(c[w+2]+=1),T<.2&&(c[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function D(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new oo(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var pf=require("three"),df=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new hi(t*.5,i,s):new pf.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},hi=class extends oo{constructor(t=1,e=.2,r=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,t,e,r),this.type=c}static fromJSON(t){return new hi(t.radius,t.corner,t.cornerSides)}};var Fl=Math.PI*2;function Rl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Hb(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function ff(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function Wb(n,t,e,r,o,i,s,a,c,p){let l=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(a,2),m=l*u-l*f-u*d;m<0&&(m=0),m/=l*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*a,g=m*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,S=(a-g)/i,b=(-s-h)/o,D=(-a-g)/i,w=ff(1,0,A,S),y=ff(A,S,b,D);return!p&&y>0&&(y-=Fl),p&&y<0&&(y+=Fl),{centerx:x,centery:v,ang1:w,ang2:y}}function mf({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,l=(t-r)/2;if(p===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=Wb(n,t,e,r,o,i,p,l,s,a),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,x=Math.abs(m)/(Fl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);m/=v;for(let A=0;A<v;A++)c.push(Hb(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=Rl(A[0],o,i,h,g),{x:D,y:w}=Rl(A[1],o,i,h,g),{x:y,y:L}=Rl(A[2],o,i,h,g);return{x1:S,y1:b,x2:D,y2:w,x:y,y:L}})}var _n=require("three"),gf=Math.PI*2,yf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,p=n.shape,l=t*.5,u=e*.5,d=qb(p,l,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=xt.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function qb(n,t,e,r,o,i){if(r>=gf)return o>30||o%4===0?(Xb(n,t,e,i),Math.round(o/4)):hf(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,c={x:Math.cos(a)*t,y:Math.sin(a)*e},p=mf({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?$b(n,s.x,s.y,p,o,t,e,i):hf(n,r,o,t,e,i)}function $b(n,t,e,r,o,i,s,a){let c=Math.round(o/r.length);n.addPoint(wn(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=n.points[p],f=wn(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return a>0?xf(n,i,s,a):n.addPoint(wn(0,0)),c}function hf(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let c=s*a,p=Math.sin(c)*r,l=Math.cos(c)*o;n.addPoint(wn(p,l))}return t<gf?i>0?xf(n,r,o,i):n.addPoint(wn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&vf(n,r,o,i)),1}function Xb(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,c=e*s;n.addPoint(fa(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(fa(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(fa(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(fa(o,i-e,o+a,i-e,o-a,i-e)),r>0&&vf(n,t,e,r)}function wn(n,t){return new Qt(_n.MathUtils.generateUUID(),new _n.Vector2(n,t))}function fa(n,t,e,r,o,i){let s=wn(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function xf(n,t,e,r){bf(n,t,e,r).forEach(i=>n.addPoint(i))}function vf(n,t,e,r){let o=bf(n,t,e,r),i=new Ae;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function bf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new _n.Vector2(o/t,i/e),a=n.points.map(c=>{let p=c.clone();return p.uuid=_n.MathUtils.generateUUID(),p}).reverse();return a.forEach(c=>{c.position.multiply(s);let p=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(p)}),a}var Fr=require("three"),Sf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,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:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:c,pathSegments:p,cornerRadius:l,cornerSegments:u}=n.parameters,d=new gi(!1,t,e,r,o,i,s,a,c,p,l,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},gi=class extends Fr.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,c=1,p=1,l=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new Fr.Vector3,h=new Fr.Vector3,g=m(),x=m(),v=m(),A,S,b,D,w,y,L,T,I=m(),C=m(),N=m(),k=m(),W=m(),ne=m(),ue=m(),se=m(),K=r-2*c+.001,U=K/s,F=Math.ceil(a*s),E=F+1,B=K/F,O=-K/2,G=l+1,Q=2*Math.PI/l,j=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(je=>Array($*je).fill(0)),me=[],Re=i-c;function ge(je,Dt){let ir=Math.PI/2;y=Dt*B,T=2*Math.PI*(y%U)/U+ir,y+=O,L=Math.sin(T)*Re,w=Math.cos(T)*Re,t?je.set(w,L,y):je.set(w,y,L)}ge(h,-1e-10),ge(g,0),I.copy(h),ge(h,1);let $e=h.distanceTo(g),Te=M+z,St=$e*F+2*Te,Vt=z,Ro=St-Te;for(let je=0;je<=F;je++){ge(x,je),se.subVectors(x,I).normalize(),I.copy(x),ne.copy(x).setComponent(+t+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Dt=je===0,ir=je===F,nh=Dt?3*Math.PI/2:j,ih=Dt?Vt:Ro,sh=Dt?G:Z,ah=Dt?0:$-G,lh=se.clone().multiplyScalar(Dt?-M:M).add(x),ch=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Lr=0;Lr<G;Lr++){let Pc=Lr*Q;if(C.addVectors(h.copy(ne).multiplyScalar(c*Math.cos(Pc)),g.copy(ue).multiplyScalar(c*Math.sin(Pc))),N.copy(C).normalize(),Dt||ir){f||(q=ah+Lr,[0,1,2].forEach(wt=>{re[q*3+wt]=lh.getComponent(wt),ce[q*3+wt]=ch.getComponent(wt)}),ie[q*2]=+ir,ie[q*2+1]=Lr/l),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let wt=0;wt<d;wt++){let Ha=wt*j+nh;k.addVectors(h.copy(se).multiplyScalar(M*Math.sin(Ha)),g.copy(N).multiplyScalar(M*Math.cos(Ha))),W.copy(k).normalize(),g.addVectors(v,k),k.normalize(),q=sh+wt*G+Lr,[0,1,2].forEach(ts=>{re[q*3+ts]=g.getComponent(ts),ce[q*3+ts]=W.getComponent(ts)});let uh=+Dt+Math.sin(Ha);ie[q*2]=(ih+M*uh)/St,ie[q*2+1]=Lr/l}}g.addVectors(x,C),q=H+je*G+Lr,[0,1,2].forEach(wt=>{re[q*3+wt]=g.getComponent(wt),ce[q*3+wt]=N.getComponent(wt)}),ie[q*2]=(Te+je*$e)/St,ie[q*2+1]=Lr/l}}let Mt=E+2*d+J,Fo=1,[Ji,es]=f?[Fo,Fo+E-1]:[0,Mt-1];for(let je=Ji;je<=es-1;je++){let Dt=f&&je===es-1;for(let ir=0;ir<G-1;ir++)A=je*G+ir,S=A+1,b=(Dt?ir:A)+G,D=(Dt?ir+1:S)+G,je===0?me.push(S,D,b):je===Mt-2?me.push(A,S,b):me.push(A,S,b,S,D,b)}this.setIndex(me),this.setAttribute("position",new Fr.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Fr.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Fr.Float32BufferAttribute(ie,2))}};var wf=require("three");var _f=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new yi(t*.5,i,s):new wf.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},yi=class extends oo{constructor(t=1,e=.2,r=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,t,e,r),this.type=a}static fromJSON(t){return new yi(t.radius,t.corner,t.cornerSides)}};var ma=require("three"),Tf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.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:t,segments:e,verticalSegments:r}=n.parameters,o=new ma.Shape;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new ma.LatheBufferGeometry(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var hr=require("three");var Vr=require("three");var oe=require("three"),mr=new oe.Matrix4,Vl=new oe.Object3D,ha=new oe.Vector3,no=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.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(t){let e=new oe.Matrix3().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];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(t){return mr.makeRotationX(t),this.applyMatrix4(mr),this}rotateY(t){return mr.makeRotationY(t),this.applyMatrix4(mr),this}rotateZ(t){return mr.makeRotationZ(t),this.applyMatrix4(mr),this}translate(t,e,r){return mr.makeTranslation(t,e,r),this.applyMatrix4(mr),this}scale(t,e,r){return mr.makeScale(t,e,r),this.applyMatrix4(mr),this}lookAt(t){return Vl.lookAt(t),Vl.updateMatrix(),this.applyMatrix4(Vl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.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,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new oe.Vector3().fromBufferAttribute(i,d)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,d));function l(d,f,m,h){let g=a===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],x=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,f),new oe.Vector3().fromBufferAttribute(s,m)],v=new Tn(d,f,m,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,f),new oe.Vector2().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(p,d),new oe.Vector2().fromBufferAttribute(p,f),new oe.Vector2().fromBufferAttribute(p,m)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let f=u[d],m=f.start,h=f.count;for(let g=m,x=m+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):l(g,g+1,g+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)l(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)l(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ha).negate(),this.translate(ha.x,ha.y,ha.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,a),e.subVectors(s,a),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],p=this.vertices[a.b],l=this.vertices[a.c];r.subVectors(l,p),o.subVectors(c,p),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],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 t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;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 t=new no;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;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 p=new oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};i.push(p),s.push(l)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(a.normal),p.a.copy(a.vertexNormals[0]),p.b.copy(a.vertexNormals[1]),p.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,a=t.vertices,c=this.faces,p=t.faces,l=this.colors,u=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let d=0,f=a.length;d<f;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)l.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,g,x=m.vertexNormals,v=m.vertexColors,A=new Tn(m.a+i,m.b+i,m.c+i);A.normal.copy(m.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let S=0,b=x.length;S<b;S++)h=x[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)g=v[S],A.vertexColors.push(g.clone());A.materialIndex=m.materialIndex+r,c.push(A)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;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,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;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 d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(p,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);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 p=t[c]._id;s&&s.push(o[p]),a&&a.push(i[p])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}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 r=[],o=[],i={},s=[],a={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],g=!0,x=!1,v=this.faceVertexUvs[0][m]!==void 0,A=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,w=0;if(w=l(w,0,0),w=l(w,1,g),w=l(w,2,x),w=l(w,3,v),w=l(w,4,A),w=l(w,5,S),w=l(w,6,b),w=l(w,7,D),r.push(w),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(A&&r.push(u(h.normal)),S){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function l(m,h,g){return g?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 d(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 p[h]!==void 0||(p[h]=c.length/2,c.push(m.x,m.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new no().copy(this)}copy(t){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=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,f=p.length;d<f;d++)this.lineDistances.push(p[d]);let l=t.boundingBox;l!==null&&(this.boundingBox=l.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new zl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let p=s[a],l=new oe.Float32BufferAttribute(p.data.length*3,3);l.name=p.name,i.push(l.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.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(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),i=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new oe.Float32BufferAttribute(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};no.prototype.isGeometry=!0;var zl=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(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,c=a.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:a[x].name,data:[]};this.morphTargets.position=p}let l=t.morphNormals,u=l.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:l[x].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<c;b++){let D=a[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=l[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),g&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Tn=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var Yb=["a","b","c"];function Kb(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ul(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function jl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),c=s+"_"+a,p;if(r.has(c))p=r.get(c);else{let l=e[s],u=e[a];p={a:l,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function Qb(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],jl(s.a,s.b,n,r,s,e),jl(s.b,s.c,n,r,s,e),jl(s.c,s.a,n,r,s,e)}function ga(n,t,e,r,o){n.push(new Tn(t,e,r,void 0,void 0,o))}function An(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function ya(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var xa=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Vr.BufferGeometry?t=new no().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new Vr.Vector3,r,o,i,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],f=new Map;Qb(c,p,d,f);let m=[],h,g,x,v,A,S,b;for(let V of Array.from(f.keys())){for(g=f.get(V),x=new Vr.Vector3,A=3/8,S=1/8,b=g.faces.length,b!=2&&(A=.5,S=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],a=0;a<3&&(h=c[Kb(v,Yb[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),g.newEdge=m.length,m.push(x)}let D,w,y,L,T,I,C,N=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),w=1-r*Number(D),y=D,r<=2&&(r==2?(w=3/4,y=1/8):r==1||r==0),C=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)L=T[s],h=L.a!==I?L.a:L.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let k=N.concat(m),W=N.length,ne,ue,se,K=[],U=[],F,E,B,O,G=new Vr.Vector2,Q=new Vr.Vector2,j=new Vr.Vector2;for(o=0,i=p.length;o<i;o++)v=p[o],ne=Number(Ul(v.a,v.b,f).newEdge)+W,ue=Number(Ul(v.b,v.c,f).newEdge)+W,se=Number(Ul(v.c,v.a,f).newEdge)+W,ga(K,ne,ue,se,v.materialIndex),ga(K,v.a,ne,se,v.materialIndex),ga(K,v.b,ue,ne,v.materialIndex),ga(K,v.c,se,ue,v.materialIndex),u&&(F=l[o],E=F[0],B=F[1],O=F[2],G.set(An(E.x,B.x),An(E.y,B.y)),Q.set(An(B.x,O.x),An(B.y,O.y)),j.set(An(E.x,O.x),An(E.y,O.y)),ya(U,G,Q,j),ya(U,E,G,j),ya(U,B,Q,G),ya(U,O,j,Q));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var et=new hr.Vector3,Af=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new hr.BufferGeometry().copy(new hr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),r={width:et.x,height:et.y,depth:et.z,subdivisions:0}):r=t.parameters;let o={...r,...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:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new hr.BufferGeometry().copy(new hr.BoxBufferGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(t!==et.x||e!==et.y||r!==et.z)&&i.scale(et.x===0?1:t/et.x,et.y===0?1:e/et.y,et.z===0?1:r/et.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new xa(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new hr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(i.parameters,{width:100,height:et.y*s,depth:et.z*s}),t(this.build(i))})}};var Cf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5,u=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let g=f*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*l;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=xt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var ve=require("three"),Nf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=new Hl(t*.5,e,o,i,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function xi(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function kl(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let p=s.add(a).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(a,r/Math.sin(p))}}function Zb(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Hl=class extends ve.BufferGeometry{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let c=[],p=[],l=[],u=[],d=0,f=e/2,m=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new ve.Vector3(0,-f,0),S=new ve.Vector3(0,f,0),b=new ve.Vector2(t,-f),D=new ve.Vector2(h,-f),w=new ve.Vector2(0,S.y).sub(D),y=new ve.Vector2(0,S.y).sub(b),L=new ve.Vector2(w.y,-w.x).normalize(),T=new ve.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new ve.Vector3(L.x,L.y,0),F=new ve.Vector3(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-N)/2),ne=new ve.Vector3;if(!i){p.push(A.x,A.y,A.z),l.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let G=O/r*Math.PI*2+m,Q=new ve.Vector2(Math.sin(G),Math.cos(G));xi(E,Q,ne),p.push(ne.x,ne.y,ne.z),l.push(0,-1,0),u.push(0,0),F.push(d++)}for(let O=0;O<F.length;O++)c.push(F[O],U,F[(O+1)%F.length])}let ue=[];{let U=new ve.Vector3,F=new ve.Vector3,E=new ve.Vector3,B=new ve.Vector3,O=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<r;Q++){let j=Q/r*Math.PI*2+m,V=(Q+.5)/r*Math.PI*2+m,z=(Q+1)/r*Math.PI*2+m,M=new ve.Vector2(Math.sin(j),Math.cos(j)),q=new ve.Vector2(Math.sin(V),Math.cos(V)),J=new ve.Vector2(Math.sin(z),Math.cos(z));xi(b,M,F),xi(b,J,E),xi(L,q,U),kl(S,F,E,W,W,B),p.push(B.x,B.y,B.z),kl(F,S,E,W,k,O),p.push(O.x,O.y,O.z),kl(E,F,S,k,W,G),p.push(G.x,G.y,G.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let ce=F.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),Re=A.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(O);se(ce,ge,Re,w.angle())}let $,re;{let ce=new ve.Vector3;xi(T,J,ce);let ie=G.clone().add(B).multiplyScalar(.5);ie=Zb(ie,E,S);let me=G.clone().sub(B);[$,re]=se(ie,me,ce,N,B.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),me=new ve.Vector3(0,-1,0),Re=ie.clone().cross(me);K(ce,ie,me,Re)}ue.concat(re);{let ce=w.angle(),ie=Math.PI-ce,me=S.clone();me.y-=s/Math.sin(ce-Math.PI/2);let Re=new ve.Vector3,ge=[];for(let Te=0;Te<a;Te++){let St=[],Vt=Math.PI/2-ie*Te/a,Ro=Math.cos(Vt),Mt=Math.sin(Vt),Fo=V;for(let Ji=0;Ji<=Te;Ji++){let es=Math.cos(Fo),je=Math.sin(Fo);U.x=Ro*je,U.y=Mt,U.z=Ro*es,Re.copy(me).addScaledVector(U,s),p.push(Re.x,Re.y,Re.z),l.push(U.x,U.y,U.z),u.push(0,0),St.push(d++),Fo+=Math.PI*2/Te/r}ge.push(St)}re.reverse(),ge.push(re);let $e=ge.length-1;for(let Te=0;Te<$e;Te++){let St=ge[Te],Vt=ge[Te+1],Ro=St.length-1;c.push(Vt[1],St[0],Vt[0]);for(let Mt=1;Mt<=Ro;Mt++)c.push(St[Mt],St[Mt-1],Vt[Mt]),c.push(Vt[Mt+1],St[Mt],Vt[Mt])}}}}}this.setIndex(c),this.setAttribute("position",new ve.Float32BufferAttribute(p,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(l,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(u,2));function se(U,F,E,B,O){let G=-B/2,Q=(Math.PI-B)/2,j=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new ve.Vector3,z=new ve.Vector3,M=1,q=d,J=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;z.set(0,0,0),z.addScaledVector(j,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),O!=null){let re=Math.max(0,V.y-O);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.z),l.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<a;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,ce=Z+1;c.push(Z,$,ce),c.push($,re,ce)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let O=Math.PI/2,G=y.angle()-O,Q=[],j=new ve.Vector3,V=new ve.Vector3;for(let M=0;M<=a;M++){let q=[],J=M/a;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),ce=Math.atan(Math.tan(G)*$),ie=(O+ce)*J,me=Math.cos(ie),Re=Math.sin(ie);j.set(0,0,0),j.addScaledVector(F,Re*$),j.addScaledVector(E,me),j.addScaledVector(B,Re*re),V.copy(U).addScaledVector(j,s),p.push(V.x,V.y,V.z),l.push(j.x,j.y,j.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var Pf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.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:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},l={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(S,b,D){return b>e&&D>r?Math.min(S*e/b,S*r/D):b>e?S*e/b:D>r?S*r/D:S}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(m,x)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=xt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};var If=require("three"),Lf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:p}=n.parameters,l=new If.SphereBufferGeometry(.5*t,o,i,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Of=require("three"),Mf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Of.PlaneBufferGeometry(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var io=require("three"),Df=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,a=new Wl(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Wl=class extends io.BufferGeometry{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],p=[],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=[],d=Math.PI/2,f=(V=0,z=0,M=0)=>new io.Vector3(V,z,M),m=f(),h=f(),[g,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-g,+v),f(A,-g,-v),f(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),L=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));w.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,I=b.z-l;o<=d?(w.z=Math.min(T,I),w.z==I&&(w.y-=(T-I)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),m.subVectors(b,D),h.subVectors(w,D);let C=Math.min(m.length(),h.length())*i/100,N=C*Math.tan(o/2),k=C/Math.cos(o/2),W=m.clone().normalize().add(h.normalize()).setLength(k).add(D);m.set(0,y(o,!0),L(o,!0)),u.push([w,m.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*ne;m.set(0,Math.sin(z)*N,Math.cos(z)*N),m.add(W),h.set(0,y(z),L(z)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let ue=Math.sin(ne/2)*N*2,se=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[se-1][0].distanceTo(u[se][0]),F=K+ue*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ue)/F);u[se].push(0);let[E,B,O]=u[0],G,Q,j;for(let V=1;V<u.length;V++)[G,Q,j]=u[V],a.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Q,j];this.setAttribute("position",new io.Float32BufferAttribute(a,3)),this.setAttribute("normal",new io.Float32BufferAttribute(c,3)),this.setAttribute("uv",new io.Float32BufferAttribute(p,2))}};var Bf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,l=n.shape,u=t*.5,d=e*.5,f=0,m=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,D=f+Math.sin(b)*u,w=m+Math.cos(b)*d;l.addPoint(l.createPoint(D,w))}}else for(let S=0;S<o;S++){let b=f+Math.cos(g)*u,D=m+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=f+Math.cos(g)*x,D=m+Math.sin(g)*v,S<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let S=0,b=l.points.length;S<b;S++)l.points[S].roundness=i;l.roundness=i,l.update();let A=xt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};var Ef=require("three"),va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e}=n.parameters,r=new Ef.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Gf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:c}=n.parameters,p=Jb(t,e,r,t*.5,s,i,0,0,o,a,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function Jb(n,t,e,r,o,i,s,a,c,p,l){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new gi(!0,n,t,e,r,o,i,s,a,c,p,l)}var Rf=require("three"),Ff=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let c=new Rf.TorusKnotBufferGeometry(a,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Vf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,c=n.shape,p=t*.5,l=e*.5;a?(c.addPoint(c.createPoint(-p,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))),c.isClosed=!0;for(let d=0,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=xt.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};var He=require("three");var eS,ba=new Promise(n=>{eS=n});var zf=require("three");function Sa(n,t){return tS(n)}function tS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Ae.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new zf.BufferGeometryLoader().parse(n));let e;try{e=vi(t)}catch(r){console.error(r)}if(!e){let r=Ae.createFromState(pn.defaultData(),100,100);t.shape=r,e=vi(t)}return e}var de;ba.then(n=>{de=n});var Uf=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),jf=new Uint32Array([0,1,2,3]),kf=new Uint8Array([4]),Ht=class{static build(n,t,e,r,o){let i,s,a,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(de.free_bvh(e),de.free_subdivision_surface(e));try{i=Ht.allocate(n,o)}catch(p){console.error(p,n),i=Ht.allocate({positionWASM:Uf,indexWASM:jf,verticesPerFaceWASM:kf},o)}de.set_destination_refinement_level(i,0),s=Ht.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ht.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(de.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Ht.buildLevel(i,!1,c):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:Sa(n),r,o,i,s;({positions:r,triIndices:s}=Yl(e.getAttribute("position"),e.getIndex()));let a;if(n.type==="CylinderGeometry"&&n.cornerRadius===0&&n.hollow===0&&n.openEnded===!1){let c=n.radialSegments*n.heightSegments*3*2,p=c+n.radialSegments*3;a=[c,p]}return{indices:o,verticesPerFace:i}=Kl(r,s,e,a),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=Uf,r=jf,o=kf);let a=e.length,c=r.length,p=o.length,l=e.length+i.length+s.length,u=r.length+o.length,d=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=l*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=de._malloc(d),g=new Float32Array(de.HEAPF32.buffer,h,l),x=new Uint32Array(de.HEAPU32.buffer,h+f,u);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(S=>S!==1)&&(v=new He.Matrix4().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?de.alloc_subdivision_surface2(h,a,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):de.alloc_subdivision_surface(h,a,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return de._free(h),A}static buildLevel(n,t,e,r,o){let i=o?de.get_mesh_data2(n,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(n,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,a=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(4,4+4),p=0,l=de.HEAPU32[a[p]>>2],u=de.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=de.HEAPU32[a[p]>>2],f=de.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=de.HEAPU32[a[p]>>2],h=de.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let g=de.HEAPU32[a[p]>>2],x=de.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new He.BufferGeometry;if(v.setIndex(new He.Uint32BufferAttribute(x,1)),v.setAttribute("position",new He.Float32BufferAttribute(u,3)),v.setAttribute("normal",new He.Float32BufferAttribute(f,3)),t){v.setAttribute("faceMap",new He.Uint32BufferAttribute(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new He.BufferAttribute(A,4))}return de.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=de.get_wireframe_data_for_base_level(n),o=4,i=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,c=de.HEAPU32[i[a]>>2],p=de.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=de.HEAPU32[i[a]>>2],u=de.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new He.BufferGeometry;d.setAttribute("position",new He.Float32BufferAttribute(p,3));let f=new Float32Array(p.length);for(let m=0,h=p.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new He.BufferAttribute(f,3)),d.setIndex(new He.Uint32BufferAttribute(u,1)),de.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||de.set_destination_refinement_level(n,t);let o=e?de.get_topological_data2(n,r?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(n,r?de.Level.CONTROL:de.Level.REFINED),i=6,s=de.HEAPU32.subarray(o>>2,(o>>2)+i),a=s.subarray(3,3+3),c=0,p=de.HEAPU32[s[c]>>2],l=new Float32Array(de.HEAPF32.subarray(p>>2,(p>>2)+a[c]));c++;let u=de.HEAPU32[s[c]>>2],d=new Uint32Array(de.HEAPU32.subarray(u>>2,(u>>2)+a[c]));c++;let f=de.HEAPU32[s[c]>>2],m=new Uint8Array(de.HEAPU32.subarray(f>>2,(f>>2)+a[c]));return de.free_topological_data(o),{positions:l,indices:d,verticesPerFace:m}}};var Hf=["getX","getY","getZ"];function Yl(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let p=0;p<r;p++){let l=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[Hf[d]](l)*a)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[Hf[d]](l));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var wa=new He.Vector3,ql=new He.Vector3,$l=new He.Vector3,Xl=new He.Vector3;function Kl(n,t,e,r){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=0;for(let p=0;p<s.length;p+=2)a+=(s[p]-s[(p===0?s.length:p)-2])*(s[p+1]+s[(p===0?s.length:p)-1]);n.length=0;let c=0;if(a<0)for(let p=0;p<s.length;p+=2)n.push(s[p],s[p+1],0),o.push(c++);else for(let p=s.length-2;p>=0;p-=2)n.push(s[p],s[p+1],0),o.push(c++);return i.push(c),{indices:o,verticesPerFace:i}}for(let s=0,a=e.capStartIndex??t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){wa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),ql.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),$l.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Xl.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),ql.sub(wa).normalize(),$l.sub(wa).normalize(),Xl.sub(wa).normalize();let c=ql.cross($l).dot(Xl);Math.abs(c)>.005||r&&r.some((p,l)=>l%2===1?!1:s>=r[l]&&s<r[l+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],c=0,p=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,u=0;l<n.length;l+=3,u++)n[l+2]===0&&(s.push(u),c++),n[l+2]===p&&a.push(u);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 Zt={};Lc(Zt,{calcBoolean:()=>iS,calcBooleanTopological:()=>nS,freeMeshSet:()=>lS,getMeshSet:()=>sS,transformMeshSet:()=>aS});var rS,Wf=new Promise(n=>{rS=n});var bi=require("three");var ye,Cn;Wf.then(n=>ye=n);function oS(n,t,e){let r,{positions:o,triIndices:i}=Yl(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:a,verticesPerFace:c}=Kl(o,i,n);s=c.length,r=[];for(let p=0,l=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(a[l++])}}else{let a=i.length;r=Array(a+a/3),s=0;for(let c=0,p=0;p<r.length;)r[p++]=3,s++,r[p++]=i[c++],r[p++]=i[c++],r[p++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function qf(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,t):new Float32Array(ye.HEAPF32.buffer,i,t)).set(n,0),i}function $f(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function nS(n,t){Cn===void 0&&(Cn=ye.init_csg());let e=qf(n),r=ye.csg_calc_topological(Cn,e,n.length,$f(t));ye._free(e);let o=6,i=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,c=ye.HEAPU32[i[a]>>2],p=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=ye.HEAPU32[i[a]>>2],u=new Uint32Array(ye.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=ye.HEAPU32[i[a]>>2],f=new Uint8Array(ye.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return ye.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function iS(n,t,e,r){Cn===void 0&&(Cn=ye.init_csg());let o=qf(n),i=ye.csg_calc(Cn,o,n.length,r,$f(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),p=0,l=ye.HEAPU32[a[p]>>2],u=ye.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=ye.HEAPU32[a[p]>>2],f=ye.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new bi.Float32BufferAttribute(u,3)),e.setAttribute("normal",new bi.Float32BufferAttribute(f,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new bi.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},ye.free_mesh_data(i),m}function sS(n,t,e){if(ye===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((x,v)=>x+v,0)+i);for(let x=0,v=0,A=0;x<g.verticesPerFace.length;x++){o[A++]=g.verticesPerFace[x];for(let S=0;S<g.verticesPerFace[x];S++)o[A++]=g.indices[v++]}}else({positions:r,faceIndices:o,nFaces:i}=oS(n,t,e));let s=r.length,a=o.length,c=r.length,p=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=ye._malloc(l),m=new Float32Array(ye.HEAPF32.buffer,f,c),h=new Uint32Array(ye.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),ye.get_csg_mesh(f,s,f+u,a,i)}function aS(n,t){ye.transform_csg_mesh(n,t.elements)}function lS(n){ye.free_csg_mesh(n)}var Ql={ConeGeometry:cf,CubeGeometry:uf,CylinderGeometry:af,DodecahedronGeometry:df,EllipseGeometry:yf,HelixGeometry:Sf,IcosahedronGeometry:_f,LatheGeometry:Tf,NonParametricGeometry:Af,PolygonGeometry:Cf,PyramidGeometry:Nf,RectangleGeometry:Pf,SphereGeometry:Lf,PlaneGeometry:Mf,BackdropGeometry:Df,StarGeometry:Bf,TextFrameGeometry:va,TorusGeometry:Gf,TorusKnotGeometry:Ff,TriangleGeometry:Vf,VectorGeometry:xt},vi=n=>Ql[n.type].create(n);var ec=require("three");var Ta=require("three");var Zl=require("three");function Qe(n,t){return t.color(n)}var Jl=n=>"isEntity"in n,gr=n=>"isAbstractMesh"in n,yr=n=>n!==null&&n.objectType==="BooleanObject",Xf=n=>n.objectType==="CombinedCamera";var _a=n=>"objectHelper"in n;function cS(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Kr.identity)),e&&(n.updateMatrix(),yr(n.parent)&&gr(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function uS(n,t){cS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Yf(n,t,e){uS(n,t),t.color!==void 0&&(n.color=Qe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Zl.HemisphereLight)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Zl.HemisphereLight)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Kf(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Aa=n=>class extends n{hasEntityChild(){return this.children.some(e=>Jl(e))}isDescendantOf(e){e instanceof Ta.Object3D&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new Ta.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Jl(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};var Ue=require("three");var Nn=new Ue.Box3,xr=new Ue.Vector3,vr=new Ue.Vector3,Pn=new Ue.Matrix4,Zf=[new Ue.Vector3(-1,1,1),new Ue.Vector3(-1,-1,1),new Ue.Vector3(1,-1,1),new Ue.Vector3(1,1,1),new Ue.Vector3(-1,1,-1),new Ue.Vector3(-1,-1,-1),new Ue.Vector3(1,-1,-1),new Ue.Vector3(1,1,-1)],pS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],dS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function fS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,c=-1/0,p=-1/0;for(let l=e;l<r;l++){let u=t.getX(l),d=t.getY(l),f=t.getZ(l);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>a&&(a=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(a,c,p),n}var Qf=(n,t,e)=>{if(gr(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?xr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(fS(Nn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),Nn.getCenter(xr)),n.forceComputeSize?Nn.getSize(vr).multiplyScalar(.5):vr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(_a(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");Nn.setFromArray(r.array),Nn.getCenter(xr),Nn.getSize(vr).multiplyScalar(.5)}else xr.setScalar(0),vr.setScalar(0);Pn.copy(t).multiply(n.matrixWorld),vr.x===0&&vr.y===0&&vr.z===0?e.push(new Ue.Vector3(xr.x,xr.y,xr.z).applyMatrix4(Pn)):Zf.forEach(r=>{e.push(r.clone().multiply(vr).add(xr).applyMatrix4(Pn))})},Si=class extends Ue.Box3{constructor(){super(...arguments);this.matrix=new Ue.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(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ue.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Qf(s,r,i)}):Qf(e,r,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(Pn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(vr).multiplyScalar(.5),this.getCenter(xr),Pn.copy(this.matrix).setPosition(xr),this.vertices=Zf.map(e=>e.clone().multiply(vr).applyMatrix4(Pn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=pS.map(([e,r])=>new Ue.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ue.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=dS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var br=n=>"isEntity"in n,Jf=n=>"isAbstractMesh"in n,Wt=n=>class extends Aa(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new ec.Matrix4;this._singleBBox=new Si;this._recursiveBBox=new Si;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}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}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{br(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)br(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)br(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(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,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&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)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)br(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new ec.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)br(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){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 nn(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return nn(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};var Ba=require("three");var er=require("three");var wi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var em=require("three"),it=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=em.MathUtils.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof it&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var tc=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},tt=new tc;var rc=require("three");var tm=require("three"),le=class extends it{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=tm.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,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(p+" = "+l+";"),e.format(p,c,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ie=class extends le{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,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,r,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,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}};var st=class extends Ie{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof rc.Vector2?e:new rc.Vector2(e,r)}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,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};var oc=require("three");var ut=class extends Ie{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof oc.Vector3?e:new oc.Vector3(e,r,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,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var rm=require("three"),rt=class extends rm.Color{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,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)}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 Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof rt?e:new rt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var mS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,om=/[a-z_0-9]+/gi,X=class extends le{constructor(e,r,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,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let a,c=0,p=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=om.exec(this.src);)l.push(a);for(let u=0;u<l.length;u++){let d=l[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&tt.containsKeyword(f)){let g=this.keywords[f];if(!g){let x=tt.getKeywordData(f);x.cache&&(g=e.keywords[f]),g=g||tt.getKeyword(f,e),x.cache&&(e.keywords[f]=g)}h=g.build(e)}f!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&tt.contains(h)&&e.include(tt.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=mS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(om);if(a){let c=0;for(;c<a.length;){let p=a[c++],l;p==="in"||p==="out"||p==="inout"?l=a[c++]:(l=p,p="");let u=a[c++];this.inputs.push({name:u,type:l,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var hS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,nc=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||nc.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,c,p="",l=hS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],p=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=p}build(e,r){if(r==="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),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},Se=nc;Se.PI="PI",Se.PI2="PI2",Se.RECIPROCAL_PI="RECIPROCAL_PI",Se.RECIPROCAL_PI2="RECIPROCAL_PI2",Se.LOG2="LOG2",Se.EPSILON="EPSILON";var gS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
- )*?)}`,"gim"),yS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),In=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 r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=gS.exec(e);if(r){let o=r[2],i;for(;i=yS.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Ln=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){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),r)}};tt.addKeyword("uv",function(){return new Ln});tt.addKeyword("uv2",function(){return new Ln(1)});var Ca=require("three");var Po=class extends le{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??Po.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Ca.LinearEncoding:return["Linear"];case Ca.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=Po.Nodes[this.method],a=e.include(s);if(a===Po.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,r)}else return e.format(a+"( "+o+" )",i,r)}fromEncoding(e){let r=Po.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=Po.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},vt=Po;vt.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
- `)),sRGBToLinear:new X(["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(`
4
- `)),LinearTosRGB:new X(["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(`
5
- `))},vt.LINEAR_TO_LINEAR="LinearToLinear",vt.SRGB_TO_LINEAR="sRGBToLinear",vt.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};var nm=require("three"),Pt=class extends Ie{constructor(e=new nm.Texture,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Ln,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),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 p={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new vt(new _e("",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,r)}};var Y=class extends Ie{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var _i=class extends le{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let a=this.value,c=a.build(e,r)+"( ",p=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let u=a.inputs[l],d=this.inputs[l]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,i,r)}};var ic=class extends le{constructor(e,r,o=ic.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){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,r)}},It=ic;It.ADD="+",It.SUB="-",It.MUL="*",It.DIV="/";var Pe=class extends le{constructor(e,r=Pe.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Pe.MIX:case Pe.CLAMP:case Pe.REFRACT:case Pe.SMOOTHSTEP:case Pe.FACEFORWARD:return 3;case Pe.MIN:case Pe.MAX:case Pe.MOD:case Pe.STEP:case Pe.REFLECT:case Pe.DISTANCE:case Pe.DOT:case Pe.CROSS:case Pe.POW:return 2;default:return 1}}getInputType(e){let r=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 r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Pe.LENGTH:case Pe.DISTANCE:case Pe.DOT:return"f";case Pe.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,p=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Pe.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,r);case Pe.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,r);case Pe.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Pe.STEP:o=this.a.build(e,a===1?"f":l),i=this.b.build(e,l);break;case Pe.MIN:case Pe.MAX:case Pe.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case Pe.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case Pe.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,p===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 d=[];d.push(o),i&&d.push(i),s&&d.push(s);let f=this.getNumInputs(e);if(d.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",u,r)}},fe=Pe;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 On=class extends le{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let s=new _i(On.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new vt(new _e("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new vt(new _e("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new vt(new _e("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new vt(new _e("","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 _e(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new _e(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new _e(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new _e(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new _e("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,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new _i(On.Nodes.roughnessToMip,[i]),a=new fe(s,On.Nodes.m0,On.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(a,fe.FLOOR),p=new fe(a,fe.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new It(c,new Y(1).setReadonly(!0),It.ADD)),d=new fe(l,u,p,fe.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Mn=On;Mn.Nodes=function(){let e=new In(`struct TextureCubeUVData {
1
+ var pv=Object.create;var hs=Object.defineProperty;var fv=Object.getOwnPropertyDescriptor;var dv=Object.getOwnPropertyNames;var hv=Object.getPrototypeOf,mv=Object.prototype.hasOwnProperty;var yc=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),Dp=(r,t)=>{for(var e in t)hs(r,e,{get:t[e],enumerable:!0})},Bp=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of dv(t))!mv.call(r,o)&&o!==e&&hs(r,o,{get:()=>t[o],enumerable:!(n=fv(t,o))||n.enumerable});return r};var Fp=(r,t,e)=>(e=r!=null?pv(hv(r)):{},Bp(t||!r||!r.__esModule?hs(e,"default",{value:r,enumerable:!0}):e,r)),gv=r=>Bp(hs({},"__esModule",{value:!0}),r);var Xu=yc(()=>{});var g0=yc((cc,m0)=>{(function(r,t){typeof cc=="object"&&typeof m0<"u"?t(cc):typeof define=="function"&&define.amd?define(["exports"],t):t((r=typeof globalThis<"u"?globalThis:r||self).SVDJS={})})(cc,function(r){"use strict";r.SVD=function(t,e,n,o,i){if(e=e===void 0||e,n=n===void 0||n,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,u,c,p,f,d,h,m,g,v,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],_=[],T=e==="f"?S:x,y=m=f=0;y<S;y++)b[y]=new Array(T).fill(0);for(y=0;y<x;y++)_[y]=new Array(x).fill(0);var I,A=new Array(x).fill(0);for(y=0;y<S;y++)for(a=0;a<x;a++)b[y][a]=t[y][a];for(y=0;y<x;y++){for(w[y]=f,h=0,l=y+1,a=y;a<S;a++)h+=Math.pow(b[a][y],2);if(h<i)f=0;else for(d=(p=b[y][y])*(f=p<0?Math.sqrt(h):-Math.sqrt(h))-h,b[y][y]=p-f,a=l;a<x;a++){for(h=0,s=y;s<S;s++)h+=b[s][y]*b[s][a];for(p=h/d,s=y;s<S;s++)b[s][a]=b[s][a]+p*b[s][y]}for(A[y]=f,h=0,a=l;a<x;a++)h+=Math.pow(b[y][a],2);if(h<i)f=0;else{for(d=(p=b[y][y+1])*(f=p<0?Math.sqrt(h):-Math.sqrt(h))-h,b[y][y+1]=p-f,a=l;a<x;a++)w[a]=b[y][a]/d;for(a=l;a<S;a++){for(h=0,s=l;s<x;s++)h+=b[a][s]*b[y][s];for(s=l;s<x;s++)b[a][s]=b[a][s]+h*w[s]}}m<(g=Math.abs(A[y])+Math.abs(w[y]))&&(m=g)}if(n)for(y=x-1;0<=y;y--){if(f!==0){for(d=b[y][y+1]*f,a=l;a<x;a++)_[a][y]=b[y][a]/d;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=b[y][s]*_[s][a];for(s=l;s<x;s++)_[s][a]=_[s][a]+h*_[s][y]}}for(a=l;a<x;a++)_[y][a]=0,_[a][y]=0;_[y][y]=1,f=w[y],l=y}if(e){if(e==="f")for(y=x;y<S;y++){for(a=x;a<S;a++)b[y][a]=0;b[y][y]=1}for(y=x-1;0<=y;y--){for(l=y+1,f=A[y],a=l;a<T;a++)b[y][a]=0;if(f!==0){for(d=b[y][y]*f,a=l;a<T;a++){for(h=0,s=l;s<S;s++)h+=b[s][y]*b[s][a];for(p=h/d,s=y;s<S;s++)b[s][a]=b[s][a]+p*b[s][y]}for(a=y;a<S;a++)b[a][y]=b[a][y]/f}else for(a=y;a<S;a++)b[a][y]=0;b[y][y]=b[y][y]+1}}for(o*=m,s=x-1;0<=s;s--)for(var O=0;O<50;O++){for(I=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){I=!0;break}if(Math.abs(A[l-1])<=o)break}if(!I){for(c=0,u=l-(h=1),y=l;y<s+1&&(p=h*w[y],w[y]=c*w[y],!(Math.abs(p)<=o));y++)if(f=A[y],A[y]=Math.sqrt(p*p+f*f),c=f/(d=A[y]),h=-p/d,e)for(a=0;a<S;a++)g=b[a][u],v=b[a][y],b[a][u]=g*c+v*h,b[a][y]=-g*h+v*c}if(v=A[s],l===s){if(v<0&&(A[s]=-v,n))for(a=0;a<x;a++)_[a][s]=-_[a][s];break}for(m=A[l],p=(((g=A[s-1])-v)*(g+v)+((f=w[s-1])-(d=w[s]))*(f+d))/(2*d*g),f=Math.sqrt(p*p+1),p=((m-v)*(m+v)+d*(g/(p<0?p-f:p+f)-d))/m,y=l+(h=c=1);y<s+1;y++){if(f=w[y],g=A[y],d=h*f,f*=c,v=Math.sqrt(p*p+d*d),p=m*(c=p/(w[y-1]=v))+f*(h=d/v),f=-m*h+f*c,d=g*h,g*=c,n)for(a=0;a<x;a++)m=_[a][y-1],v=_[a][y],_[a][y-1]=m*c+v*h,_[a][y]=-m*h+v*c;if(v=Math.sqrt(p*p+d*d),p=(c=p/(A[y-1]=v))*f+(h=d/v)*g,m=-h*f+c*g,e)for(a=0;a<S;a++)g=b[a][y-1],v=b[a][y],b[a][y-1]=g*c+v*h,b[a][y]=-g*h+v*c}w[l]=0,w[s]=p,A[s]=m}for(y=0;y<x;y++)A[y]<o&&(A[y]=0);return{u:b,q:A,v:_}},r.VERSION="1.1.1",Object.defineProperty(r,"__esModule",{value:!0})})});var N0=yc(pc=>{(function(){"use strict";var r=function(){this.init()};r.prototype={init:function(){var c=this||t;return c._counter=1e3,c._html5AudioPool=[],c.html5PoolSize=10,c._codecs={},c._howls=[],c._muted=!1,c._volume=1,c._canPlayEvent="canplaythrough",c._navigator=typeof window<"u"&&window.navigator?window.navigator:null,c.masterGain=null,c.noAudio=!1,c.usingWebAudio=!0,c.autoSuspend=!0,c.ctx=null,c.autoUnlock=!0,c._setup(),c},volume:function(c){var p=this||t;if(c=parseFloat(c),p.ctx||u(),typeof c<"u"&&c>=0&&c<=1){if(p._volume=c,p._muted)return p;p.usingWebAudio&&p.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var f=0;f<p._howls.length;f++)if(!p._howls[f]._webAudio)for(var d=p._howls[f]._getSoundIds(),h=0;h<d.length;h++){var m=p._howls[f]._soundById(d[h]);m&&m._node&&(m._node.volume=m._volume*c)}return p}return p._volume},mute:function(c){var p=this||t;p.ctx||u(),p._muted=c,p.usingWebAudio&&p.masterGain.gain.setValueAtTime(c?0:p._volume,t.ctx.currentTime);for(var f=0;f<p._howls.length;f++)if(!p._howls[f]._webAudio)for(var d=p._howls[f]._getSoundIds(),h=0;h<d.length;h++){var m=p._howls[f]._soundById(d[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return p},stop:function(){for(var c=this||t,p=0;p<c._howls.length;p++)c._howls[p].stop();return c},unload:function(){for(var c=this||t,p=c._howls.length-1;p>=0;p--)c._howls[p].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,u()),c},codecs:function(c){return(this||t)._codecs[c.replace(/^x-/,"")]},_setup:function(){var c=this||t;if(c.state=c.ctx&&c.ctx.state||"suspended",c._autoSuspend(),!c.usingWebAudio)if(typeof Audio<"u")try{var p=new Audio;typeof p.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var p=new Audio;p.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,p=null;try{p=typeof Audio<"u"?new Audio:null}catch{return c}if(!p||typeof p.canPlayType!="function")return c;var f=p.canPlayType("audio/mpeg;").replace(/^no$/,""),d=c._navigator?c._navigator.userAgent:"",h=d.match(/OPR\/([0-6].)/g),m=h&&parseInt(h[0].split("/")[1],10)<33,g=d.indexOf("Safari")!==-1&&d.indexOf("Chrome")===-1,v=d.match(/Version\/(.*?) /),x=g&&v&&parseInt(v[1],10)<15;return c._codecs={mp3:!!(!m&&(f||p.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!f,opus:!!p.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!p.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!p.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(p.canPlayType('audio/wav; codecs="1"')||p.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!p.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!p.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(p.canPlayType("audio/x-m4a;")||p.canPlayType("audio/m4a;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(p.canPlayType("audio/x-m4b;")||p.canPlayType("audio/m4b;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(p.canPlayType("audio/x-mp4;")||p.canPlayType("audio/mp4;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&p.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&p.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!p.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(p.canPlayType("audio/x-flac;")||p.canPlayType("audio/flac;")).replace(/^no$/,"")},c},_unlockAudio:function(){var c=this||t;if(!(c._audioUnlocked||!c.ctx)){c._audioUnlocked=!1,c.autoUnlock=!1,!c._mobileUnloaded&&c.ctx.sampleRate!==44100&&(c._mobileUnloaded=!0,c.unload()),c._scratchBuffer=c.ctx.createBuffer(1,1,22050);var p=function(f){for(;c._html5AudioPool.length<c.html5PoolSize;)try{var d=new Audio;d._unlocked=!0,c._releaseHtml5Audio(d)}catch{c.noAudio=!0;break}for(var h=0;h<c._howls.length;h++)if(!c._howls[h]._webAudio)for(var m=c._howls[h]._getSoundIds(),g=0;g<m.length;g++){var v=c._howls[h]._soundById(m[g]);v&&v._node&&!v._node._unlocked&&(v._node._unlocked=!0,v._node.load())}c._autoResume();var x=c.ctx.createBufferSource();x.buffer=c._scratchBuffer,x.connect(c.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),x.onended=function(){x.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",p,!0),document.removeEventListener("touchend",p,!0),document.removeEventListener("click",p,!0),document.removeEventListener("keydown",p,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",p,!0),document.addEventListener("touchend",p,!0),document.addEventListener("click",p,!0),document.addEventListener("keydown",p,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var p=new Audio().play();return p&&typeof Promise<"u"&&(p instanceof Promise||typeof p.then=="function")&&p.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var p=this||t;return c._unlocked&&p._html5AudioPool.push(c),p},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var p=0;p<c._howls.length;p++)if(c._howls[p]._webAudio){for(var f=0;f<c._howls[p]._sounds.length;f++)if(!c._howls[p]._sounds[f]._paused)return c}return c._suspendTimer&&clearTimeout(c._suspendTimer),c._suspendTimer=setTimeout(function(){if(!!c.autoSuspend){c._suspendTimer=null,c.state="suspending";var d=function(){c.state="suspended",c._resumeAfterSuspend&&(delete c._resumeAfterSuspend,c._autoResume())};c.ctx.suspend().then(d,d)}},3e4),c}},_autoResume:function(){var c=this;if(!(!c.ctx||typeof c.ctx.resume>"u"||!t.usingWebAudio))return c.state==="running"&&c.ctx.state!=="interrupted"&&c._suspendTimer?(clearTimeout(c._suspendTimer),c._suspendTimer=null):c.state==="suspended"||c.state==="running"&&c.ctx.state==="interrupted"?(c.ctx.resume().then(function(){c.state="running";for(var p=0;p<c._howls.length;p++)c._howls[p]._emit("resume")}),c._suspendTimer&&(clearTimeout(c._suspendTimer),c._suspendTimer=null)):c.state==="suspending"&&(c._resumeAfterSuspend=!0),c}};var t=new r,e=function(c){var p=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}p.init(c)};e.prototype={init:function(c){var p=this;return t.ctx||u(),p._autoplay=c.autoplay||!1,p._format=typeof c.format!="string"?c.format:[c.format],p._html5=c.html5||!1,p._muted=c.mute||!1,p._loop=c.loop||!1,p._pool=c.pool||5,p._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,p._rate=c.rate||1,p._sprite=c.sprite||{},p._src=typeof c.src!="string"?c.src:[c.src],p._volume=c.volume!==void 0?c.volume:1,p._xhr={method:c.xhr&&c.xhr.method?c.xhr.method:"GET",headers:c.xhr&&c.xhr.headers?c.xhr.headers:null,withCredentials:c.xhr&&c.xhr.withCredentials?c.xhr.withCredentials:!1},p._duration=0,p._state="unloaded",p._sounds=[],p._endTimers={},p._queue=[],p._playLock=!1,p._onend=c.onend?[{fn:c.onend}]:[],p._onfade=c.onfade?[{fn:c.onfade}]:[],p._onload=c.onload?[{fn:c.onload}]:[],p._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],p._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],p._onpause=c.onpause?[{fn:c.onpause}]:[],p._onplay=c.onplay?[{fn:c.onplay}]:[],p._onstop=c.onstop?[{fn:c.onstop}]:[],p._onmute=c.onmute?[{fn:c.onmute}]:[],p._onvolume=c.onvolume?[{fn:c.onvolume}]:[],p._onrate=c.onrate?[{fn:c.onrate}]:[],p._onseek=c.onseek?[{fn:c.onseek}]:[],p._onunlock=c.onunlock?[{fn:c.onunlock}]:[],p._onresume=[],p._webAudio=t.usingWebAudio&&!p._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(p),p._autoplay&&p._queue.push({event:"play",action:function(){p.play()}}),p._preload&&p._preload!=="none"&&p.load(),p},load:function(){var c=this,p=null;if(t.noAudio){c._emit("loaderror",null,"No audio support.");return}typeof c._src=="string"&&(c._src=[c._src]);for(var f=0;f<c._src.length;f++){var d,h;if(c._format&&c._format[f])d=c._format[f];else{if(h=c._src[f],typeof h!="string"){c._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}d=/^data:audio\/([^;,]+);/i.exec(h),d||(d=/\.([^.]+)$/.exec(h.split("?",1)[0])),d&&(d=d[1].toLowerCase())}if(d||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),d&&t.codecs(d)){p=c._src[f];break}}if(!p){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=p,c._state="loading",window.location.protocol==="https:"&&p.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new n(c),c._webAudio&&i(c),c},play:function(c,p){var f=this,d=null;if(typeof c=="number")d=c,c=null;else{if(typeof c=="string"&&f._state==="loaded"&&!f._sprite[c])return null;if(typeof c>"u"&&(c="__default",!f._playLock)){for(var h=0,m=0;m<f._sounds.length;m++)f._sounds[m]._paused&&!f._sounds[m]._ended&&(h++,d=f._sounds[m]._id);h===1?c=null:d=null}}var g=d?f._soundById(d):f._inactiveSound();if(!g)return null;if(d&&!c&&(c=g._sprite||"__default"),f._state!=="loaded"){g._sprite=c,g._ended=!1;var v=g._id;return f._queue.push({event:"play",action:function(){f.play(v)}}),v}if(d&&!g._paused)return p||f._loadQueue("play"),g._id;f._webAudio&&t._autoResume();var x=Math.max(0,g._seek>0?g._seek:f._sprite[c][0]/1e3),S=Math.max(0,(f._sprite[c][0]+f._sprite[c][1])/1e3-x),w=S*1e3/Math.abs(g._rate),b=f._sprite[c][0]/1e3,_=(f._sprite[c][0]+f._sprite[c][1])/1e3;g._sprite=c,g._ended=!1;var T=function(){g._paused=!1,g._seek=x,g._start=b,g._stop=_,g._loop=!!(g._loop||f._sprite[c][2])};if(x>=_){f._ended(g);return}var y=g._node;if(f._webAudio){var I=function(){f._playLock=!1,T(),f._refreshBuffer(g);var N=g._muted||f._muted?0:g._volume;y.gain.setValueAtTime(N,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,x,86400):y.bufferSource.noteGrainOn(0,x,S):g._loop?y.bufferSource.start(0,x,86400):y.bufferSource.start(0,x,S),w!==1/0&&(f._endTimers[g._id]=setTimeout(f._ended.bind(f,g),w)),p||setTimeout(function(){f._emit("play",g._id),f._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?I():(f._playLock=!0,f.once("resume",I),f._clearTimer(g._id))}else{var A=function(){y.currentTime=x,y.muted=g._muted||f._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(f._playLock=!0,T(),N.then(function(){f._playLock=!1,y._unlocked=!0,p?f._loadQueue():f._emit("play",g._id)}).catch(function(){f._playLock=!1,f._emit("playerror",g._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."),g._ended=!0,g._paused=!0})):p||(f._playLock=!1,T(),f._emit("play",g._id)),y.playbackRate=g._rate,y.paused){f._emit("playerror",g._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}c!=="__default"||g._loop?f._endTimers[g._id]=setTimeout(f._ended.bind(f,g),w):(f._endTimers[g._id]=function(){f._ended(g),y.removeEventListener("ended",f._endTimers[g._id],!1)},y.addEventListener("ended",f._endTimers[g._id],!1))}catch(P){f._emit("playerror",g._id,P)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=f._src,y.load());var O=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||O)A();else{f._playLock=!0,f._state="loading";var C=function(){f._state="loaded",A(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),f._clearTimer(g._id)}}return g._id},pause:function(c){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"pause",action:function(){p.pause(c)}}),p;for(var f=p._getSoundIds(c),d=0;d<f.length;d++){p._clearTimer(f[d]);var h=p._soundById(f[d]);if(h&&!h._paused&&(h._seek=p.seek(f[d]),h._rateSeek=0,h._paused=!0,p._stopFade(f[d]),h._node))if(p._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||p._emit("pause",h?h._id:null)}return p},stop:function(c,p){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"stop",action:function(){f.stop(c)}}),f;for(var d=f._getSoundIds(c),h=0;h<d.length;h++){f._clearTimer(d[h]);var m=f._soundById(d[h]);m&&(m._seek=m._start||0,m._rateSeek=0,m._paused=!0,m._ended=!0,f._stopFade(d[h]),m._node&&(f._webAudio?m._node.bufferSource&&(typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),f._cleanBuffer(m._node)):(!isNaN(m._node.duration)||m._node.duration===1/0)&&(m._node.currentTime=m._start||0,m._node.pause(),m._node.duration===1/0&&f._clearSound(m._node))),p||f._emit("stop",m._id))}return f},mute:function(c,p){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"mute",action:function(){f.mute(c,p)}}),f;if(typeof p>"u")if(typeof c=="boolean")f._muted=c;else return f._muted;for(var d=f._getSoundIds(p),h=0;h<d.length;h++){var m=f._soundById(d[h]);m&&(m._muted=c,m._interval&&f._stopFade(m._id),f._webAudio&&m._node?m._node.gain.setValueAtTime(c?0:m._volume,t.ctx.currentTime):m._node&&(m._node.muted=t._muted?!0:c),f._emit("mute",m._id))}return f},volume:function(){var c=this,p=arguments,f,d;if(p.length===0)return c._volume;if(p.length===1||p.length===2&&typeof p[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(p[0]);m>=0?d=parseInt(p[0],10):f=parseFloat(p[0])}else p.length>=2&&(f=parseFloat(p[0]),d=parseInt(p[1],10));var g;if(typeof f<"u"&&f>=0&&f<=1){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,p)}}),c;typeof d>"u"&&(c._volume=f),d=c._getSoundIds(d);for(var v=0;v<d.length;v++)g=c._soundById(d[v]),g&&(g._volume=f,p[2]||c._stopFade(d[v]),c._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(f,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=f*t.volume()),c._emit("volume",g._id))}else return g=d?c._soundById(d):c._sounds[0],g?g._volume:0;return c},fade:function(c,p,f,d){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,p,f,d)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),p=Math.min(Math.max(0,parseFloat(p)),1),f=parseFloat(f),h.volume(c,d);for(var m=h._getSoundIds(d),g=0;g<m.length;g++){var v=h._soundById(m[g]);if(v){if(d||h._stopFade(m[g]),h._webAudio&&!v._muted){var x=t.ctx.currentTime,S=x+f/1e3;v._volume=c,v._node.gain.setValueAtTime(c,x),v._node.gain.linearRampToValueAtTime(p,S)}h._startFadeInterval(v,c,p,f,m[g],typeof d>"u")}}return h},_startFadeInterval:function(c,p,f,d,h,m){var g=this,v=p,x=f-p,S=Math.abs(x/.01),w=Math.max(4,S>0?d/S:d),b=Date.now();c._fadeTo=f,c._interval=setInterval(function(){var _=(Date.now()-b)/d;b=Date.now(),v+=x*_,v=Math.round(v*100)/100,x<0?v=Math.max(f,v):v=Math.min(f,v),g._webAudio?c._volume=v:g.volume(v,c._id,!0),m&&(g._volume=v),(f<p&&v<=f||f>p&&v>=f)&&(clearInterval(c._interval),c._interval=null,c._fadeTo=null,g.volume(f,c._id),g._emit("fade",c._id))},w)},_stopFade:function(c){var p=this,f=p._soundById(c);return f&&f._interval&&(p._webAudio&&f._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(f._interval),f._interval=null,p.volume(f._fadeTo,c),f._fadeTo=null,p._emit("fade",c)),p},loop:function(){var c=this,p=arguments,f,d,h;if(p.length===0)return c._loop;if(p.length===1)if(typeof p[0]=="boolean")f=p[0],c._loop=f;else return h=c._soundById(parseInt(p[0],10)),h?h._loop:!1;else p.length===2&&(f=p[0],d=parseInt(p[1],10));for(var m=c._getSoundIds(d),g=0;g<m.length;g++)h=c._soundById(m[g]),h&&(h._loop=f,c._webAudio&&h._node&&h._node.bufferSource&&(h._node.bufferSource.loop=f,f&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop,c.playing(m[g])&&(c.pause(m[g],!0),c.play(m[g],!0)))));return c},rate:function(){var c=this,p=arguments,f,d;if(p.length===0)d=c._sounds[0]._id;else if(p.length===1){var h=c._getSoundIds(),m=h.indexOf(p[0]);m>=0?d=parseInt(p[0],10):f=parseFloat(p[0])}else p.length===2&&(f=parseFloat(p[0]),d=parseInt(p[1],10));var g;if(typeof f=="number"){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,p)}}),c;typeof d>"u"&&(c._rate=f),d=c._getSoundIds(d);for(var v=0;v<d.length;v++)if(g=c._soundById(d[v]),g){c.playing(d[v])&&(g._rateSeek=c.seek(d[v]),g._playStart=c._webAudio?t.ctx.currentTime:g._playStart),g._rate=f,c._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(f,t.ctx.currentTime):g._node&&(g._node.playbackRate=f);var x=c.seek(d[v]),S=(c._sprite[g._sprite][0]+c._sprite[g._sprite][1])/1e3-x,w=S*1e3/Math.abs(g._rate);(c._endTimers[d[v]]||!g._paused)&&(c._clearTimer(d[v]),c._endTimers[d[v]]=setTimeout(c._ended.bind(c,g),w)),c._emit("rate",g._id)}}else return g=c._soundById(d),g?g._rate:c._rate;return c},seek:function(){var c=this,p=arguments,f,d;if(p.length===0)c._sounds.length&&(d=c._sounds[0]._id);else if(p.length===1){var h=c._getSoundIds(),m=h.indexOf(p[0]);m>=0?d=parseInt(p[0],10):c._sounds.length&&(d=c._sounds[0]._id,f=parseFloat(p[0]))}else p.length===2&&(f=parseFloat(p[0]),d=parseInt(p[1],10));if(typeof d>"u")return 0;if(typeof f=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,p)}}),c;var g=c._soundById(d);if(g)if(typeof f=="number"&&f>=0){var v=c.playing(d);v&&c.pause(d,!0),g._seek=f,g._ended=!1,c._clearTimer(d),!c._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=f);var x=function(){v&&c.play(d,!0),c._emit("seek",d)};if(v&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(c._webAudio){var w=c.playing(d)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+w*Math.abs(g._rate))}else return g._node.currentTime;return c},playing:function(c){var p=this;if(typeof c=="number"){var f=p._soundById(c);return f?!f._paused:!1}for(var d=0;d<p._sounds.length;d++)if(!p._sounds[d]._paused)return!0;return!1},duration:function(c){var p=this,f=p._duration,d=p._soundById(c);return d&&(f=p._sprite[d._sprite][1]/1e3),f},state:function(){return this._state},unload:function(){for(var c=this,p=c._sounds,f=0;f<p.length;f++)p[f]._paused||c.stop(p[f]._id),c._webAudio||(c._clearSound(p[f]._node),p[f]._node.removeEventListener("error",p[f]._errorFn,!1),p[f]._node.removeEventListener(t._canPlayEvent,p[f]._loadFn,!1),p[f]._node.removeEventListener("ended",p[f]._endFn,!1),t._releaseHtml5Audio(p[f]._node)),delete p[f]._node,c._clearTimer(p[f]._id);var d=t._howls.indexOf(c);d>=0&&t._howls.splice(d,1);var h=!0;for(f=0;f<t._howls.length;f++)if(t._howls[f]._src===c._src||c._src.indexOf(t._howls[f]._src)>=0){h=!1;break}return o&&h&&delete o[c._src],t.noAudio=!1,c._state="unloaded",c._sounds=[],c=null,null},on:function(c,p,f,d){var h=this,m=h["_on"+c];return typeof p=="function"&&m.push(d?{id:f,fn:p,once:d}:{id:f,fn:p}),h},off:function(c,p,f){var d=this,h=d["_on"+c],m=0;if(typeof p=="number"&&(f=p,p=null),p||f)for(m=0;m<h.length;m++){var g=f===h[m].id;if(p===h[m].fn&&g||!p&&g){h.splice(m,1);break}}else if(c)d["_on"+c]=[];else{var v=Object.keys(d);for(m=0;m<v.length;m++)v[m].indexOf("_on")===0&&Array.isArray(d[v[m]])&&(d[v[m]]=[])}return d},once:function(c,p,f){var d=this;return d.on(c,p,f,1),d},_emit:function(c,p,f){for(var d=this,h=d["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===p||c==="load")&&(setTimeout(function(g){g.call(this,p,f)}.bind(d,h[m].fn),0),h[m].once&&d.off(c,h[m].fn,h[m].id));return d._loadQueue(c),d},_loadQueue:function(c){var p=this;if(p._queue.length>0){var f=p._queue[0];f.event===c&&(p._queue.shift(),p._loadQueue()),c||f.action()}return p},_ended:function(c){var p=this,f=c._sprite;if(!p._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(p._ended.bind(p,c),100),p;var d=!!(c._loop||p._sprite[f][2]);if(p._emit("end",c._id),!p._webAudio&&d&&p.stop(c._id,!0).play(c._id),p._webAudio&&d){p._emit("play",c._id),c._seek=c._start||0,c._rateSeek=0,c._playStart=t.ctx.currentTime;var h=(c._stop-c._start)*1e3/Math.abs(c._rate);p._endTimers[c._id]=setTimeout(p._ended.bind(p,c),h)}return p._webAudio&&!d&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,p._clearTimer(c._id),p._cleanBuffer(c._node),t._autoSuspend()),!p._webAudio&&!d&&p.stop(c._id,!0),p},_clearTimer:function(c){var p=this;if(p._endTimers[c]){if(typeof p._endTimers[c]!="function")clearTimeout(p._endTimers[c]);else{var f=p._soundById(c);f&&f._node&&f._node.removeEventListener("ended",p._endTimers[c],!1)}delete p._endTimers[c]}return p},_soundById:function(c){for(var p=this,f=0;f<p._sounds.length;f++)if(c===p._sounds[f]._id)return p._sounds[f];return null},_inactiveSound:function(){var c=this;c._drain();for(var p=0;p<c._sounds.length;p++)if(c._sounds[p]._ended)return c._sounds[p].reset();return new n(c)},_drain:function(){var c=this,p=c._pool,f=0,d=0;if(!(c._sounds.length<p)){for(d=0;d<c._sounds.length;d++)c._sounds[d]._ended&&f++;for(d=c._sounds.length-1;d>=0;d--){if(f<=p)return;c._sounds[d]._ended&&(c._webAudio&&c._sounds[d]._node&&c._sounds[d]._node.disconnect(0),c._sounds.splice(d,1),f--)}}},_getSoundIds:function(c){var p=this;if(typeof c>"u"){for(var f=[],d=0;d<p._sounds.length;d++)f.push(p._sounds[d]._id);return f}else return[c]},_refreshBuffer:function(c){var p=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[p._src],c._panner?c._node.bufferSource.connect(c._panner):c._node.bufferSource.connect(c._node),c._node.bufferSource.loop=c._loop,c._loop&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop||0),c._node.bufferSource.playbackRate.setValueAtTime(c._rate,t.ctx.currentTime),p},_cleanBuffer:function(c){var p=this,f=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&c.bufferSource&&(c.bufferSource.onended=null,c.bufferSource.disconnect(0),f))try{c.bufferSource.buffer=t._scratchBuffer}catch{}return c.bufferSource=null,p},_clearSound:function(c){var p=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);p||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var n=function(c){this._parent=c,this.init()};n.prototype={init:function(){var c=this,p=c._parent;return c._muted=p._muted,c._loop=p._loop,c._volume=p._volume,c._rate=p._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,p._sounds.push(c),c.create(),c},create:function(){var c=this,p=c._parent,f=t._muted||c._muted||c._parent._muted?0:c._volume;return p._webAudio?(c._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),c._node.gain.setValueAtTime(f,t.ctx.currentTime),c._node.paused=!0,c._node.connect(t.masterGain)):t.noAudio||(c._node=t._obtainHtml5Audio(),c._errorFn=c._errorListener.bind(c),c._node.addEventListener("error",c._errorFn,!1),c._loadFn=c._loadListener.bind(c),c._node.addEventListener(t._canPlayEvent,c._loadFn,!1),c._endFn=c._endListener.bind(c),c._node.addEventListener("ended",c._endFn,!1),c._node.src=p._src,c._node.preload=p._preload===!0?"auto":p._preload,c._node.volume=f*t.volume(),c._node.load()),c},reset:function(){var c=this,p=c._parent;return c._muted=p._muted,c._loop=p._loop,c._volume=p._volume,c._rate=p._rate,c._seek=0,c._rateSeek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,c},_errorListener:function(){var c=this;c._parent._emit("loaderror",c._id,c._node.error?c._node.error.code:0),c._node.removeEventListener("error",c._errorFn,!1)},_loadListener:function(){var c=this,p=c._parent;p._duration=Math.ceil(c._node.duration*10)/10,Object.keys(p._sprite).length===0&&(p._sprite={__default:[0,p._duration*1e3]}),p._state!=="loaded"&&(p._state="loaded",p._emit("load"),p._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,p=c._parent;p._duration===1/0&&(p._duration=Math.ceil(c._node.duration*10)/10,p._sprite.__default[1]===1/0&&(p._sprite.__default[1]=p._duration*1e3),p._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var p=c._src;if(o[p]){c._duration=o[p].duration,l(c);return}if(/^data:[^;]+;base64,/.test(p)){for(var f=atob(p.split(",")[1]),d=new Uint8Array(f.length),h=0;h<f.length;++h)d[h]=f.charCodeAt(h);s(d.buffer,c)}else{var m=new XMLHttpRequest;m.open(c._xhr.method,p,!0),m.withCredentials=c._xhr.withCredentials,m.responseType="arraybuffer",c._xhr.headers&&Object.keys(c._xhr.headers).forEach(function(g){m.setRequestHeader(g,c._xhr.headers[g])}),m.onload=function(){var g=(m.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){c._emit("loaderror",null,"Failed loading audio file with status: "+m.status+".");return}s(m.response,c)},m.onerror=function(){c._webAudio&&(c._html5=!0,c._webAudio=!1,c._sounds=[],delete o[p],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,p){var f=function(){p._emit("loaderror",null,"Decoding audio data failed.")},d=function(h){h&&p._sounds.length>0?(o[p._src]=h,l(p,h)):f()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(c).then(d).catch(f):t.ctx.decodeAudioData(c,d,f)},l=function(c,p){p&&!c._duration&&(c._duration=p.duration),Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue())},u=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var c=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),p=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),f=p?parseInt(p[1],10):null;if(c&&f&&f<9){var d=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!d&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof pc<"u"&&(pc.Howler=t,pc.Howl=e),typeof global<"u"?(global.HowlerGlobal=r,global.Howler=t,global.Howl=e,global.Sound=n):typeof window<"u"&&(window.HowlerGlobal=r,window.Howler=t,window.Howl=e,window.Sound=n)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var n=e._howls.length-1;n>=0;n--)e._howls[n].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,n){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,n=typeof n!="number"?o._pos[2]:n,typeof t=="number")o._pos=[t,e,n],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(t,e,n,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var l=s._orientation;if(e=typeof e!="number"?l[1]:e,n=typeof n!="number"?l[2]:n,o=typeof o!="number"?l[3]:o,i=typeof i!="number"?l[4]:i,a=typeof a!="number"?l[5]:a,typeof t=="number")s._orientation=[t,e,n,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(n,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,n,o,i,a);else return l;return s},Howl.prototype.init=function(t){return function(e){var n=this;return n._orientation=e.orientation||[1,0,0],n._stereo=e.stereo||null,n._pos=e.pos||null,n._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},n._onstereo=e.onstereo?[{fn:e.onstereo}]:[],n._onpos=e.onpos?[{fn:e.onpos}]:[],n._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var n=this;if(!n._webAudio)return n;if(n._state!=="loaded")return n._queue.push({event:"stereo",action:function(){n.stereo(t,e)}}),n;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")n._stereo=t,n._pos=[t,0,0];else return n._stereo;for(var i=n._getSoundIds(e),a=0;a<i.length;a++){var s=n._soundById(i[a]);if(s)if(typeof t=="number")s._stereo=t,s._pos=[t,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&r(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(t,0,0):s._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),n._emit("stereo",s._id);else return s._stereo}return n},Howl.prototype.pos=function(t,e,n,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,n,o)}}),i;if(e=typeof e!="number"?0:e,n=typeof n!="number"?-.5:n,typeof o>"u")if(typeof t=="number")i._pos=[t,e,n];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._pos=[t,e,n],l._node&&((!l._panner||l._panner.pan)&&r(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(n,Howler.ctx.currentTime)):l._panner.setPosition(t,e,n)),i._emit("pos",l._id);else return l._pos}return i},Howl.prototype.orientation=function(t,e,n,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,n,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,n=typeof n!="number"?i._orientation[2]:n,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,n];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._orientation=[t,e,n],l._node&&(l._panner||(l._pos||(l._pos=i._pos||[0,0,-.5]),r(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(n,Howler.ctx.currentTime)):l._panner.setOrientation(t,e,n)),i._emit("orientation",l._id);else return l._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,n,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")n=e[0],typeof o>"u"&&(n.pannerAttr||(n.pannerAttr={coneInnerAngle:n.coneInnerAngle,coneOuterAngle:n.coneOuterAngle,coneOuterGain:n.coneOuterGain,distanceModel:n.distanceModel,maxDistance:n.maxDistance,refDistance:n.refDistance,rolloffFactor:n.rolloffFactor,panningModel:n.panningModel}),t._pannerAttr={coneInnerAngle:typeof n.pannerAttr.coneInnerAngle<"u"?n.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof n.pannerAttr.coneOuterAngle<"u"?n.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof n.pannerAttr.coneOuterGain<"u"?n.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof n.pannerAttr.distanceModel<"u"?n.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof n.pannerAttr.maxDistance<"u"?n.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof n.pannerAttr.refDistance<"u"?n.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof n.pannerAttr.rolloffFactor<"u"?n.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof n.pannerAttr.panningModel<"u"?n.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(n=e[0],o=parseInt(e[1],10));for(var a=t._getSoundIds(o),s=0;s<a.length;s++)if(i=t._soundById(a[s]),i){var l=i._pannerAttr;l={coneInnerAngle:typeof n.coneInnerAngle<"u"?n.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof n.coneOuterAngle<"u"?n.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof n.coneOuterGain<"u"?n.coneOuterGain:l.coneOuterGain,distanceModel:typeof n.distanceModel<"u"?n.distanceModel:l.distanceModel,maxDistance:typeof n.maxDistance<"u"?n.maxDistance:l.maxDistance,refDistance:typeof n.refDistance<"u"?n.refDistance:l.refDistance,rolloffFactor:typeof n.rolloffFactor<"u"?n.rolloffFactor:l.rolloffFactor,panningModel:typeof n.panningModel<"u"?n.panningModel:l.panningModel};var u=i._panner;u?(u.coneInnerAngle=l.coneInnerAngle,u.coneOuterAngle=l.coneOuterAngle,u.coneOuterGain=l.coneOuterGain,u.distanceModel=l.distanceModel,u.maxDistance=l.maxDistance,u.refDistance=l.refDistance,u.rolloffFactor=l.rolloffFactor,u.panningModel=l.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),r(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,n=e._parent;e._orientation=n._orientation,e._stereo=n._stereo,e._pos=n._pos,e._pannerAttr=n._pannerAttr,t.call(this),e._stereo?n.stereo(e._stereo):e._pos&&n.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,n=e._parent;return e._orientation=n._orientation,e._stereo=n._stereo,e._pos=n._pos,e._pannerAttr=n._pannerAttr,e._stereo?n.stereo(e._stereo):e._pos?n.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,n._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var r=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var aL={};Dp(aL,{default:()=>hc});module.exports=gv(aL);var mc=require("three");function to(r,t){return Object.setPrototypeOf(r,t),r}function Rp(r){return Array.isArray(r)?r:[r]}var yv=typeof global=="object"&&global&&global.Object===Object&&global,ms=yv;var vv=typeof self=="object"&&self&&self.Object===Object&&self,xv=ms||vv||Function("return this")(),it=xv;var bv=it.Symbol,Pt=bv;var kp=Object.prototype,Sv=kp.hasOwnProperty,wv=kp.toString,Wi=Pt?Pt.toStringTag:void 0;function Tv(r){var t=Sv.call(r,Wi),e=r[Wi];try{r[Wi]=void 0;var n=!0}catch{}var o=wv.call(r);return n&&(t?r[Wi]=e:delete r[Wi]),o}var Gp=Tv;var Cv=Object.prototype,Av=Cv.toString;function _v(r){return Av.call(r)}var Up=_v;var Iv="[object Null]",Ov="[object Undefined]",Vp=Pt?Pt.toStringTag:void 0;function Lv(r){return r==null?r===void 0?Ov:Iv:Vp&&Vp in Object(r)?Gp(r):Up(r)}var $t=Lv;function Nv(r){return r!=null&&typeof r=="object"}var It=Nv;var Pv="[object Symbol]";function Mv(r){return typeof r=="symbol"||It(r)&&$t(r)==Pv}var No=Mv;function Ev(r,t){for(var e=-1,n=r==null?0:r.length,o=Array(n);++e<n;)o[e]=t(r[e],e,r);return o}var gs=Ev;var Dv=Array.isArray,Xe=Dv;var Bv=1/0,zp=Pt?Pt.prototype:void 0,jp=zp?zp.toString:void 0;function Hp(r){if(typeof r=="string")return r;if(Xe(r))return gs(r,Hp)+"";if(No(r))return jp?jp.call(r):"";var t=r+"";return t=="0"&&1/r==-Bv?"-0":t}var Wp=Hp;function Fv(r){var t=typeof r;return r!=null&&(t=="object"||t=="function")}var st=Fv;function Rv(r){return r}var ys=Rv;var kv="[object AsyncFunction]",Gv="[object Function]",Uv="[object GeneratorFunction]",Vv="[object Proxy]";function zv(r){if(!st(r))return!1;var t=$t(r);return t==Gv||t==Uv||t==kv||t==Vv}var Po=zv;var jv=it["__core-js_shared__"],vs=jv;var qp=function(){var r=/[^.]+$/.exec(vs&&vs.keys&&vs.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function Hv(r){return!!qp&&qp in r}var Xp=Hv;var Wv=Function.prototype,qv=Wv.toString;function Xv(r){if(r!=null){try{return qv.call(r)}catch{}try{return r+""}catch{}}return""}var ln=Xv;var Yv=/[\\^$.*+?()[\]{}|]/g,$v=/^\[object .+?Constructor\]$/,Kv=Function.prototype,Zv=Object.prototype,Qv=Kv.toString,Jv=Zv.hasOwnProperty,ex=RegExp("^"+Qv.call(Jv).replace(Yv,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tx(r){if(!st(r)||Xp(r))return!1;var t=Po(r)?ex:$v;return t.test(ln(r))}var Yp=tx;function rx(r,t){return r?.[t]}var $p=rx;function nx(r,t){var e=$p(r,t);return Yp(e)?e:void 0}var Rt=nx;var ox=Rt(it,"WeakMap"),xs=ox;var Kp=Object.create,ix=function(){function r(){}return function(t){if(!st(t))return{};if(Kp)return Kp(t);r.prototype=t;var e=new r;return r.prototype=void 0,e}}(),Zp=ix;function ax(r,t,e){switch(e.length){case 0:return r.call(t);case 1:return r.call(t,e[0]);case 2:return r.call(t,e[0],e[1]);case 3:return r.call(t,e[0],e[1],e[2])}return r.apply(t,e)}var Qp=ax;function sx(r,t){var e=-1,n=r.length;for(t||(t=Array(n));++e<n;)t[e]=r[e];return t}var bs=sx;var lx=800,cx=16,ux=Date.now;function px(r){var t=0,e=0;return function(){var n=ux(),o=cx-(n-e);if(e=n,o>0){if(++t>=lx)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var Jp=px;function fx(r){return function(){return r}}var ef=fx;var dx=function(){try{var r=Rt(Object,"defineProperty");return r({},"",{}),r}catch{}}(),Mo=dx;var hx=Mo?function(r,t){return Mo(r,"toString",{configurable:!0,enumerable:!1,value:ef(t),writable:!0})}:ys,tf=hx;var mx=Jp(tf),Ss=mx;function gx(r,t){for(var e=-1,n=r==null?0:r.length;++e<n&&t(r[e],e,r)!==!1;);return r}var rf=gx;var yx=9007199254740991,vx=/^(?:0|[1-9]\d*)$/;function xx(r,t){var e=typeof r;return t=t??yx,!!t&&(e=="number"||e!="symbol"&&vx.test(r))&&r>-1&&r%1==0&&r<t}var wn=xx;function bx(r,t,e){t=="__proto__"&&Mo?Mo(r,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):r[t]=e}var Eo=bx;function Sx(r,t){return r===t||r!==r&&t!==t}var Tn=Sx;var wx=Object.prototype,Tx=wx.hasOwnProperty;function Cx(r,t,e){var n=r[t];(!(Tx.call(r,t)&&Tn(n,e))||e===void 0&&!(t in r))&&Eo(r,t,e)}var Do=Cx;function Ax(r,t,e,n){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=n?n(e[s],r[s],s,e,r):void 0;l===void 0&&(l=r[s]),o?Eo(e,s,l):Do(e,s,l)}return e}var or=Ax;var nf=Math.max;function _x(r,t,e){return t=nf(t===void 0?r.length-1:t,0),function(){for(var n=arguments,o=-1,i=nf(n.length-t,0),a=Array(i);++o<i;)a[o]=n[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=n[o];return s[t]=e(a),Qp(r,this,s)}}var ws=_x;function Ix(r,t){return Ss(ws(r,t,ys),r+"")}var of=Ix;var Ox=9007199254740991;function Lx(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Ox}var Bo=Lx;function Nx(r){return r!=null&&Bo(r.length)&&!Po(r)}var Cn=Nx;function Px(r,t,e){if(!st(e))return!1;var n=typeof t;return(n=="number"?Cn(e)&&wn(t,e.length):n=="string"&&t in e)?Tn(e[t],r):!1}var af=Px;function Mx(r){return of(function(t,e){var n=-1,o=e.length,i=o>1?e[o-1]:void 0,a=o>2?e[2]:void 0;for(i=r.length>3&&typeof i=="function"?(o--,i):void 0,a&&af(e[0],e[1],a)&&(i=o<3?void 0:i,o=1),t=Object(t);++n<o;){var s=e[n];s&&r(t,s,n,i)}return t})}var sf=Mx;var Ex=Object.prototype;function Dx(r){var t=r&&r.constructor,e=typeof t=="function"&&t.prototype||Ex;return r===e}var Fo=Dx;function Bx(r,t){for(var e=-1,n=Array(r);++e<r;)n[e]=t(e);return n}var lf=Bx;var Fx="[object Arguments]";function Rx(r){return It(r)&&$t(r)==Fx}var vc=Rx;var cf=Object.prototype,kx=cf.hasOwnProperty,Gx=cf.propertyIsEnumerable,Ux=vc(function(){return arguments}())?vc:function(r){return It(r)&&kx.call(r,"callee")&&!Gx.call(r,"callee")},cn=Ux;function Vx(){return!1}var uf=Vx;var df=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pf=df&&typeof module=="object"&&module&&!module.nodeType&&module,zx=pf&&pf.exports===df,ff=zx?it.Buffer:void 0,jx=ff?ff.isBuffer:void 0,Hx=jx||uf,Ro=Hx;var Wx="[object Arguments]",qx="[object Array]",Xx="[object Boolean]",Yx="[object Date]",$x="[object Error]",Kx="[object Function]",Zx="[object Map]",Qx="[object Number]",Jx="[object Object]",eb="[object RegExp]",tb="[object Set]",rb="[object String]",nb="[object WeakMap]",ob="[object ArrayBuffer]",ib="[object DataView]",ab="[object Float32Array]",sb="[object Float64Array]",lb="[object Int8Array]",cb="[object Int16Array]",ub="[object Int32Array]",pb="[object Uint8Array]",fb="[object Uint8ClampedArray]",db="[object Uint16Array]",hb="[object Uint32Array]",je={};je[ab]=je[sb]=je[lb]=je[cb]=je[ub]=je[pb]=je[fb]=je[db]=je[hb]=!0;je[Wx]=je[qx]=je[ob]=je[Xx]=je[ib]=je[Yx]=je[$x]=je[Kx]=je[Zx]=je[Qx]=je[Jx]=je[eb]=je[tb]=je[rb]=je[nb]=!1;function mb(r){return It(r)&&Bo(r.length)&&!!je[$t(r)]}var hf=mb;function gb(r){return function(t){return r(t)}}var ko=gb;var mf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qi=mf&&typeof module=="object"&&module&&!module.nodeType&&module,yb=qi&&qi.exports===mf,xc=yb&&ms.process,vb=function(){try{var r=qi&&qi.require&&qi.require("util").types;return r||xc&&xc.binding&&xc.binding("util")}catch{}}(),un=vb;var gf=un&&un.isTypedArray,xb=gf?ko(gf):hf,Ts=xb;var bb=Object.prototype,Sb=bb.hasOwnProperty;function wb(r,t){var e=Xe(r),n=!e&&cn(r),o=!e&&!n&&Ro(r),i=!e&&!n&&!o&&Ts(r),a=e||n||o||i,s=a?lf(r.length,String):[],l=s.length;for(var u in r)(t||Sb.call(r,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||wn(u,l)))&&s.push(u);return s}var Cs=wb;function Tb(r,t){return function(e){return r(t(e))}}var As=Tb;var Cb=As(Object.keys,Object),yf=Cb;var Ab=Object.prototype,_b=Ab.hasOwnProperty;function Ib(r){if(!Fo(r))return yf(r);var t=[];for(var e in Object(r))_b.call(r,e)&&e!="constructor"&&t.push(e);return t}var vf=Ib;function Ob(r){return Cn(r)?Cs(r):vf(r)}var Go=Ob;function Lb(r){var t=[];if(r!=null)for(var e in Object(r))t.push(e);return t}var xf=Lb;var Nb=Object.prototype,Pb=Nb.hasOwnProperty;function Mb(r){if(!st(r))return xf(r);var t=Fo(r),e=[];for(var n in r)n=="constructor"&&(t||!Pb.call(r,n))||e.push(n);return e}var bf=Mb;function Eb(r){return Cn(r)?Cs(r,!0):bf(r)}var Mr=Eb;var Db=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bb=/^\w*$/;function Fb(r,t){if(Xe(r))return!1;var e=typeof r;return e=="number"||e=="symbol"||e=="boolean"||r==null||No(r)?!0:Bb.test(r)||!Db.test(r)||t!=null&&r in Object(t)}var Sf=Fb;var Rb=Rt(Object,"create"),pn=Rb;function kb(){this.__data__=pn?pn(null):{},this.size=0}var wf=kb;function Gb(r){var t=this.has(r)&&delete this.__data__[r];return this.size-=t?1:0,t}var Tf=Gb;var Ub="__lodash_hash_undefined__",Vb=Object.prototype,zb=Vb.hasOwnProperty;function jb(r){var t=this.__data__;if(pn){var e=t[r];return e===Ub?void 0:e}return zb.call(t,r)?t[r]:void 0}var Cf=jb;var Hb=Object.prototype,Wb=Hb.hasOwnProperty;function qb(r){var t=this.__data__;return pn?t[r]!==void 0:Wb.call(t,r)}var Af=qb;var Xb="__lodash_hash_undefined__";function Yb(r,t){var e=this.__data__;return this.size+=this.has(r)?0:1,e[r]=pn&&t===void 0?Xb:t,this}var _f=Yb;function Uo(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t<e;){var n=r[t];this.set(n[0],n[1])}}Uo.prototype.clear=wf;Uo.prototype.delete=Tf;Uo.prototype.get=Cf;Uo.prototype.has=Af;Uo.prototype.set=_f;var bc=Uo;function $b(){this.__data__=[],this.size=0}var If=$b;function Kb(r,t){for(var e=r.length;e--;)if(Tn(r[e][0],t))return e;return-1}var An=Kb;var Zb=Array.prototype,Qb=Zb.splice;function Jb(r){var t=this.__data__,e=An(t,r);if(e<0)return!1;var n=t.length-1;return e==n?t.pop():Qb.call(t,e,1),--this.size,!0}var Of=Jb;function e1(r){var t=this.__data__,e=An(t,r);return e<0?void 0:t[e][1]}var Lf=e1;function t1(r){return An(this.__data__,r)>-1}var Nf=t1;function r1(r,t){var e=this.__data__,n=An(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}var Pf=r1;function Vo(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t<e;){var n=r[t];this.set(n[0],n[1])}}Vo.prototype.clear=If;Vo.prototype.delete=Of;Vo.prototype.get=Lf;Vo.prototype.has=Nf;Vo.prototype.set=Pf;var _n=Vo;var n1=Rt(it,"Map"),In=n1;function o1(){this.size=0,this.__data__={hash:new bc,map:new(In||_n),string:new bc}}var Mf=o1;function i1(r){var t=typeof r;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?r!=="__proto__":r===null}var Ef=i1;function a1(r,t){var e=r.__data__;return Ef(t)?e[typeof t=="string"?"string":"hash"]:e.map}var On=a1;function s1(r){var t=On(this,r).delete(r);return this.size-=t?1:0,t}var Df=s1;function l1(r){return On(this,r).get(r)}var Bf=l1;function c1(r){return On(this,r).has(r)}var Ff=c1;function u1(r,t){var e=On(this,r),n=e.size;return e.set(r,t),this.size+=e.size==n?0:1,this}var Rf=u1;function zo(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t<e;){var n=r[t];this.set(n[0],n[1])}}zo.prototype.clear=Mf;zo.prototype.delete=Df;zo.prototype.get=Bf;zo.prototype.has=Ff;zo.prototype.set=Rf;var Xi=zo;var p1="Expected a function";function Sc(r,t){if(typeof r!="function"||t!=null&&typeof t!="function")throw new TypeError(p1);var e=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=e.cache;if(i.has(o))return i.get(o);var a=r.apply(this,n);return e.cache=i.set(o,a)||i,a};return e.cache=new(Sc.Cache||Xi),e}Sc.Cache=Xi;var kf=Sc;var f1=500;function d1(r){var t=kf(r,function(n){return e.size===f1&&e.clear(),n}),e=t.cache;return t}var Gf=d1;var h1=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,m1=/\\(\\)?/g,g1=Gf(function(r){var t=[];return r.charCodeAt(0)===46&&t.push(""),r.replace(h1,function(e,n,o,i){t.push(o?i.replace(m1,"$1"):n||e)}),t}),Uf=g1;function y1(r){return r==null?"":Wp(r)}var Vf=y1;function v1(r,t){return Xe(r)?r:Sf(r,t)?[r]:Uf(Vf(r))}var ir=v1;var x1=1/0;function b1(r){if(typeof r=="string"||No(r))return r;var t=r+"";return t=="0"&&1/r==-x1?"-0":t}var Ln=b1;function S1(r,t){t=ir(t,r);for(var e=0,n=t.length;r!=null&&e<n;)r=r[Ln(t[e++])];return e&&e==n?r:void 0}var _s=S1;function w1(r,t){for(var e=-1,n=t.length,o=r.length;++e<n;)r[o+e]=t[e];return r}var jo=w1;var zf=Pt?Pt.isConcatSpreadable:void 0;function T1(r){return Xe(r)||cn(r)||!!(zf&&r&&r[zf])}var jf=T1;function Hf(r,t,e,n,o){var i=-1,a=r.length;for(e||(e=jf),o||(o=[]);++i<a;){var s=r[i];t>0&&e(s)?t>1?Hf(s,t-1,e,n,o):jo(o,s):n||(o[o.length]=s)}return o}var Wf=Hf;function C1(r){var t=r==null?0:r.length;return t?Wf(r,1):[]}var qf=C1;function A1(r){return Ss(ws(r,void 0,qf),r+"")}var Is=A1;var _1=As(Object.getPrototypeOf,Object),Ho=_1;var I1="[object Object]",O1=Function.prototype,L1=Object.prototype,Xf=O1.toString,N1=L1.hasOwnProperty,P1=Xf.call(Object);function M1(r){if(!It(r)||$t(r)!=I1)return!1;var t=Ho(r);if(t===null)return!0;var e=N1.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Xf.call(e)==P1}var Os=M1;function E1(r,t,e){var n=-1,o=r.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++n<o;)i[n]=r[n+t];return i}var Yf=E1;function D1(){this.__data__=new _n,this.size=0}var $f=D1;function B1(r){var t=this.__data__,e=t.delete(r);return this.size=t.size,e}var Kf=B1;function F1(r){return this.__data__.get(r)}var Zf=F1;function R1(r){return this.__data__.has(r)}var Qf=R1;var k1=200;function G1(r,t){var e=this.__data__;if(e instanceof _n){var n=e.__data__;if(!In||n.length<k1-1)return n.push([r,t]),this.size=++e.size,this;e=this.__data__=new Xi(n)}return e.set(r,t),this.size=e.size,this}var Jf=G1;function Wo(r){var t=this.__data__=new _n(r);this.size=t.size}Wo.prototype.clear=$f;Wo.prototype.delete=Kf;Wo.prototype.get=Zf;Wo.prototype.has=Qf;Wo.prototype.set=Jf;var Ls=Wo;function U1(r,t){return r&&or(t,Go(t),r)}var ed=U1;function V1(r,t){return r&&or(t,Mr(t),r)}var td=V1;var id=typeof exports=="object"&&exports&&!exports.nodeType&&exports,rd=id&&typeof module=="object"&&module&&!module.nodeType&&module,z1=rd&&rd.exports===id,nd=z1?it.Buffer:void 0,od=nd?nd.allocUnsafe:void 0;function j1(r,t){if(t)return r.slice();var e=r.length,n=od?od(e):new r.constructor(e);return r.copy(n),n}var Ns=j1;function H1(r,t){for(var e=-1,n=r==null?0:r.length,o=0,i=[];++e<n;){var a=r[e];t(a,e,r)&&(i[o++]=a)}return i}var ad=H1;function W1(){return[]}var Ps=W1;var q1=Object.prototype,X1=q1.propertyIsEnumerable,sd=Object.getOwnPropertySymbols,Y1=sd?function(r){return r==null?[]:(r=Object(r),ad(sd(r),function(t){return X1.call(r,t)}))}:Ps,qo=Y1;function $1(r,t){return or(r,qo(r),t)}var ld=$1;var K1=Object.getOwnPropertySymbols,Z1=K1?function(r){for(var t=[];r;)jo(t,qo(r)),r=Ho(r);return t}:Ps,Ms=Z1;function Q1(r,t){return or(r,Ms(r),t)}var cd=Q1;function J1(r,t,e){var n=t(r);return Xe(r)?n:jo(n,e(r))}var Es=J1;function eS(r){return Es(r,Go,qo)}var ud=eS;function tS(r){return Es(r,Mr,Ms)}var Ds=tS;var rS=Rt(it,"DataView"),Bs=rS;var nS=Rt(it,"Promise"),Fs=nS;var oS=Rt(it,"Set"),Rs=oS;var pd="[object Map]",iS="[object Object]",fd="[object Promise]",dd="[object Set]",hd="[object WeakMap]",md="[object DataView]",aS=ln(Bs),sS=ln(In),lS=ln(Fs),cS=ln(Rs),uS=ln(xs),ro=$t;(Bs&&ro(new Bs(new ArrayBuffer(1)))!=md||In&&ro(new In)!=pd||Fs&&ro(Fs.resolve())!=fd||Rs&&ro(new Rs)!=dd||xs&&ro(new xs)!=hd)&&(ro=function(r){var t=$t(r),e=t==iS?r.constructor:void 0,n=e?ln(e):"";if(n)switch(n){case aS:return md;case sS:return pd;case lS:return fd;case cS:return dd;case uS:return hd}return t});var Xo=ro;var pS=Object.prototype,fS=pS.hasOwnProperty;function dS(r){var t=r.length,e=new r.constructor(t);return t&&typeof r[0]=="string"&&fS.call(r,"index")&&(e.index=r.index,e.input=r.input),e}var gd=dS;var hS=it.Uint8Array,wc=hS;function mS(r){var t=new r.constructor(r.byteLength);return new wc(t).set(new wc(r)),t}var Yo=mS;function gS(r,t){var e=t?Yo(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.byteLength)}var yd=gS;var yS=/\w*$/;function vS(r){var t=new r.constructor(r.source,yS.exec(r));return t.lastIndex=r.lastIndex,t}var vd=vS;var xd=Pt?Pt.prototype:void 0,bd=xd?xd.valueOf:void 0;function xS(r){return bd?Object(bd.call(r)):{}}var Sd=xS;function bS(r,t){var e=t?Yo(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}var ks=bS;var SS="[object Boolean]",wS="[object Date]",TS="[object Map]",CS="[object Number]",AS="[object RegExp]",_S="[object Set]",IS="[object String]",OS="[object Symbol]",LS="[object ArrayBuffer]",NS="[object DataView]",PS="[object Float32Array]",MS="[object Float64Array]",ES="[object Int8Array]",DS="[object Int16Array]",BS="[object Int32Array]",FS="[object Uint8Array]",RS="[object Uint8ClampedArray]",kS="[object Uint16Array]",GS="[object Uint32Array]";function US(r,t,e){var n=r.constructor;switch(t){case LS:return Yo(r);case SS:case wS:return new n(+r);case NS:return yd(r,e);case PS:case MS:case ES:case DS:case BS:case FS:case RS:case kS:case GS:return ks(r,e);case TS:return new n;case CS:case IS:return new n(r);case AS:return vd(r);case _S:return new n;case OS:return Sd(r)}}var wd=US;function VS(r){return typeof r.constructor=="function"&&!Fo(r)?Zp(Ho(r)):{}}var Gs=VS;var zS="[object Map]";function jS(r){return It(r)&&Xo(r)==zS}var Td=jS;var Cd=un&&un.isMap,HS=Cd?ko(Cd):Td,Ad=HS;var WS="[object Set]";function qS(r){return It(r)&&Xo(r)==WS}var _d=qS;var Id=un&&un.isSet,XS=Id?ko(Id):_d,Od=XS;var YS=1,$S=2,KS=4,Ld="[object Arguments]",ZS="[object Array]",QS="[object Boolean]",JS="[object Date]",ew="[object Error]",Nd="[object Function]",tw="[object GeneratorFunction]",rw="[object Map]",nw="[object Number]",Pd="[object Object]",ow="[object RegExp]",iw="[object Set]",aw="[object String]",sw="[object Symbol]",lw="[object WeakMap]",cw="[object ArrayBuffer]",uw="[object DataView]",pw="[object Float32Array]",fw="[object Float64Array]",dw="[object Int8Array]",hw="[object Int16Array]",mw="[object Int32Array]",gw="[object Uint8Array]",yw="[object Uint8ClampedArray]",vw="[object Uint16Array]",xw="[object Uint32Array]",Ve={};Ve[Ld]=Ve[ZS]=Ve[cw]=Ve[uw]=Ve[QS]=Ve[JS]=Ve[pw]=Ve[fw]=Ve[dw]=Ve[hw]=Ve[mw]=Ve[rw]=Ve[nw]=Ve[Pd]=Ve[ow]=Ve[iw]=Ve[aw]=Ve[sw]=Ve[gw]=Ve[yw]=Ve[vw]=Ve[xw]=!0;Ve[ew]=Ve[Nd]=Ve[lw]=!1;function Us(r,t,e,n,o,i){var a,s=t&YS,l=t&$S,u=t&KS;if(e&&(a=o?e(r,n,o,i):e(r)),a!==void 0)return a;if(!st(r))return r;var c=Xe(r);if(c){if(a=gd(r),!s)return bs(r,a)}else{var p=Xo(r),f=p==Nd||p==tw;if(Ro(r))return Ns(r,s);if(p==Pd||p==Ld||f&&!o){if(a=l||f?{}:Gs(r),!s)return l?cd(r,td(a,r)):ld(r,ed(a,r))}else{if(!Ve[p])return o?r:{};a=wd(r,p,s)}}i||(i=new Ls);var d=i.get(r);if(d)return d;i.set(r,a),Od(r)?r.forEach(function(g){a.add(Us(g,t,e,g,r,i))}):Ad(r)&&r.forEach(function(g,v){a.set(v,Us(g,t,e,v,r,i))});var h=u?l?Ds:ud:l?Mr:Go,m=c?void 0:h(r);return rf(m||r,function(g,v){m&&(v=g,g=r[v]),Do(a,v,Us(g,t,e,v,r,i))}),a}var Vs=Us;var bw=1,Sw=4;function ww(r){return Vs(r,bw|Sw)}var Yi=ww;function Tw(r,t){return r!=null&&t in Object(r)}var Md=Tw;function Cw(r,t,e){t=ir(t,r);for(var n=-1,o=t.length,i=!1;++n<o;){var a=Ln(t[n]);if(!(i=r!=null&&e(r,a)))break;r=r[a]}return i||++n!=o?i:(o=r==null?0:r.length,!!o&&Bo(o)&&wn(a,o)&&(Xe(r)||cn(r)))}var Ed=Cw;function Aw(r,t){return r!=null&&Ed(r,t,Md)}var Dd=Aw;function _w(r){return function(t,e,n){for(var o=-1,i=Object(t),a=n(t),s=a.length;s--;){var l=a[r?s:++o];if(e(i[l],l,i)===!1)break}return t}}var Bd=_w;var Iw=Bd(),Fd=Iw;function Ow(r,t,e){(e!==void 0&&!Tn(r[t],e)||e===void 0&&!(t in r))&&Eo(r,t,e)}var $i=Ow;function Lw(r){return It(r)&&Cn(r)}var Rd=Lw;function Nw(r,t){if(!(t==="constructor"&&typeof r[t]=="function")&&t!="__proto__")return r[t]}var Ki=Nw;function Pw(r){return or(r,Mr(r))}var kd=Pw;function Mw(r,t,e,n,o,i,a){var s=Ki(r,e),l=Ki(t,e),u=a.get(l);if(u){$i(r,e,u);return}var c=i?i(s,l,e+"",r,t,a):void 0,p=c===void 0;if(p){var f=Xe(l),d=!f&&Ro(l),h=!f&&!d&&Ts(l);c=l,f||d||h?Xe(s)?c=s:Rd(s)?c=bs(s):d?(p=!1,c=Ns(l,!0)):h?(p=!1,c=ks(l,!0)):c=[]:Os(l)||cn(l)?(c=s,cn(s)?c=kd(s):(!st(s)||Po(s))&&(c=Gs(l))):p=!1}p&&(a.set(l,c),o(c,l,n,i,a),a.delete(l)),$i(r,e,c)}var Gd=Mw;function Ud(r,t,e,n,o){r!==t&&Fd(t,function(i,a){if(o||(o=new Ls),st(i))Gd(r,t,a,e,Ud,n,o);else{var s=n?n(Ki(r,a),i,a+"",r,t,o):void 0;s===void 0&&(s=i),$i(r,a,s)}},Mr)}var Vd=Ud;function Ew(r){var t=r==null?0:r.length;return t?r[t-1]:void 0}var zd=Ew;function Dw(r,t){return t.length<2?r:_s(r,Yf(t,0,-1))}var jd=Dw;var Bw=sf(function(r,t,e){Vd(r,t,e)}),no=Bw;function Fw(r,t){return t=ir(t,r),r=jd(r,t),r==null||delete r[Ln(zd(t))]}var Hd=Fw;function Rw(r){return Os(r)?void 0:r}var Wd=Rw;var kw=1,Gw=2,Uw=4,Vw=Is(function(r,t){var e={};if(r==null)return e;var n=!1;t=gs(t,function(i){return i=ir(i,r),n||(n=i.length>1),i}),or(r,Ds(r),e),n&&(e=Vs(e,kw|Gw|Uw,Wd));for(var o=t.length;o--;)Hd(e,t[o]);return e}),$o=Vw;function zw(r,t,e,n){if(!st(r))return r;t=ir(t,r);for(var o=-1,i=t.length,a=i-1,s=r;s!=null&&++o<i;){var l=Ln(t[o]),u=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return r;if(o!=a){var c=s[l];u=n?n(c,l,s):void 0,u===void 0&&(u=st(c)?c:wn(t[o+1])?[]:{})}Do(s,l,u),s=s[l]}return r}var qd=zw;function jw(r,t,e){for(var n=-1,o=t.length,i={};++n<o;){var a=t[n],s=_s(r,a);e(s,a)&&qd(i,ir(a,r),s)}return i}var Xd=jw;function Hw(r,t){return Xd(r,t,function(e,n){return Dd(r,n)})}var Yd=Hw;var Ww=Is(function(r,t){return r==null?{}:Yd(r,t)}),Tc=Ww;var Ko;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(n){return e.all.includes(n)}e.is=t})(Ko||(Ko={}));var oo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function n(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=n})(oo||(oo={}));var $d;(e=>{function r(n,o){return n[0]===o[0]&&n[1]===o[1]}e.isEqual=r;function t(n,o,i){return[n[0]+(o[0]-n[0])*i,n[1]+(o[1]-n[1])*i]}e.lerp=t})($d||($d={}));var Zo;(o=>{function r(i,a){return i[0]===a[0]&&i[1]===a[1]&&i[2]===a[2]}o.isEqual=r;function t(i,a){return[i[0]+a[0],i[1]+a[1],i[2]+a[2]]}o.add=t;function e(i,a){return[i[0]-a[0],i[1]-a[1],i[2]-a[2]]}o.sub=e;function n(i,a,s){return[i[0]+(a[0]-i[0])*s,i[1]+(a[1]-i[1])*s,i[2]+(a[2]-i[2])*s]}o.lerp=n})(Zo||(Zo={}));var Kd;(e=>{function r(n,o){return n[0]===o[0]&&n[1]===o[1]&&n[2]===o[2]&&n[3]===o[3]}e.isEqual=r;function t(n,o,i){return[n[0]+(o[0]-n[0])*i,n[1]+(o[1]-n[1])*i,n[2]+(o[2]-n[2])*i,n[3]+(o[3]-n[3])*i]}e.lerp=t})(Kd||(Kd={}));var Nn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function n(i,a){let s=a.slice(0);for(var l=0,u=a.length;l<u;l+=3){let c=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=n})(Nn||(Nn={}));var kt;(l=>{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 n(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}l.toRgb255a1=n;function o(u){return{r:u.r,g:u.g,b:u.b}}l.clone=o;function i(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}l.fromHex=i;function a(u,c){return u.r===c.r&&u.g===c.g&&u.b===c.b}l.equals=a;function s(u,c,p){return{r:u.r+(c.r-u.r)*p,g:u.g+(c.g-u.g)*p,b:u.b+(c.b-u.b)*p}}l.lerp=s})(kt||(kt={}));var dr;(s=>{s.white={...kt.white,a:1},s.transparent={...kt.white,a:0};function e(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}s.from0to1=e;function n(l,u){return{...kt.fromHex(l),a:u}}s.fromHexAndA=n;function o(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}s.toRgb255a1=o;function i(l,u){return kt.equals(l,u)&&l.a===u.a}s.equals=i;function a(l,u,c){return{r:l.r+(u.r-l.r)*c,g:l.g+(u.g-l.g)*c,b:l.b+(u.b-l.b)*c,a:l.a+(u.a-l.a)*c}}s.lerp=a})(dr||(dr={}));var zs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(zs||(zs={}));var Zd;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Zd||(Zd={}));var Qd;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Qd||(Qd={}));var js;(t=>{function r(e,n=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*n,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+n)),useCenter:!0}}}t.defaultData=r})(js||(js={}));var Ye=class{modifyById(t,e){let n=this;if(n[t]===void 0)throw new Error("not expected");{let i={...n,[t]:e};return Object.setPrototypeOf(i,Ye.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let n=e[t.id],o;n===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:n};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,Ye.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:n}=t,o=e[n];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ye.prototype),delete i[n],{data:i,actual:t,reverse:{type:1,id:n,data:o}}}}throw new Error("illegal arg")}};function Zi(r){if(r.deepFreeze!==void 0){r.deepFreeze(r);return}let t=Object.getOwnPropertyNames(r);for(let e of t){let n=r[e];n&&typeof n=="object"&&Zi(n)}return Object.freeze(r)}function Jd(r,t){let e=0;for(;e<r.length&&e<t.length;){if(r[e]<t[e])return-1;if(r[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==r.length?1:0}var Hs=class extends Error{};function Er(r,t,e){if(r===void 0?t===void 0?(r=0,t=10):r=t-10:t===void 0&&(t=r+10),r>t){let i=r;r=t,t=i}let n=[],o=1/(e+1);for(let i=0;i<e;i++){let a=r+(t-r)*(i+.75+Math.random()*.5)*o;n.push(a)}return n}function io(r){return r instanceof Uint8Array||r instanceof Uint16Array||r instanceof Uint32Array||r instanceof Int8Array||r instanceof Int16Array||r instanceof Int32Array||r instanceof Float32Array||r instanceof Float64Array}function eh(){return typeof process<"u"}function th(r,t){for(let e of r)t(e.id,e.data),th(e.children,t)}function rh(r,t){t(r.id,r.data);for(let e of r.children)rh(e,t)}var Gt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Gt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zi(this[e]),e++}fillCaches0(e,n){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,n);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)]}isDescendantOf(e,n){for(;e;){let o=this.parent(e);if(o===n)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,n){if(e===null)this.traverse(n);else{let o=this.get(e);o&&rh(o,n)}}traverse(e){th(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,n){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:n},this.modifyArrayBy(i,a)}}modifyArrayBy(e,n){let o=e,i=n;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(c=>c.id===l);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,Gt.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:n}){if(this.get(e)!==void 0)return!0;for(let o of n)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:n,fi:o,id:i,data:a,children:s}=e;if(n!==null&&this.get(n)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=n,u=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return u=[...u,c],u.sort((f,d)=>f.fi-d.fi),e.localIndex=u.indexOf(c),{data:this.modifyArrayBy(l,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:n}=e;if(this.get(n)===null)return null;{let o=this.parent(n);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===n);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:n,fi:o,id:i}=e;if(n!==null&&this.get(n)===void 0)return this.deleteOp({type:8,id:i});if(n!==null){let d=n;for(;d!==null;){if(d===void 0)throw new Error;if(d===i)throw new Hs("cyclic tree");d=this.parent(d)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),u=l.findIndex(d=>d.id===i);l=[...l];let c=l.splice(u,1)[0],p=this.modifyArrayBy(a,l);a=n,l=p.childrenArray(a);let f=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((d,h)=>d.fi-h.fi),e.localIndex=l.indexOf(c),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:f,id:i}}}previous(e,n){if(n===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===n)return o;o=i.id}return null}traverseSortNext(e){let n=this.parent(e);if(n!==void 0){let o=this.childrenArray(n),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(n)return this.traverseSortNext(n)}}sortNext(e){let n=this.childrenArray(e);return n.length>0?n[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let n=this.childrenArray(e);return n.length>0?this.traverseSortPrevious(n[n.length-1].id):e}sortPrevious(e){let n=this.parent(e);if(n!==void 0){let o=this.childrenArray(n),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):n}}getAllSorted(e){let n=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&n.push({...o,...i})}n.sort((o,i)=>Jd(o.sortKey,i.sortKey));for(let o of n)delete o.sortKey;return n}getWithSortKey(e){var n=e;let o=[],i=this.get(n),a=i;if(i!==void 0){for(;n;)o.splice(0,0,i.fi),n=this.parent(n),n!==null&&(i=this.get(n));return{...a,sortKey:o}}}insertBeforeHelper(e,n,o){return this.insertAfterHelper(e,this.previous(e,n),o)}insertAfterHelper(e,n,o){let i=this.childrenArray(e);if(n===null){if(i.length===0)return Er(0,o,o);{let a=i[0].fi;return Er(a-o,a,o)}}else{let a=this.get(n);if(a===void 0||this.parent(n)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Er(l,l+o,o)}else return Er(a.fi,s.fi,o)}}};var Ws;(t=>{function r(e,n){if(Array.isArray(e)){let o=n.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let u=parseInt(l);if(isNaN(u))throw new Error("wrong index");i[l]=a[u],a[u]=o[l],s=!0}return s?{data:a,actual:n,reverse:{type:0,props:i}}:null}else{let o=n.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let u=o[l];u===void 0?delete a[l]:a[l]=u,s=!0}return s?{data:a,actual:n,reverse:{type:0,props:i}}:null}}t.runOp=r})(Ws||(Ws={}));var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zi(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,n){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:n},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,He.prototype);let n=e;return eh()||n.fillCaches(),n}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:n,id:o,data:i}=e,a=this,s={fi:n,id:o,data:i};return a=[...a,s],a.sort((u,c)=>u.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:n}=e,o=this,i=o.findIndex(l=>l.id===n);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:n,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:n};return i[a]=l,i.sort((c,p)=>c.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let n=null;for(let o of this){if(o.id===e)return n;n=o.id}return null}insertBeforeHelper(e,n){return this.insertAfterHelper(this.previous(e),n)}insertAfterHelper(e,n){let o=this;if(e===null){if(o.length===0)return Er(0,n,n);{let i=o[0].fi;return Er(i-n,i,n)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Er(s,s+n,n)}else return Er(i.fi,a.fi,n)}}};var fn=class{unusedFun(t){}runOp(t){let e=[],n=this,o=0,i={};for(;o<t.path.length;)e.push(n),n=n===void 0?void 0:n[t.path[o]],o+=1;n={...n};for(let[l,u]of Object.entries(t.props)){let c=n[l];i[l]=c,u===void 0?delete n[l]:n[l]=u}for(;o>0;)Object.keys(n).length===0?(n={...e[o-1]},delete n[t.path[o-1]]):n={...e[o-1],[t.path[o-1]]:n},o-=1;let a=Object.setPrototypeOf(n,fn.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},nh;(e=>{function r(n,o){return Qi(n,o)??n}e.apply=r;function t(n,o){if(o.type===0){let i=ao.zoom(n,o.path);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||io(i))return;if(i&&typeof i=="object"){let a={...o.props};for(let s of Object.keys(i))delete a[s];return{...o,props:a}}else return}else if(o.type===1||o.type===4||o.type===7){let i=ao.zoom(n,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||io(i))return;if(i&&typeof i=="object"){let a={...o.data,...i};return{...o,data:a}}else return}else return o}e.filterOp=t})(nh||(nh={}));function oh(r,t){if(t===void 0)return;let e=!1,n=r.map(o=>{let i=o.id,a=Qi(o.data,t[i]);e=e||a!==void 0,a===void 0&&(a=o.data);let s=oh(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}});if(e)return n}function qw(r,t){if(t===void 0)return;let e=!1,n=r.map(o=>{let i=o.id,a=Qi(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n}function Qi(r,t){if(t!==void 0)if(r instanceof Gt){let e=oh(r,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else{if(r instanceof He)return qw(r,t);if(Array.isArray(r)){let e=!1,n=r.map((o,i)=>{let a=Qi(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n):void 0}else if(r&&typeof r=="object"){let e={},n=!1;for(let[o,i]of Object.entries(r)){let a=Qi(i,t[o]);n=n||a!==void 0,a===void 0&&(a=i),e[o]=a}return n?(Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e):void 0}else return t??r}}var ih=Symbol(),Ji=Symbol(),so=class{reportOp(t,e,n=[]){let o=this;if(e===null)return;o._current=e.data;let i=n;for(;!(o instanceof qs);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let n=e[Ji];n&&n(),delete this._children[t]}}}},Ac=class extends so{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,Ws.runOp(this._current,t),t.path)}},_c=class extends so{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Ye.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},ah={get(r,t){if(t===Ji)return()=>{r._parent=null};if(t===ih)return r._current;let{_current:e,_children:n}=r;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=n===void 0?void 0:n[t];if(o!==void 0)return o;let i=e[t],a=Xs(r,t,i);return a!==i?(n===void 0&&(n={},r._children=n),n[t]=a,a):i},has(r,t){return t in r._current},ownKeys(r){return Reflect.ownKeys(r._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(r){return Object.getPrototypeOf(r._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(r,t){let e=r._current,n=Reflect.getOwnPropertyDescriptor(e,t);return n&&{writable:!0,configurable:!0,enumerable:n.enumerable,value:e[t]}}},Xw={...ah,set(r,t,e){let n={type:0,props:{[t]:Ut(e)??e}};return r.deleteChildren(t),r.runOp(n),!0},deleteProperty(r,t){let e={type:0,props:{[t]:void 0}};return r.deleteChildren(t),r.runOp(e),!0}},Yw={...ah,set(r,t,e){return e===void 0?this.deleteProperty(r,t):(r.deleteChildren(t),r.runOp({type:1,id:t,data:e})),!0},deleteProperty(r,t){return r.runOp({type:2,id:t}),!0}},Qo=class extends so{constructor(t,e,n){super(),this._children={},this._parent=t,this._path=e,this._current=n,this[Ji]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,n)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:n}=this,o=n===void 0?void 0:n[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Xs(this,t,i);return a!==i?(n===void 0&&(n={},this._children=n),n[t]=a,a):i}add(t,e,n,o,i){this.runOp({type:7,parent:t,fi:e,id:n,data:o,children:i})}move(t,e,n){this.runOp({type:9,parent:t,fi:e,id:n})}insertAfter(t,e,n){let o=this._current.insertAfterHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,n){let o=this._current.insertBeforeHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,n){let o=this._current.insertAfterHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.move(t,o[i],a)}}moveBefore(t,e,n){let o=this._current.insertBeforeHelper(t,e,n.length);for(let i=0;i<n.length;i++){let a=n[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Ic=class extends so{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n,this[Ji]=()=>{this._parent=null}}feedOp(t){let{path:e,...n}=t;this.reportOp(n,this._current.runOp(t),e)}},Jo=class extends so{constructor(t,e,n){super(),this._children={},this._parent=t,this._path=e,this._current=n,this[Ji]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let n=0;n<e;n++){let o=this._current[n].id;t(this.data(this._current[n].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:n}=this,o=n===void 0?void 0:n[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Xs(this,t,i);return a!==i?(n===void 0&&(n={},this._children=n),n[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,n){this.runOp({type:4,fi:t,id:e,data:n})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let n=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(n[o],i.id,i.data)}}insertBefore(t,e){let n=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(n[o],i.id,i.data)}}moveAfter(t,e){let n=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(n[o],i)}}moveBefore(t,e){let n=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(n[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Cc(r,t,e){if(r.length>0){let n=r[r.length-1];if(n.type===0&&t.type===0&&ao.equal(n.path,e)){Object.assign(n.props,t.props);return}}r.push({...t,path:e})}var qs=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,n,o){Cc(this.ts,e,t),Cc(this.actual,n,t),Cc(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Xs(r,t,e){return e instanceof Gt?new Qo(r,t,e):e instanceof He?new Jo(r,t,e):e instanceof fn?new Ic(r,t,e):e instanceof Ye?new Proxy(new _c(r,t,e),Yw):e!==null&&typeof e=="object"?io(e)?e:new Proxy(new Ac(r,t,e),Xw):e}function Oc(r){let t=new qs(r);return[Xs(t,"",r),t]}function Lc(r,t){let[e,n]=Oc(r);return t(e),n.result()}function Ut(r){return r instanceof Qo||r instanceof Jo?r._current:r!==null&&typeof r=="object"?r[ih]:r}var ao;(o=>{function r(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=r;function t(i,a,s){let l=n(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let u={...a};return Object.keys(l).forEach(c=>{delete u[c]}),u}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof Gt||i instanceof Qo)&&typeof a=="string")return i.data(a);if((i instanceof He||i instanceof Jo)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object")return i[a]}o.zoomOnce=e;function n(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=n})(ao||(ao={}));var Ys=class{},ea=class extends Ys{constructor(e){super();this.id=e}},ta=class extends Ys{constructor(e){super();this.data=e}};var Pc;try{Pc=new TextDecoder}catch{}var se,Mn,L=0;var hh=[],Mc=hh,Ec=0,Vt={},Ne,Pn,ar=0,Dr=0,Kt,dn,Mt=[],Be,sh={useRecords:!1,mapsAsObjects:!0},ra=class{},Bc=new ra;Bc.name="MessagePack 0xC1";var ei=!1,Br=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(se)return xh(()=>(Ks(),this?this.unpack(t,e):Br.prototype.unpack.call(sh,t,e)));Mn=e>-1?e:t.length,L=0,Ec=0,Dr=0,Pn=null,Mc=hh,Kt=null,se=t;try{Be=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(n){throw se=null,t instanceof Uint8Array?n:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Br){if(Vt=this,this.structures)return Ne=this.structures,$s();(!Ne||Ne.length>0)&&(Ne=[])}else Vt=sh,(!Ne||Ne.length>0)&&(Ne=[]);return $s()}unpackMultiple(t,e){let n,o=0;try{ei=!0;let i=t.length,a=this?this.unpack(t,i):Js.unpack(t,i);if(e){for(e(a);L<i;)if(o=L,e($s())===!1)return}else{for(n=[a];L<i;)o=L,n.push($s());return n}}catch(i){throw i.lastPosition=o,i.values=n,i}finally{ei=!1,Ks()}}_mergeStructures(t,e){t=t||[];for(let n=0,o=t.length;n<o;n++){let i=t[n];i&&(i.isShared=!0,n>=32&&(i.highByte=n-32>>5))}t.sharedLength=t.length;for(let n in e||[])if(n>=0){let o=t[n],i=e[n];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[n]=o),t[n]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function $s(){try{if(!Vt.trusted&&!ei){let t=Ne.sharedLength||0;t<Ne.length&&(Ne.length=t)}let r=$e();if(L==Mn)Ne.restoreStructures&&lh(),Ne=null,se=null,dn&&(dn=null);else if(L>Mn){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ei)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw Ne.restoreStructures&&lh(),Ks(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function lh(){for(let r in Ne.restoreStructures)Ne[r]=Ne.restoreStructures[r];Ne.restoreStructures=null}function $e(){let r=se[L++];if(r<160)if(r<128){if(r<64)return r;{let t=Ne[r&63]||Vt.getStructures&&mh()[r&63];return t?(t.read||(t.read=Fc(t,r&63)),t.read()):r}}else if(r<144)if(r-=128,Vt.mapsAsObjects){let t={};for(let e=0;e<r;e++)t[yh()]=$e();return t}else{let t=new Map;for(let e=0;e<r;e++)t.set($e(),$e());return t}else{r-=144;let t=new Array(r);for(let e=0;e<r;e++)t[e]=$e();return t}else if(r<192){let t=r-160;if(Dr>=L)return Pn.slice(L-ar,(L+=t)-ar);if(Dr==0&&Mn<140){let e=t<16?Rc(t):gh(t);if(e!=null)return e}return Dc(t)}else{let t;switch(r){case 192:return null;case 193:return Kt?(t=$e(),t>0?Kt[1].slice(Kt.position1,Kt.position1+=t):Kt[0].slice(Kt.position0,Kt.position0-=t)):Bc;case 194:return!1;case 195:return!0;case 196:return Nc(se[L++]);case 197:return t=Be.getUint16(L),L+=2,Nc(t);case 198:return t=Be.getUint32(L),L+=4,Nc(t);case 199:return lo(se[L++]);case 200:return t=Be.getUint16(L),L+=2,lo(t);case 201:return t=Be.getUint32(L),L+=4,lo(t);case 202:if(t=Be.getFloat32(L),Vt.useFloat32>2){let e=Qs[(se[L]&127)<<1|se[L+1]>>7];return L+=4,(e*t+(t>0?.5:-.5)>>0)/e}return L+=4,t;case 203:return t=Be.getFloat64(L),L+=8,t;case 204:return se[L++];case 205:return t=Be.getUint16(L),L+=2,t;case 206:return t=Be.getUint32(L),L+=4,t;case 207:return Vt.int64AsNumber?(t=Be.getUint32(L)*4294967296,t+=Be.getUint32(L+4)):t=Be.getBigUint64(L),L+=8,t;case 208:return Be.getInt8(L++);case 209:return t=Be.getInt16(L),L+=2,t;case 210:return t=Be.getInt32(L),L+=4,t;case 211:return Vt.int64AsNumber?(t=Be.getInt32(L)*4294967296,t+=Be.getUint32(L+4)):t=Be.getBigInt64(L),L+=8,t;case 212:if(t=se[L++],t==114)return dh(se[L++]&63);{let e=Mt[t];if(e)return e.read?(L++,e.read($e())):e.noBuffer?(L++,e()):e(se.subarray(L,++L));throw new Error("Unknown extension "+t)}case 213:return t=se[L],t==114?(L++,dh(se[L++]&63,se[L++])):lo(2);case 214:return lo(4);case 215:return lo(8);case 216:return lo(16);case 217:return t=se[L++],Dr>=L?Pn.slice(L-ar,(L+=t)-ar):Kw(t);case 218:return t=Be.getUint16(L),L+=2,Dr>=L?Pn.slice(L-ar,(L+=t)-ar):Zw(t);case 219:return t=Be.getUint32(L),L+=4,Dr>=L?Pn.slice(L-ar,(L+=t)-ar):Qw(t);case 220:return t=Be.getUint16(L),L+=2,uh(t);case 221:return t=Be.getUint32(L),L+=4,uh(t);case 222:return t=Be.getUint16(L),L+=2,ph(t);case 223:return t=Be.getUint32(L),L+=4,ph(t);default:if(r>=224)return r-256;if(r===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+r)}}}var $w=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Fc(r,t){function e(){if(e.count++>2){let o=r.read=new Function("r","return function(){return {"+r.map(i=>$w.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")($e);return r.highByte===0&&(r.read=ch(t,r.read)),o()}let n={};for(let o=0,i=r.length;o<i;o++){let a=r[o];n[a]=$e()}return n}return e.count=0,r.highByte===0?ch(t,e):e}var ch=(r,t)=>function(){let e=se[L++];if(e===0)return t();let n=r<32?-(r+(e<<5)):r+(e<<5),o=Ne[n]||mh()[n];if(!o)throw new Error("Record id is not defined for "+n);return o.read||(o.read=Fc(o,r)),o.read()};function mh(){let r=xh(()=>(se=null,Vt.getStructures()));return Ne=Vt._mergeStructures(r,Ne)}var Dc=Zs,Kw=Zs,Zw=Zs,Qw=Zs;function Zs(r){let t;if(r<16&&(t=Rc(r)))return t;if(r>64&&Pc)return Pc.decode(se.subarray(L,L+=r));let e=L+r,n=[];for(t="";L<e;){let o=se[L++];if((o&128)===0)n.push(o);else if((o&224)===192){let i=se[L++]&63;n.push((o&31)<<6|i)}else if((o&240)===224){let i=se[L++]&63,a=se[L++]&63;n.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=se[L++]&63,a=se[L++]&63,s=se[L++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|l&1023),n.push(l)}else n.push(o);n.length>=4096&&(t+=gt.apply(String,n),n.length=0)}return n.length>0&&(t+=gt.apply(String,n)),t}function uh(r){let t=new Array(r);for(let e=0;e<r;e++)t[e]=$e();return t}function ph(r){if(Vt.mapsAsObjects){let t={};for(let e=0;e<r;e++)t[yh()]=$e();return t}else{let t=new Map;for(let e=0;e<r;e++)t.set($e(),$e());return t}}var gt=String.fromCharCode;function gh(r){let t=L,e=new Array(r);for(let n=0;n<r;n++){let o=se[L++];if((o&128)>0){L=t;return}e[n]=o}return gt.apply(String,e)}function Rc(r){if(r<4)if(r<2){if(r===0)return"";{let t=se[L++];if((t&128)>1){L-=1;return}return gt(t)}}else{let t=se[L++],e=se[L++];if((t&128)>0||(e&128)>0){L-=2;return}if(r<3)return gt(t,e);let n=se[L++];if((n&128)>0){L-=3;return}return gt(t,e,n)}else{let t=se[L++],e=se[L++],n=se[L++],o=se[L++];if((t&128)>0||(e&128)>0||(n&128)>0||(o&128)>0){L-=4;return}if(r<6){if(r===4)return gt(t,e,n,o);{let i=se[L++];if((i&128)>0){L-=5;return}return gt(t,e,n,o,i)}}else if(r<8){let i=se[L++],a=se[L++];if((i&128)>0||(a&128)>0){L-=6;return}if(r<7)return gt(t,e,n,o,i,a);let s=se[L++];if((s&128)>0){L-=7;return}return gt(t,e,n,o,i,a,s)}else{let i=se[L++],a=se[L++],s=se[L++],l=se[L++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){L-=8;return}if(r<10){if(r===8)return gt(t,e,n,o,i,a,s,l);{let u=se[L++];if((u&128)>0){L-=9;return}return gt(t,e,n,o,i,a,s,l,u)}}else if(r<12){let u=se[L++],c=se[L++];if((u&128)>0||(c&128)>0){L-=10;return}if(r<11)return gt(t,e,n,o,i,a,s,l,u,c);let p=se[L++];if((p&128)>0){L-=11;return}return gt(t,e,n,o,i,a,s,l,u,c,p)}else{let u=se[L++],c=se[L++],p=se[L++],f=se[L++];if((u&128)>0||(c&128)>0||(p&128)>0||(f&128)>0){L-=12;return}if(r<14){if(r===12)return gt(t,e,n,o,i,a,s,l,u,c,p,f);{let d=se[L++];if((d&128)>0){L-=13;return}return gt(t,e,n,o,i,a,s,l,u,c,p,f,d)}}else{let d=se[L++],h=se[L++];if((d&128)>0||(h&128)>0){L-=14;return}if(r<15)return gt(t,e,n,o,i,a,s,l,u,c,p,f,d,h);let m=se[L++];if((m&128)>0){L-=15;return}return gt(t,e,n,o,i,a,s,l,u,c,p,f,d,h,m)}}}}}function Nc(r){return Vt.copyBuffers?Uint8Array.prototype.slice.call(se,L,L+=r):se.subarray(L,L+=r)}function lo(r){let t=se[L++];if(Mt[t])return Mt[t](se.subarray(L,L+=r));throw new Error("Unknown extension type "+t)}var fh=new Array(4096);function yh(){let r=se[L++];if(r>=160&&r<192){if(r=r-160,Dr>=L)return Pn.slice(L-ar,(L+=r)-ar);if(!(Dr==0&&Mn<180))return Dc(r)}else return L--,$e();let t=(r<<5^(r>1?Be.getUint16(L):r>0?se[L]:0))&4095,e=fh[t],n=L,o=L+r-3,i,a=0;if(e&&e.bytes==r){for(;n<o;){if(i=Be.getUint32(n),i!=e[a++]){n=1879048192;break}n+=4}for(o+=3;n<o;)if(i=se[n++],i!=e[a++]){n=1879048192;break}if(n===o)return L=n,e.string;o-=3,n=L}for(e=[],fh[t]=e,e.bytes=r;n<o;)i=Be.getUint32(n),e.push(i),n+=4;for(o+=3;n<o;)i=se[n++],e.push(i);let s=r<16?Rc(r):gh(r);return s!=null?e.string=s:e.string=Dc(r)}var dh=(r,t)=>{var e=$e();let n=r;t!==void 0&&(r=r<32?-((t<<5)+r):(t<<5)+r,e.highByte=t);let o=Ne[r];return o&&o.isShared&&((Ne.restoreStructures||(Ne.restoreStructures=[]))[r]=o),Ne[r]=e,e.read=Fc(e,n),e.read()},vh=typeof self=="object"?self:global;Mt[0]=()=>{};Mt[0].noBuffer=!0;Mt[101]=()=>{let r=$e();return(vh[r[0]]||Error)(r[1])};Mt[105]=r=>{let t=Be.getUint32(L-4);dn||(dn=new Map);let e=se[L],n;e>=144&&e<160||e==220||e==221?n=[]:n={};let o={target:n};dn.set(t,o);let i=$e();return o.used?Object.assign(n,i):(o.target=i,i)};Mt[112]=r=>{let t=Be.getUint32(L-4),e=dn.get(t);return e.used=!0,e.target};Mt[115]=()=>new Set($e());var kc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");Mt[116]=r=>{let t=r[0],e=kc[t];if(!e)throw new Error("Could not find typed array for code "+t);return new vh[e](Uint8Array.prototype.slice.call(r,1).buffer)};Mt[120]=()=>{let r=$e();return new RegExp(r[0],r[1])};Mt[98]=r=>{let t=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],e=L;L+=t-4,Kt=[$e(),$e()],Kt.position0=0,Kt.position1=0;let n=L;L=e;try{return $e()}finally{L=n}};Mt[255]=r=>r.length==4?new Date((r[0]*16777216+(r[1]<<16)+(r[2]<<8)+r[3])*1e3):r.length==8?new Date(((r[0]<<22)+(r[1]<<14)+(r[2]<<6)+(r[3]>>2))/1e6+((r[3]&3)*4294967296+r[4]*16777216+(r[5]<<16)+(r[6]<<8)+r[7])*1e3):r.length==12?new Date(((r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3])/1e6+((r[4]&128?-281474976710656:0)+r[6]*1099511627776+r[7]*4294967296+r[8]*16777216+(r[9]<<16)+(r[10]<<8)+r[11])*1e3):new Date("invalid");function xh(r){let t=Mn,e=L,n=Ec,o=ar,i=Dr,a=Pn,s=Mc,l=dn,u=Kt,c=new Uint8Array(se.slice(0,Mn)),p=Ne,f=Ne.slice(0,Ne.length),d=Vt,h=ei,m=r();return Mn=t,L=e,Ec=n,ar=o,Dr=i,Pn=a,Mc=s,dn=l,Kt=u,se=c,ei=h,Ne=p,Ne.splice(0,Ne.length,...f),Vt=d,Be=new DataView(se.buffer,se.byteOffset,se.byteLength),m}function Ks(){se=null,dn=null,Ne=null}function bh(r){r.unpack?Mt[r.type]=r.unpack:Mt[r.type]=r}var Qs=new Array(147);for(let r=0;r<256;r++)Qs[r]=+("1e"+Math.floor(45.15-r*.30103));var Js=new Br({useRecords:!1}),Jw=Js.unpack,eT=Js.unpackMultiple,tT=Js.unpack,el={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rT=new Float32Array(1),SR=new Uint8Array(rT.buffer,0,4);var tl;try{tl=new TextEncoder}catch{}var rl,Uc,nl=typeof Buffer<"u",Gc=nl?Buffer.allocUnsafeSlow:Uint8Array,Ch=nl?Buffer:Uint8Array,Sh=nl?4294967296:2144337920,k,tt,M=0,Fr,Rr=null,nT=/[\u0080-\uFFFF]/,na=Symbol("record-id"),co=class extends Br{constructor(t){super(t),this.offset=0;let e,n,o,i,a,s,l=0,u=Ch.prototype.utf8Write?function(y,I,A){return k.utf8Write(y,I,A)}:tl&&tl.encodeInto?function(y,I){return tl.encodeInto(y,k.subarray(I)).written}:!1,c=this;t||(t={});let p=t&&t.sequential,f=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=f?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=f?32:64),p&&!t.saveStructures&&(this.structures=[]);let m=d>32||h+d>64,g=d+64,v=d+h+64;if(v>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(y,I){if(k||(k=new Gc(8192),tt=new DataView(k.buffer,0,8192),M=0),Fr=k.length-10,Fr-M<2048?(k=new Gc(k.length),tt=new DataView(k.buffer,0,k.length),Fr=k.length-10,M=0):M=M+7&2147483640,n=M,s=c.structuredClone?new Map:null,c.bundleStrings?(Rr=["",""],k[M++]=214,k[M++]=98,Rr.position=M-n,M+=4):Rr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let A=o.sharedLength||0;if(A>d)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 O=0;O<A;O++){let C=o[O];if(!C)continue;let N,P=o.transitions;for(let G=0,$=C.length;G<$;G++){let Y=C[G];N=P[Y],N||(N=P[Y]=Object.create(null)),P=N}P[na]=O+64}l=A}p||(o.nextId=A+64)}i&&(i=!1),a=o||[];try{if(b(y),Rr){tt.setUint32(Rr.position+n,M-Rr.position-n);let A=Rr;Rr=null,b(A[0]),b(A[1])}if(c.offset=M,s&&s.idsToInsert){M+=s.idsToInsert.length*6,M>Fr&&T(M),c.offset=M;let A=iT(k.subarray(n,M),s.idsToInsert);return s=null,A}return I&_h?(k.start=n,k.end=M,k):k.subarray(n,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&&!p){for(let A=0,O=x.length;A<O;A++)x[A][na]=0;x=[]}if(i&&c.saveStructures){let A=o.sharedLength||d;o.length>A&&(o=o.slice(0,A));let O=k.subarray(n,M);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(y)):(l=A,O)}}I&fT&&(M=n)}};let b=y=>{M>Fr&&(k=T(M));var I=typeof y,A;if(I==="string"){let O=y.length;if(Rr&&O>=8&&O<4096){let P=nT.test(y);Rr[P?0:1]+=y,k[M++]=193,b(P?-O:O);return}let C;O<32?C=1:O<256?C=2:O<65536?C=3:C=5;let N=O*3;if(M+N>Fr&&(k=T(M+N)),O<64||!u){let P,G,$,Y=M+C;for(P=0;P<O;P++)G=y.charCodeAt(P),G<128?k[Y++]=G:G<2048?(k[Y++]=G>>6|192,k[Y++]=G&63|128):(G&64512)===55296&&(($=y.charCodeAt(P+1))&64512)===56320?(G=65536+((G&1023)<<10)+($&1023),P++,k[Y++]=G>>18|240,k[Y++]=G>>12&63|128,k[Y++]=G>>6&63|128,k[Y++]=G&63|128):(k[Y++]=G>>12|224,k[Y++]=G>>6&63|128,k[Y++]=G&63|128);A=Y-M-C}else A=u(y,M+C,N);A<32?k[M++]=160|A:A<256?(C<2&&k.copyWithin(M+2,M+1,M+1+A),k[M++]=217,k[M++]=A):A<65536?(C<3&&k.copyWithin(M+3,M+2,M+2+A),k[M++]=218,k[M++]=A>>8,k[M++]=A&255):(C<5&&k.copyWithin(M+5,M+3,M+3+A),k[M++]=219,tt.setUint32(M,A),M+=4),M+=A}else if(I==="number")if(y>>>0===y)y<64?k[M++]=y:y<256?(k[M++]=204,k[M++]=y):y<65536?(k[M++]=205,k[M++]=y>>8,k[M++]=y&255):(k[M++]=206,tt.setUint32(M,y),M+=4);else if(y>>0===y)y>=-32?k[M++]=256+y:y>=-128?(k[M++]=208,k[M++]=y+256):y>=-32768?(k[M++]=209,tt.setInt16(M,y),M+=2):(k[M++]=210,tt.setInt32(M,y),M+=4);else{let O;if((O=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){k[M++]=202,tt.setFloat32(M,y);let C;if(O<4||(C=y*Qs[(k[M]&127)<<1|k[M+1]>>7])>>0===C){M+=4;return}else M--}k[M++]=203,tt.setFloat64(M,y),M+=8}else if(I==="object")if(!y)k[M++]=192;else{if(s){let C=s.get(y);if(C){if(!C.id){let N=s.idsToInsert||(s.idsToInsert=[]);C.id=N.push(C)}k[M++]=214,k[M++]=112,tt.setUint32(M,C.id),M+=4;return}else s.set(y,{offset:M-n})}let O=y.constructor;if(O===Object)_(y,!0);else if(O===Array){A=y.length,A<16?k[M++]=144|A:A<65536?(k[M++]=220,k[M++]=A>>8,k[M++]=A&255):(k[M++]=221,tt.setUint32(M,A),M+=4);for(let C=0;C<A;C++)b(y[C])}else if(O===Map){A=y.size,A<16?k[M++]=128|A:A<65536?(k[M++]=222,k[M++]=A>>8,k[M++]=A&255):(k[M++]=223,tt.setUint32(M,A),M+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=rl.length;C<N;C++){let P=Uc[C];if(y instanceof P){let G=rl[C];if(G.write){G.type&&(k[M++]=212,k[M++]=G.type,k[M++]=0),b(G.write.call(this,y));return}let $=k,Y=tt,ie=M;k=null;let j;try{j=G.pack.call(this,y,H=>(k=$,$=null,M+=H,M>Fr&&T(M),{target:k,targetView:tt,position:M-H}),b)}finally{$&&(k=$,tt=Y,M=ie,Fr=k.length-10)}j&&(j.length+M>Fr&&T(j.length+M),M=oT(j,k,M,G.type));return}}_(y,!y.hasOwnProperty)}}else if(I==="boolean")k[M++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))k[M++]=211,tt.setBigInt64(M,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)k[M++]=207,tt.setBigUint64(M,y);else if(this.largeBigIntToFloat)k[M++]=203,tt.setFloat64(M,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?k[M++]=192:(k[M++]=212,k[M++]=0,k[M++]=0);else if(I==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},_=this.useRecords===!1?this.variableMapSize?y=>{let I=Object.keys(y),A=I.length;A<16?k[M++]=128|A:A<65536?(k[M++]=222,k[M++]=A>>8,k[M++]=A&255):(k[M++]=223,tt.setUint32(M,A),M+=4);let O;for(let C=0;C<A;C++)b(O=I[C]),b(y[O])}:(y,I)=>{k[M++]=222;let A=M-n;M+=2;let O=0;for(let C in y)(I||y.hasOwnProperty(C))&&(b(C),b(y[C]),O++);k[A+++n]=O>>8,k[A+n]=O&255}:y=>{let I=Object.keys(y),A,O=a.transitions||(a.transitions=Object.create(null)),C=0;for(let P=0,G=I.length;P<G;P++){let $=I[P];A=O[$],A||(A=O[$]=Object.create(null),C++),O=A}let N=O[na];if(N)N>=96&&m?(k[M++]=((N-=96)&31)+96,k[M++]=N>>5):k[M++]=N;else{N=a.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(N=a.nextOwnId,N<v||(N=g),a.nextOwnId=N+1):(N>=v&&(N=g),a.nextId=N+1);let P=I.highByte=N>=96&&m?N-96>>5:-1;O[na]=N,a[N-64]=I,N<g?(I.isShared=!0,a.sharedLength=N-63,i=!0,P>=0?(k[M++]=(N&31)+96,k[M++]=P):k[M++]=N):(P>=0?(k[M++]=213,k[M++]=114,k[M++]=(N&31)+96,k[M++]=P):(k[M++]=212,k[M++]=114,k[M++]=N),C&&(S+=w*C),x.length>=h&&(x.shift()[na]=0),x.push(O),b(I))}for(let P=0,G=I.length;P<G;P++)b(y[I[P]])},T=y=>{let I;if(y>16777216){if(y-n>Sh)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Sh,Math.round(Math.max((y-n)*(y>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(y-n<<2,k.length-1)>>12)+1<<12;let A=new Gc(I);return tt=new DataView(A.buffer,0,I),k.copy?k.copy(A,0,n,y):A.set(k.slice(n,y)),M-=n,n=0,Fr=A.length-10,k=A}}useBuffer(t){k=t,tt=new DataView(k.buffer,k.byteOffset,k.byteLength),M=0}};Uc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ra];rl=[{pack(r,t,e){let n=r.getTime()/1e3;if((this.useTimestamp32||r.getMilliseconds()===0)&&n>=0&&n<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,n)}else if(n>0&&n<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,r.getMilliseconds()*4e6+(n/1e3/4294967296>>0)),i.setUint32(a+4,n)}else if(isNaN(n)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,r.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(n)))}}},{pack(r,t,e){let n=Array.from(r),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(n)}},{pack(r,t,e){let{target:n,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(n[o++]=212,n[o++]=101,n[o++]=0),e([r.name,r.message])}},{pack(r,t,e){let{target:n,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(n[o++]=212,n[o++]=120,n[o++]=0),e([r.source,r.flags])}},{pack(r,t){this.structuredClone?wh(r,16,t):Th(nl?Buffer.from(r):new Uint8Array(r),t)}},{pack(r,t){let e=r.constructor;e!==Ch&&this.structuredClone?wh(r,kc.indexOf(e.name),t):Th(r,t)}},{pack(r,t){let{target:e,position:n}=t(1);e[n]=193}}];function wh(r,t,e,n){let o=r.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=t,i.set(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),a)}function Th(r,t){let e=r.byteLength;var n,o;if(e<256){var{target:n,position:o}=t(e+2);n[o++]=196,n[o++]=e}else if(e<65536){var{target:n,position:o}=t(e+3);n[o++]=197,n[o++]=e>>8,n[o++]=e&255}else{var{target:n,position:o,targetView:i}=t(e+5);n[o++]=198,i.setUint32(o,e),o+=4}n.set(r,o)}function oT(r,t,e,n){let o=r.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=n,t.set(r,e),e+=o,e}function iT(r,t){let e,n=t.length*6,o=r.length-n;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;r.copyWithin(i+n,i,o),n-=6;let s=i+n;r[s++]=214,r[s++]=105,r[s++]=a>>24,r[s++]=a>>16&255,r[s++]=a>>8&255,r[s++]=a&255,o=i}return r}function En(r){if(r.Class){if(!r.pack&&!r.write)throw new Error("Extension has no pack or write function");if(r.pack&&!r.type)throw new Error("Extension has no type (numeric code to identify the extension)");Uc.unshift(r.Class),rl.unshift(r)}bh(r)}var Ah=new co({useRecords:!1}),aT=Ah.pack,sT=Ah.pack;var{NEVER:lT,ALWAYS:cT,DECIMAL_ROUND:uT,DECIMAL_FIT:pT}=el,_h=512,fT=1024;var Ih=new co({structuredClone:!0});En({Class:Ye.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,Ye.prototype),r}});En({Class:He.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,He.prototype),r}});En({Class:Gt.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Gt.prototype),r}});En({Class:ea.prototype.constructor,type:4,write(r){return r.id},read(r){return new ea(r)}});En({Class:ta.prototype.constructor,type:5,write(r){return r.data},read(r){return new ta(r)}});En({Class:fn.prototype.constructor,type:6,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,fn.prototype),r}});function dT(r){var t=0;if(r.length===0)return t;for(let e=0;e<r.length;e++){let n=r[e];t=(t<<5)-t+n,t=t&t}return t}function Vc(r){if(io(r))return r;if(Array.isArray(r))return r.map(Vc);if(typeof r=="object"&&r!==null){let t={};for(let e of Object.keys(r).sort())t[e]=Vc(r[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t}else return r}var ol;(n=>{function r(o){return Ih.pack(o)}n.serialize=r;function t(o){return Ih.unpack(o)}n.deserialize=t;function e(o){return dT(r(Vc(o))).toString()}n.checksum=e})(ol||(ol={}));var il;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(n){return e.all.includes(n)}e.is=t})(il||(il={}));var al;(e=>{function r(n){return t(n)}e.defaultData=r;function t(n){if(n==="PointLight")return{type:n,color:dr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:dr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(n==="DirectionalLight")return{type:n,color:dr.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(al||(al={}));var zc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(n,o){return n.castShadow===o.castShadow&&n.receiveShadow===o.receiveShadow}e.equals=t})(zc||(zc={}));var jc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(n,o){return n.flatShading===o.flatShading&&n.side===o.side&&n.wireframe===o.wireframe}e.equals=t})(jc||(jc={}));var sl;(t=>t.defaultData={...jc.defaultData,...zc.defaultData,cloner:null,booleanExclude:null})(sl||(sl={}));var Oh=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Lh=["wrapping","image"],Dn;(n=>{function r(o,i){return o==="light"&&i?t(i):e(o)}n.defaultData=r;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:kt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,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{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,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{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...kt.fromHex(6710886),a:1},colorB:{...kt.fromHex(6710886),a:1},colorC:{...kt.fromHex(16777215),a:1},colorD:{...kt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:dr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,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:dr.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:dr.fromHexAndA(0,1),contourColor:dr.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{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Dn||(Dn={}));var Zt;(s=>{function r(l){return!l.layers.some(c=>{if(c.data.type==="texture"&&c.data.projection!==0||c.data.type==="depth"&&!c.data.isWorldSpace||c.data.type==="noise"||c.data.type==="displace")return!0})&&!e(l)}s.isMergable=r;function t(l){let u="";return l.layers.forEach(c=>{Object.entries(c.data).forEach(([p,f])=>{u+=`${p}${f}`,Array.isArray(f)?f.forEach(d=>u+=`${d}`):typeof f=="object"?Object.values(f).forEach(d=>{typeof d=="number"?u+=`${d.toFixed(4)}`:u+=`${d}`}):u+=`${f}`})}),u}s.getHash=t;function e(l){let u=0;for(let c of l.layers)"alpha"in c.data&&c.data.type!=="light"&&c.data.type!=="fresnel"&&(u+=(1-u)*c.data.alpha);return u<1}s.isTransparent=e;function n(){return{layers:new He}}s.defaultEmptyData=n;function o(l="layer1",u="layer2"){return i("phong",l,u)}s.defaultData=o;function i(l,u="layer1",c="layer2"){let p=new He;return p.push({fi:0,data:Dn.defaultData("light",l),id:u}),p.push({fi:1,data:Dn.defaultData("color"),id:c}),{layers:p}}s.defaultTwoLayerData=i;function a(l,u="basic",c="layer1",p="layer2"){let f=Dn.defaultData("texture");Object.assign(f.texture,{image:l});let d=new He;return d.push({fi:0,data:f,id:c}),d.push({fi:1,data:Dn.defaultData("light",u),id:p}),{layers:d}}s.defaultTwoLayerTextureData=a})(Zt||(Zt={}));var ti;(t=>{function r(){return{points:new He,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=r})(ti||(ti={}));var ll;(t=>{function r(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=r})(ll||(ll={}));var Bn;(t=>{function r(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==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ti.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};throw new Error("not implemented")}t.defaultData=r})(Bn||(Bn={}));var oa;(o=>{o.identity={...zs.identity,hiddenMatrix:Nn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function n(i,a){return{position:Zo.isEqual(i.position,a.position)?null:a.position,rotation:Zo.isEqual(i.rotation,a.rotation)?null:a.rotation,scale:Zo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:Nn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?null:a.hiddenMatrix}}o.diff=n})(oa||(oa={}));var Hc;(t=>t.defaultData={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]})(Hc||(Hc={}));var hr;(t=>t.defaultData={states:new He,events:new He,visible:!0,raycastLock:!1,physics:null,...oa.identity})(hr||(hr={}));var Nh;(t=>t.defaultData={type:"Empty",...hr.defaultData})(Nh||(Nh={}));var uo;(t=>t.defaultData={type:"Mesh",...hr.defaultData,...sl.defaultData})(uo||(uo={}));var cl;(t=>t.defaultData={...hr.defaultData,...oa.identity,...oo.defaultData})(cl||(cl={}));var Ph;(t=>{function r(e){return{...hr.defaultData,...al.defaultData(e)}}t.defaultData=r})(Ph||(Ph={}));var Mh;(o=>(o.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Nn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Hc.defaultData,states:new He,events:new He,...oo.defaultData},o.defaultMeshObject={name:"Rectangle",...hr.defaultData,...uo.defaultData,geometry:Bn.defaultData("RectangleGeometry"),material:Zt.defaultTwoLayerData("basic","layer1","layer2")},o.defaultBooleanObject={name:"Boolean",...hr.defaultData,...uo.defaultData,geometry:Bn.defaultData("BooleanGeometry"),material:Zt.defaultTwoLayerData("phong","layer1","layer2")},o.defaultTextObject={name:"Text",...hr.defaultData,...uo.defaultData,geometry:Bn.defaultData("TextGeometry"),material:Zt.defaultTwoLayerData("phong","layer1","layer2")}))(Mh||(Mh={}));var Eh;(e=>{function r(n,o){if(o===void 0)return n;let i={...n};return"material"in i&&"material"in o&&o.material&&(i.material=Lc(i.material,a=>{if(typeof a!="string")for(let[s,l]of Object.entries(o.material.layers)){let u=a.layers.data(s);u&&no(u,l)}}).data),i.materials&&o.materials&&(i.materials=Lc(i.materials,a=>{for(let s=0;s<i.materials.length;s++){let l=o.materials[s];if(typeof l!="string")for(let[u,c]of Object.entries(l.layers)){let p=a[s]?.layers?.data(u);p&&no(p,c)}}}).data),i}e.patchMaterialState=r;function t(n,o){if(o===void 0)return n;let i={...n};if(Object.assign(i,oa.merge(i,o)),Ko.is(n.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let a=o;a.orthographic?.zoom!==void 0&&(i.orthographic.zoom=a.orthographic.zoom),a.perspective?.zoom!==void 0&&(i.perspective.zoom=a.perspective.zoom),a.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=a.isUpVectorFlipped),a.targetOffset!==void 0&&(i.targetOffset=a.targetOffset)}else if(n.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=r(i,o);else if(il.is(n.type)){let a=o;a.intensity!==void 0&&(i.intensity=a.intensity),a.color!==void 0&&(typeof a.color=="string"?i.color=a.color:i.color=kt.clone(a.color))}return i}e.patch=t})(Eh||(Eh={}));var ri;(t=>t.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})(ri||(ri={}));var ul;(t=>t.defaultData={orbitControls:ri.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,n)=>{let o=0,i=0;return n<5?i=-30:n<10&&(i=30),n===0||n===10||n===5?o=30:(n===4||n===11||n===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(ul||(ul={}));var pl;(e=>{function r(){let n={};return n["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},to(n,Ye.prototype)}e.defaultColors=r;function t(){return{materials:new Ye,images:new Ye,colors:new Ye,audios:new Ye,fonts:new Ye,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(pl||(pl={}));function Dh(r){r.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,n=t.colorB,o=[[e.r,e.g,e.b,e.a],[n.r,n.g,n.b,n.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Tc(Ut(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Ut(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Wc(r,t){Object.values(r.shared.materials).forEach(e=>t(e))}function qc(r,t){r.scene.objects.traverse((e,n)=>{"materials"in n?n.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in n&&typeof n.material!="string"&&t(n.material)})}function hT(r){Object.assign(r.scene.publish,{orbitControls:{...ri.defaultData,...Ut(r.scene.publish.orbitControls)}})}function mT(r){Object.assign(r.scene.publish.settings,{video:{...ul.defaultData.settings.video,...Ut(r.scene.publish.settings.video)}})}function gT(r){function t(e){if(e.layers){for(let n of Object.values(e.layers))if(n){for(let[o,i]of Object.entries(n))if((Oh.includes(o)||typeof i=="boolean")&&delete n[o],o==="texture")for(let[a,s]of Object.entries(i))(Lh.includes(a)||typeof s=="boolean")&&delete i[a]}}}r.scene.objects.traverse((e,n)=>{n.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function yT(r){r.scene.publish.withBackground=!0}function vT(r){r.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function xT(r){r.scene.objects.traverse((t,e)=>{let n=e.cloner;n&&(n.radial.scale=n.radial.scale.map(o=>o+1),n.linear.scale=n.linear.scale.map(o=>o+1))})}function bT(r){r.scene.objects.traverse((t,e)=>{let n=e.geometry;n&&(n.type==="DodecahedronGeometry"||n.type==="IcosahedronGeometry")&&(n.detail=Math.round(n.detail))})}function ST(r){r.scene.objects.traverse((t,e)=>{let n=r.scene.objects.parent(t);e.type==="Mesh"&&(!n||r.scene.objects.data(n).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function Bh(r){r.layers===void 0&&Object.assign(r,Zt.defaultTwoLayerData("lambert"))}function Xc(r){!r.layers||r.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let n=[...t.steps];n.push(t.steps[9]);let o={...Ut(t),colors:e,steps:n};Object.assign(t,o)}})}function wT(r){r.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Fh(r){r.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(n=>{typeof n!="string"&&Xc(n)}):"material"in e&&typeof e.material!="string"&&Xc(e.material)}),Object.values(r.shared.materials).forEach(t=>Xc(t))}function TT(r){r.scene.environment.ambientLight.softShadows=!1,r.scene.environment.ambientLight.softShadowQuality="low",r.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),r.shared.penumbraSize=new Array(5).fill(.5)}function CT(r){r.shared.audios=to({},Ye.prototype)}function AT(r){let t=r.shared.materials;Object.entries(t).forEach(([e,n])=>{if(!n.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function _T(r){Object.entries(Ut(r.shared.images)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.images[n]}),Object.entries(Ut(r.shared.audios)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.audios[n]})}function IT(r){r.scene.publish.settings.web.preload=!1}function Rh(r){r.layers&&r.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function OT(r){r.shared.fonts=to({},Ye.prototype)}function LT(r){return r.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 NT(r){let t=[];r.scene.objects.traverse((e,n)=>{let o=n;if(o.type==="TextFrame"){let i=Zt.defaultTwoLayerData("basic"),a=typeof o.color=="string"?r.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=LT(o.font);r.shared.fonts[s]===void 0&&(r.shared.fonts[s]={name:s});let l={name:o.name,...hr.defaultData,...uo.defaultData,flatShading:!1,wireframe:!1,geometry:{...Bn.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Ut(o.states),events:Ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ut(r.scene.objects).parent(e);r.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{r.scene.objects.delete(e)})}var kh=20;function Gh(r){let t=r.schema??0;t!==kh&&(console.warn("updating from ",t,"to ",kh),t<1&&(qc(r,Dh),Wc(r,Dh),r.schema=1),t<2&&(hT(r),r.schema=2),t<3&&(gT(r),r.schema=3),t<4&&(yT(r),r.schema=4),t<5&&(vT(r),r.schema=5),t<6&&(xT(r),r.schema=6),t<7&&(bT(r),r.schema=7),t<8&&(ST(r),r.schema=8),t<9&&(Fh(r),r.schema=9),t<10&&(wT(r),r.schema=10),t<11&&(TT(r),r.schema=11),t<12&&(Fh(r),r.schema=12),t<13&&(CT(r),r.schema=13),t<14&&(AT(r),r.schema=14),t<15&&(_T(r),r.schema=15),t<16&&(IT(r),r.schema=16),t<17&&(qc(r,Rh),Wc(r,Rh),r.schema=17),t<18&&(qc(r,Bh),Wc(r,Bh),r.schema=18),t<19&&(mT(r),r.schema=19),t<20&&(OT(r),NT(r),r.schema=20))}var fl;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(fl||(fl={}));var at=require("three");var Uh=require("three"),Yc=class extends Uh.Object3D{},dl=class extends Yc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var po=class extends at.Object3D{constructor(e,n={}){super();this.object=e;let o=e.recursiveBBox.getSize(new at.Vector3),i=.1;this.parameters=js.defaultData(o.toArray(),i),no(this.parameters,n),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}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)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let n=0,o=e-this.children.length;n<o;++n){let i=new dl(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let n=0,o=this.children.length-e;n<o;++n)this.remove(this.children[0])}_updateRadial(e){let n=e.radial,o=n.start*at.MathUtils.DEG2RAD,i=n.end*at.MathUtils.DEG2RAD,a=o-i,s=new at.Euler(n.rotation[0]*at.MathUtils.DEG2RAD,n.rotation[1]*at.MathUtils.DEG2RAD,n.rotation[2]*at.MathUtils.DEG2RAD),l;switch(n.axis){case"z":l=new at.Vector3(0,0,1);break;case"y":l=new at.Vector3(0,1,0);break;default:case"x":l=new at.Vector3(1,0,0);break}for(let[u,c]of this.children.entries()){c.scale.x=n.scale[0],c.scale.y=n.scale[1],c.scale.z=n.scale[2],c.position.setScalar(0);let p=a/e.count*u-o;switch(n.axis){case"x":c.rotation.set(0,p,0);break;case"y":c.rotation.set(0,0,p);break;case"z":c.rotation.set(p,0,0);break}c.translateOnAxis(l,n.radius),c.position.x+=n.position[0],c.position.y+=n.position[1],c.position.z+=n.position[2],n.alignment===!0?(c.rotation.x+=s.x,c.rotation.y+=s.y,c.rotation.z+=s.z):c.rotation.copy(s)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let n=e.linear,o=new at.Euler(n.rotation[0]*at.MathUtils.DEG2RAD,n.rotation[1]*at.MathUtils.DEG2RAD,n.rotation[2]*at.MathUtils.DEG2RAD);for(let[i,a]of this.children.entries())a.scale.x=1+(n.scale[0]-1)*i,a.scale.y=1+(n.scale[1]-1)*i,a.scale.z=1+(n.scale[2]-1)*i,a.rotation.x=o.x*i,a.rotation.y=o.y*i,a.rotation.z=o.z*i,a.position.x=n.position[0]*i,a.position.y=n.position[1]*i,a.position.z=n.position[2]*i}_updateGrid(e){let n=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new at.Vector3(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let s=0;s<o.count[0];s++)for(let l=0;l<o.count[1];l++)for(let u=0;u<o.count[2];u++){let c=this.children[n++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*s-a.x,c.position.y=o.size[1]*l-a.y,c.position.z=o.size[2]*u-a.z}}else for(let i=0;i<o.count[0];i++)for(let a=0;a<o.count[1];a++)for(let s=0;s<o.count[2];s++){let l=this.children[n++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*a,l.position.z=-o.size[2]*s}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),no(this.parameters,e),this.update(),this}};var on=require("three");var qe=require("three");var Vh=require("three"),kr=r=>{var t;return t=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Vh.BoxBufferGeometry(30,30,30),t};var Tt=require("three");var Ot=require("three"),hl=new Ot.Ray,$c=new Ot.Sphere,zh=new Ot.Matrix4,Gr=(r,t,e,n,o=!1)=>{let i=t,a=r.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),$c.copy(i.boundingSphere),$c.applyMatrix4(a),e.ray.intersectsSphere($c)===!1||(zh.copy(a).invert(),hl.copy(e.ray).applyMatrix4(zh),i.boundingBox!==null&&hl.intersectsBox(i.boundingBox)===!1))return;let s,l,u,c,p=i.index,f=i.attributes.position,d=i.drawRange,h,m;if(o===!1){let v=Math.max(0,d.start),x=Math.min(p.count,d.start+d.count);for(h=v,m=x;h<m;h+=3)if(l=p.getX(h),u=p.getX(h+1),c=p.getX(h+2),s=g(r,e,hl,f,l,u,c),s){s.faceIndex=Math.floor(h/3),n.push(s);return}}else{let x=i.attributes.position,S=new Ot.Vector3,w=new Ot.Vector3,b=new Ot.Vector3,_=new Ot.Vector3,T=2,I=1/((r.scale.x+r.scale.y+r.scale.z)/3),A=I*I,O=Math.max(0,d.start),C=Math.min(x.count,d.start+d.count);for(let N=O,P=C-1;N<P;N+=T){if(S.fromBufferAttribute(x,N),w.fromBufferAttribute(x,N+1),hl.distanceSqToSegment(S,w,_,b)>A)continue;_.applyMatrix4(r.matrixWorld);let $=e.ray.origin.distanceTo(_);$<e.near||$>e.far||n.push({distance:$,point:b.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(v,x,S,w,b,_,T){let y=new Ot.Vector3,I=new Ot.Vector3,A=new Ot.Vector3,O=new Ot.Vector3,C=new Ot.Vector3;if(y.fromBufferAttribute(w,b),I.fromBufferAttribute(w,_),A.fromBufferAttribute(w,T),S.intersectTriangle(y,I,A,!1,O)===null)return null;C.copy(O),C.applyMatrix4(v.matrixWorld);let P=x.ray.origin.distanceTo(C);return P<x.near||P>x.far?null:{faceIndex:1,distance:P,point:C.clone(),object:v}}};var ml=new Tt.Vector3,sr=new Tt.Camera,Kc=class extends Tt.LineSegments{constructor(e){let n=new Tt.BufferGeometry,o=new Tt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Tt.Color(15711266),u=new Tt.Color(15711266),c=new Tt.Color(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",u),p("p","n2",u),p("p","n3",u),p("p","n4",u),p("u1","u2",c),p("u2","u3",c),p("u3","u1",c);function p(d,h,m){f(d,m),f(h,m)}function f(d,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[d]===void 0&&(s[d]=[]),s[d].push(i.length/3-1)}n.setAttribute("position",new Tt.Float32BufferAttribute(i,3)),n.setAttribute("color",new Tt.Float32BufferAttribute(a,3));super(n,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,n=this.pointMap,o=!0;sr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;mr("n1",n,e,sr,-i,-a,s),mr("n2",n,e,sr,i,-a,s),mr("n3",n,e,sr,-i,a,s),mr("n4",n,e,sr,i,a,s);let l=s;mr("f1",n,e,sr,-i,-a,l),mr("f2",n,e,sr,i,-a,l),mr("f3",n,e,sr,-i,a,l),mr("f4",n,e,sr,i,a,l);let u=l,c=.5;mr("u1",n,e,sr,i*.7*c,a*1.1,u),mr("u2",n,e,sr,-i*.7*c,a*1.1,u),mr("u3",n,e,sr,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function mr(r,t,e,n,o,i,a){ml.set(o,i,a).unproject(n);let s=t[r];if(s!==void 0){let l=e.getAttribute("position");for(let u=0,c=s.length;u<c;u++)l.setXYZ(s[u],ml.x,ml.y,ml.z)}}var gl=class extends kr(Kc){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,n){Gr(this.object,this.geometry,e,n,!0)}};var jh=require("three");var ni=class extends kr(jh.DirectionalLightHelper){constructor(e,n=15,o=10066329){super(e,n,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,n){Gr(this.object,ni.geometryHelper,e,n)}};var Hh=require("three");var oi=class extends kr(Hh.AxesHelper){constructor(e,n=15){super(n);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,n){Gr(this.object,oi.geometryHelper,e,n)}update(){}};var Wh=require("three");var ii=class extends kr(Wh.PointLightHelper){constructor(e,n=15,o=6710886){super(e,n,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,n){Gr(this.object,ii.geometryHelper,e,n)}};var vl=require("three");var yl=class extends kr(vl.SpotLightHelper){constructor(e,n=6710886){super(e,n);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,n){Gr(this.object,yl.geometryHelper,e,n)}update(){if(this.object!==void 0){let e=yl._vector,n=this.object.distance?this.object.distance:1e3,o=n*Math.tan(this.object.angle);this.cone.scale.set(o,o,n),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},aa=yl;aa._vector=new vl.Vector3;var we=require("three"),sa=1e-12,ai=class{constructor(t){this.position=new we.Vector2;this.startPosition=new we.Vector2;this.uuid=we.MathUtils.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new ai(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},si=class extends ai{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new si(this.parent).copy(this)}},gr=class extends ai{constructor(e,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new si(this),new si(this))}static create(e,n){let o=new gr(e,new we.Vector2(...n.position));return o.controls[0].position.set(...n.controlPrevious.position),o.controls[1].position.set(...n.controlNext.position),o.roundness=n.roundness,o.areControlsDirectionsMirrored=n.areControlsDirectionsMirrored,o}getOppositeControl(e){let n=this.controls.indexOf(e);return n===0?this.controls[1]:n===1?this.controls[0]:null}applyOffsetToControls(e,n=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=n?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new gr(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),n=this.curveAfter?.getTangentAt(0);return[e,n]}computeNormals(e=new we.Vector2,n=new we.Vector2){let[o,i]=this.computeTangents();return o&&i&&(qh(o,e),qh(i,n)),[e,n]}computeTangent(e=new we.Vector2){let[n,o]=this.computeTangents();return n&&o&&e.copy(n).add(o).normalize(),e}computeNormal(e=new we.Vector2){let[n,o]=this.computeNormals();return e.copy(n).add(o).normalize(),e}};function qh(r,t=new we.Vector2){let e=r.length();return t.set(-r.y/e,r.x/e)}var Qc=r=>r,li=new we.Vector2,xl=new we.Vector2,MT=new we.Vector2,ET=new we.Vector2,DT=new we.Vector2,BT=new we.Vector2,Yh=new we.Vector3,$h=new we.Vector3;function Kh(r){let t=new we.Vector2;t.addVectors(r.v0,li.subVectors(r.v1,r.v0).multiplyScalar(2/3));let e=new we.Vector2;return e.addVectors(r.v2,xl.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new we.CubicBezierCurve(r.v0,t,e,r.v2)}function la(r,t,e=Number.EPSILON){return Math.abs(r-t)<e}function FT(r,t,e=Number.EPSILON){return r.distanceTo(t)<e}function RT(r,t,e=Number.EPSILON){return r.distanceTo(t)<e}function Jc(r,t,e){let n=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2));return Math.acos((o*o+n*n-i*i)/(2*o*n))}function Zh(r,t,e){return Xh(r,t)&&Xh(t,e)&&Zc(r.position,t.position,e.position)}function Zc(r,t,e){return li.copy(t).sub(r).cross(xl.copy(e).sub(r))===0}function Qh(r,t,e,n,o){let i=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2)),a=(r.y+t.y)/2,s=(r.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.y-t.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-r.x)/i;return n.set(s+l,a+u),o.set(s-l,a-u),[n,o]}function Jh(r,t,e){let n=r.distanceTo(e),o=t.distanceTo(e);return n<o?t:r}function em(r,t,e,n,o,i){let a=t.x-r.x,s=t.y-r.y,l=e.x-r.x,u=e.y-r.y,c=Math.sqrt((a+l)*(a+l)+(s+u)*(s+u)),p;return Jc(t,r,e)>Math.PI&&(c*=-1),la(u,s)?p=(s+u)*(n/c-.5)*8/3/(a-l):p=(a+l)*(n/c-.5)*8/3/(u-s),o.set(t.x-p*s,t.y+p*a),i.set(e.x+p*u,e.y-p*l),[o,i]}function eu(r,t){return r.position.equals(r.controls[1].position)&&t.position.equals(t.controls[0].position)}function Xh(r,t){return Zc(r.position,r.controls[1].position,t.position)&&Zc(r.position,t.controls[0].position,t.position)}function tm(r,t,e,n,o=.5){let i=li.subVectors(t,r).multiplyScalar(o).add(r),a=xl.subVectors(e,t).multiplyScalar(o).add(t),s=MT.subVectors(n,e).multiplyScalar(o).add(e),l=i,u=ET.subVectors(a,i).multiplyScalar(o).add(i),c=DT.subVectors(s,a).multiplyScalar(o).add(a),p=s,f=BT.subVectors(c,u).multiplyScalar(o).add(u);return[r.x,r.y,l.x,l.y,u.x,u.y,f.x,f.y,c.x,c.y,p.x,p.y,n.x,n.y]}function rm(r,t,e=12,n=!0){let o=$h.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=Qc(t[l]),c=li,p=Fn(u,e);s.push(p);for(let f=0;f<=p;f++)if(u instanceof we.CubicBezierCurve||u instanceof we.QuadraticBezierCurve||u instanceof we.LineCurve){if(u.getPoint(f/p,c),o.set(c.x,c.y,0),i!==void 0&&RT(i,o))continue;i===void 0&&(i=Yh),i.copy(o),r.setXYZ(a,o.x,o.y,o.z),a++}}return n&&a>1&&!(r.getX(a-1)===r.getX(0)&&r.getY(a-1)===r.getY(0)&&r.getZ(a-1)===r.getZ(0))&&(r.setXYZ(a,r.getX(0),r.getY(0),r.getZ(0)),a++),r}function nm(r,t,e,n=12,o=!0){let i=$h.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=Qc(t[l]),p=li,f=Fn(c,n);s.push(f);for(let d=0;d<=f;d++)if(c instanceof we.CubicBezierCurve||c instanceof we.QuadraticBezierCurve||c instanceof we.LineCurve){if(c.getPoint(d/f,p),i.set(p.x,p.y,0),u?.equals(i))continue;u===void 0?u=Yh:(r.setXYZ(a,u.x,u.y,u.z),a++,r.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(r.getX(a-1)===r.getX(0)&&r.getY(a-1)===r.getY(0)&&r.getZ(a-1)===r.getZ(0))&&(r.setXYZ(a,r.getX(0),r.getY(0),r.getZ(0)),a++),s}function tu(r,t=12,e=!1){let n=[];for(let o=0,i=r.length;o<i;o++){let a=r[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=Fn(a.roundedCurveCorner,t)*.5;o>0&&(n[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Fn(a.curveAfter,t)),n.push(s)}return r.length>0&&e&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=Fn(r[0].roundedCurveCorner,t)*.5),n}function Fn(r,t=12){return r&&r instanceof we.EllipseCurve?t*2:r&&(r instanceof we.LineCurve||r instanceof we.LineCurve3)?1:r&&r instanceof we.SplineCurve?t*r.points.length:t}function om(r,t,e=12,n=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=Qc(t[a]),l=Fn(s,e),u=li;for(let c=0;c<=l;c++)if(s instanceof we.CubicBezierCurve||s instanceof we.QuadraticBezierCurve||s instanceof we.LineCurve){if(s.getPoint(c/l,u),o!==void 0&&FT(o,u,sa))continue;o===void 0&&(o=xl),o.copy(u),r.push(u.x,u.y),i++}}return la(r[0],r[r.length-2],sa)&&la(r[1],r[r.length-1],sa)&&(r.pop(),r.pop()),n&&i>1&&!(la(r[i-1],r[1],sa)&&la(r[i-2],r[0],sa))&&(r.push(r[0],r[1]),i++),r}var Hn=require("three");var Ie=require("three");var ru=new Ie.Vector2,kT=new Ie.Vector2,GT=new Ie.Vector2,UT=new Ie.Vector2,VT=new Ie.Vector2,zT=new Ie.Vector2,Le=class extends Ie.Shape{constructor(e=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Ie.EventDispatcher;this.plane=new Ie.Plane(new Ie.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=Ie.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=n}static createFromState(e,n,o){let i=new Le;return i.isClosed=e.isClosed,i.points=e.points.map(a=>gr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Le.createFromState(a)),n!==void 0&&o!==void 0&&i.applySize(n,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 n=0,o=this.points.length;n<o;n++)this.points[n].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(n=>this.getPointIndexById(n)).filter(n=>n>=0)}getPointIndexById(e){let n=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=n;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],u=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=u;else return c+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 n=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-n;if(s<=a.points.length-1)return a.points[s];n+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let n=this.points.indexOf(e);if(n>=0)return n;if(n=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return n+s;n+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(n=>n.points));return[...this.points,...e]}applySize(e,n){e===0&&(e=.001),n===0&&(n=.001),this._width=e,this._height=n}applyScale(e,n){let o=ru.set(e,n);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,n);this._update(!1)}createPoint(e,n=0,o=Ie.MathUtils.generateUUID()){let i;e instanceof Ie.Vector2?i=e:i=new Ie.Vector2(e,n);let a=new gr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,n){this.points.splice(n,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let n=0,o=this.points.length;n<o;n++){let i=this.points[n];if(i.uuid===e)return i}for(let n=0,o=this.shapeHoles.length;n<o;n++){let a=this.shapeHoles[n].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let n=this.points.indexOf(e);n>=0&&this.points.splice(n,1),this.needsUpdate=!0}removePointById(e){let n=this.points.find(o=>o.uuid===e);n&&this.removePoint(n)}update(e=!0){for(let n=0,o=this.shapeHoles.length;n<o;n++)this.shapeHoles[n].update(!1);this._update(e)}extractShapePointsToBuffer(e,n=12,o=!1){this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n);let i=o?this.roundedCurveDivisions:this.curveDivisions;return rm(e,o?this.roundedCurves:this.curves,n,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=tu(this.points,e,!1),this.roundedCurveDivisions=tu(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,n,o=12){return nm(e,this.curves,n,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,n=12){return this.subdivision=n,this.curveDivisions===void 0&&this.computeCurveDivisions(n),om(e,this.roundedCurves,n,this.autoClose)}getCurveIndexFromVertexId(e,n=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=n?this.roundedCurveDivisions:this.curveDivisions,a=0;n&&this.points[0].roundedCurveCorner!==void 0&&(a=Fn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,u)=>l+u,0));for(let l=0,u=i.length;l<u;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,n,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(eu(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(ru.set(o.x,o.y))/p}let u=0;for(let p=0;p<e;p++)u+=s[p];return(n-u)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,n){eu(n,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(n.controls[1].position.x,n.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,n.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,n.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o];if(o===0)this.moveTo(a.position.x,a.position.y);else{let s=this.points[o-1];this._applyCurveForPoint(a,s)}}let n=this.getLastPoint();if(n?.curveAfter&&(n.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i],l=this.points[i-1]??this.points[this.points.length-1],u=this.points[i+1]??this.points[0],c=s.roundness,p=l&&u&&Zh(l,s,u);if(!s.controlsMoved()&&c>0&&!p){let f=s.curveBefore,d=s.curveAfter;if(f===void 0||d===void 0)continue;let h=s.roundedCurveBefore,m=s.roundedCurveAfter,g=f.getLength(),v=d.getLength(),x=Math.min(c,g*.499),S=Math.min(c,v*.499),w=Math.min(x,S),b=1-w/g,_=w/v,T=f.getPointAt(b,ru),y=d.getPointAt(_,kT);this._subSplitCurve(f,h,b,T,void 0),this._subSplitCurve(d,m,_,void 0,y);let I;if(this.useCubicForRoundedCorners){let A=Jc(T,s.position,y)/2,O=Math.tan(A)*T.distanceTo(s.position),[C,N]=Qh(T,y,O,GT,UT),P=Jh(C,N,s.position),[G,$]=em(P,T,y,O,VT,zT);I=new Ie.CubicBezierCurve(T.clone(),G.clone(),$.clone(),y.clone())}else I=new Ie.QuadraticBezierCurve(T.clone(),s.position.clone(),y.clone());s.roundedCurveCorner=I,this.roundedCurves.splice(i+o,0,I),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,n,o,i,a){if(e instanceof Ie.LineCurve)i!==void 0&&n.v2.copy(i),a!==void 0&&n.v1.copy(a);else{let s=e,l=n,u=s.getUtoTmapping(o,0),c=tm(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return n}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(n=>n.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(n=>n.clone()),e}toJSON(){return{points:this.points.reduce((e,n)=>e.concat(n.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let n=e.points.length/7;for(let o=0;o<n;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],u=e.points[i+3],c=e.points[i+4],p=e.points[i+5],f=e.points[i+6],d=new gr(Ie.MathUtils.generateUUID(),new Ie.Vector2(a,s));d.controls[0].position.set(l,u),d.controls[1].position.set(c,p),d.roundness=f,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Le;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let n=(i,a)=>{a instanceof Ie.CubicBezierCurve&&a.v3.equals(i.position)&&i.controls[0].position.copy(a.v2)},o=i=>{let a=[],s,l;for(s=0,l=i.length;s<l;s++)i[s]instanceof Ie.QuadraticBezierCurve&&(i[s]=Kh(i[s]));for(s=0,l=i.length;s<l;s++){let p=i[s],f=s>0?i[s-1]:null,d;p instanceof Ie.CubicBezierCurve?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof Ie.LineCurve&&(d=this.createPoint(p.v1)),d!==void 0&&(f!==null&&n(d,f),a.push(d))}let u=i[i.length-1],c=!1;return u instanceof Ie.CubicBezierCurve?u.v3.equals(a[0].position)&&(a[0].controls[0].position.copy(u.v2),c=!0):u instanceof Ie.LineCurve&&u.v2.equals(a[0].position)&&(c=!0),this.isClosed=c,a};return this.points=o(e.curves),e instanceof Ie.Shape&&(this.shapeHoles=e.holes.map(i=>{let a=new Le;return a.fromShape(i),a})),this.update(),this}};var ho=require("three");var ke;(function(r){r[r.ODD=0]="ODD",r[r.NONZERO=1]="NONZERO",r[r.POSITIVE=2]="POSITIVE",r[r.NEGATIVE=3]="NEGATIVE",r[r.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(ke||(ke={}));var lt;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(lt||(lt={}));function me(r,t){if(!r)throw t||"Assertion Failed!"}var de=function(){function r(){}return r.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},r.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},r.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},r.edgeGoesLeft=function(t){return r.vertLeq(t.Dst,t.Org)},r.edgeGoesRight=function(t){return r.vertLeq(t.Org,t.Dst)},r.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},r.edgeEval=function(t,e,n){me(r.vertLeq(t,e)&&r.vertLeq(e,n));var o=e.s-t.s,i=n.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-n.t)*(o/(o+i)):e.t-n.t+(n.t-t.t)*(i/(o+i)):0},r.edgeSign=function(t,e,n){me(r.vertLeq(t,e)&&r.vertLeq(e,n));var o=e.s-t.s,i=n.s-e.s;return o+i>0?(e.t-n.t)*o+(e.t-t.t)*i:0},r.transEval=function(t,e,n){me(r.transLeq(t,e)&&r.transLeq(e,n));var o=e.t-t.t,i=n.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-n.s)*(o/(o+i)):e.s-n.s+(n.s-t.s)*(i/(o+i)):0},r.transSign=function(t,e,n){me(r.transLeq(t,e)&&r.transLeq(e,n));var o=e.t-t.t,i=n.t-e.t;return o+i>0?(e.s-n.s)*o+(e.s-t.s)*i:0},r.vertCCW=function(t,e,n){return t.s*(e.t-n.t)+e.s*(n.t-t.t)+n.s*(t.t-e.t)>=0},r.interpolate=function(t,e,n,o){return t=t<0?0:t,n=n<0?0:n,t<=n?n===0?(e+o)/2:e+(o-e)*(t/(t+n)):o+(e-o)*(n/(t+n))},r.intersect=function(t,e,n,o,i){var a,s,l;r.vertLeq(t,e)||(l=t,t=e,e=l),r.vertLeq(n,o)||(l=n,n=o,o=l),r.vertLeq(t,n)||(l=t,t=n,n=l,l=e,e=o,o=l),r.vertLeq(n,e)?r.vertLeq(e,o)?(a=r.edgeEval(t,n,e),s=r.edgeEval(n,e,o),a+s<0&&(a=-a,s=-s),i.s=r.interpolate(a,n.s,s,e.s)):(a=r.edgeSign(t,n,e),s=-r.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=r.interpolate(a,n.s,s,o.s)):i.s=(n.s+e.s)/2,r.transLeq(t,e)||(l=t,t=e,e=l),r.transLeq(n,o)||(l=n,n=o,o=l),r.transLeq(t,n)||(l=t,t=n,n=l,l=e,e=o,o=l),r.transLeq(n,e)?r.transLeq(e,o)?(a=r.transEval(t,n,e),s=r.transEval(n,e,o),a+s<0&&(a=-a,s=-s),i.t=r.interpolate(a,n.t,s,e.t)):(a=r.transSign(t,n,e),s=-r.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=r.interpolate(a,n.t,s,o.t)):i.t=(n.t+e.t)/2},r}(),ca=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return r}(),bl=function(){function r(t){this.side=t,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(r.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),r}(),ci=function(){function r(){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 r}(),im=function(){function r(){var t=new ci,e=new ca,n=new bl(0),o=new bl(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,n.next=n,n.Sym=o,o.next=o,o.Sym=n,this.vHead=t,this.fHead=e,this.eHead=n,this.eHeadSym=o}return r.prototype.makeEdge_=function(t){var e=new bl(0),n=new bl(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return n.next=o,o.Sym.next=e,e.next=t,t.Sym.next=n,e.Sym=n,e.Onext=e,e.Lnext=n,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,n.Sym=e,n.Onext=n,n.Lnext=e,n.Org=null,n.Lface=null,n.winding=0,n.activeRegion=null,e},r.prototype.splice_=function(t,e){var n=t.Onext,o=e.Onext;n.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=n},r.prototype.makeVertex_=function(t,e,n){var o=t;me(o,"Vertex can't be null!");var i=n.prev;o.prev=i,i.next=o,o.next=n,n.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},r.prototype.makeFace_=function(t,e,n){var o=t;me(o,"Face can't be null");var i=n.prev;o.prev=i,i.next=o,o.next=n,n.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=n.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},r.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,n=t.Sym.next;e.Sym.next=n,n.Sym.next=e},r.prototype.killVertex_=function(t,e){var n=t.anEdge,o=n;do o.Org=e,o=o.Onext;while(o!==n);var i=t.prev,a=t.next;a.prev=i,i.next=a},r.prototype.killFace_=function(t,e){var n=t.anEdge,o=n;do o.Lface=e,o=o.Lnext;while(o!==n);var i=t.prev,a=t.next;a.prev=i,i.next=a},r.prototype.makeEdge=function(){var t=new ci,e=new ci,n=new ca,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(n,o,this.fHead),o},r.prototype.splice=function(t,e){var n=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(n=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new ci;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!n){var a=new ca;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},r.prototype.delete=function(t){var e=t.Sym,n=!1;if(t.Lface!==t.Rface&&(n=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!n){var o=new ca;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},r.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),n=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new ci;return this.makeVertex_(o,n,e.Org),e.Lface=n.Lface=t.Lface,e},r.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),n=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,n),t.Dst=n.Org,n.Dst.anEdge=n.Sym,n.Rface=t.Rface,n.winding=t.winding,n.Sym.winding=t.Sym.winding,n.idx=t.idx,n.Sym.idx=t.Sym.idx,n},r.prototype.connect=function(t,e){var n=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(n=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!n){var a=new ca;this.makeFace_(a,o,t.Lface)}return o},r.prototype.zapFace=function(t){var e=t.anEdge,n,o,i,a,s;o=e.Lnext;do n=o,o=n.Lnext,n.Lface=null,n.Rface===null&&(n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),i=n.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(n));while(n!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},r.prototype.countFaceVerts_=function(t){var e=t.anEdge,n=0;do n++,e=e.Lnext;while(e!==t.anEdge);return n},r.prototype.mergeConvexFaces=function(t){var e,n,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(n=e.anEdge,a=n.Org;o=n.Lnext,i=n.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&de.vertCCW(n.Lprev.Org,n.Org,i.Lnext.Lnext.Org)&&de.vertCCW(i.Lprev.Org,i.Org,n.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),n=null,i=null)),!(n&&n.Lnext.Org===a);)n=o;return!0},r.prototype.check=function(){var t=this.fHead,e=this.vHead,n=this.eHead,o,i,a,s,l,u;for(i=t,i=t;(o=i.next)!==t;i=o){me(o.prev===i),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){me(a.prev===s),l=a.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(me(a.prev===s&&a.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)me(l.Sym.next===u.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(l.Sym.next===u.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},r}(),am=function(){function r(){this.handle=null}return r}(),sm=function(){function r(){this.key=null,this.node=0}return r}(),jT=function(){function r(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var n=0;n<t+1;n++)this.nodes[n]=new am,this.handles[n]=new sm;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return r.prototype.floatDown_=function(t){var e=this.nodes,n=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(n[e[a+1].handle].key,n[e[a].handle].key)&&++a,me(a<=this.max),i=e[a].handle,a>this.size||this.leq(n[o].key,n[i].key)){e[t].handle=o,n[o].node=t;break}e[t].handle=i,n[i].node=t,t=a}},r.prototype.floatUp_=function(t){var e=this.nodes,n=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(n[i].key,n[o].key)){e[t].handle=o,n[o].node=t;break}e[t].handle=i,n[i].node=t,t=a}},r.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},r.prototype.min=function(){return this.handles[this.nodes[1].handle].key},r.prototype.insert=function(t){var e,n;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 am;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new sm}return this.freeList===0?n=e:(n=this.freeList,this.freeList=this.handles[n].node),this.nodes[e].handle=n,this.handles[n].node=e,this.handles[n].key=t,this.initialized&&this.floatUp_(e),n},r.prototype.extractMin=function(){var t=this.nodes,e=this.handles,n=t[1].handle,o=e[n].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[n].key=null,e[n].node=this.freeList,this.freeList=n,--this.size,this.size>0&&this.floatDown_(1)),o},r.prototype.delete=function(t){var e=this.nodes,n=this.handles,o;me(t>=1&&t<=this.max&&n[t].key!==null),o=n[t].node,e[o].handle=e[this.size].handle,n[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(n[e[o>>1].handle].key,n[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),n[t].key=null,n[t].node=this.freeList,this.freeList=t},r}(),nu=function(){function r(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return r}(),lm=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),HT=function(){function r(t,e){this.frame=t,this.leq=e,this.head=new lm,this.head.next=this.head,this.head.prev=this.head}return r.prototype.min=function(){return this.head.next},r.prototype.max=function(){return this.head.prev},r.prototype.insert=function(t){return this.insertBefore(this.head,t)},r.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},r.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var n=new lm;return n.key=e,n.next=t.next,t.next.prev=n,n.prev=t,t.next=n,n},r.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},r}(),WT=function(){function r(){}return r.regionBelow=function(t){return t.nodeUp.prev.key},r.regionAbove=function(t){return t.nodeUp.next.key},r.debugEvent=function(t){},r.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},r.edgeLeq=function(t,e,n){var o=t.event,i=e.eUp,a=n.eUp;if(i.Dst===o)return a.Dst===o?de.vertLeq(i.Org,a.Org)?de.edgeSign(a.Dst,i.Org,a.Org)<=0:de.edgeSign(i.Dst,a.Org,i.Org)>=0:de.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return de.edgeSign(i.Dst,o,i.Org)>=0;var s=de.edgeEval(i.Dst,o,i.Org),l=de.edgeEval(a.Dst,o,a.Org);return s>=l},r.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},r.fixUpperEdge=function(t,e,n){me(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=n,n.activeRegion=e},r.topLeftRegion=function(t,e){var n=e.eUp.Org,o;do e=r.regionAbove(e);while(e.eUp.Org===n);if(e.fixUpperEdge){if(o=t.mesh.connect(r.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;r.fixUpperEdge(t,e,o),e=r.regionAbove(e)}return e},r.topRightRegion=function(t){var e=t.eUp.Dst;do t=r.regionAbove(t);while(t.eUp.Dst===e);return t},r.addRegionBelow=function(t,e,n){var o=new nu;return o.eUp=n,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,n.activeRegion=o,o},r.isWindingInside=function(t,e){switch(t.windingRule){case ke.ODD:return(e&1)!==0;case ke.NONZERO:return e!==0;case ke.POSITIVE:return e>0;case ke.NEGATIVE:return e<0;case ke.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},r.computeWinding=function(t,e){e.windingNumber=r.regionAbove(e).windingNumber+e.eUp.winding,e.inside=r.isWindingInside(t,e.windingNumber)},r.finishRegion=function(t,e){var n=e.eUp,o=n.Lface;o.inside=e.inside,o.anEdge=n,r.deleteRegion(t,e)},r.finishLeftRegions=function(t,e,n){for(var o,i=null,a=e,s=e.eUp;a!==n;){if(a.fixUpperEdge=!1,i=r.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){r.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),r.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),r.finishRegion(t,a),s=i.eUp,a=i}return s},r.addRightEdges=function(t,e,n,o,i,a){var s,l,u,c,p=!0;u=n;do me(de.vertLeq(u.Org,u.Dst)),r.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=r.regionBelow(e).eUp.Rprev),l=e,c=i;s=r.regionBelow(l),u=s.eUp.Sym,u.Org===c.Org;)u.Onext!==c&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(c.Oprev,u)),s.windingNumber=l.windingNumber-u.winding,s.inside=r.isWindingInside(t,s.windingNumber),l.dirty=!0,!p&&r.checkForRightSplice(t,l)&&(r.addWinding(u,c),r.deleteRegion(t,l),t.mesh.delete(c)),p=!1,l=s,c=u;l.dirty=!0,me(l.windingNumber-u.winding===s.windingNumber),a&&r.walkDirtyRegions(t,l)},r.spliceMergeVertices=function(t,e,n){t.mesh.splice(e,n)},r.vertexWeights=function(t,e,n){var o=de.vertL1dist(e,t),i=de.vertL1dist(n,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*n.coords[0],t.coords[1]+=a*e.coords[1]+s*n.coords[1],t.coords[2]+=a*e.coords[2]+s*n.coords[2]},r.getIntersectData=function(t,e,n,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,r.vertexWeights(e,n,o),r.vertexWeights(e,i,a)},r.checkForRightSplice=function(t,e){var n=r.regionBelow(e),o=e.eUp,i=n.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&&(t.pq.delete(o.Org.pqHandle),r.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=n.dirty=!0)}else{if(de.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;r.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},r.checkForLeftSplice=function(t,e){var n=r.regionBelow(e),o=e.eUp,i=n.eUp,a;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;r.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(de.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=n.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},r.checkForIntersect=function(t,e){var n=r.regionBelow(e),o=e.eUp,i=n.eUp,a=o.Org,s=i.Org,l=o.Dst,u=i.Dst,c,p,f=new ci,d,h;if(me(!de.vertEq(u,l)),me(de.edgeSign(l,t.event,a)<=0),me(de.edgeSign(u,t.event,s)>=0),me(a!==t.event&&s!==t.event),me(!e.fixUpperEdge&&!n.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),p=Math.max(s.t,u.t),c>p))return!1;if(de.vertLeq(a,s)){if(de.edgeSign(u,a,s)>0)return!1}else if(de.edgeSign(l,s,a)<0)return!1;return r.debugEvent(t),de.intersect(l,a,u,s,f),me(Math.min(a.t,l.t)<=f.t),me(f.t<=Math.max(s.t,u.t)),me(Math.min(u.s,l.s)<=f.s),me(f.s<=Math.max(s.s,a.s)),de.vertLeq(f,t.event)&&(f.s=t.event.s,f.t=t.event.t),d=de.vertLeq(a,s)?a:s,de.vertLeq(d,f)&&(f.s=d.s,f.t=d.t),de.vertEq(f,a)||de.vertEq(f,s)?(r.checkForRightSplice(t,e),!1):!de.vertEq(l,t.event)&&de.edgeSign(l,t.event,f)>=0||!de.vertEq(u,t.event)&&de.edgeSign(u,t.event,f)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=r.topLeftRegion(t,e),o=r.regionBelow(e).eUp,r.finishLeftRegions(t,r.regionBelow(e),n),r.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),n=e,e=r.topRightRegion(e),h=r.regionBelow(e).eUp.Rprev,n.eUp=i.Oprev,i=r.finishLeftRegions(t,n,null),r.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(de.edgeSign(l,t.event,f)>=0&&(r.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),de.edgeSign(u,t.event,f)<=0&&(e.dirty=n.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=f.s,o.Org.t=f.t,o.Org.pqHandle=t.pq.insert(o.Org),r.getIntersectData(t,o.Org,a,l,s,u),r.regionAbove(e).dirty=e.dirty=n.dirty=!0,!1)},r.walkDirtyRegions=function(t,e){for(var n=r.regionBelow(e),o,i;;){for(;n.dirty;)e=n,n=r.regionBelow(n);if(!e.dirty&&(n=e,e=r.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=n.eUp,o.Dst!==i.Dst&&r.checkForLeftSplice(t,e)&&(n.fixUpperEdge?(r.deleteRegion(t,n),t.mesh.delete(i),n=r.regionBelow(e),i=n.eUp):e.fixUpperEdge&&(r.deleteRegion(t,e),t.mesh.delete(o),e=r.regionAbove(n),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!n.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(r.checkForIntersect(t,e))return}else r.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(r.addWinding(i,o),r.deleteRegion(t,e),t.mesh.delete(o),e=r.regionAbove(n))}},r.connectRightVertex=function(t,e,n){var o,i=n.Onext,a=r.regionBelow(e),s=e.eUp,l=a.eUp,u=!1;if(s.Dst!==l.Dst&&r.checkForIntersect(t,e),de.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=r.topLeftRegion(t,e),i=r.regionBelow(e).eUp,r.finishLeftRegions(t,r.regionBelow(e),a),u=!0),de.vertEq(l.Org,t.event)&&(t.mesh.splice(n,l.Oprev),n=r.finishLeftRegions(t,a,null),u=!0),u){r.addRightEdges(t,e,n.Onext,i,i,!0);return}de.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(n.Lprev,o),r.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,r.walkDirtyRegions(t,e)},r.connectLeftDegenerate=function(t,e,n){var o,i,a,s,l;if(o=e.eUp,de.vertEq(o.Org,n)){me(!1),r.spliceMergeVertices(t,o,n.anEdge);return}if(!de.vertEq(o.Dst,n)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(n.anEdge,o),r.sweepEvent(t,n);return}me(!1),e=r.topRightRegion(e),l=r.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(me(i!==a),r.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(n.anEdge,a),de.edgeGoesLeft(i)||(i=null),r.addRightEdges(t,e,a.Onext,s,i,!0)},r.connectLeftVertex=function(t,e){var n,o,i,a,s,l,u=new nu;if(u.eUp=e.anEdge.Sym,n=t.dict.search(u).key,o=r.regionBelow(n),!!o){if(a=n.eUp,s=o.eUp,de.edgeSign(a.Dst,e,a.Org)===0){r.connectLeftDegenerate(t,n,e);return}if(i=de.vertLeq(s.Dst,a.Dst)?n:o,n.inside||i.fixUpperEdge){if(i===n)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?r.fixUpperEdge(t,i,l):r.computeWinding(t,r.addRegionBelow(t,n,l)),r.sweepEvent(t,e)}else r.addRightEdges(t,n,e.anEdge,e.anEdge,null,!0)}},r.sweepEvent=function(t,e){t.event=e,r.debugEvent(t);for(var n=e.anEdge;n.activeRegion===null;)if(n=n.Onext,n===e.anEdge){r.connectLeftVertex(t,e);return}var o=r.topLeftRegion(t,n.activeRegion);me(o!==null);var i=r.regionBelow(o),a=i.eUp,s=r.finishLeftRegions(t,i,null);s.Onext===a?r.connectRightVertex(t,o,s):r.addRightEdges(t,o,s.Onext,a,a,!0)},r.addSentinel=function(t,e,n,o){var i=new nu,a=t.mesh.makeEdge();a.Org.s=n,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},r.initEdgeDict=function(t){t.dict=new HT(t,r.edgeLeq);var e=t.bmax[0]-t.bmin[0],n=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-n,s=t.bmax[1]+n;r.addSentinel(t,o,i,a),r.addSentinel(t,o,i,s)},r.doneEdgeDict=function(t){for(var e,n=0;(e=t.dict.min().key)!==null;)e.sentinel||(me(e.fixUpperEdge),me(++n===1)),me(e.windingNumber===0),r.deleteRegion(t,e)},r.removeDegenerateEdges=function(t){var e,n,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=n)n=e.next,o=e.Lnext,de.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(r.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===n||o===n.Sym)&&(n=n.next),t.mesh.delete(o)),(e===n||e===n.Sym)&&(n=n.next),t.mesh.delete(e))},r.initPriorityQ=function(t){var e,n,o,i=0;for(o=t.mesh.vHead,n=o.next;n!==o;n=n.next)i++;for(i+=8,e=t.pq=new jT(i,de.vertLeq),o=t.mesh.vHead,n=o.next;n!==o;n=n.next)n.pqHandle=e.insert(n);return n!==o?!1:(e.init(),!0)},r.donePriorityQ=function(t){t.pq=null},r.removeDegenerateFaces=function(t,e){var n,o,i;for(n=e.fHead.next;n!==e.fHead;n=o)o=n.next,i=n.anEdge,me(i.Lnext!==i),i.Lnext.Lnext===i&&(r.addWinding(i.Onext,i),t.mesh.delete(i));return!0},r.computeInterior=function(t,e){e===void 0&&(e=!0);var n,o;if(r.removeDegenerateEdges(t),!r.initPriorityQ(t))return!1;for(r.initEdgeDict(t);(n=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!de.vertEq(o,n));)o=t.pq.extractMin(),r.spliceMergeVertices(t,n.anEdge,o.anEdge);r.sweepEvent(t,n)}return t.event=t.dict.min().key.eUp.Org,r.debugEvent(t),r.doneEdgeDict(t),r.donePriorityQ(t),r.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},r}(),qT=function(){function r(){this.mesh=new im,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=ke.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 r.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},r.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},r.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},r.prototype.computeNormal_=function(t){var e,n,o,i,a,s,l=[0,0,0],u=[0,0,0],c=[0,0,0],p=[0,0,0],f=[0,0,0],d=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var g=0;g<3;++g)i=e.coords[g],u[g]=i,h[g]=e,l[g]=i,d[g]=e;for(e=m.next;e!==m;e=e.next)for(var v=0;v<3;++v)i=e.coords[v],i<u[v]&&(u[v]=i,h[v]=e),i>l[v]&&(l[v]=i,d[v]=e);var x=0;if(l[1]-u[1]>l[0]-u[0]&&(x=1),l[2]-u[2]>l[x]-u[x]&&(x=2),u[x]>=l[x]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,n=h[x],o=d[x],c[0]=n.coords[0]-o.coords[0],c[1]=n.coords[1]-o.coords[1],c[2]=n.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],f[0]=c[1]*p[2]-c[2]*p[1],f[1]=c[2]*p[0]-c[0]*p[2],f[2]=c[0]*p[1]-c[1]*p[0],a=f[0]*f[0]+f[1]*f[1]+f[2]*f[2],a>s&&(s=a,t[0]=f[0],t[1]=f[1],t[2]=f[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},r.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,n=this.mesh.vHead,o,i=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=n.next;e!==n;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]}},r.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],n,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),n=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);n[a]=0,n[(a+1)%3]=1,n[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,n),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,u=t.next;u!==t;u=u.next)l?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,l=!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))},r.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},r.prototype.tessellateMonoRegion_=function(t,e){var n,o;if(n=e.anEdge,!(n.Lnext!==n&&n.Lnext.Lnext!==n))throw"Mono region invalid";for(;de.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;de.vertLeq(n.Org,n.Dst);n=n.Lnext);o=n.Lprev;for(var i=void 0;n.Lnext!==o;)if(de.vertLeq(n.Dst,o.Org)){for(;o.Lnext!==n&&(de.edgeGoesLeft(o.Lnext)||de.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==n&&(de.edgeGoesRight(n.Lprev)||de.edgeSign(n.Dst,n.Org,n.Lprev.Org)>=0);)i=t.connect(n,n.Lprev),n=i.Sym;n=n.Lnext}if(o.Lnext===n)throw"Mono region invalid";for(;o.Lnext.Lnext!==n;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},r.prototype.tessellateInterior_=function(t){for(var e,n=t.fHead.next;n!==t.fHead;n=e)if(e=n.next,n.inside&&!this.tessellateMonoRegion_(t,n))return!1;return!0},r.prototype.discardExterior_=function(t){for(var e,n=t.fHead.next;n!==t.fHead;n=e)e=n.next,n.inside||t.zapFace(n)},r.prototype.setWindingNumber_=function(t,e,n){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:n?t.delete(i):i.winding=0},r.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},r.prototype.outputPolymesh_=function(t,e,n,o){var i,a=0,s=0,l;n>3&&t.mergeConvexFaces(n);for(var u=t.vHead.next;u!==t.vHead;u=u.next)u.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>n)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===lt.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*n,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var p=u.n*o;this.vertices[p+0]=u.coords[0],this.vertices[p+1]=u.coords[1],o>2&&(this.vertices[p+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var f=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var u=i.Org;this.elements[f++]=u.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var d=l;d<n;++d)this.elements[f++]=-1;if(e===lt.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[f++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<n;++h)this.elements[f++]=-1}}},r.prototype.outputContours_=function(t,e){var n,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=n=s.anEdge;do this.vertexCount++,n=n.Lnext;while(n!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,u=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=n=s.anEdge;do this.vertices[l++]=n.Org.coords[0],this.vertices[l++]=n.Org.coords[1],e>2&&(this.vertices[l++]=n.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(n):n.Org.idx,a++,n=n.Lnext;while(n!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},r.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new im),t<2&&(t=2),t>3&&(t=3);for(var n=null,o=0;o<e.length;o+=t)n===null?(n=this.mesh.makeEdge(),this.mesh.splice(n,n.Sym)):(this.mesh.splitEdge(n),n=n.Lnext),n.Org.coords[0]=e[o+0],n.Org.coords[1]=e[o+1],t>2?n.Org.coords[2]=e[o+2]:n.Org.coords[2]=0,n.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(n),n.winding=1,n.Sym.winding=-1},r.prototype.tesselate=function(t,e,n,o,i,a){if(t===void 0&&(t=ke.ODD),e===void 0&&(e=lt.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),WT.computeInterior(this,a);var s=this.mesh;return e===lt.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===lt.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,n,o),!0},r}();function fo(r){var t=r.windingRule,e=t===void 0?ke.ODD:t,n=r.elementType,o=n===void 0?lt.POLYGONS:n,i=r.polySize,a=i===void 0?3:i,s=r.vertexSize,l=s===void 0?2:s,u=r.normal,c=u===void 0?[0,0,1]:u,p=r.contours,f=p===void 0?[]:p,d=r.strict,h=d===void 0?!0:d,m=r.debug,g=m===void 0?!1:m;if(!f&&h)throw new Error("Contours can't be empty");if(!!f){var v=new qT;r.edgeCreateCallback&&(v.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(v.vertexIdCallback=r.vertexIdCallback);for(var x=0;x<f.length;x++)v.addContour(l||2,f[x]);return v.tesselate(e,o,a,l,c,h),{vertices:v.vertices,vertexIndices:v.vertexIndices,vertexCount:v.vertexCount,elements:v.elements,elementCount:v.elementCount,mesh:g?v.mesh:void 0}}}var pU=ke.ODD,fU=ke.NONZERO,dU=ke.POSITIVE,hU=ke.NEGATIVE,mU=ke.ABS_GEQ_TWO,gU=lt.POLYGONS,yU=lt.CONNECTED_POLYGONS,vU=lt.BOUNDARY_CONTOURS;var ui=class extends ho.BufferGeometry{constructor(e,n=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ke.ODD;this.elementType=lt.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:ke.ODD,elementType:lt.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,u=!0,c,p;for(let h=0,m=i.length/2;h<m;h++){let g=h*2,v=i[g+0],x=i[g+1];if(c!==void 0&&v!==c&&(l=!1),p!==void 0&&x!==p&&(u=!1),c=v,p=x,!l&&!u)break}!l&&!u&&(s=fo({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let f=s?.vertexCount??1,d=s?.elementCount??1;if(this._positionAttribute=new ho.BufferAttribute(new Float32Array(f*3),3),this._normalAttribute=new ho.BufferAttribute(new Float32Array(f*3),3),this._uvAttribute=new ho.BufferAttribute(new Float32Array(f*2),2),this._indexAttribute=new ho.BufferAttribute(new Uint32Array(d*3),1),s){let h=1/0,m=-1/0,g=1/0,v=-1/0;for(let w=0,b=f;w<b;w++){let _=w*2,T=s.vertices[_+0],y=s.vertices[_+1];T<h&&(h=T),T>m&&(m=T),y<g&&(g=y),y>v&&(v=y)}let x=m-h,S=v-g;for(let w=0,b=f;w<b;w++){let _=w*2,T=s.vertices[_+0],y=s.vertices[_+1],I=(T-h)/x,A=(y-g)/S;this._positionAttribute.setXYZ(w,T,y,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,I,A)}for(let w=0,b=d;w<b;w++){let _=w*3,T=s.elements[_+0],y=s.elements[_+1],I=s.elements[_+2];this._indexAttribute.setX(_+0,T),this._indexAttribute.setX(_+1,y),this._indexAttribute.setX(_+2,I)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new ui(this._shape,this._curveSegments);return e.userData=Yi(this.userData),e}};var mo=require("three");var Sl=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let n=t*Sl.eSize;this.buffer=new ArrayBuffer(n);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let n=t*Sl.eSize,o=new ArrayBuffer(n),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let u=new Float32Array(o,a*i,2*t);s.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=u,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let n=this.size;return this.size=e,n}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ua=Sl;ua.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ou=(r,t)=>([e,n])=>(n<e&&(n+=t),(r>=e?r:r+t)<=n),pi=class extends mo.BufferGeometry{constructor(e,n,o=0,i=12,a=3,s=ke.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=n,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=a,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,n/2-1e-12),this._bevelSegments=Math.floor(a));let l=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(y=>{let I=y.extractShapePointsToFlatArray([],i),A=[];for(let O=I.length-1;O>=1;O-=2){let C=I[O-1],N=I[O-0];A.push(C,N)}return A}),c=fo({windingRule:s,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),p=fo({windingRule:ke.ODD,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]});if(!c)throw new Error("error generating geometry");let f=c.elementCount;if(p){c.elementCount+=p.elementCount;for(let y=0;y<p.elements.length;y++){let I=p.elements[y],A=y%2===0?c.vertexCount:0;c.elements.push(I+A)}for(let y=0;y<p.vertexIndices.length;y++){let I=p.vertexIndices[y],A=c.vertexCount;c.vertexIndices.push(I+A)}for(let y=0;y<p.vertices.length;y++){let I=p.vertices[y];c.vertices.push(I)}}let d=1/0,h=-1/0,m=1/0,g=-1/0;for(let y=0,I=c.vertexCount;y<I;y++){let A=y*2,O=c.vertices[A+0],C=c.vertices[A+1];O<d&&(d=O),O>h&&(h=O),C<m&&(m=C),C>g&&(g=C)}this._minX=d,this._minY=m,this._width=h-d,this._height=g-m;let v=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new ua(v);let x=[],S=[];for(let y=c.elementCount-1;y>=0;y--){let I=y>=f,A=y*2,O=c.elements[A+0],C=c.elements[A+1],N=O+C,P={start:O,count:C,normals:[],continuous:[],concave:[]},G=O,$=N-1,Y=O+1,ie=this._shape.roundedCurves.length;do{let R=G-O,D=c.vertices[$*2+0],F=c.vertices[$*2+1],B=c.vertices[G*2+0],X=c.vertices[G*2+1],K=c.vertices[Y*2+0],q=c.vertices[Y*2+1],z=B-D,U=X-F,W=Math.sqrt(z*z+U*U);z/=W,U/=W;let re=B-K,ae=X-q,fe=Math.sqrt(re*re+ae*ae);re/=fe,ae/=fe,P.normals[R*2+0]=-ae,P.normals[R*2+1]=re,P.concave[R]=z*ae-U*re>0;let oe=c.vertexIndices[G];if(Array.isArray(oe))P.continuous[R]=!1;else{let[ne,ee]=this._shape.getCurveIndexFromVertexId(oe-1,!0);if(ee>0&&ee<1)P.continuous[R]=!0;else{let Q=ee===1?ne+1:ne-1;Q=(Q+ie)%ie;let Se=ee===1?0:1,ye=this._shape.roundedCurves[ne].getTangent(ee),Ce=this._shape.roundedCurves[Q].getTangent(Se);P.continuous[R]=ye.dot(Ce)>.95}}I&&(P.normals[R*2+0]*=-1,P.normals[R*2+1]*=-1),[$,G,Y]=[G,Y,Y+1],Y>=N&&(Y-=C)}while(Y!==O+1);let j=[];j.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(O*2,N*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((R,D)=>[D,D]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(O*2,N*2)});for(let R=1;R<=this._bevelSegments;R++){let D=R/this._bevelSegments*Math.PI/2,F=(1-Math.cos(D))*this._bevelSize,B=[],X=[],K=[],q=[],z=0;for(let W=0;W<C;W++){let re=W*2,ae=(W-1+C)%C*2,fe=c.vertices[P.start*2+re+0],oe=c.vertices[P.start*2+re+1],ne=-P.normals[ae+0]*F,ee=-P.normals[ae+1]*F,Q=-P.normals[re+0]*F,Se=-P.normals[re+1]*F;if(P.concave[W]||!P.concave[W]&&I){let ye=Math.atan2(ee,ne),Ce=Math.atan2(Se,Q);Ce>ye&&(Ce-=Math.PI*2);let mt=Ce-ye;if(P.continuous[W]||I){let Me=ye+mt/2,De=Math.cos(Me)*F,Re=Math.sin(Me)*F;B[2*z+0]=fe+De*(I?-1:1),B[2*z+1]=oe+Re*(I?-1:1),q[z]=W,z++}else{let Me=Math.max(1,Math.floor(i/4*Math.abs(mt)/Math.PI));for(let De=0;De<=Me;De++){let Re=ye+mt*(De/Me),nr=Math.cos(Re)*F,Sn=Math.sin(Re)*F;B[2*z+0]=fe+nr,B[2*z+1]=oe+Sn,q[z]=W,z++}}}else B[2*z+0]=fe+ne,B[2*z+1]=oe+ee,q[z]=W,X[W]=z,z++,B[2*z+0]=fe,B[2*z+1]=oe,q[z]=W,z++,B[2*z+0]=fe+Q,B[2*z+1]=oe+Se,q[z]=W,K[W]=z,z++}let U=fo({windingRule:ke.POSITIVE,elementType:lt.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[B],edgeCreateCallback:W=>{let ae=W.Org.idx,fe=q[ae],oe=q[(ae+1)%q.length];W.idx=[fe,oe],W.Sym.idx=[oe,fe]},vertexIdCallback:W=>{let re=W.Lprev.idx;return[re?re[1]:0,W.idx[0]]}});if(!U)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!U.vertexCount)break;for(let W=0;W<U.vertexIndices.length;W++){let[re,ae]=U.vertexIndices[W];if(re===ae)continue;let fe=ae;ae<re&&(fe+=C);for(let oe=re;oe<fe;oe++){let ne=oe%C,ee=(oe+1)%C;if(!P.continuous[ne]||!P.continuous[ee]){U.vertexIndices[W]=[re,ne],U.vertexIndices.splice(W+1,0,[ee,ae]),U.vertices.splice((W+1)*2,0,U.vertices[W*2],U.vertices[W*2+1]);break}}}j.push({bevelI:R,angle:D,size:F,boundary:U,reverseMap:q,insetPoints:B})}let H=(R,D,F)=>{let B=0,X=R.boundary.vertexIndices.length;for(;B<X&&F(R.boundary.vertexIndices[D]);)D=(D+1)%X,B++;return B},V=x.length;for(let R=1;R<j.length;R++){let D=j[R-1],F=j[R],B=D.boundary.vertexIndices.length,X=F.boundary.vertexIndices.length;if(!B||!X)break;let K=P.concave.length,q=0,z=ou(q,C);for(;!D.boundary.vertexIndices.filter(z).length||!F.boundary.vertexIndices.filter(z).length;)q++,z=ou(q,C);let U=D.boundary.vertexIndices.findIndex(z),W=F.boundary.vertexIndices.findIndex(z);do U=(U+1)%B;while(z(D.boundary.vertexIndices[U]));do W=(W+1)%X;while(z(F.boundary.vertexIndices[W]));q=(q+1)%C;let re=q,ae=this.buildBevelVert(P,D,(U-1+B)%B),fe=this.buildBevelVert(P,F,(W-1+X)%X),oe=ae,ne=fe,ee,Q,Se=!1;do{z=ou(q,C);let ye=H(D,U,z),Ce=H(F,W,z),mt=Se;if(Se=!1,ye&&!Ce){for(let Me=0;Me<ye;Me++)ee=this.buildBevelVert(P,D,(U+Me)%B,Me/(ye-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee;Se=!0}else if(!ye&&Ce)for(let Me=0;Me<Ce;Me++)Q=this.buildBevelVert(P,F,(W+Me)%X,Me/(Ce-1)),x.push(ne.topN,oe.topP,Q.topP),x.push(oe.bottomP,ne.bottomN,Q.bottomP),ne=Q;else if(ye&&Ce)if(ee=this.buildBevelVert(P,D,U,0),Q=this.buildBevelVert(P,F,W,0),mt?(x.push(oe.topN,Q.topP,ne.topN),x.push(oe.topN,ee.topP,Q.topP),x.push(Q.bottomP,oe.bottomN,ne.bottomN),x.push(Q.bottomP,ee.bottomP,oe.bottomN)):(x.push(ne.topN,oe.topN,ee.topP),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,oe.bottomN,ne.bottomN),x.push(ee.bottomP,ne.bottomN,Q.bottomP)),oe=ee,ne=Q,ye===Ce)for(let Me=1;Me<ye;Me++)ee=this.buildBevelVert(P,D,(U+Me)%B,Me/(ye-1)),Q=this.buildBevelVert(P,F,(W+Me)%X,Me/(Ce-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,oe.bottomN,ne.bottomN),x.push(ee.bottomP,ne.bottomN,Q.bottomP),oe=ee,ne=Q;else if(ye>Ce){let Me=ye/Ce,De=0;for(let Re=1;Re<ye;Re++)ee=this.buildBevelVert(P,D,(U+Re)%B,Re/(ye-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee,Re>(De+1)*Me&&(De++,Q=this.buildBevelVert(P,F,(W+De)%X,De/(Ce-1)),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,ne.bottomN,Q.bottomP),ne=Q)}else{let Me=Ce/ye,De=0;for(let Re=1;Re<Ce;Re++)Q=this.buildBevelVert(P,F,(W+Re)%X,Re/(Ce-1)),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,ne.bottomN,Q.bottomP),ne=Q,Re>(De+1)*Me&&(De++,ee=this.buildBevelVert(P,D,(U+De)%B,De/(ye-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee)}U=(U+ye)%B,W=(W+Ce)%X,q=(q+1)%K}while(q!==re)}{let R=j[0];for(let D=0,F=R.boundary.vertexCount;D<F;D++){let B=this.buildBevelVert(P,R,D),X=this.buildBevelVert(P,R,(D+1)%F);x.push(X.topP,B.topN,B.bottomN),x.push(X.topP,B.bottomN,X.bottomP)}}if(I){let R=[];for(let D=x.length-1;D>=V+2;D-=3){let F=x[D-2],B=x[D-1],X=x[D-0];R.push(X,B,F)}x.splice(V,x.length-V,...R)}if(I){let R=[];for(let D=j[j.length-1].boundary.vertices.length-1;D>=1;D-=2){let F=j[j.length-1].boundary.vertices[D-1],B=j[j.length-1].boundary.vertices[D-0];R.push(F,B)}S.push(R)}if(!I){let R=j[j.length-1],D=fo({windingRule:j.length>1?ke.POSITIVE:ke.ODD,elementType:lt.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...S]});if(!D)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:x.length});for(let F=0;F<D.elementCount*3;F+=3){let B=this.buildSurfaceVert(D,D.elements[F+0]),X=this.buildSurfaceVert(D,D.elements[F+1]),K=this.buildSurfaceVert(D,D.elements[F+2]);x.push(B.top,X.top,K.top),x.push(K.bottom,X.bottom,B.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new mo.BufferAttribute(Uint32Array.from(x),1),b=new mo.BufferAttribute(this._buffer.positions,3),_=new mo.BufferAttribute(this._buffer.normals,3),T=new mo.BufferAttribute(this._buffer.uvs,2);b.needsUpdate=!0,_.needsUpdate=!0,T.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",_),this.setAttribute("uv",T),this.setIndex(w)}buildSurfaceVert(e,n){let o=n.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[n*2+0],a=e.vertices[n*2+1],s=(i-this._minX)/this._width,l=(a-this._minY)/this._height,u=this._buffer.get(2),c=u*3,p=u*2,f={top:u+0,bottom:u+1};return this._buffer.positions[c+0]=i,this._buffer.positions[c+1]=a,this._buffer.positions[c+2]=this._depth,this._buffer.normals[c+0]=0,this._buffer.normals[c+1]=0,this._buffer.normals[c+2]=1,this._buffer.uvs[p+0]=s,this._buffer.uvs[p+1]=l,this._buffer.positions[c+3]=i,this._buffer.positions[c+4]=a,this._buffer.positions[c+5]=0,this._buffer.normals[c+3]=0,this._buffer.normals[c+4]=0,this._buffer.normals[c+5]=-1,this._buffer.uvs[p+2]=s,this._buffer.uvs[p+3]=l,this.vertexCache[o]=f,f}buildBevelVert(e,n,o,i=1){let a=`${n.bevelI}:${o}`;if(a in this.vertexCache)return this.vertexCache[a];let[s,l]=n.boundary.vertexIndices[o],u,c,p,f;s!==l?(c=s,u=l,f=!1,p=e.continuous[c]&&e.continuous[u]):(u=s,c=(u-1+e.count)%e.count,f=e.concave[u]&&n.bevelI>0,p=e.continuous[u]||f);let d=Math.cos(n.angle),h=Math.sin(n.angle),m=o*2,g=u*2,v=c*2,x=n.boundary.vertices[m+0],S=n.boundary.vertices[m+1],w=(1-h)*this._bevelSize,b=(x-this._minX)/this._width,_=(S-this._minY)/this._height,T=e.normals[g+0],y=e.normals[g+1],I=e.normals[v+0],A=e.normals[v+1];if(f){let G=I-T,$=A-y;T=T+G*(1-i),y=y+$*(1-i);let Y=Math.sqrt(T*T+y*y);T/=Y,y/=Y}let O=this._buffer.get(p?2:4),C=O*3,N=O*2,P={i:o,fi:u,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1};return this._buffer.positions[C+0]=x,this._buffer.positions[C+1]=S,this._buffer.positions[C+2]=this._depth-w,this._buffer.normals[C+0]=T*d,this._buffer.normals[C+1]=y*d,this._buffer.normals[C+2]=h,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=_,this._buffer.positions[C+3]=x,this._buffer.positions[C+4]=S,this._buffer.positions[C+5]=w,this._buffer.normals[C+3]=T*d,this._buffer.normals[C+4]=y*d,this._buffer.normals[C+5]=-h,this._buffer.uvs[N+2]=_,this._buffer.uvs[N+3]=b,p||(O+=2,C+=6,N+=4,P.topP=O+0,P.bottomP=O+1,this._buffer.positions[C+0]=x,this._buffer.positions[C+1]=S,this._buffer.positions[C+2]=this._depth-w,this._buffer.normals[C+0]=I*d,this._buffer.normals[C+1]=A*d,this._buffer.normals[C+2]=h,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=_,this._buffer.positions[C+3]=x,this._buffer.positions[C+4]=S,this._buffer.positions[C+5]=w,this._buffer.normals[C+3]=I*d,this._buffer.normals[C+4]=A*d,this._buffer.normals[C+5]=-h,this._buffer.uvs[N+2]=_,this._buffer.uvs[N+3]=b),this.vertexCache[a]=P,P}clone(){let e=new pi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Yi(this.userData),e}};var Ct=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ke.ODD},r.parameters),n=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Le?(a.width!==n||a.height!==o)&&a.applySize(n,o):a=new Le(n,o).fromJSON(a),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&a.update(!1));let l=a??new Le(n,o);return{parameters:Object.assign(e,{width:n,height:o,depth:i,roundness:s}),shape:l}}static build(r){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:n,subdivisions:o,roundness:i,windingRule:a}=r.parameters;r.shape.roundness=i;let s;return t<=0?s=new ui(r.shape,o,{windingRule:a}):s=new pi(r.shape,t,e,o,n,a),Object.assign(s,{userData:{...r,type:"VectorGeometry"}})}};var jl=require("three");var pm=require("three");var We=require("three"),um=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},r.parameters),n=e.width/2,o=e.radiusTop??n,i=e.radiusBottom??n;return o===i?(o=n,i=n):o>i?(o=n,i=i*n/o):(o=o*n/i,i=n),{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(r){let{width:t,depth:e,height:n,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:u,radiusBottom:c,cornerRadius:p,cornerSegments:f,hollow:d}=r.parameters,h;return p||d?h=new pa(u,c,n,o,i,a,s,l*Math.PI/180,p,p,f,d):h=new We.CylinderBufferGeometry(u,c,n,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...r,type:"CylinderGeometry"}})}};function Rn(r,t,e){e.x=r.x*t.x,e.y=r.y,e.z=r.x*t.y}function cm(r){return new We.Vector2(r.y,-r.x)}var pa=class extends We.BufferGeometry{constructor(t,e,n,o,i,a,s,l,u,c,p,f,d=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,n=n||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(u=0,c=0);let h=[],m=[],g=[],v=[],x=0,S=n/2,w=new We.Vector3,b=new We.Vector3;d&&t==0&&(t=u),d&&e==0&&(e=c);let _=new We.Vector2(t,S),T=new We.Vector2(e,-S),y=null,I=null,A=null,O=null,C=_.clone().sub(T),N=0,P=0,G=0;f>0&&(N=Math.min(t,e)*(1-f),P=t-N,G=e-N);let $=_.clone();$.x-=N;let Y=Math.PI-C.angle(),ie=C.angle(),j=Math.tan(ie/2),H=Math.tan(Y/2),V=j+H,R=f?V:H,D=f?V:j;if(u=Math.min(u,(t-P)/R,C.length()/V),c=Math.min(c,(e-G)/D,C.length()/V),u>0){let z=u/j;y=_.clone().sub(new We.Vector2(z,u)),f&&(A=y.clone(),A.x-=N-V*u),_.sub(C.clone().setLength(z))}if(c>0){let z=c/H;I=T.clone().sub(new We.Vector2(z,-c)),T.add(C.clone().setLength(z)),f&&(O=I.clone(),O.x-=N-V*c,$.sub(C.clone().setLength(z)))}C=_.clone().sub(T);let F=C.length()<.5,B=[];for(let z=0;z<=o;z++){let U=[],W=z/o,re=W*l+s,ae=new We.Vector2(Math.sin(re),Math.cos(re));O&&I?(X(U,W,ae,Y,c,O,-1,!0),X(U,W,ae,ie,c,I,-1,!1)):I?(K(U,ae,I.x,0,-1),X(U,W,ae,ie,c,I,-1,!1)):a||K(U,ae,e,G,-1);let fe=cm(C).normalize();if(Rn(fe,ae,w),!F)for(let oe=0;oe<=i;oe++){let ne=oe/i,ee=C.clone().multiplyScalar(ne).add(T);Rn(ee,ae,b),m.push(b.x,b.y,b.z),g.push(w.x,w.y,w.z),v.push(W,.5+b.y/n),U.push(x++)}if(A&&y?(X(U,W,ae,Y,u,y,1,!1),X(U,W,ae,ie,u,A,1,!0)):y?(X(U,W,ae,Y,u,y,1,!1),K(U,ae,y.x,0,1)):a||K(U,ae,t,P,1),f&&!F){let oe=cm(C).multiplyScalar(-1).normalize();Rn(oe,ae,w);for(let ne=0;ne<=i;ne++){let ee=ne/i,Q=C.clone().multiplyScalar(-ee).add($);Rn(Q,ae,b),m.push(b.x,b.y,b.z),g.push(w.x,w.y,w.z),v.push(W,.5+b.y/n),U.push(x++)}}f&&!a&&U.push(U[0]),B.push(U)}for(let z=0;z<B.length-1;z++)for(let U=0;U<B[0].length-1;U++){if(a&&f&&U==i)continue;let W=B[z][U],re=B[z+1][U],ae=B[z+1][U+1],fe=B[z][U+1],oe=m[ae*3+0],ne=m[ae*3+2];h.push(W,re,fe),(oe!=0||ne!=0)&&h.push(re,ae,fe)}l<Math.PI*2&&(q(-1,B[0],s),q(1,B[B.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new We.Float32BufferAttribute(m,3)),this.setAttribute("normal",new We.Float32BufferAttribute(g,3)),this.setAttribute("uv",new We.Float32BufferAttribute(v,2));function X(z,U,W,re,ae,fe,oe,ne){for(let ee=0;ee<p+1;ee++){let Q=ee/p,Se=oe<0?Q:1-Q;ne&&(Se-=1),Se*=re;let ye=new We.Vector2(Math.sin(Se),Math.cos(Se)*oe),Ce=ye.clone().multiplyScalar(ae).add(fe);Rn(Ce,W,b),m.push(b.x,b.y,b.z),Rn(ye,W,w),g.push(w.x,w.y,w.z),v.push(U,.5+b.y/n),z.push(x++)}}function K(z,U,W,re,ae){let fe=new We.Vector3,oe=new We.Vector2,ne=[W,re];ae<0&&ne.reverse();for(let ee of ne)oe.set(ee,S*ae),Rn(oe,U,fe),m.push(fe.x,fe.y,fe.z),g.push(0,ae,0),v.push(.5,.5),z.push(x++)}function q(z,U,W){let re=new We.Vector2(Math.sin(W),Math.cos(W)),ae=new We.Vector2(-Math.cos(W),Math.sin(W)),fe=new We.Vector3,oe=z<0?(Q,Se,ye)=>h.push(Q,Se,ye):(Q,Se,ye)=>h.push(Q,ye,Se),ne=new We.Vector2((t+e+P+G)/4,0);Rn(ne,re,fe),m.push(fe.x,fe.y,fe.z),g.push(ae.x,0,ae.y),v.push(.5,.5);let ee=x++;for(let Q of U){let Se=m.slice(Q*3,Q*3+3);m.push(...Se),g.push(ae.x,0,ae.y);let ye=v.slice(Q*2,Q*2+2);v.push(...ye),x++}for(let Q=ee+1;Q<x-1;Q++)oe(ee,Q,Q+1);oe(ee,x-1,ee+1)}}};var fm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},r.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(r){let{width:t,depth:e,height:n,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:u,cornerRadiusBottom:c,cornerSegments:p}=r.parameters,f;return u>0||c>0||l<360?f=new pa(0,t/2,n,o,i,a,s,l*Math.PI/180,u,c,p,0,!0):f=new pm.ConeBufferGeometry(t/2,n,o,i,a),f.scale(1,1,e/t),Object.assign(f,{userData:{...r,type:"ConeGeometry"}})}};var zt=require("three"),dm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},r.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(r){let{width:t,height:e,depth:n,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=r.parameters,u;return s==0?u=new zt.BoxBufferGeometry(t,e,n,o,i,a):u=new au(t,e,n,o,i,a,s,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},iu=Math.PI/2,au=class extends zt.BufferGeometry{constructor(t=1,e=1,n=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxBufferGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,n/2);let c=[],p=[],f=[],d=[],h=0,m=0;g("z","y","x",-1,-1,n,e,t,a,i,0),g("z","y","x",1,-1,n,e,-t,a,i,1),g("x","z","y",1,1,t,n,e,o,a,2),g("x","z","y",1,-1,t,n,-e,o,a,3),g("x","y","z",1,-1,t,e,n,o,i,4),g("x","y","z",-1,-1,t,e,-n,o,i,5),s>0&&(v("z","y","x",-1,-1,1,n,e,t,a,0),v("z","y","x",1,-1,-1,n,e,t,a,1),v("z","y","x",-1,1,-1,n,e,t,a,1),v("z","y","x",1,1,1,n,e,t,a,0),v("x","y","z",-1,-1,-1,t,e,n,o,0),v("x","y","z",1,-1,1,t,e,n,o,1),v("x","y","z",-1,1,1,t,e,n,o,0),v("x","y","z",1,1,-1,t,e,n,o,1),v("y","x","z",-1,-1,1,e,t,n,i,0),v("y","x","z",1,-1,-1,e,t,n,i,1),v("y","x","z",1,1,1,e,t,n,i,1),v("y","x","z",-1,1,-1,e,t,n,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(c),this.setAttribute("position",new zt.Float32BufferAttribute(p,3)),this.setAttribute("normal",new zt.Float32BufferAttribute(f,3)),this.setAttribute("uv",new zt.Float32BufferAttribute(d,2));function g(S,w,b,_,T,y,I,A,O,C,N){let P=(y-2*s)/O,G=(I-2*s)/C,$=y/2-s,Y=I/2-s,ie=A/2,j=O+1,H=C+1,V=0,R=0,D=new zt.Vector3;for(let F=0;F<H;F++){let B=F*G-Y;for(let X=0;X<j;X++){let K=X*P-$;D[S]=K*_,D[w]=B*T,D[b]=ie,p.push(D.x,D.y,D.z),D[S]=0,D[w]=0,D[b]=A>0?1:-1,f.push(D.x,D.y,D.z),d.push(X/O),d.push(1-F/C),V+=1}}for(let F=0;F<C;F++)for(let B=0;B<O;B++){let X=h+B+j*F,K=h+B+j*(F+1),q=h+(B+1)+j*(F+1),z=h+(B+1)+j*F;c.push(X,K,z),c.push(K,q,z),R+=6}u.addGroup(m,R,N),m+=R,h+=V}function v(S,w,b,_,T,y,I,A,O,C,N){let P=(I-2*s)/C,G=I/2-s,$=A/2-s,Y=O/2,ie=C+1,j=0,H=0,V=new zt.Vector3,R=new zt.Vector3;for(let D=0;D<l+1;D++){let F=D/l*iu,B=Math.sin(F)*s,X=(1-Math.cos(F))*s,K=Math.sin(F),q=Math.cos(F);V[w]=($+B)*T,V[b]=(Y-X)*y,R[S]=0,R[w]=K*Math.sign(V[w]),R[b]=q*Math.sign(V[b]);for(let z=0;z<ie;z++){let U=z*P-G;V[S]=U*_,p.push(V.x,V.y,V.z),f.push(R.x,R.y,R.z),d.push(z/C),d.push(0),j+=1}}for(let D=0;D<l;D++)for(let F=0;F<C;F++){let B=h+F+ie*D,X=h+F+ie*(D+1),K=h+(F+1)+ie*(D+1),q=h+(F+1)+ie*D;c.push(B,X,q),c.push(X,K,q),H+=6}u.addGroup(m,H,N),m+=H,h+=j}function x(S,w,b){let _=new zt.Vector3,T=new zt.Vector3(t/2,e/2,n/2);T.subScalar(s);let y=[],I=S*w*b>0?(O,C,N)=>c.push(O,C,N):(O,C,N)=>c.push(O,N,C);for(let O=0;O<=l;O++){let C=[],N=iu*(1-O/l),P=Math.cos(N),G=Math.sin(N),$=0;for(let Y=0;Y<=O;Y++){let ie=Math.cos($),j=Math.sin($);_.x=P*ie,_.y=G,_.z=P*j;let H=T.clone().addScaledVector(_,s);p.push(S*H.x,w*H.y,b*H.z),f.push(S*_.x,w*_.y,b*_.z),d.push(0,0),C.push(h++),$+=iu/O}y.push(C)}let A=y.length-1;for(let O=0;O<A;O++){let C=y[O],N=y[O+1],P=C.length-1;I(C[0],N[1],N[0]);for(let G=1;G<=P;G++)I(C[G-1],C[G],N[G]),I(C[G],N[G+1],N[G])}}}};var Ke=require("three"),kn=class extends Ke.BufferGeometry{constructor(t=[],e=[],n="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),p(),this.setAttribute("position",new Ke.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Ke.Float32BufferAttribute(u,3)),this.setAttribute("uv",new Ke.Float32BufferAttribute(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[n],h=new Ke.Vector3,m=h.clone(),g=new Ke.Triangle,v=i*o,x=o-v,S=a+1,w=new Ke.Vector3,b=(j,H)=>w.subVectors(j,H).normalize(),_=(j,H)=>Array(j).fill(void 0).map(H),T=_(t.length/3,(j,H)=>new Ke.Vector3().fromArray(t,H*3).setLength(o)),y=[],I=1e6;for(let j=0;j<T.length;j++){let H=T[j],V=[],R,D,F,B=1e10,X=-1;for(;(X=e.indexOf(j,X+1))!=-1;){let U=X-X%3;R=e[U+(X+1)%3],D=e[U+(X+2)%3],F=H.distanceToSquared(T[R]),B=Math.min(B,F),V.push([R,D,F])}B+=1e-6;let K=[],q=0,z=V.length;for(let U=0;U<z;U++){[R,D,F]=V[q];let W=y[R]?.includes(j)==!0;F<=B&&K.push(R+ +W*I),q=V.findIndex(re=>re[0]==D)}y.push(K)}let A=[];{let j=0,H=0,V,R,D=d==3;for(let F=0;F<=a;F++){V=F*(F+1)/2,R=(F+1)*(F+2)/2;for(let B=0;B<a-F;B++)[j,H]=[V+B+F+2,R+B+F+3],A.push(V,R,...D?[H,V]:[j,R],H,j),[V,R]=[j,H];A.push(V,R,V+a+2)}}let O=h.clone(),C=h.clone(),N=h.clone(),P=h.clone(),G=h.clone(),$=[],Y=_(T.length,()=>_(d,()=>h.clone()));for(let j=0;j<T.length;j++){h.copy(T[j]).normalize(),O.copy(h).multiplyScalar(x);let H=y[j];for(let K=0;K<H.length;K++){let q=H[K],z=H[(K+1)%d];g.setFromPointsAndIndices(T,j,q%I,z%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(O,Y[j][K])}let V=[],R=[],D=[],F=new Ke.Vector3;a==0&&[...Y[j]].reduce((K,q)=>K.add(q),F).multiplyScalar(1/d);for(let K=0;K<d;K++){let q=[],z=(K-1+d)%d,U=Y[j][z],W=Y[j][K];h.copy(U).sub(O),m.copy(W).sub(O);let re=O.angleTo(h),ae=h.angleTo(m),fe=Math.cos(re)*v;a==0?C.copy(F):C.copy(O).setLength(x+fe),R.push(fe);let oe=[C,U,W];for(let ne=0;ne<2;ne++){let ee=oe[ne],Q=oe[ne+1];P.subVectors(ee,O),G.subVectors(Q,O),N.crossVectors(P,G).normalize();for(let Se=0;Se<S;Se++){let ye=[re,ae][ne]*Se/S;h.copy(P).applyAxisAngle(N,ye).add(O),V.push(h.clone()),ne&&(b(h,O),q.push([Se==0?ee:h.clone(),w.clone()]))}ne&&(b(Q,O),q.push([Q,w.clone()]))}D.push(q)}$.push(D);let B=2*S,X=2;for(let K=0;K<d;K++){let q=B*K,z=B*((K+1)%d),U=[V[q]];for(let re=1;re<S;re++){P=V[q+re],G=V[z+re],U.push(P);for(let ae=1,fe=re-X+1;ae<=fe;ae++)h.lerpVectors(P,G,ae/(fe+1)),h.sub(O).setLength(R[K]).add(O),U.push(h.clone());U.push(G)}for(let re=0;re<S;re++)U.push(V[re+S+q]);U.push(V[z+S]);let W=A.map(re=>U[re]);s.push(...W.map(re=>[re.x,re.y,re.z]).flat()),u.push(...W.map(re=>(b(re,O),[w.x,w.y,w.z])).flat())}}let ie=[];for(let j=0;j<y.length;j++)for(let H=0;H<d;H++){let V=y[j][H];if(V<I){let R=y[V].findIndex(B=>B%I==j),D=$[j][H],F=$[V][R];for(let B=0;B<S;B++){let X=D[B],K=F[S-B],q=D[B+1],z=F[S-(B+1)];[X,K,q,q,K,z].forEach(U=>{s.push(U[0].x,U[0].y,U[0].z),u.push(U[1].x,U[1].y,U[1].z)})}ie.push(D[0][0],F[S][0],D[S][0],F[0][0])}}for(;ie.length;){let j,H,V,R;[j,H]=ie.splice(0,2);let D=[j];for(;j!=H;)D.push(H),V=ie.indexOf(H),R=V%2,H=ie.splice(V-R,2)[1-R];w.subVectors(D[0],D[1]).cross(h.subVectors(D[0],D[2])).normalize();let F=w.dot(D[0])<0;F&&w.negate();for(let B=1;B<=D.length-2;B++)[D[B+ +F],D[B+1-+F],D[0]].forEach(X=>{s.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function p(){let f=new Ke.Vector3;for(let T=0;T<s.length;T+=3){f.x=s[T+0],f.y=s[T+1],f.z=s[T+2];let y=b(f)/2/Math.PI+.5,I=_(f)/Math.PI+.5;l.push(y,1-I)}let d=new Ke.Vector3,h=new Ke.Vector3,m=new Ke.Vector3,g=new Ke.Vector3,v=new Ke.Vector2,x=new Ke.Vector2,S=new Ke.Vector2,w=(T,y,I,A)=>{A<0&&T.x===1&&(l[y]=T.x-1),I.x===0&&I.z===0&&(l[y]=A/2/Math.PI+.5)};for(let T=0,y=0;T<s.length;T+=9,y+=6){d.set(s[T+0],s[T+1],s[T+2]),h.set(s[T+3],s[T+4],s[T+5]),m.set(s[T+6],s[T+7],s[T+8]),v.set(l[y+0],l[y+1]),x.set(l[y+2],l[y+3]),S.set(l[y+4],l[y+5]),g.copy(d).add(h).add(m).divideScalar(3);let I=b(g);w(v,y+0,d,I),w(x,y+2,h,I),w(S,y+4,m,I)}for(let T=0;T<l.length;T+=6){let y=l[T+0],I=l[T+2],A=l[T+4],O=Math.max(y,I,A),C=Math.min(y,I,A);O>.9&&C<.1&&(y<.2&&(l[T+0]+=1),I<.2&&(l[T+2]+=1),A<.2&&(l[T+4]+=1))}function b(T){return Math.atan2(T.z,-T.x)}function _(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new kn(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var hm=require("three"),mm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.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(r){let{width:t,height:e,depth:n,detail:o,corner:i,cornerSides:a}=r.parameters,s=o===0&&i!==0?new fa(t*.5,i,a):new hm.DodecahedronBufferGeometry(t*.5,o);return s.scale(1,e/t,n/t),Object.assign(s,{userData:{...r,type:"DodecahedronGeometry"}})}},fa=class extends kn{constructor(t=1,e=.2,n=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,t,e,n),this.type=l}static fromJSON(t){return new fa(t.radius,t.corner,t.cornerSides)}};var lu=Math.PI*2;function su({x:r,y:t},e,n,o,i){return{x:r*e+o,y:t*n+i}}function XT(r,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),n=Math.cos(r),o=Math.sin(r),i=Math.cos(r+t),a=Math.sin(r+t);return[{x:n-o*e,y:o+n*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function gm(r,t,e,n){let o=r*n-t*e<0?-1:1,i=Math.min(1,Math.max(-1,r*e+t*n));return o*Math.acos(i)}function YT(r,t,e,n,o,i,a,s,l,u){let c=Math.pow(o,2),p=Math.pow(i,2),f=Math.pow(a,2),d=Math.pow(s,2),h=c*p-c*d-p*f;h<0&&(h=0),h/=c*d+p*f,h=Math.sqrt(h)*(l===u?-1:1);let m=h*o/i*s,g=h*-i/o*a,v=m+(r+e)/2,x=g+(t+n)/2,S=(a-m)/o,w=(s-g)/i,b=(-a-m)/o,_=(-s-g)/i,T=gm(1,0,S,w),y=gm(S,w,b,_);return!u&&y>0&&(y-=lu),u&&y<0&&(y+=lu),{centerx:v,centery:x,ang1:T,ang2:y}}function ym({px:r,py:t,cx:e,cy:n,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let u=(r-e)/2,c=(t-n)/2;if(u===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(u,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let f=YT(r,t,e,n,o,i,u,c,a,s),{ang1:d,ang2:h}=f,{centerx:m,centery:g}=f,v=Math.abs(h)/(lu/4);Math.abs(1-v)<1e-7&&(v=1);let x=Math.max(Math.ceil(v),1);h/=x;for(let S=0;S<x;S++)l.push(XT(d,h)),d+=h;return l.map(S=>{let{x:w,y:b}=su(S[0],o,i,m,g),{x:_,y:T}=su(S[1],o,i,m,g),{x:y,y:I}=su(S[2],o,i,m,g);return{x1:w,y1:b,x2:_,y2:T,x:y,y:I}})}var di=require("three"),xm=Math.PI*2,bm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t,height:e,spikes:n,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=r.parameters,u=r.shape,c=t*.5,p=e*.5,f=$T(u,c,p,o*Math.PI/180,n,i);u.isClosed=!0,u.update();let d=Ct.create({shape:u,parameters:{subdivisions:f,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...r,type:"EllipseGeometry"}})}};function $T(r,t,e,n,o,i){if(n>=xm)return o>30||o%4===0?(ZT(r,t,e,i),Math.round(o/4)):vm(r,n,o,t,e,i);let a={x:0,y:e},s=n+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},u=ym({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:n>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?KT(r,a.x,a.y,u,o,t,e,i):vm(r,n,o,t,e,i)}function KT(r,t,e,n,o,i,a,s){let l=Math.round(o/n.length);r.addPoint(fi(t,e));for(let u=0,c=n.length;u<c;u++){let p=n[u],f=r.points[u],d=fi(p.x,p.y);f.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),r.addPoint(d)}return s>0?Sm(r,i,a,s):r.addPoint(fi(0,0)),l}function vm(r,t,e,n,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,u=Math.sin(l)*n,c=Math.cos(l)*o;r.addPoint(fi(u,c))}return t<xm?i>0?Sm(r,n,o,i):r.addPoint(fi(0,0)):(r.removePoint(r.points[r.points.length-1]),i>0&&wm(r,n,o,i)),1}function ZT(r,t,e,n=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;r.addPoint(wl(o-t,i,o-t,i-l,o-t,i+l)),r.addPoint(wl(o,i+e,o-s,i+e,o+s,i+e)),r.addPoint(wl(o+t,i,o+t,i+l,o+t,i-l)),r.addPoint(wl(o,i-e,o+s,i-e,o-s,i-e)),n>0&&wm(r,t,e,n)}function fi(r,t){return new gr(di.MathUtils.generateUUID(),new di.Vector2(r,t))}function wl(r,t,e,n,o,i){let a=fi(r,t);return a.controls[0].position.set(e,n),a.controls[1].position.set(o,i),a}function Sm(r,t,e,n){Tm(r,t,e,n).forEach(i=>r.addPoint(i))}function wm(r,t,e,n){let o=Tm(r,t,e,n),i=new Le;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,r.shapeHoles.push(i)}function Tm(r,t,e,n){let o=n*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new di.Vector2(o/t,i/e),s=r.points.map(l=>{let u=l.clone();return u.uuid=di.MathUtils.generateUUID(),u}).reverse();return s.forEach(l=>{l.position.multiply(a);let u=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(u)}),s}var hn=require("three"),Cm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},r.parameters),n=Math.abs(e.width),o=Math.abs(e.height??n),i=Math.abs(e.depth??n),a=Math.abs(Math.min(n,i))/2;return{parameters:Object.assign(e,{width:n,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(r){let{width:t,height:e,depth:n,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:u,cornerRadius:c,cornerSegments:p}=r.parameters,f=new da(!1,t,e,n,o,i,a,s,l,u,c,p);return Object.assign(f,{userData:{...r,type:"HelixGeometry"}})}},da=class extends hn.BufferGeometry{constructor(t=!0,e=1,n=1,o=1,i=1,a=1,s=1,l=1,u=1,c=1,p=1,f=1){super();let d=t&&a===1;d&&(f=0),p>100&&(p=100);let h=()=>new hn.Vector3,m=new hn.Vector3,g=h(),v=h(),x=h(),S,w,b,_,T,y,I,A,O=h(),C=h(),N=h(),P=h(),G=h(),$=h(),Y=h(),ie=h(),j=n-2*l+.001,H=j/a,V=Math.ceil(s*a),R=V+1,D=j/V,F=-j/2,B=c+1,X=2*Math.PI/c,K=Math.PI/2/f,q=.01,z=Math.min((1-p/100)*l,l-q),U=l-z,W=0,re=2,ae=f*re+re,fe=B*ae/re,oe=fe+B*R,ne=B*(R+ae),[ee,Q,Se]=[3,3,2].map(et=>Array(ne*et).fill(0)),ye=[],Ce=i-l;function mt(et,Yt){let Pr=Math.PI/2;y=Yt*D,A=2*Math.PI*(y%H)/H+Pr,y+=F,I=Math.sin(A)*Ce,T=Math.cos(A)*Ce,t?et.set(T,I,y):et.set(T,y,I)}mt(m,-1e-10),mt(g,0),O.copy(m),mt(m,1);let Me=m.distanceTo(g),De=U+z,Re=Me*V+2*De,nr=z,Sn=Re-De;for(let et=0;et<=V;et++){mt(v,et),ie.subVectors(v,O).normalize(),O.copy(v),$.copy(v).setComponent(+t+1,0).normalize(),Y.crossVectors(ie,$).normalize();let Yt=et===0,Pr=et===V,ov=Yt?3*Math.PI/2:K,iv=Yt?nr:Sn,av=Yt?B:oe,sv=Yt?0:ne-B,lv=ie.clone().multiplyScalar(Yt?-U:U).add(v),cv=ie.clone().multiplyScalar(Yt?-1:1).normalize();for(let sn=0;sn<B;sn++){let Ep=sn*X;if(C.addVectors(m.copy($).multiplyScalar(l*Math.cos(Ep)),g.copy(Y).multiplyScalar(l*Math.sin(Ep))),N.copy(C).normalize(),Yt||Pr){d||(W=sv+sn,[0,1,2].forEach(Ft=>{ee[W*3+Ft]=lv.getComponent(Ft),Q[W*3+Ft]=cv.getComponent(Ft)}),Se[W*2]=+Pr,Se[W*2+1]=sn/c),g.copy(N).multiplyScalar(z),x.addVectors(v,g);for(let Ft=0;Ft<f;Ft++){let gc=Ft*K+ov;P.addVectors(m.copy(ie).multiplyScalar(U*Math.sin(gc)),g.copy(N).multiplyScalar(U*Math.cos(gc))),G.copy(P).normalize(),g.addVectors(x,P),P.normalize(),W=av+Ft*B+sn,[0,1,2].forEach(ds=>{ee[W*3+ds]=g.getComponent(ds),Q[W*3+ds]=G.getComponent(ds)});let uv=+Yt+Math.sin(gc);Se[W*2]=(iv+U*uv)/Re,Se[W*2+1]=sn/c}}g.addVectors(v,C),W=fe+et*B+sn,[0,1,2].forEach(Ft=>{ee[W*3+Ft]=g.getComponent(Ft),Q[W*3+Ft]=N.getComponent(Ft)}),Se[W*2]=(De+et*Me)/Re,Se[W*2+1]=sn/c}}let Xt=R+2*f+re,Lo=1,[ps,fs]=d?[Lo,Lo+R-1]:[0,Xt-1];for(let et=ps;et<=fs-1;et++){let Yt=d&&et===fs-1;for(let Pr=0;Pr<B-1;Pr++)S=et*B+Pr,w=S+1,b=(Yt?Pr:S)+B,_=(Yt?Pr+1:w)+B,et===0?ye.push(w,_,b):et===Xt-2?ye.push(S,w,b):ye.push(S,w,b,w,_,b)}this.setIndex(ye),this.setAttribute("position",new hn.Float32BufferAttribute(ee,3)),this.setAttribute("normal",new hn.Float32BufferAttribute(Q,3)),this.setAttribute("uv",new hn.Float32BufferAttribute(Se,2))}};var Am=require("three");var _m=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},r.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(r){let{width:t,height:e,depth:n,detail:o,corner:i,cornerSides:a}=r.parameters,s=o===0&&i!==0?new ha(t*.5,i,a):new Am.IcosahedronBufferGeometry(t*.5,o);return s.scale(1,e/t,n/t),Object.assign(s,{userData:{...r,type:"IcosahedronGeometry"}})}},ha=class extends kn{constructor(t=1,e=.2,n=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,t,e,n),this.type=s}static fromJSON(t){return new ha(t.radius,t.corner,t.cornerSides)}};var Tl=require("three"),Im=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){(r.parameters?.points??[]).forEach(n=>{Array.isArray(n)&&(n.x=n[0],n.y=n[1])});let e=Object.assign({},t?.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}]},r.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(r){let{points:t,segments:e,verticalSegments:n}=r.parameters,o=new Tl.Shape;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new Tl.LatheBufferGeometry(o.extractPoints(n).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...r,type:"LatheGeometry"}})}};var Vr=require("three");var mn=require("three");var ce=require("three"),Ur=new ce.Matrix4,cu=new ce.Object3D,Cl=new ce.Vector3,Gn=class extends ce.EventDispatcher{constructor(){super(),this.uuid=ce.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(t){let e=new ce.Matrix3().getNormalMatrix(t);for(let n=0,o=this.vertices.length;n<o;n++)this.vertices[n].applyMatrix4(t);for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Ur.makeRotationX(t),this.applyMatrix4(Ur),this}rotateY(t){return Ur.makeRotationY(t),this.applyMatrix4(Ur),this}rotateZ(t){return Ur.makeRotationZ(t),this.applyMatrix4(Ur),this}translate(t,e,n){return Ur.makeTranslation(t,e,n),this.applyMatrix4(Ur),this}scale(t,e,n){return Ur.makeScale(t,e,n),this.applyMatrix4(Ur),this}lookAt(t){return cu.lookAt(t),cu.updateMatrix(),this.applyMatrix4(cu.matrix),this}fromBufferGeometry(t){let e=this,n=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let f=0;f<i.count;f++)e.vertices.push(new ce.Vector3().fromBufferAttribute(i,f)),s!==void 0&&e.colors.push(new ce.Color().fromBufferAttribute(s,f));function c(f,d,h,m){let g=s===void 0?[]:[e.colors[f].clone(),e.colors[d].clone(),e.colors[h].clone()],v=a===void 0?[]:[new ce.Vector3().fromBufferAttribute(a,f),new ce.Vector3().fromBufferAttribute(a,d),new ce.Vector3().fromBufferAttribute(a,h)],x=new hi(f,d,h,v,g,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new ce.Vector2().fromBufferAttribute(l,f),new ce.Vector2().fromBufferAttribute(l,d),new ce.Vector2().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new ce.Vector2().fromBufferAttribute(u,f),new ce.Vector2().fromBufferAttribute(u,d),new ce.Vector2().fromBufferAttribute(u,h)])}let p=t.groups;if(p.length>0)for(let f=0;f<p.length;f++){let d=p[f],h=d.start,m=d.count;for(let g=h,v=h+m;g<v;g+=3)n!==void 0?c(n.getX(g),n.getX(g+1),n.getX(g+2),d.materialIndex):c(g,g+1,g+2,d.materialIndex)}else if(n!==void 0)for(let f=0;f<n.count;f+=3)c(n.getX(f),n.getX(f+1),n.getX(f+2));else for(let f=0;f<i.count;f+=3)c(f,f+1,f+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Cl).negate(),this.translate(Cl.x,Cl.y,Cl.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,n=e===0?1:1/e,o=new ce.Matrix4;return o.set(n,0,0,-n*t.x,0,n,0,-n*t.y,0,0,n,-n*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new ce.Vector3,e=new ce.Vector3;for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let n=0,o=this.vertices.length;n<o;n++)e[n]=new ce.Vector3;if(t){let n=new ce.Vector3,o=new ce.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],u=this.vertices[s.b],c=this.vertices[s.c];n.subVectors(c,u),o.subVectors(l,u),n.cross(o),e[s.a].add(n),e[s.b].add(n),e[s.c].add(n)}}else{this.computeFaceNormals();for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let n=0,o=this.vertices.length;n<o;n++)e[n].normalize();for(let n=0,o=this.faces.length;n<o;n++){let i=this.faces[n],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let n=this.faces[t],o=n.vertexNormals;o.length===3?(o[0].copy(n.normal),o[1].copy(n.normal),o[2].copy(n.normal)):(o[0]=n.normal.clone(),o[1]=n.normal.clone(),o[2]=n.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,n=this.faces.length;e<n;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new Gn;t.faces=this.faces;for(let e=0,n=this.morphTargets.length;e<n;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let u=new ce.Vector3,c={a:new ce.Vector3,b:new ce.Vector3,c:new ce.Vector3};i.push(u),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],u=o.vertexNormals[i];l.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,n=this.faces.length;e<n;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ce.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ce.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,n=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,u=t.faces,c=this.colors,p=t.colors;e!==void 0&&(o=new ce.Matrix3().getNormalMatrix(e));for(let f=0,d=s.length;f<d;f++){let m=s[f].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let f=0,d=p.length;f<d;f++)c.push(p[f].clone());for(let f=0,d=u.length;f<d;f++){let h=u[f],m,g,v=h.vertexNormals,x=h.vertexColors,S=new hi(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=v.length;w<b;w++)m=v[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,b=x.length;w<b;w++)g=x[w],S.vertexColors.push(g.clone());S.materialIndex=h.materialIndex+n,l.push(S)}for(let f=0,d=t.faceVertexUvs.length;f<d;f++){let h=t.faceVertexUvs[f];this.faceVertexUvs[f]===void 0&&(this.faceVertexUvs[f]=[]);for(let m=0,g=h.length;m<g;m++){let v=h[m],x=[];for(let S=0,w=v.length;S<w;S++)x.push(v[S].clone());this.faceVertexUvs[f].push(x)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},n=[],o=[],i=Math.pow(10,t);for(let l=0,u=this.vertices.length;l<u;l++){let c=this.vertices[l],p=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[p]===void 0?(e[p]=l,n.push(this.vertices[l]),o[l]=n.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,u=this.faces.length;l<u;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let p=[c.a,c.b,c.c];for(let f=0;f<3;f++)if(p[f]===p[(f+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let u=a[l];this.faces.splice(u,1);for(let c=0,p=this.faceVertexUvs.length;c<p;c++)this.faceVertexUvs[c].splice(u,1)}let s=this.vertices.length-n.length;return this.vertices=n,s}setFromPoints(t){this.vertices=[];for(let e=0,n=t.length;e<n;e++){let o=t[e];this.vertices.push(new ce.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function n(l,u){return l.materialIndex-u.materialIndex}t.sort(n);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let u=t[l]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let n=[],o=[],i={},a=[],s={},l=[],u={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],g=!0,v=!1,x=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,b=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,T=0;if(T=c(T,0,0),T=c(T,1,g),T=c(T,2,v),T=c(T,3,x),T=c(T,4,S),T=c(T,5,w),T=c(T,6,b),T=c(T,7,_),n.push(T),n.push(m.a,m.b,m.c),n.push(m.materialIndex),x){let y=this.faceVertexUvs[0][h];n.push(d(y[0]),d(y[1]),d(y[2]))}if(S&&n.push(p(m.normal)),w){let y=m.vertexNormals;n.push(p(y[0]),p(y[1]),p(y[2]))}if(b&&n.push(f(m.color)),_){let y=m.vertexColors;n.push(f(y[0]),f(y[1]),f(y[2]))}}function c(h,m,g){return g?h|1<<m:h&~(1<<m)}function p(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function f(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function d(h){let m=h.x.toString()+h.y.toString();return u[m]!==void 0||(u[m]=l.length/2,l.push(h.x,h.y)),u[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=n,t}clone(){return new Gn().copy(this)}copy(t){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=t.name;let e=t.vertices;for(let f=0,d=e.length;f<d;f++)this.vertices.push(e[f].clone());let n=t.colors;for(let f=0,d=n.length;f<d;f++)this.colors.push(n[f].clone());let o=t.faces;for(let f=0,d=o.length;f<d;f++)this.faces.push(o[f].clone());for(let f=0,d=t.faceVertexUvs.length;f<d;f++){let h=t.faceVertexUvs[f];this.faceVertexUvs[f]===void 0&&(this.faceVertexUvs[f]=[]);for(let m=0,g=h.length;m<g;m++){let v=h[m],x=[];for(let S=0,w=v.length;S<w;S++){let b=v[S];x.push(b.clone())}this.faceVertexUvs[f].push(x)}}let i=t.morphTargets;for(let f=0,d=i.length;f<d;f++){let h={};if(h.name=i[f].name,i[f].vertices!==void 0){h.vertices=[];for(let m=0,g=i[f].vertices.length;m<g;m++)h.vertices.push(i[f].vertices[m].clone())}if(i[f].normals!==void 0){h.normals=[];for(let m=0,g=i[f].normals.length;m<g;m++)h.normals.push(i[f].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let f=0,d=a.length;f<d;f++){let h={};if(a[f].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,g=a[f].vertexNormals.length;m<g;m++){let v=a[f].vertexNormals[m],x={};x.a=v.a.clone(),x.b=v.b.clone(),x.c=v.c.clone(),h.vertexNormals.push(x)}}if(a[f].faceNormals!==void 0){h.faceNormals=[];for(let m=0,g=a[f].faceNormals.length;m<g;m++)h.faceNormals.push(a[f].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let f=0,d=s.length;f<d;f++)this.skinWeights.push(s[f].clone());let l=t.skinIndices;for(let f=0,d=l.length;f<d;f++)this.skinIndices.push(l[f].clone());let u=t.lineDistances;for(let f=0,d=u.length;f<d;f++)this.lineDistances.push(u[f]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new uu().fromGeometry(this),e=new ce.BufferGeometry,n=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new ce.BufferAttribute(n,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new ce.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new ce.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new ce.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new ce.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let u=a[s],c=new ce.Float32BufferAttribute(u.data.length*3,3);c.name=u.name,i.push(c.copyVector3sArray(u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new ce.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new ce.Float32BufferAttribute(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.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(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new ce.BufferGeometry,n=t.geometry;if(t.isPoints||t.isLine){let o=new ce.Float32BufferAttribute(n.vertices.length*3,3),i=new ce.Float32BufferAttribute(n.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(n.vertices)),e.setAttribute("color",i.copyColorsArray(n.colors)),n.lineDistances&&n.lineDistances.length===n.vertices.length){let a=new ce.Float32BufferAttribute(n.lineDistances.length,1);e.setAttribute("lineDistance",a.copyArray(n.lineDistances))}n.boundingSphere!==null&&(e.boundingSphere=n.boundingSphere.clone()),n.boundingBox!==null&&(e.boundingBox=n.boundingBox.clone())}else t.isMesh&&(e=n.toBufferGeometry());return e}};Gn.prototype.isGeometry=!0;var uu=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(t){let e=[],n,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,n!==void 0&&(n.count=o*3-n.start,e.push(n)),n={start:o*3,materialIndex:i})}n!==void 0&&(n.count=o*3-n.start,e.push(n)),this.groups=e}fromGeometry(t){let e=t.faces,n=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,u;if(l>0){u=[];for(let v=0;v<l;v++)u[v]={name:s[v].name,data:[]};this.morphTargets.position=u}let c=t.morphNormals,p=c.length,f;if(p>0){f=[];for(let v=0;v<p;v++)f[v]={name:c[v].name,data:[]};this.morphTargets.normal=f}let d=t.skinIndices,h=t.skinWeights,m=d.length===n.length,g=h.length===n.length;n.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let v=0;v<e.length;v++){let x=e[v];this.vertices.push(n[x.a],n[x.b],n[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][v];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",v),this.uvs.push(new ce.Vector2,new ce.Vector2,new ce.Vector2))}if(a===!0){let b=o[1][v];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",v),this.uvs2.push(new ce.Vector2,new ce.Vector2,new ce.Vector2))}for(let b=0;b<l;b++){let _=s[b].vertices;u[b].data.push(_[x.a],_[x.b],_[x.c])}for(let b=0;b<p;b++){let _=c[b].vertexNormals[v];f[b].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(d[x.a],d[x.b],d[x.c]),g&&this.skinWeights.push(h[x.a],h[x.b],h[x.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},hi=class{constructor(t,e,n,o,i,a=0){this.a=t,this.b=e,this.c=n,this.normal=o&&o.isVector3?o:new ce.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ce.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,n=t.vertexNormals.length;e<n;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,n=t.vertexColors.length;e<n;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var QT=["a","b","c"];function JT(r,t){switch(t){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function pu(r,t,e){let n=Math.min(r,t),o=Math.max(r,t),i=n+"_"+o;return e.get(i)}function fu(r,t,e,n,o,i){let a=Math.min(r,t),s=Math.max(r,t),l=a+"_"+s,u;if(n.has(l))u=n.get(l);else{let c=e[a],p=e[s];u={a:c,b:p,newEdge:null,faces:[]},n.set(l,u)}u.faces.push(o),i[r].edges.push(u),i[t].edges.push(u)}function eC(r,t,e,n){let o,i,a;for(o=0,i=r.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],fu(a.a,a.b,r,n,a,e),fu(a.b,a.c,r,n,a,e),fu(a.c,a.a,r,n,a,e)}function Al(r,t,e,n,o){r.push(new hi(t,e,n,void 0,void 0,o))}function mi(r,t){return Math.abs(t-r)/2+Math.min(r,t)}function _l(r,t,e,n){r.push([t.clone(),e.clone(),n.clone()])}var Il=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof mn.BufferGeometry?t=new Gn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new mn.Vector3,n,o,i,a,s,l=t.vertices,u=t.faces,c=t.faceVertexUvs[0],p=c!==void 0&&c.length>0,f=[],d=new Map;eC(l,u,f,d);let h=[],m,g,v,x,S,w,b;for(let q of Array.from(d.keys())){for(g=d.get(q),v=new mn.Vector3,S=3/8,w=1/8,b=g.faces.length,b!=2&&(S=.5,w=0,b!=1),v.addVectors(g.a,g.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=g.faces[a],s=0;s<3&&(m=l[JT(x,QT[s])],!(m!==g.a&&m!==g.b));s++);m&&e.add(m)}e.multiplyScalar(w),v.add(e),g.newEdge=h.length,h.push(v)}let _,T,y,I,A,O,C,N=[];for(o=0,i=l.length;o<i;o++){for(O=l[o],A=f[o].edges,n=A.length,n==3?_=3/16:n>3&&(_=3/(8*n)),T=1-n*Number(_),y=_,n<=2&&(n==2?(T=3/4,y=1/8):n==1||n==0),C=O.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<n;a++)I=A[a],m=I.a!==O?I.a:I.b,e.add(m);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let P=N.concat(h),G=N.length,$,Y,ie,j=[],H=[],V,R,D,F,B=new mn.Vector2,X=new mn.Vector2,K=new mn.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(pu(x.a,x.b,d).newEdge)+G,Y=Number(pu(x.b,x.c,d).newEdge)+G,ie=Number(pu(x.c,x.a,d).newEdge)+G,Al(j,$,Y,ie,x.materialIndex),Al(j,x.a,$,ie,x.materialIndex),Al(j,x.b,Y,$,x.materialIndex),Al(j,x.c,ie,Y,x.materialIndex),p&&(V=c[o],R=V[0],D=V[1],F=V[2],B.set(mi(R.x,D.x),mi(R.y,D.y)),X.set(mi(D.x,F.x),mi(D.y,F.y)),K.set(mi(R.x,F.x),mi(R.y,F.y)),_l(H,B,X,K),_l(H,R,B,K),_l(H,D,X,B),_l(H,F,K,X));t.vertices=P,t.faces=j,p&&(t.faceVertexUvs[0]=H)}};var ct=new Vr.Vector3,Om=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=r.geometry??t?.geometry??new Vr.BufferGeometry().copy(new Vr.BoxBufferGeometry(100,100,100)),n;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ct),n={width:ct.x,height:ct.y,depth:ct.z,subdivisions:0}):n=t.parameters;let o={...n,...r.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(r){let{width:t,height:e,depth:n,subdivisions:o}=r.parameters,i=r.geometry??new Vr.BufferGeometry().copy(new Vr.BoxBufferGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ct)):ct.set(a.width,a.height,a.depth),(t!==ct.x||e!==ct.y||n!==ct.z)&&i.scale(ct.x===0?1:t/ct.x,ct.y===0?1:e/ct.y,ct.z===0?1:n/ct.z);let s=i.originalGeometry;return o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new Il(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),s!==void 0&&Object.assign(i,{originalGeometry:s}),delete r.geometry,Object.assign(i,{userData:{...r,type:"NonParametricGeometry"}})}static loadFromUrl(r,t,e){new Vr.BufferGeometryLoader(e).load(r,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ct);let a=100/ct.x;Object.assign(i.parameters,{width:100,height:ct.y*a,depth:ct.z*a}),t(this.build(i))})}};var Lm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t,height:e,spikes:n,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=r.parameters,l=r.shape,u=t*.5,c=e*.5,p=0,f=0,d=2*Math.PI/n;for(let m=0;m<n;m++){let g=d*m,v=p+Math.sin(g)*u,x=f+Math.cos(g)*c;l.addPoint(l.createPoint(v,x))}l.isClosed=!0;for(let m=0,g=l.points.length;m<g;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=Ct.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...r,type:"PolygonGeometry"}})}};var _e=require("three"),Nm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},r.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(r){let{width:t,height:e,depth:n,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=r.parameters,u=new hu(t*.5,e,o,i,a,s,l);return u.scale(1,1,n/t),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function ma(r,t,e){e.x=r.x*t.x,e.y=r.y,e.z=r.x*t.y}function du(r,t,e,n,o,i){let a=t.clone().sub(r),s=e.clone().sub(r),l=a.angleTo(s);if(a.normalize(),s.normalize(),n===o){let u=a.add(s).normalize();i.copy(r).addScaledVector(u,n/Math.sin(l/2))}else{let u=a.angleTo(s);i.copy(r),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,n/Math.sin(u))}}function tC(r,t,e){let n=r.clone().sub(t),o=e.clone().sub(t);return n.projectOnVector(o),n.add(t)}var hu=class extends _e.BufferGeometry{constructor(t=.5,e=1,n=4,o=1,i=!1,a=0,s=4){super(),n=Math.floor(Math.max(3,n)),o=Math.floor(o),s=Math.floor(s);let l=[],u=[],c=[],p=[],f=0,d=e/2,h=Math.PI/n,m=t*Math.cos(Math.PI/n),g=2*Math.PI/n,v=(n-2)*Math.PI/n,x=Math.PI-v,S=new _e.Vector3(0,-d,0),w=new _e.Vector3(0,d,0),b=new _e.Vector2(t,-d),_=new _e.Vector2(m,-d),T=new _e.Vector2(0,w.y).sub(_),y=new _e.Vector2(0,w.y).sub(b),I=new _e.Vector2(T.y,-T.x).normalize(),A=new _e.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/n)*Math.tan((Math.PI-T.angle())/2)-1e-8;a=Math.min(a,C);let N;{let H=new _e.Vector3(I.x,I.y,0),V=new _e.Vector3(Math.cos(g)*H.x,H.y,Math.sin(g)*H.x);N=H.angleTo(V)}let P=a/Math.tan((Math.PI-T.angle())/2),G=a/Math.tan((Math.PI-N)/2),$=new _e.Vector3;if(!i){u.push(S.x,S.y,S.z),c.push(0,-1,0),p.push(0,0);let H=f++,V=[],R=b.clone(),D=P/Math.cos(Math.PI/n);R.x-=D;for(let F=0;F<n;F++){let B=F/n*Math.PI*2+h,X=new _e.Vector2(Math.sin(B),Math.cos(B));ma(R,X,$),u.push($.x,$.y,$.z),c.push(0,-1,0),p.push(0,0),V.push(f++)}for(let F=0;F<V.length;F++)l.push(V[F],H,V[(F+1)%V.length])}let Y=[];{let H=new _e.Vector3,V=new _e.Vector3,R=new _e.Vector3,D=new _e.Vector3,F=new _e.Vector3,B=new _e.Vector3;for(let X=0;X<n;X++){let K=X/n*Math.PI*2+h,q=(X+.5)/n*Math.PI*2+h,z=(X+1)/n*Math.PI*2+h,U=new _e.Vector2(Math.sin(K),Math.cos(K)),W=new _e.Vector2(Math.sin(q),Math.cos(q)),re=new _e.Vector2(Math.sin(z),Math.cos(z));ma(b,U,V),ma(b,re,R),ma(I,W,H),du(w,V,R,G,G,D),u.push(D.x,D.y,D.z),du(V,w,R,G,P,F),u.push(F.x,F.y,F.z),du(R,V,w,P,G,B),u.push(B.x,B.y,B.z),c.push(H.x,H.y,H.z),c.push(H.x,H.y,H.z),c.push(H.x,H.y,H.z),p.push(0,0),p.push(0,0),p.push(0,0);let ae=f++,fe=f++,oe=f++;if(l.push(ae,fe,oe),a>0){{let Q=V.clone().add(R).multiplyScalar(.5),Se=w.clone().sub(Q).normalize(),Ce=S.clone().sub(Q).normalize().add(Se).normalize().multiplyScalar(-1),mt=B.clone().sub(F);ie(Q,mt,Ce,T.angle())}let ne,ee;{let Q=new _e.Vector3;ma(A,re,Q);let Se=B.clone().add(D).multiplyScalar(.5);Se=tC(Se,R,w);let ye=B.clone().sub(D);[ne,ee]=ie(Se,ye,Q,N,D.y)}{let Q=ne,Se=Q.clone().setY(0).normalize(),ye=new _e.Vector3(0,-1,0),Ce=Se.clone().cross(ye);j(Q,Se,ye,Ce)}Y.concat(ee);{let Q=T.angle(),Se=Math.PI-Q,ye=w.clone();ye.y-=a/Math.sin(Q-Math.PI/2);let Ce=new _e.Vector3,mt=[];for(let De=0;De<s;De++){let Re=[],nr=Math.PI/2-Se*De/s,Sn=Math.cos(nr),Xt=Math.sin(nr),Lo=q;for(let ps=0;ps<=De;ps++){let fs=Math.cos(Lo),et=Math.sin(Lo);H.x=Sn*et,H.y=Xt,H.z=Sn*fs,Ce.copy(ye).addScaledVector(H,a),u.push(Ce.x,Ce.y,Ce.z),c.push(H.x,H.y,H.z),p.push(0,0),Re.push(f++),Lo+=Math.PI*2/De/n}mt.push(Re)}ee.reverse(),mt.push(ee);let Me=mt.length-1;for(let De=0;De<Me;De++){let Re=mt[De],nr=mt[De+1],Sn=Re.length-1;l.push(nr[1],Re[0],nr[0]);for(let Xt=1;Xt<=Sn;Xt++)l.push(Re[Xt],Re[Xt-1],nr[Xt]),l.push(nr[Xt+1],Re[Xt],nr[Xt])}}}}}this.setIndex(l),this.setAttribute("position",new _e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new _e.Float32BufferAttribute(c,3)),this.setAttribute("uv",new _e.Float32BufferAttribute(p,2));function ie(H,V,R,D,F){let B=-D/2,X=(Math.PI-D)/2,K=V.clone().normalize().cross(R);H.addScaledVector(R,-a/Math.sin(X));let q=new _e.Vector3,z=new _e.Vector3,U=1,W=f,re=[];for(let ae=0;ae<=s;ae++){let fe=B+ae/s*D;z.set(0,0,0),z.addScaledVector(K,Math.sin(fe)),z.addScaledVector(R,Math.cos(fe));for(let oe=0;oe<=U;oe++){let ne=oe/U-.5;if(q.copy(H),q.addScaledVector(V,ne),q.addScaledVector(z,a),F!=null){let ee=Math.max(0,q.y-F);q.addScaledVector(V,-ee/V.y)}u.push(q.x,q.y,q.z),c.push(z.x,z.y,z.z),p.push(0,0),oe===0&&re.push(f),f++}}for(let ae=0;ae<s;ae++)for(let fe=0;fe<U;fe++){let oe=W+fe+(U+1)*ae,ne=oe+(U+1),ee=ne+1,Q=oe+1;l.push(oe,ne,Q),l.push(ne,ee,Q)}return[H.clone().addScaledVector(V,.5),re]}function j(H,V,R,D){let F=Math.PI/2,B=y.angle()-F,X=[],K=new _e.Vector3,q=new _e.Vector3;for(let U=0;U<=s;U++){let W=[],re=U/s;for(let ae=0;ae<=U;ae++){let oe=((U?ae/U:0)-.5)*x,ne=Math.cos(oe),ee=Math.sin(oe),Q=Math.atan(Math.tan(B)*ne),Se=(F+Q)*re,ye=Math.cos(Se),Ce=Math.sin(Se);K.set(0,0,0),K.addScaledVector(V,Ce*ne),K.addScaledVector(R,ye),K.addScaledVector(D,Ce*ee),q.copy(H).addScaledVector(K,a),u.push(q.x,q.y,q.z),c.push(K.x,K.y,K.z),p.push(0,0),W.push(f++)}X.push(W)}let z=X.length-1;for(let U=0;U<z;U++){let W=X[U],re=X[U+1],ae=W.length-1;l.push(W[0],re[1],re[0]);for(let fe=1;fe<=ae;fe++)l.push(W[fe-1],W[fe],re[fe]),l.push(W[fe],re[fe+1],re[fe])}}}};var Pm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters),n=Object.assign(t?.ui??{enabledIndieCorners:!1},r.ui);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:n}}static build(r){let t=r.shape,{width:e,height:n,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=r.parameters,u={x:e*.5,y:n*.5},c={x:-u.x,y:-u.y},p={x:u.x,y:u.y};function f(w,b,_){return b>e&&_>n?Math.min(w*e/b,w*n/_):b>e?w*e/b:_>n?w*n/_:w}let d=[];d[0]=o[0]===0?0:f(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:f(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:f(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:f(o[3],o[3]+o[0],o[3]+o[2]);let h=c.x,m=p.x,g=p.y,v=c.y;t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(m,v)),t.addPoint(t.createPoint(h,v)),t.isClosed=!0;let x=!0;for(let w=0,b=t.points.length;w<b;w++)t.points[w].roundness=d[w],w>0&&d[w]!==d[w-1]&&(x=!1);x&&(t.roundness=d[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Ct.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...r,type:"RectangleGeometry"}})}};var Mm=require("three"),Em=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},r.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(r){let{width:t=100,height:e=t,depth:n=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:u}=r.parameters,c=new Mm.SphereBufferGeometry(.5*t,o,i,a,s,l,u);return c.scale(1,e/t,n/t),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};var Dm=require("three"),Bm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},r.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(r){let{width:t=100,height:e=t,widthSegments:n=8,heightSegments:o=8}=r.parameters,i=new Dm.PlaneBufferGeometry(t,e,n,o);return i.scale(1,1,1),Object.assign(i,{userData:{...r,type:"PlaneGeometry"}})}};var Un=require("three"),Fm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},r.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(r){let{width:t,height:e,depth:n,angle:o,cornerRadius:i,cornerSegments:a}=r.parameters,s=new mu(t,e,n,o,i,a);return Object.assign(s,{userData:{...r,type:"BackdropGeometry"}})}},mu=class extends Un.BufferGeometry{constructor(t=1,e=1,n=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],u=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let p=[],f=Math.PI/2,d=(q=0,z=0,U=0)=>new Un.Vector3(q,z,U),h=d(),m=d(),[g,v,x]=[e/2,t/2,n/2],S=-v,w=+v,[b,_,T]=[d(S,-g,+x),d(S,-g,-x),d(S,+g,-x)],y=(q,z=!1)=>Math.sin(q-Math.PI/(1+ +z)),I=(q,z=!1)=>Math.cos(q-Math.PI/(1+ +z));T.y=Math.sin(o)*e-g;let A=Math.cos(o)*e-x,O=b.z-c;o<=f?(T.z=Math.min(A,O),T.z==O&&(T.y-=(A-O)/Math.tan(f-o))):_.z=Math.min(_.z-A-x,b.z-c),h.subVectors(b,_),m.subVectors(T,_);let C=Math.min(h.length(),m.length())*i/100,N=C*Math.tan(o/2),P=C/Math.cos(o/2),G=h.clone().normalize().add(m.normalize()).setLength(P).add(_);h.set(0,y(o,!0),I(o,!0)),p.push([T,h.clone()]);let $=(Math.PI-o)/a;for(let q=0;q<=a;q++){let z=f+o+q*$;h.set(0,Math.sin(z)*N,Math.cos(z)*N),h.add(G),m.set(0,y(z),I(z)),p.push([h.clone(),m.clone()])}p.push([b,d(0,1,0)]);let Y=Math.sin($/2)*N*2,ie=p.length-1,j=p[0][0].distanceTo(p[1][0]),H=p[ie-1][0].distanceTo(p[ie][0]),V=j+Y*a+H;p[0].push(1);for(let q=0;q<=a;q++)p[q+1].push(1-(j+q*Y)/V);p[ie].push(0);let[R,D,F]=p[0],B,X,K;for(let q=1;q<p.length;q++)[B,X,K]=p[q],s.push(S,R.y,R.z,S,B.y,B.z,w,R.y,R.z,w,R.y,R.z,S,B.y,B.z,w,B.y,B.z),l.push(0,D.y,D.z,0,X.y,X.z,0,D.y,D.z,0,D.y,D.z,0,X.y,X.z,0,X.y,X.z),u.push(0,F,0,K,1,F,1,F,0,K,1,K),[R,D,F]=[B,X,K];this.setAttribute("position",new Un.Float32BufferAttribute(s,3)),this.setAttribute("normal",new Un.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Un.Float32BufferAttribute(u,2))}};var Rm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(r){let{width:t,height:e,innerRadiusPercent:n,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}=r.parameters,c=r.shape,p=t*.5,f=e*.5,d=0,h=0,m=a*Math.PI/360/o,g=Math.PI/2*3*-1,v=p*n/100,x=f*n/100;if(o===3&&n===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let b=m*w,_=d+Math.sin(b)*p,T=h+Math.cos(b)*f;c.addPoint(c.createPoint(_,T))}}else for(let w=0;w<o;w++){let b=d+Math.cos(g)*p,_=h+Math.sin(g)*f;c.addPoint(c.createPoint(b,_)),g+=m,b=d+Math.cos(g)*v,_=h+Math.sin(g)*x,w<=o,c.addPoint(c.createPoint(b,_)),g+=m}c.isClosed=!0;for(let w=0,b=c.points.length;w<b;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Ct.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...r,type:"StarGeometry"}})}};var km=require("three"),Gm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},r.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(r){let{width:t,height:e}=r.parameters,n=new km.PlaneBufferGeometry(t,e);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var Um=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},r.parameters),n=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:n,height:o,depth:i})}}static build(r){let{width:t,height:e,depth:n,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=r.parameters,u=rC(t,e,n,t*.5,a,i,0,0,o,s,l);return u.scale(1,e/t,1),Object.assign(u,{userData:{...r,type:"TorusGeometry"}})}};function rC(r,t,e,n,o,i,a,s,l,u,c){return[t,e]=[e,t],a=t/2,o/=2*Math.PI,o==1&&(u=0),new da(!0,r,t,e,n,o,i,a,s,l,u,c)}var Vm=require("three"),zm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},r.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(r){let{width:t,tube:e,tubularSegments:n,radialSegments:o,p:i,q:a}=r.parameters,s=t*.5;s!==e&&(s-=e);let l=new Vm.TorusKnotBufferGeometry(s,e,n,o,i,a);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var jm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},r.parameters);return{shape:r.shape&&r.shape instanceof Le?r.shape:new Le,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(r){let{width:t=100,height:e,cornerRadius:n,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=r.parameters,l=r.shape,u=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-u,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(u,-c)),l.addPoint(l.createPoint(-u,-c))),l.isClosed=!0;for(let f=0,d=l.points.length;f<d;f++)l.points[f].roundness=n;l.roundness=n,l.update();let p=Ct.create({shape:l,parameters:{roundness:n,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...r,type:"TriangleGeometry"}})}};var rt=require("three");var nC,Ol=new Promise(r=>{nC=r});var Hm=require("three");function Ll(r,t){return oC(r)}function oC(r){let t={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=Le.createFromState(r.shape,r.width,r.height);t.shape=n}else r.type==="NonParametricGeometry"&&(r.data.groups&&r.data.groups.forEach(n=>n.materialIndex=Math.max(n.materialIndex??0,0)),t.geometry=new Hm.BufferGeometryLoader().parse(r));let e;try{e=ga(t)}catch(n){console.error(n)}if(!e){let n=Le.createFromState(ti.defaultData(),100,100);t.shape=n,e=ga(t)}return e}var ge;Ol.then(r=>{ge=r});var Wm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),qm=new Uint32Array([0,1,2,3]),Xm=new Uint8Array([4]),lr=class{static build(r,t,e,n,o){let i,a,s,l=r?.phongAngle??t?.phongAngle??35;if(n===!1&&(l=-1),r.positionWASM!==void 0){e&&e!==0&&(ge.free_bvh(e),ge.free_subdivision_surface(e));try{i=lr.allocate(r,o)}catch(u){console.error(u,r),i=lr.allocate({positionWASM:Wm,indexWASM:qm,verticesPerFaceWASM:Xm},o)}ge.set_destination_refinement_level(i,0),a=lr.buildLevel(i,!0,l)}else i=e,r.phongAngle!==void 0&&(a=lr.buildLevel(i,!0,l));return r.subdivisions!==void 0&&(ge.set_destination_refinement_level(i,r.subdivisions),r.subdivisions>0?s=lr.buildLevel(i,!1,l):s=null),{subdivPointer:i,originalGeometry:a,subdividedGeometry:s}}static primitiveToQuads(r,t){r.widthSegments>16&&(r.widthSegments=16),r.heightSegments>16&&(r.heightSegments=16),r.depthSegments>16&&(r.depthSegments=16),r.radialSegments>16&&(r.radialSegments=16),r.type==="DodecahedronGeometry"&&(r.detail=0);let e=r.shape!==void 0?t.geometry:Ll(r),n,o,i,a;({positions:n,triIndices:a}=xu(e.getAttribute("position"),e.getIndex()));let s;if(r.type==="CylinderGeometry"&&r.cornerRadius===0&&r.hollow===0&&r.openEnded===!1){let l=r.radialSegments*r.heightSegments*3*2,u=l+r.radialSegments*3;s=[l,u]}return{indices:o,verticesPerFace:i}=bu(n,a,e,s),{positions:n,indices:o,verticesPerFace:i}}static allocate(r,t){let e,n,o,i=[],a=[];r.positionWASM&&r.positionWASM.length>0?(e=r.positionWASM,n=r.indexWASM,o=r.verticesPerFaceWASM):(e=Wm,n=qm,o=Xm);let s=e.length,l=n.length,u=o.length,c=e.length+i.length+a.length,p=n.length+o.length,f=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,h=p*Uint32Array.BYTES_PER_ELEMENT,m=ge._malloc(f),g=new Float32Array(ge.HEAPF32.buffer,m,c),v=new Uint32Array(ge.HEAPU32.buffer,m+d,p);g.set(e,0),g.set(i,e.length),g.set(a,e.length+i.length),v.set(n,0),v.set(o,n.length);let x;r?.scaleBaked?.some(w=>w!==1)&&(x=new rt.Matrix4().makeScale(...r.scaleBaked)),t&&(x?x.premultiply(t):x=t);let S=x?ge.alloc_subdivision_surface2(m,s,m+d,l,m+d+n.length*Uint32Array.BYTES_PER_ELEMENT,u,x.elements):ge.alloc_subdivision_surface(m,s,m+d,l,m+d+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return ge._free(m),S}static buildLevel(r,t,e,n,o){let i=o?ge.get_mesh_data2(r,t?ge.Level.CONTROL:ge.Level.REFINED,e,o.elements):ge.get_mesh_data(r,t?ge.Level.CONTROL:ge.Level.REFINED,e),a=8,s=ge.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(4,4+4),u=0,c=ge.HEAPU32[s[u]>>2],p=ge.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let f=ge.HEAPU32[s[u]>>2],d=ge.HEAPF32.subarray(f>>2,(f>>2)+l[u]);u++;let h=ge.HEAPU32[s[u]>>2],m=ge.HEAPU32.subarray(h>>2,(h>>2)+l[u]);u++;let g=ge.HEAPU32[s[u]>>2],v=ge.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let x=new rt.BufferGeometry;if(x.setIndex(new rt.Uint32BufferAttribute(v,1)),x.setAttribute("position",new rt.Float32BufferAttribute(p,3)),x.setAttribute("normal",new rt.Float32BufferAttribute(d,3)),t){x.setAttribute("faceMap",new rt.Uint32BufferAttribute(m,1));let S=new Float32Array(d.length/3*4).fill(0);x.setAttribute("color",new rt.BufferAttribute(S,4))}return ge.free_mesh_data(i),x.userData.type="SubdivGeometry",x}n.getAttribute("position").copyArray(p),n.getAttribute("normal").copyArray(d),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,ge.free_mesh_data(i)}static buildControlCageWireframe(r,t,e){let n=ge.get_wireframe_data_for_base_level(r),o=4,i=ge.HEAPU32.subarray(n>>2,(n>>2)+o),a=i.subarray(2,2+2),s=0,l=ge.HEAPU32[i[s]>>2],u=ge.HEAPF32.subarray(l>>2,(l>>2)+a[s]);s++;let c=ge.HEAPU32[i[s]>>2],p=ge.HEAPU32.subarray(c>>2,(c>>2)+a[s]);if(t===void 0){let f=new rt.BufferGeometry;f.setAttribute("position",new rt.Float32BufferAttribute(u,3));let d=new Float32Array(u.length);for(let h=0,m=u.length;h<m;)d[h++]=e.r,d[h++]=e.g,d[h++]=e.b;return f.setAttribute("color",new rt.BufferAttribute(d,3)),f.setIndex(new rt.Uint32BufferAttribute(p,1)),ge.free_wireframe_data_for_base_level(n),f}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,ge.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,t,e){let n=t===0;n||ge.set_destination_refinement_level(r,t);let o=e?ge.get_topological_data2(r,n?ge.Level.CONTROL:ge.Level.REFINED,e.elements):ge.get_topological_data(r,n?ge.Level.CONTROL:ge.Level.REFINED),i=6,a=ge.HEAPU32.subarray(o>>2,(o>>2)+i),s=a.subarray(3,3+3),l=0,u=ge.HEAPU32[a[l]>>2],c=new Float32Array(ge.HEAPF32.subarray(u>>2,(u>>2)+s[l]));l++;let p=ge.HEAPU32[a[l]>>2],f=new Uint32Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));l++;let d=ge.HEAPU32[a[l]>>2],h=new Uint8Array(ge.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return ge.free_topological_data(o),{positions:c,indices:f,verticesPerFace:h}}};var Ym=["getX","getY","getZ"];function xu(r,t){let e={},n=t?t.count:r.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<n;u++){let c=t?t.getX(u):u,p="";for(let f=0;f<3;f++)p+=`${~~(r[Ym[f]](c)*s)},`;if(p in e)i.push(e[p]);else{for(let f=0;f<3;f++)a.push(r[Ym[f]](c));e[p]=o,i.push(o),o++}}let l=[];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]||l.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:l}}var Nl=new rt.Vector3,gu=new rt.Vector3,yu=new rt.Vector3,vu=new rt.Vector3;function bu(r,t,e,n){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let a=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let u=0;u<a.length;u+=2)s+=(a[u]-a[(u===0?a.length:u)-2])*(a[u+1]+a[(u===0?a.length:u)-1]);r.length=0;let l=0;if(s<0)for(let u=0;u<a.length;u+=2)r.push(a[u],a[u+1],0),o.push(l++);else for(let u=a.length-2;u>=0;u-=2)r.push(a[u],a[u+1],0),o.push(l++);return i.push(l),{indices:o,verticesPerFace:i}}for(let a=0,s=e.capStartIndex??t.length;a<s;)if(t[a+1]===t[a+3]&&t[a+2]===t[a+5]||t[a+0]===t[a+3]&&t[a+2]===t[a+4]){Nl.set(r[t[a]*3],r[t[a]*3+1],r[t[a]*3+2]),gu.set(r[t[a+1]*3],r[t[a+1]*3+1],r[t[a+1]*3+2]),yu.set(r[t[a+4]*3],r[t[a+4]*3+1],r[t[a+4]*3+2]),vu.set(r[t[a+5]*3],r[t[a+5]*3+1],r[t[a+5]*3+2]),gu.sub(Nl).normalize(),yu.sub(Nl).normalize(),vu.sub(Nl).normalize();let l=gu.cross(yu).dot(vu);Math.abs(l)>.005||n&&n.some((u,c)=>c%2===1?!1:a>=n[c]&&a<n[c+1])?(o.push(t[a],t[a+1],t[a+2]),i.push(3),a+=3):(o.push(t[a],t[a+1],t[a+4],t[a+5]),i.push(4),a+=6)}else o.push(t[a],t[a+1],t[a+2]),i.push(3),a+=3;if(e.capStartIndex!==void 0){let a=[],s=[],l=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let c=0,p=0;c<r.length;c+=3,p++)r[c+2]===0&&(a.push(p),l++),r[c+2]===u&&s.push(p);if(e.userData.parameters.extrudeBevelSize===0){let c=s[0];s[0]=s[1],s[1]=c}a.reverse(),o.push(...a,...s),i.push(l,l)}return{indices:o,verticesPerFace:i}}var yr={};Dp(yr,{calcBoolean:()=>lC,calcBooleanTopological:()=>sC,freeMeshSet:()=>pC,getMeshSet:()=>cC,transformMeshSet:()=>uC});var iC,$m=new Promise(r=>{iC=r});var ya=require("three");var Te,gi;$m.then(r=>Te=r);function aC(r,t,e){let n,{positions:o,triIndices:i}=xu(r.getAttribute("position"),r.getIndex()),a;if(t&&e){let{indices:s,verticesPerFace:l}=bu(o,i,r);a=l.length,n=[];for(let u=0,c=0;u<a;u++){n.push(l[u]);for(let p=0;p<l[u];p++)n.push(s[c++])}}else{let s=i.length;n=Array(s+s/3),a=0;for(let l=0,u=0;u<n.length;)n[u++]=3,a++,n[u++]=i[l++],n[u++]=i[l++],n[u++]=i[l++]}return{positions:o,faceIndices:n,nFaces:a}}function Km(r){let t=r.length,e=t*Uint32Array.BYTES_PER_ELEMENT,n=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(r[0])?e:n,i=Te._malloc(o);return(Number.isInteger(r[0])?new Uint32Array(Te.HEAPU32.buffer,i,t):new Float32Array(Te.HEAPF32.buffer,i,t)).set(r,0),i}function Zm(r){switch(r){case 0:return Te.OP.UNION;case 1:return Te.OP.INTERSECTION;case 2:return Te.OP.A_MINUS_B;case 3:return Te.OP.B_MINUS_A;case 4:return Te.OP.SYMMETRIC_DIFFERENCE;case 5:return Te.OP.ALL;default:throw new Error("Unknown boolean operation "+r)}}function sC(r,t){gi===void 0&&(gi=Te.init_csg());let e=Km(r),n=Te.csg_calc_topological(gi,e,r.length,Zm(t));Te._free(e);let o=6,i=Te.HEAPU32.subarray(n>>2,(n>>2)+o),a=i.subarray(3,3+3),s=0,l=Te.HEAPU32[i[s]>>2],u=new Float32Array(Te.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Te.HEAPU32[i[s]>>2],p=new Uint32Array(Te.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let f=Te.HEAPU32[i[s]>>2],d=new Uint8Array(Te.HEAPU32.subarray(f>>2,(f>>2)+a[s]));return Te.free_mesh_data(n),{positions:u,indices:p,verticesPerFace:d}}function lC(r,t,e,n){gi===void 0&&(gi=Te.init_csg());let o=Km(r),i=Te.csg_calc(gi,o,r.length,n,Zm(t));Te._free(o);let a=5,s=Te.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=Te.HEAPU32[s[u]>>2],p=Te.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let f=Te.HEAPU32[s[u]>>2],d=Te.HEAPF32.subarray(f>>2,(f>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new ya.Float32BufferAttribute(p,3)),e.setAttribute("normal",new ya.Float32BufferAttribute(d,3));let m=Te.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ya.Sphere),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Te.free_mesh_data(i),h}function cC(r,t,e){if(Te===void 0)return-1;let n,o,i;if(t&&r.userData.positions!==void 0){let g=r.userData;i=g.verticesPerFace.length,n=g.positions,o=Array(g.verticesPerFace.reduce((v,x)=>v+x,0)+i);for(let v=0,x=0,S=0;v<g.verticesPerFace.length;v++){o[S++]=g.verticesPerFace[v];for(let w=0;w<g.verticesPerFace[v];w++)o[S++]=g.indices[x++]}}else({positions:n,faceIndices:o,nFaces:i}=aC(r,t,e));let a=n.length,s=o.length,l=n.length,u=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,d=Te._malloc(c),h=new Float32Array(Te.HEAPF32.buffer,d,l),m=new Uint32Array(Te.HEAPU32.buffer,d+p,u);return h.set(n,0),m.set(o,0),Te.get_csg_mesh(d,a,d+p,s,i)}function uC(r,t){Te.transform_csg_mesh(r,t.elements)}function pC(r){Te.free_csg_mesh(r)}var Su={ConeGeometry:fm,CubeGeometry:dm,CylinderGeometry:um,DodecahedronGeometry:mm,EllipseGeometry:bm,HelixGeometry:Cm,IcosahedronGeometry:_m,LatheGeometry:Im,NonParametricGeometry:Om,PolygonGeometry:Lm,PyramidGeometry:Nm,RectangleGeometry:Pm,SphereGeometry:Em,PlaneGeometry:Bm,BackdropGeometry:Fm,StarGeometry:Rm,TextFrameGeometry:Gm,TorusGeometry:Um,TorusKnotGeometry:zm,TriangleGeometry:jm,VectorGeometry:Ct},ga=r=>Su[r.type].create(r);var Cu=require("three");var Ml=require("three");var wu=require("three");function yt(r,t){return t.color(r)}var Tu=r=>"isEntity"in r,zr=r=>"isAbstractMesh"in r,jr=r=>r!==null&&r.objectType==="BooleanObject",Qm=r=>r.objectType==="CombinedCamera";var Pl=r=>"objectHelper"in r;function fC(r,t){let e=!1;t.position&&(r.position.fromArray(t.position),e=!0),t.rotation&&(r.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,r.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in r&&(e=!0,r.hiddenMatrix.fromArray(t.hiddenMatrix??Nn.identity)),e&&(r.updateMatrix(),jr(r.parent)&&zr(r)&&r.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&r.updateWorldMatrix(!1,!0),r.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(r.isUpVectorFlipped=t.isUpVectorFlipped),r.updateUp())}function dC(r,t){fC(r,t),t.name!==void 0&&(r.name=t.name),t.visible!==void 0&&(r.visible=t.visible)}function Jm(r,t,e){dC(r,t),t.color!==void 0&&(r.color=yt(t.color,e)),t.intensity!==void 0&&(r.intensity=t.intensity),t.shadows!==void 0&&!(r instanceof wu.HemisphereLight)&&(r.castShadow=t.shadows),r.shadow&&!(r instanceof wu.HemisphereLight)&&t.depth!==void 0&&(r.shadow.camera.far=t.depth,r.shadow.needsUpdate=!0)}function eg(r,t){r.shadow.camera.right=t/2,r.shadow.camera.left=-t/2,r.shadow.camera.top=t/2,r.shadow.camera.bottom=-t/2,r.shadow.needsUpdate=!0}var El=r=>class extends r{hasEntityChild(){return this.children.some(e=>Tu(e))}isDescendantOf(e){e instanceof Ml.Object3D&&(e=e.uuid);let n=this;for(;n.parent;){if(n.parent.uuid===e)return!0;n=n.parent}return!1}attach(e,n){this.updateWorldMatrix(!0,!1);let o=new Ml.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Tu(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),n!==void 0&&(this.children.pop(),this.children.splice(n,0,e)),this}copy(e,n=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),n===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};var Ze=require("three");var go=new Ze.Box3,vr=new Ze.Vector3,cr=new Ze.Vector3,yi=new Ze.Matrix4,rg=[new Ze.Vector3(-1,1,1),new Ze.Vector3(-1,-1,1),new Ze.Vector3(1,-1,1),new Ze.Vector3(1,1,1),new Ze.Vector3(-1,1,-1),new Ze.Vector3(-1,-1,-1),new Ze.Vector3(1,-1,-1),new Ze.Vector3(1,1,-1)],hC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],mC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function gC(r,t,e=0,n=t.count){let o=1/0,i=1/0,a=1/0,s=-1/0,l=-1/0,u=-1/0;for(let c=e;c<n;c++){let p=t.getX(c),f=t.getY(c),d=t.getZ(c);p<o&&(o=p),f<i&&(i=f),d<a&&(a=d),p>s&&(s=p),f>l&&(l=f),d>u&&(u=d)}return r.min.set(o,i,a),r.max.set(s,l,u),r}var tg=(r,t,e)=>{if(r.objectType==="TextFrame"){let o=r.data.geometry;vr.set(0,0,o.depth*.5),r.forceComputeSize?go.getSize(cr).multiplyScalar(.5):cr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(zr(r)){let n=r.geometry.userData.parameters,o=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?vr.copy(r.originalGeometry.boundingSphere.center):o!==void 0&&(gC(go,o,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:o.count),go.getCenter(vr)),r.forceComputeSize?go.getSize(cr).multiplyScalar(.5):cr.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(Pl(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");go.setFromArray(n.array),go.getCenter(vr),go.getSize(cr).multiplyScalar(.5)}else vr.setScalar(0),cr.setScalar(0);yi.copy(t).multiply(r.matrixWorld),cr.x===0&&cr.y===0&&cr.z===0?e.push(new Ze.Vector3(vr.x,vr.y,vr.z).applyMatrix4(yi)):rg.forEach(n=>{e.push(n.clone().multiply(cr).add(vr).applyMatrix4(yi))})},va=class extends Ze.Box3{constructor(){super(...arguments);this.matrix=new Ze.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(n=>n.clone()),this.faces=e.faces.map(n=>n.clone()),this.edges=e.edges.map(n=>n.clone()),this.centerEdges=e.centerEdges.map(n=>n.clone()),this}setFromObjectSize(e,n=!1){e.updateWorldMatrix(!1,n),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ze.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,n)}expandByObjectSize(e,n,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{a.visible&&tg(a,n,i)}):tg(e,n,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(yi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(cr).multiplyScalar(.5),this.getCenter(vr),yi.copy(this.matrix).setPosition(vr),this.vertices=rg.map(e=>e.clone().multiply(cr).applyMatrix4(yi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hC.map(([e,n])=>new Ze.Line3(this.vertices[e],this.vertices[n])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ze.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=mC.map(([e,n])=>this.vertices[e].clone().add(this.vertices[n]).multiplyScalar(.5))}};var Hr=r=>"isEntity"in r,ng=r=>"isAbstractMesh"in r,ur=r=>class extends El(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Cu.Matrix4;this._singleBBox=new va;this._recursiveBBox=new va;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}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}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(n=>{Hr(n)&&(n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(n=>{n.singleBBoxNeedsUpdate=!0,n.recursiveBBoxNeedsUpdate=!0})}traverseEntity(n){n(this);for(let o of this.children)Hr(o)&&o.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let o of this.children)Hr(o)&&o.visible&&o.traverseVisibleEntity(n)}updateMatrixWorld(n){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||n)&&(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,n=!0);for(let o of this.children)o.updateMatrixWorld(n)}updateWorldMatrix(n,o){let i=this.parent;if(n&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}clone(n){return new this.constructor().copy(this,n)}copy(n,o=!0){if(super.copy(n,!1),this.raycastLock=n.raycastLock,this.scaleLock=n.scaleLock,this.hiddenMatrix.copy(n.hiddenMatrix),o===!0)for(let i of n.children)Hr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let n=new Cu.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(o);for(let i of this.children)Hr(i)&&i.hiddenMatrix.premultiply(n)}toObjectTransformState(n=[]){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 $o(o,n)}fromObjectTransformState(n){return n.position&&this.position.fromArray(n.position),n.rotation&&this.rotation.fromArray(n.rotation),n.scale&&this.scale.fromArray(n.scale),n.hiddenMatrix&&this.hiddenMatrix.fromArray(n.hiddenMatrix),this.updateMatrix(),this}toState(n=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(n)};return $o(o,n)}fromState(n,o){return n.name&&(this.name=n.name),n.raycastLock!==void 0&&(this.raycastLock=n.raycastLock),n.type!=="OrthographicCamera"&&n.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),n.visible!==void 0&&(this.visible=n.visible),this.fromObjectTransformState(n),this}};var zl=require("three");var br=require("three");var xa=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var og=require("three"),vt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=og.MathUtils.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,n){return n=n??{},this.analyze(t,n),this.flow(t,e,n)}flow(t,e,n){n=n??{},t.addFlow(n.slot,n.cache,n.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,n){e=e??this.getType(t,e);let o=t.getNodeData(n??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,n)}updateFrame(t){}generateReadonly(t,e,n,o,i,a){return""}generate(t,e,n,o,i){return""}parse(t,e,n,o){}appendDepsNode(t,e,n){e.deps=(e.deps||0)+1;let o=t.getTypeLength(n);(o>(e.outputMax||0)||this.getType(t,n))&&(e.outputMax=o,e.output=n)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,n;for(e in this)n=this[e],n instanceof vt&&(t+='"'+e+'":'+n.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],n=this[e],t+='"'+e+'":"'+String(n)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Au=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,n){n=n!==void 0?n:!0,this.keywords[t]={callback:e,cache:n}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},ut=new Au;var _u=require("three");var ig=require("three"),he=class extends vt{constructor(e,n){super(e);this.scope="";n=n??{},this.shared=n.shared!==void 0?n.shared:!0,this.unique=n.unique!==void 0?n.unique:!1}build(e,n,o,i){if(n=n??this.getType(e),this.getShared(e,n)){let a=this.getUnique(e,n);a&&this.uuid===void 0&&(this.uuid=ig.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,n),this.generate(e,n,o)):super.build(e,n,o);if(a)return s.name=s.name||super.build(e,n,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,n,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,l,n);{u=super.generate(e,n,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(u+" = "+c+";"),e.format(u,l,n)}}return super.build(e,n,o)}getShared(e,n){return n!=="sampler2D"&&n!=="samplerCube"&&this.shared}getUnique(e,n){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let n=this.uuid;return typeof this.scope=="string"&&(n=this.scope+"-"+n),n}getTemp(e,n){n=n||this.uuid;let o=e.getVars()[n];return o?o.name:void 0}generate(e,n,o,i,a){return this.getShared(e,n)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var Ge=class extends he{constructor(e,n){n=n??{},n.shared=n.shared!==void 0?n.shared:!1;super(e,n);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,n,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,n,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,n)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,n))}};var xt=class extends Ge{constructor(e=0,n){super("v2");this.nodeType="Vector2";this.value=e instanceof _u.Vector2?e:new _u.Vector2(e,n)}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,n,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,n)}};var Iu=require("three");var At=class extends Ge{constructor(e=0,n,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Iu.Vector3?e:new Iu.Vector3(e,n,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,n,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,n)}};var ag=require("three"),pt=class extends ag.Color{constructor(e,n,o,i){super(e,n,o);this.isColorA=!0;this.a=i}setRGBA(e,n,o,i){super.setRGB(e,n,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)}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 pr=class extends Ge{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,n,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,n)}};var yC=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,sg=/[a-z_0-9]+/gi,Z=class extends he{constructor(e,n,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,n,o,i)}getShared(e,n){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===e)return this.inputs[n]}}getIncludeByName(e){if(this.includes){let n=this.includes.length;for(;n--;)if(this.includes[n].name===e)return this.includes[n]}}generate(e,n,o,i,a){let s,l=0,u=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let c=[];for(;s=sg.exec(this.src);)c.push(s);for(let p=0;p<c.length;p++){let f=c[p],d=f[0],h=this.isMethod?!this.getInputByName(d):!0,m=d;if(this.keywords[d]||this.useKeywords&&h&&ut.containsKeyword(d)){let g=this.keywords[d];if(!g){let v=ut.getKeywordData(d);v.cache&&(g=e.keywords[d]),g=g||ut.getKeyword(d,e),v.cache&&(e.keywords[d]=g)}m=g.build(e)}d!==m&&u[f.index+l-1]!=="."&&(u=u.substring(0,f.index+l)+m+u.substring(f.index+d.length+l),l+=m.length-d.length),this.getIncludeByName(m)===void 0&&ut.contains(m)&&e.include(ut.get(m))}return n==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),n)}parse(e,n,o,i){if(this.src=e||"",this.includes=n??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=yC.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(sg);if(s){let l=0;for(;l<s.length;){let u=s[l++],c;u==="in"||u==="out"||u==="inout"?c=s[l++]:(c=u,u="");let p=s[l++];this.inputs.push({name:p,type:c,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var vC=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ou=class extends he{constructor(e="",n){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ou.PI,void 0,void 0,void 0,n)}getType(e){return e.getTypeByFormat(this.type)}parse(e,n,o,i,a){this.src=e||"";let s,l,u="",c=vC.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],u=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=u}build(e,n){if(n==="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),n)}generate(e,n,o,i,a){return e.format(this.name,this.getType(e),n)}},Oe=Ou;Oe.PI="PI",Oe.PI2="PI2",Oe.RECIPROCAL_PI="RECIPROCAL_PI",Oe.RECIPROCAL_PI2="RECIPROCAL_PI2",Oe.LOG2="LOG2",Oe.EPSILON="EPSILON";var xC=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
+ )*?)}`,"gim"),bC=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),vi=class extends he{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let n=this.inputs.length;for(;n--;)if(this.inputs[n].name===e)return this.inputs[n]}generate(e,n,o,i,a){return n==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),n)}parse(e=""){this.src=e,this.inputs=[];let n=xC.exec(e);if(n){let o=n[2],i;for(;i=bC.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=n[1]}else this.name="";this.type=this.name}};var xi=class extends he{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,n){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),n)}};ut.addKeyword("uv",function(){return new xi});ut.addKeyword("uv2",function(){return new xi(1)});var Dl=require("three");var yo=class extends he{constructor(e,n){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=n??yo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Dl.LinearEncoding:return["Linear"];case Dl.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,n){let o=this.input.build(e,"v4"),i=this.getType(e),a=yo.Nodes[this.method],s=e.include(a);if(s===yo.LINEAR_TO_LINEAR)return e.format(o,i,n);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,n)}else return e.format(s+"( "+o+" )",i,n)}fromEncoding(e){let n=yo.getEncodingComponents(e);this.method="LinearTo"+n[0],this.factor=n[1]}fromDecoding(e){let n=yo.getEncodingComponents(e);this.method=n[0]+"ToLinear",this.factor=n[1]}},Et=yo;Et.Nodes={LinearToLinear:new Z(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
+ `)),sRGBToLinear:new Z(["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(`
4
+ `)),LinearTosRGB:new Z(["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(`
5
+ `))},Et.LINEAR_TO_LINEAR="LinearToLinear",Et.SRGB_TO_LINEAR="sRGBToLinear",Et.LINEAR_TO_SRGB="LinearTosRGB";var Pe=class extends Z{constructor(e="",n,o,i,a){super(e,a,i,o,n);this.nodeType="Expression"}};var lg=require("three"),jt=class extends Ge{constructor(e=new lg.Texture,n,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=n??new xi,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,n){return super.generate(e,n,this.value.uuid,"t")}generate(e,n){if(n==="sampler2D")return this.getTexture(e,n);let o=this.getTexture(e,n),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Et(new Pe("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,n)}};var J=class extends Ge{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,n,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,n)}};var ba=class extends he{constructor(e,n){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=n??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,n,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,n)+"( ",u=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let p=s.inputs[c],f=this.inputs[c]||this.inputs[p.name];u.push(f.build(e,e.getTypeByFormat(p.type)))}l+=u.join(", ")+" )"}return e.format(l,i,n)}};var Lu=class extends he{constructor(e,n,o=Lu.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=n,this.op=o}getType(e){let n=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(n)?"v4":e.getTypeLength(o)>e.getTypeLength(n)?o:n}generate(e,n){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,n)}},Ht=Lu;Ht.ADD="+",Ht.SUB="-",Ht.MUL="*",Ht.DIV="/";var Fe=class extends he{constructor(e,n=Fe.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof n!="string"?this.b=n:i=n,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Fe.MIX:case Fe.CLAMP:case Fe.REFRACT:case Fe.SMOOTHSTEP:case Fe.FACEFORWARD:return 3;case Fe.MIN:case Fe.MAX:case Fe.MOD:case Fe.STEP:case Fe.REFLECT:case Fe.DISTANCE:case Fe.DOT:case Fe.CROSS:case Fe.POW:return 2;default:return 1}}getInputType(e){let n=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 n>o&&n>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Fe.LENGTH:case Fe.DISTANCE:case Fe.DOT:return"f";case Fe.CROSS:return"v3"}return this.getInputType(e)}generate(e,n){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Fe.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,n);case Fe.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,n);case Fe.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Fe.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case Fe.MIN:case Fe.MAX:case Fe.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case Fe.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case Fe.MIX:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,u===1?"f":c);break;default:o=this.a.build(e,c),this.b&&(i=this.b.build(e,c)),this.c&&(a=this.c.build(e,c));break}let f=[];f.push(o),i&&f.push(i),a&&f.push(a);let d=this.getNumInputs(e);if(f.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${f.length}.`);return e.format(this.method+"( "+f.join(", ")+" )",p,n)}},ve=Fe;ve.RAD="radians",ve.DEG="degrees",ve.EXP="exp",ve.EXP2="exp2",ve.LOG="log",ve.LOG2="log2",ve.SQRT="sqrt",ve.INV_SQRT="inversesqrt",ve.FLOOR="floor",ve.CEIL="ceil",ve.NORMALIZE="normalize",ve.FRACT="fract",ve.SATURATE="saturate",ve.SIN="sin",ve.COS="cos",ve.TAN="tan",ve.ASIN="asin",ve.ACOS="acos",ve.ARCTAN="atan",ve.ABS="abs",ve.SIGN="sign",ve.LENGTH="length",ve.NEGATE="negate",ve.INVERT="invert",ve.MIN="min",ve.MAX="max",ve.MOD="mod",ve.STEP="step",ve.REFLECT="reflect",ve.DISTANCE="distance",ve.DOT="dot",ve.CROSS="cross",ve.POW="pow",ve.MIX="mix",ve.CLAMP="clamp",ve.REFRACT="refract",ve.SMOOTHSTEP="smoothstep",ve.FACEFORWARD="faceforward";var bi=class extends he{constructor(e,n,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=n,this.bias=o}bilinearCubeUV(e,n,o,i){let a=new ba(bi.Nodes.bilinearCubeUV,[n,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Et(new Pe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Et(new Pe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Et(new Pe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Et(new Pe("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new Pe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Pe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Pe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Pe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Pe("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,n){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new ba(bi.Nodes.roughnessToMip,[i]),s=new ve(a,bi.Nodes.m0,bi.Nodes.cubeUV_maxMipLevel,ve.CLAMP),l=new ve(s,ve.FLOOR),u=new ve(s,ve.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Ht(l,new J(1).setReadonly(!0),Ht.ADD)),f=new ve(c,p,u,ve.MIX);return e.format(f.build(e),"v4",n)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),n)}},Si=bi;Si.Nodes=function(){let e=new vi(`struct TextureCubeUVData {
6
6
  vec4 tl;
7
7
  vec4 tr;
8
8
  vec4 br;
9
9
  vec4 bl;
10
10
  vec2 f;
11
- }`),r=new Se("float cubeUV_maxMipLevel 8.0",!0),o=new Se("float cubeUV_minMipLevel 4.0",!0),i=new Se("float cubeUV_maxTileSize 256.0",!0),s=new Se("float cubeUV_minTileSize 16.0",!0),a=new X(`float getFace(vec3 direction) {
11
+ }`),n=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),a=new Oe("float cubeUV_minTileSize 16.0",!0),s=new Z(`float getFace(vec3 direction) {
12
12
  vec3 absDirection = abs(direction);
13
13
  float face = -1.0;
14
14
  if (absDirection.x > absDirection.z) {
@@ -23,7 +23,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
23
23
  face = direction.y > 0.0 ? 1.0 : 4.0;
24
24
  }
25
25
  return face;
26
- }`);a.useKeywords=!1;let c=new X(`vec2 getUV(vec3 direction, float face) {
26
+ }`);s.useKeywords=!1;let l=new Z(`vec2 getUV(vec3 direction, float face) {
27
27
  vec2 uv;
28
28
  if (face == 0.0) {
29
29
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -39,7 +39,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
39
39
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
40
40
  }
41
41
  return 0.5 * (uv + 1.0);
42
- }`);c.useKeywords=!1;let p=new X(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
42
+ }`);l.useKeywords=!1;let u=new Z(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
43
43
  float face = getFace(direction);
44
44
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
45
45
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -67,7 +67,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
67
67
  uv.x -= texelSize;
68
68
  vec4 bl = texture2D(envMap, uv);
69
69
  return TextureCubeUVData( tl, tr, br, bl, f );
70
- }`,[e,a,c,r,o,i,s]);p.useKeywords=!1;let l=new Se("float r0 1.0",!0),u=new Se("float v0 0.339",!0),d=new Se("float m0 -2.0",!0),f=new Se("float r1 0.8",!0),m=new Se("float v1 0.276",!0),h=new Se("float m1 -1.0",!0),g=new Se("float r4 0.4",!0),x=new Se("float v4 0.046",!0),v=new Se("float m4 2.0",!0),A=new Se("float r5 0.305",!0),S=new Se("float v5 0.016",!0),b=new Se("float m5 3.0",!0),D=new Se("float r6 0.21",!0),w=new Se("float v6 0.0038",!0),y=new Se("float m6 4.0",!0),L=[l,u,d,f,m,h,g,x,v,A,S,b,D,w,y],T=new X(`float roughnessToMip(float roughness) {
70
+ }`,[e,s,l,n,o,i,a]);u.useKeywords=!1;let c=new Oe("float r0 1.0",!0),p=new Oe("float v0 0.339",!0),f=new Oe("float m0 -2.0",!0),d=new Oe("float r1 0.8",!0),h=new Oe("float v1 0.276",!0),m=new Oe("float m1 -1.0",!0),g=new Oe("float r4 0.4",!0),v=new Oe("float v4 0.046",!0),x=new Oe("float m4 2.0",!0),S=new Oe("float r5 0.305",!0),w=new Oe("float v5 0.016",!0),b=new Oe("float m5 3.0",!0),_=new Oe("float r6 0.21",!0),T=new Oe("float v6 0.0038",!0),y=new Oe("float m6 4.0",!0),I=[c,p,f,d,h,m,g,v,x,S,w,b,_,T,y],A=new Z(`float roughnessToMip(float roughness) {
71
71
  float mip = 0.0;
72
72
  if (roughness >= r1) {
73
73
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -81,8 +81,8 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
81
81
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
82
  }
83
83
  return mip;
84
- }`,L);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var Io=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Io.VIEW}getShared(){return this.scope===Io.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case Io.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case Io.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case Io.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}},at=Io;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";tt.addKeyword("viewNormal",function(){return new at(at.VIEW)});tt.addKeyword("localNormal",function(){return new at(at.NORMAL)});tt.addKeyword("worldNormal",function(){return new at(at.WORLD)});var Sr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Sr.LOCAL}getType(){switch(this.scope){case Sr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Sr.LOCAL:case Sr.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case Sr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case Sr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case Sr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Sr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}},Lt=Sr;Lt.LOCAL="local",Lt.WORLD="world",Lt.VIEW="view",Lt.PROJECTION="projection";tt.addKeyword("position",function(){return new Lt});tt.addKeyword("worldPosition",function(){return new Lt(Lt.WORLD)});tt.addKeyword("viewPosition",function(){return new Lt(Lt.VIEW)});var Jt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Jt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Jt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Jt.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,c=s.build(e,"v3"),p=new Lt(Lt.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;l&&(u=`normalize( mix( ${u}, ${c}, ${l} * ${l} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Jt.CUBE:{let s=new Jt(Jt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Jt.SPHERE:{let s=new Jt(Jt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 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(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},wr=Jt;wr.CUBE="cube",wr.SPHERE="sphere",wr.VECTOR="vector";var Na=class extends le{constructor(e=new Pt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Mn(this.value,r??new wr(wr.VECTOR),o),this.irradianceNode=new Mn(this.value,new at(at.WORLD),new Y(1).setReadonly(!0))}generate(e,r){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,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};var im=require("three");var Pa=class extends Ie{constructor(e=new im.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new wr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),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},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new vt(new _e("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,p),e.removeContext(),e.format(a,p,r)}};var sm=["x","y","z","w"],xS=["float","vec2","vec3","vec4"],vS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},bS={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[]"},Ia=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
85
- `);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",`
84
+ }`,I);return{bilinearCubeUV:u,roughnessToMip:A,m0:f,cubeUV_maxMipLevel:n}}();var vo=class extends he{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??vo.VIEW}getShared(){return this.scope===vo.WORLD}build(e,n,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,n,o,i):super.build(e,n,o)}generate(e,n,o,i,a){let s;switch(this.scope){case vo.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case vo.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case vo.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),n)}},bt=vo;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 Wr=class extends he{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,n,o,i,a){let s;switch(this.scope){case Wr.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Wr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Wr.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Wr.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),n)}},Wt=Wr;Wt.LOCAL="local",Wt.WORLD="world",Wt.VIEW="view",Wt.PROJECTION="projection";ut.addKeyword("position",function(){return new Wt});ut.addKeyword("worldPosition",function(){return new Wt(Wt.WORLD)});ut.addKeyword("viewPosition",function(){return new Wt(Wt.VIEW)});var xr=class extends he{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??xr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case xr.SPHERE:return"v2"}return this.type}generate(e,n){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case xr.VECTOR:{let a=new bt(bt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),u=new Wt(Wt.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,p=`reflect( -normalize( ${u} ), ${l} )`;c&&(p=`normalize( mix( ${p}, ${l}, ${c} * ${c} ) )`);let f=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${f};`),i="reflectVec"):i=f;break}case xr.CUBE:{let a=new xr(xr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case xr.SPHERE:{let a=new xr(xr.VECTOR).build(e,"v3"),s="normalize( ( viewMatrix * vec4( "+a+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),n)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,n)}},qr=xr;qr.CUBE="cube",qr.SPHERE="sphere",qr.VECTOR="vector";var Bl=class extends he{constructor(e=new jt,n,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Si(this.value,n??new qr(qr.VECTOR),o),this.irradianceNode=new Si(this.value,new bt(bt.WORLD),new J(1).setReadonly(!0))}generate(e,n){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,n)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),n))}};var cg=require("three");var Fl=class extends Ge{constructor(e=new cg.CubeTexture,n,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=n??new qr,this.bias=o}getTexture(e,n){return super.generate(e,n,this.value.uuid,"tc")}generate(e,n){if(n==="samplerCube")return this.getTexture(e,n);let o=this.getTexture(e,n),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new Et(new Pe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,u),e.removeContext(),e.format(s,u,n)}};var ug=["x","y","z","w"],SC=["float","vec2","vec3","vec4"],wC={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},TC={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[]"},Rl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,n){return e.deps.length-n.deps.length}return function(n,o){let i=this.getIncludes(n,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
85
+ `);return a}}();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",`
86
86
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
87
87
  #define SPE_BLENDING_NORMAL 0
88
88
  #define SPE_BLENDING_MULTIPLY 1
@@ -119,14 +119,14 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
119
119
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
120
120
  accumAlpha += (1.0 - accumAlpha) * alpha;
121
121
  }`,""].join(`
122
- `)},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(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>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}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.defines={},this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),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(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
122
+ `)},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(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let n=0;n<this.requires.uv.length;n++)if(this.requires.uv[n]){let o=n>0?n+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),n>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}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.defines={},this}addFlow(t,e,n){return this.addSlot(t).addCache(e).addContext(n)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),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(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
123
123
  `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
124
124
  `}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
125
125
  `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
126
- `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let a=this.getVars(o),c=a[t];if(!c){let p=a.length;c={name:r||"node"+i+p+(s?"_"+s:""),type:e},a.push(c),a[t]=c}return c}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
127
- `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],a=s.type,c=s.name,p=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?r+=e+" "+l.substring(0,l.length-2)+" "+c+`[${p}];
128
- `:r+=e+" "+l+" "+c+`;
129
- `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof it?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,c=a.list.length,p=new wi({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(p),a[t].push(p),a[t][p.name]=p,this.uniforms[p.name]=p,p}else{let a=this.inputs.uniforms,c=a.list.length,p=new wi({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(p),a[t].push(p),a[t][p.name]=p,this.uniforms[p.name]=p,p}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?tt.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof Se?o=this.includes.consts:t instanceof In&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let s=i[t.name];if(s||(s=i[t.name]={node:t,deps:[]},i.push(s),s.src=t.build(this,"source")),t instanceof X&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return xS[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case er.CubeReflectionMapping:case er.CubeRefractionMapping:return new Pa(r);case er.CubeUVReflectionMapping:return new Na(new Pt(r));default:return new Pt(r)}else{if(r.isVector2)return new st(r);if(r.isVector3)return new ut(r);if(r.isVector4)return new qt(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return vS[t]||t}getFormatByType(t){return bS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return sm[t]}getIndexByElement(t){return sm.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=er.LinearEncoding,e===er.LinearEncoding&&this.context.gamma&&(e=er.sRGBEncoding),e}};var Oe=require("three");var Ce=class extends Ie{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof rt?e:new rt(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return p?this.generateReadonly(e,r,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,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var xe=class extends Ie{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}};var La=require("three");var Lo=class extends it{constructor(){super("basic");this.nodeType="Basic";this.color=new Ce(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(La.UniformsUtils.merge([La.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
126
+ `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,n,o="varying",i="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let u=s.length;l={name:n||"node"+i+u+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,n,o){return this.getVar(t,e,n,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let n=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(n.name+" = "+t+";"),this.attributes[t]={varying:n,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
127
+ `)}getVarListCode(t,e){e=e??"";let n="";for(let o=0,i=t.length;o<i;++o){let a=t[o],s=a.type,l=a.name,u=a.size,c=this.getFormatByType(s);if(c===void 0)throw new Error("Node pars "+c+" not found.");c.includes("[]")?n+=e+" "+c.substring(0,c.length-2)+" "+l+`[${u}];
128
+ `:n+=e+" "+c+" "+l+`;
129
+ `}return n}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof vt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,n,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,u=new xa({type:e,size:n.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:n,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}else{let s=this.inputs.uniforms,l=s.list.length,u=new xa({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:n,needsUpdate:i});return s.list.push(u),s[t].push(u),s[t][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(t,e,n,o,i){return this.createUniform("vertex",t,e,n,o,i)}createFragmentUniform(t,e,n,o,i){return this.createUniform("fragment",t,e,n,o,i)}include(t,e,n){let o;if(t=typeof t=="string"?ut.get(t):t,this.context.include===!1)return t.name;t instanceof Z?o=this.includes.functions:t instanceof Oe?o=this.includes.consts:t instanceof vi&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let a=i[t.name];if(a||(a=i[t.name]={node:t,deps:[]},i.push(a),a.src=t.build(this,"source")),t instanceof Z&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return n&&(a.src=n),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return SC[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let n=t[e];if(n?.isNode)return n}}resolve(...t){for(let e=0;e<arguments.length;e++){let n=t[e];if(n!==void 0){if(n.isNode)return n;if(n.isTexture)switch(n.mapping){case br.CubeReflectionMapping:case br.CubeRefractionMapping:return new Fl(n);case br.CubeUVReflectionMapping:return new Bl(new jt(n));default:return new jt(n)}else{if(n.isVector2)return new xt(n);if(n.isVector3)return new At(n);if(n.isVector4)return new pr(n)}}}}format(t,e,n){switch(this.colorToVector(n+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return wC[t]||t}getFormatByType(t){return TC[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return ug[t]}getIndexByElement(t){return ug.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=br.LinearEncoding,e===br.LinearEncoding&&this.context.gamma&&(e=br.sRGBEncoding),e}};var ze=require("three");var Ee=class extends Ge{constructor(e=0,n,o,i){super("c");this.nodeType="Color";this.value=e instanceof pt?e:new pt(e||0,n,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,n,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return u?this.generateReadonly(e,n,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,n)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,n))}generateReadonly(e,n,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,n)}};var Ae=class extends Ge{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,n,o,i,a,s){return e.format(this.value.toString(),i,n)}};var kl=require("three");var xo=class extends vt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ee(5855577),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}generate(e){let n;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(kl.UniformsUtils.merge([kl.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
130
130
  `));let i=["#include <beginnormal_vertex>",`
131
131
  #if !defined( USE_LAYER_DISPLACE )
132
132
  #include <defaultnormal_vertex>
@@ -143,10 +143,10 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
143
143
  #if !defined( USE_LAYER_DISPLACE )
144
144
  #include <begin_vertex>
145
145
  #endif /* !USE_LAYER_DISPLACE */
146
- `];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;"),r=i.join(`
147
- `)}else{this.color===void 0&&(this.color=new Ce(5855577)),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.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(`
148
- `));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
149
- `)}return r}};var Fi=require("three");var so=class extends Ie{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};var am=require("three");var Dn=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new am.Matrix3}generateReadonly(e,r,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var tr=class extends Ie{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};var sc=require("three");var rr=class extends Ie{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof sc.Vector4?new Array(e).fill(r):new Array(e).fill(new sc.Vector4(0))}};var Ti=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Ti||{}),mt=function(){let t=new X(`vec3 random3(vec3 c) {
146
+ `];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;"),n=i.join(`
147
+ `)}else{this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.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(`
148
+ `));let s=["#include <normal_fragment_begin>",o.code];i&&s.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),a?s.push(a.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`):s.push(`vec3 finalColor = ${o.result};`),i?s.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):s.push("gl_FragColor = vec4("+o.result+", 1.0 );"),s.push("#include <fog_fragment>","#include <dithering_fragment>"),n=s.join(`
149
+ `)}return n}};var Ba=require("three");var Vn=class extends Ge{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,n,o,i){return e.format(this.value?"true":"false",i,n)}};var pg=require("three");var wi=class extends Ge{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new pg.Matrix3}generateReadonly(e,n,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,n)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Sr=class extends Ge{constructor(e=1,n){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(n)?n:typeof n=="number"?new Array(e).fill(n):new Array(e).fill(0)}};var Nu=require("three");var wr=class extends Ge{constructor(e=1,n){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(n)?n:n instanceof Nu.Vector4?new Array(e).fill(n):new Array(e).fill(new Nu.Vector4(0))}};var Sa=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Sa||{}),Lt=function(){let t=new Z(`vec3 random3(vec3 c) {
150
150
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
151
151
  vec3 r;
152
152
  r.z = fract(512.0*j);
@@ -155,7 +155,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
155
155
  j *= .125;
156
156
  r.y = fract(512.0*j);
157
157
  return r-0.5;
158
- }`),e=new X(`float simplex3d(vec3 p) {
158
+ }`),e=new Z(`float simplex3d(vec3 p) {
159
159
  vec3 s = floor(p + dot(p, vec3(F3)));
160
160
  vec3 x = p - s + dot(s, vec3(G3));
161
161
 
@@ -186,7 +186,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
186
186
  d *= w;
187
187
 
188
188
  return dot(d, vec4(52.0));
189
- }`,[t]);e.keywords.F3=new Se("float F3 0.3333333"),e.keywords.G3=new Se("float G3 0.1666667");let r=new X(`float simplex3dFractal(vec3 m) {
189
+ }`,[t]);e.keywords.F3=new Oe("float F3 0.3333333"),e.keywords.G3=new Oe("float G3 0.1666667");let n=new Z(`float simplex3dFractal(vec3 m) {
190
190
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
191
191
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
192
192
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -194,7 +194,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
194
194
  + 0.2666667 * simplex3d(2.0 * m * rot2)
195
195
  + 0.1333333 * simplex3d(4.0 * m * rot3)
196
196
  + 0.0666667 * simplex3d(8.0 * m);
197
- }`,[e]),o=new X("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new X("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new X(`float simplexAshima(vec3 v) {
197
+ }`,[e]),o=new Z("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new Z("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new Z(`float simplexAshima(vec3 v) {
198
198
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
199
199
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
200
200
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -239,7 +239,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
239
239
  m = m * m;
240
240
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
241
241
  dot(p2,x2), dot(p3,x3) ) );
242
- }`,[o,i]),a=new X("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new X("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),p=new X(`float noise(vec3 p){
242
+ }`,[o,i]),s=new Z("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new Z("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),u=new Z(`float noise(vec3 p){
243
243
  vec3 a = floor(p);
244
244
  vec3 d = p - a;
245
245
  d = d * d * (3.0 - 2.0 * d);
@@ -254,7 +254,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
254
254
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
255
255
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
256
256
  return o4.y * d.y + o4.x * (1.0 - d.y);
257
- }`,[c]),l=new X(`float fbm(vec3 x) {
257
+ }`,[l]),c=new Z(`float fbm(vec3 x) {
258
258
  float v = 0.0;
259
259
  float a = 0.5;
260
260
  vec3 shift = vec3(100);
@@ -264,7 +264,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
264
264
  a *= 0.5;
265
265
  }
266
266
  return v;
267
- }`,[p]);l.keywords.NUM_OCTAVES=new Se(`int NUM_OCTAVES ${5}`);let u=new X("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new X(`float perlin(vec3 P){
267
+ }`,[u]);c.keywords.NUM_OCTAVES=new Oe(`int NUM_OCTAVES ${5}`);let p=new Z("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),f=new Z(`float perlin(vec3 P){
268
268
  vec3 Pi0 = floor(P);
269
269
  vec3 Pi1 = Pi0 + vec3(1.0);
270
270
  Pi0 = mod(Pi0, 289.0);
@@ -323,16 +323,16 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
323
323
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
324
324
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
325
325
  return 2.2 * n_xyz;
326
- }`,[o,i,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:l,perlin:d}}();var Ai=class extends le{constructor(e,r,o,i,s,a,c,p,l,u,d,f){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=c,this.colorB=p,this.colorC=l,this.colorD=u,this.alpha=d,this.noiseType=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(Ti)[this.noiseType.value],c=new X(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
326
+ }`,[o,i,p]);return{simplex:e,simplexFractal:n,simplexAshima:a,fbm:c,perlin:f}}();var wa=class extends he{constructor(e,n,o,i,a,s,l,u,c,p,f,d){super("v3");this.nodeType="Noise";this.scale=e,this.size=n,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=u,this.colorC=c,this.colorD=p,this.alpha=f,this.noiseType=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(Sa)[this.noiseType.value],l=new Z(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
327
327
  vec3 st = position / size;
328
328
  st /= scale;
329
- vec3 q = vec3(${a}(st),
330
- ${a}(st + vec3(1.0)),
331
- ${a}(st + vec3(1.0)));
332
- vec3 r = vec3(${a}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
333
- ${a}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
334
- ${a}(st * q));
335
- float f = ${a}(st + r);
329
+ vec3 q = vec3(${s}(st),
330
+ ${s}(st + vec3(1.0)),
331
+ ${s}(st + vec3(1.0)));
332
+ vec3 r = vec3(${s}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
333
+ ${s}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
334
+ ${s}(st * q));
335
+ float f = ${s}(st + r);
336
336
  vec4 color;
337
337
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
338
338
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
@@ -343,7 +343,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
343
343
 
344
344
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
345
345
  return clamp(color, 0.0, 1.0).rgb;
346
- }`,[mt.simplex,mt.simplexFractal,mt.simplexAshima,mt.fbm,mt.perlin]),p=e.include(c),l=[];return l.push(this.scale.build(e,"f")),l.push(this.size.build(e,"v3")),l.push(this.move.build(e,"f")),l.push(this.fA.build(e,"v2")),l.push(this.fB.build(e,"v2")),l.push(this.distortion.build(e,"v2")),l.push(this.colorA.build(e,"v4")),l.push(this.colorB.build(e,"v4")),l.push(this.colorC.build(e,"v4")),l.push(this.colorD.build(e,"v4")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(p+"("+l.join(",")+")",this.getType(e),r)}};Ai.numOctaves=5;var Ci=require("three");var Oa=class extends it{constructor(){super("phong");this.nodeType="Phong";this.color=new Ce(5855577),this.specular=new Ce(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(0)}build(e){let r;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(Ci.UniformsUtils.merge([Ci.UniformsLib.fog,Ci.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(`
346
+ }`,[Lt.simplex,Lt.simplexFractal,Lt.simplexAshima,Lt.fbm,Lt.perlin]),u=e.include(l),c=[];return c.push(this.scale.build(e,"f")),c.push(this.size.build(e,"v3")),c.push(this.move.build(e,"f")),c.push(this.fA.build(e,"v2")),c.push(this.fB.build(e,"v2")),c.push(this.distortion.build(e,"v2")),c.push(this.colorA.build(e,"v4")),c.push(this.colorB.build(e,"v4")),c.push(this.colorC.build(e,"v4")),c.push(this.colorD.build(e,"v4")),c.push(this.alpha.build(e,"f")),c.push(this.calpha),e.format(u+"("+c.join(",")+")",this.getType(e),n)}};wa.numOctaves=5;var Ta=require("three");var Gl=class extends vt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ee(5855577),this.specular=new Ee(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;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(Ta.UniformsUtils.merge([Ta.UniformsLib.fog,Ta.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(`
347
347
  `));let i=["#include <beginnormal_vertex>",`
348
348
  #ifndef USE_LAYER_DISPLACE
349
349
  #include <defaultnormal_vertex>
@@ -361,9 +361,9 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
361
361
  #ifndef USE_LAYER_DISPLACE
362
362
  #include <begin_vertex>
363
363
  #endif
364
- `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
365
- `)}else{e.mergeUniform({penumbraSize:pt.penumbraSize}),this.color===void 0&&(this.color=new Ce(5855577)),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"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#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(`
366
- `));let u=["#include <normal_fragment_begin>",`
364
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
365
+ `)}else{e.mergeUniform({penumbraSize:_t.penumbraSize}),this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#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(`
366
+ `));let p=["#include <normal_fragment_begin>",`
367
367
  // NOTE: gl_FrontFacing alternative using face normal estimation.
368
368
  vec3 viewdx = dFdx(vViewPosition);
369
369
  vec3 viewdy = dFdy(vViewPosition);
@@ -371,21 +371,21 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
371
371
  if (dot(normal, faceNormal) < 0.0) {
372
372
  normal *= -1.0;
373
373
  }
374
- `," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),u.push(`
374
+ `," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
375
375
  if (outgoingLight != diffuseColor) {
376
376
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
377
- accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
378
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
377
+ accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
378
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
379
379
  }
380
- `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
381
- `)}return r}};var ac=class extends le{constructor(e,r,o,i,s,a,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=a,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(ac.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),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),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ni=ac;Ni.Nodes=function(){return{fresnel:new X(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
380
+ `),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=p.join(`
381
+ `)}return n}};var Pu=class extends he{constructor(e,n,o,i,a,s,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=n,this.scale=o,this.intensity=i,this.factor=a,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Pu.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),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),n)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Ca=Pu;Ca.Nodes=function(){return{fresnel:new Z(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
382
382
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
383
383
 
384
384
  float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
385
385
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
386
386
  accumAlpha += (1.0 - accumAlpha) * lalpha;
387
387
  return color;
388
- }`)}}();var lc=class extends le{constructor(e,r,o,i,s,a,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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(lc.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Pi=lc;Pi.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
388
+ }`)}}();var Mu=class extends he{constructor(e,n,o,i,a,s,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=n,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){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(Mu.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Aa=Mu;Aa.Nodes=function(){let e=new Z(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
389
389
  vec3 st = position / noiseScale;
390
390
  vec3 q = vec3(simplex3d(st),
391
391
  simplex3d(st + vec3(1.0)),
@@ -398,7 +398,7 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
398
398
  float noise = simplex3d(st + r);
399
399
 
400
400
  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);
401
- }`,[mt.simplex]);return{rainbow:new X(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
401
+ }`,[Lt.simplex]);return{rainbow:new Z(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
402
402
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
403
403
 
404
404
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -407,21 +407,21 @@ var ph=Object.create;var rs=Object.defineProperty;var dh=Object.getOwnPropertyDe
407
407
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
408
408
 
409
409
  return res;
410
- }`,[e])}}();var cc=class extends le{constructor(e,r,o,i,s,a,c,p,l,u,d,f,m,h,g,x){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=p,this.contourDirection=l,this.positionalLines=u,this.compensation=d,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=g,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
410
+ }`,[e])}}();var Eu=class extends he{constructor(e,n,o,i,a,s,l,u,c,p,f,d,h,m,g,v){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=n,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=u,this.contourDirection=c,this.positionalLines=p,this.compensation=f,this.resolution=d,this.normalMap=h,this.depthMap=m,this.pixelRatio=g,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),s=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(s,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
411
411
  vID = randomColor.r;
412
- if (${s}) {
413
- vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
412
+ if (${a}) {
413
+ vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
414
414
  // NOTE: For certain shapes, like spheres, we get incorrect extrusion when the
415
415
  // normals face the camera directly. So we hackily fix this by offsetting the normal
416
416
  // by a tiny amount.
417
- vec3 ${c}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
418
- vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${c}_clipPosition.w * 2.0 * ${a};
419
- ${c}_clipPosition.xy += ${c}_offset;
417
+ vec3 ${l}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
418
+ vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${s};
419
+ ${l}_clipPosition.xy += ${l}_offset;
420
420
  // TODO(MAX): To handle multiple outline layers, we only want to extrude
421
421
  // if this offset is the biggest of all the potential offsets
422
- gl_Position = ${c}_clipPosition;
422
+ gl_Position = ${l}_clipPosition;
423
423
  }
424
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(cc.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Ii=cc;Ii.Nodes=function(){let e=new X(`
424
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Eu.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},_a=Eu;_a.Nodes=function(){let e=new Z(`
425
425
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
426
426
  {
427
427
  vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
@@ -522,7 +522,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
522
522
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
523
523
  return edgeNormal;
524
524
  }
525
- `);return{outline:new X(`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 alpha, out float calpha) {
525
+ `);return{outline:new Z(`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 alpha, out float calpha) {
526
526
  vec3 result = outlineColor;
527
527
  float resultAlpha = 0.0;
528
528
 
@@ -561,11 +561,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
561
561
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
562
562
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
563
563
  return result;
564
- }`,[e])}}();var uc=class extends le{constructor(e,r,o,i,s,a,c,p){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(uc.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Li=uc;Li.Nodes=function(){let e=new X(`
564
+ }`,[e])}}();var Du=class extends he{constructor(e,n,o,i,a,s,l,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=n,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Du.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Ia=Du;Ia.Nodes=function(){let e=new Z(`
565
565
  float gaussian(vec2 i) {
566
566
  const float sigma = float(NUM_SAMPLES) * .25;
567
567
  return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
568
- }`),r=new X(`
568
+ }`),n=new Z(`
569
569
  vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
570
570
  // Slightly modified version of this:
571
571
  // https://www.shadertoy.com/view/ltScRG
@@ -595,7 +595,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
595
595
  a += gaussian;
596
596
  }
597
597
  return O / a;
598
- }`,[e]),o=new X(`
598
+ }`,[e]),o=new Z(`
599
599
  vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
600
600
  // Direction of refracted light.
601
601
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
@@ -606,18 +606,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
606
606
  modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
607
607
  // The thickness is specified in local space.
608
608
  return normalize( refractionVector ) * thickness * modelScale;
609
- }`),i=new X(`
609
+ }`),i=new Z(`
610
610
  float applyIorToRoughness( float roughness, float ior ) {
611
611
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
612
612
  // an IOR of 1.5 results in the default amount of microfacet refraction.
613
613
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
614
- } `),s=new X(`
614
+ } `),a=new Z(`
615
615
  vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
616
616
  float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
617
617
  float lod = applyIorToRoughness(roughness, ior);
618
618
 
619
619
  return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
620
- }`,[i,r]),a=new X(`
620
+ }`,[i,n]),s=new Z(`
621
621
  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 ) {
622
622
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
623
623
  vec3 refractedRayExit = position + transmissionRay;
@@ -635,7 +635,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
635
635
 
636
636
  // Sample framebuffer to get pixel the refracted ray hits.
637
637
  return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
638
- }`,[s,o]);return{transmission:new X(`
638
+ }`,[a,o]);return{transmission:new Z(`
639
639
  vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
640
640
  vec3 v = vec3(0.);
641
641
  if (isOrthographic) {
@@ -649,7 +649,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
649
649
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
650
650
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
651
651
  return transmission;
652
- }`,[a])}}();var Bn=class extends le{constructor(e,r,o,i,s,a,c,p,l,u,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=p,this.colors=l,this.steps=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new X(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
652
+ }`,[s])}}();var Ti=class extends he{constructor(e,n,o,i,a,s,l,u,c,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=n,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=u,this.colors=c,this.steps=p,this.alpha=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Z(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
653
653
  vec4 color = colors[0];
654
654
  #ifdef ${o}_IS_VECTOR
655
655
  #ifdef ${o}_LINEAR
@@ -689,25 +689,25 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
689
689
 
690
690
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
691
691
  return color.rgb;
692
- }`,[Bn.Nodes.vectorLinearWorldSpaceDepth,Bn.Nodes.vectorLinearObjectSpaceDepth,Bn.Nodes.vectorSphericalObjectSpaceDepth,Bn.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.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Oi=Bn;Oi.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
692
+ }`,[Ti.Nodes.vectorLinearWorldSpaceDepth,Ti.Nodes.vectorLinearObjectSpaceDepth,Ti.Nodes.vectorSphericalObjectSpaceDepth,Ti.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 a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),n)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Oa=Ti;Oa.Nodes=function(){let e=new Z(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
693
693
  vec3 n = normalize(direction);
694
694
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
695
695
  return ( dist - near ) / ( far - near );
696
- }`),r=new X(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
696
+ }`),n=new Z(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
697
697
  vec3 n = normalize(direction);
698
698
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
699
699
  return ( dist - near ) / ( far - near );
700
- }`),o=new X(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
700
+ }`),o=new Z(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
701
701
  float dist = length(vWPosition - origin);
702
702
  return ( dist - near ) / ( far - near );
703
- }`),i=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
703
+ }`),i=new Z(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
704
704
  float dist = length(position - origin);
705
705
  return ( dist - near ) / ( far - near );
706
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Mi=class extends le{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){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),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var pc=(e=>(e.NOISE="noise",e.MAP="map",e))(pc||{}),dc=class extends le{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(pc)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Dn(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(pc)[this.displacementTypeIndex.value]){case"map":{o=e.include(dc.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(Ti)[this.noiseFunctionIndex.value],c=new X(`vec3 orthogonal(vec3 v) {
706
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:n,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var La=class extends he{constructor(e,n,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=n,this.alpha=o,this.mode=i}generate(e,n){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),n)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}};var Bu=(e=>(e.NOISE="noise",e.MAP="map",e))(Bu||{}),Fu=class extends he{constructor(e,n,o,i,a){super("v3");this.displacementTypeIndex=new Ae(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=n,Object.values(Bu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new wi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=a}generate(e,n){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Bu)[this.displacementTypeIndex.value]){case"map":{o=e.include(Fu.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 s=Object.values(Sa)[this.noiseFunctionIndex.value],l=new Z(`vec3 orthogonal(vec3 v) {
707
707
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
708
- }`),p=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
709
- return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
710
- }`,[mt.simplex,mt.simplexFractal,mt.simplexAshima,mt.fbm,mt.perlin]),l=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
708
+ }`),u=new Z(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
709
+ return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
710
+ }`,[Lt.simplex,Lt.simplexFractal,Lt.simplexAshima,Lt.fbm,Lt.perlin]),c=new Z(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
711
711
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
712
712
  vec3 tangent1 = orthogonal(normal);
713
713
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -723,9 +723,9 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
723
723
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
724
724
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
725
725
  return displaced_position;
726
- }`,[p,c]);o=e.include(l),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Di=dc;Di.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
726
+ }`,[u,l]);o=e.include(c),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Na=Fu;Na.Nodes=function(){let e=new Z(`vec3 orthogonal(vec3 v) {
727
727
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
728
- }`),r=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
728
+ }`),n=new Z(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
729
729
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
730
730
  vec4 tmp = texture2D(tex, uvs);
731
731
  vec3 col = tmp.rgb;
@@ -735,7 +735,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
735
735
  }
736
736
  }
737
737
  return col.r;
738
- }`);return{map:new X(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
738
+ }`);return{map:new Z(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
739
739
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
740
740
  vec3 tangent1 = normalize(orthogonal(normal));
741
741
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -745,7 +745,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
745
745
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
746
746
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
747
747
  return displaced_position;
748
- }`,[e,r])}}();var fc=class extends le{constructor(e,r,o,i,s,a,c,p){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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(fc.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Bi=fc;Bi.Nodes=function(){return{gradient:new X(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
748
+ }`,[e,n])}}();var Ru=class extends he{constructor(e,n,o,i,a,s,l,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=n,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){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(Ru.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Pa=Ru;Pa.Nodes=function(){return{gradient:new Z(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
749
749
  vec4 color = colors[0];
750
750
  vec2 m = morph / vUv.xy;
751
751
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -787,7 +787,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
787
787
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
788
788
 
789
789
  return color.xyz;
790
- }`)}}();var Gi=class extends le{constructor(e,r,o,i,s,a,c,p,l,u){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.mat=p,this.alpha=l,this.mode=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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(Gi.Nodes.cylindrical);break;case 2:i=e.include(Gi.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=new X(`
790
+ }`)}}();var Ea=class extends he{constructor(e,n,o,i,a,s,l,u,c,p){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=n,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.mat=u,this.alpha=c,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){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(Ea.Nodes.cylindrical);break;case 2:i=e.include(Ea.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new Z(`
791
791
  vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
792
792
 
793
793
  vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -796,7 +796,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
796
796
 
797
797
  vec3 col = tmp.rgb;
798
798
  float lalpha = alpha * tmp.a;
799
- ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${a}));`}
799
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${s}));`}
800
800
 
801
801
  if ( crop > 0.5 ) {
802
802
  if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
@@ -806,7 +806,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
806
806
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
807
807
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
808
808
  return col;
809
- }`);i=e.include(c);break;default:i=e.include(Gi.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return 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.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),r)}},Ei=Gi;Ei.Nodes=function(){let e=new X(`
809
+ }`);i=e.include(l);break;default:i=e.include(Ea.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let s=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${s})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let a=[];return a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),n)}},Ma=Ea;Ma.Nodes=function(){let e=new Z(`
810
810
  vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
811
811
  vec3 posN = normalize(position);
812
812
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -836,7 +836,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
836
836
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
837
837
  return col;
838
838
  }
839
- `),r=new X(`
839
+ `),n=new Z(`
840
840
  vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
841
841
  vec3 posN = normalize(vPosition);
842
842
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -864,7 +864,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
864
864
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
865
865
  return col;
866
866
  }
867
- `),o=new X(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
867
+ `),o=new Z(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
868
868
 
869
869
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
870
870
  vec4 tmp = texture2D( tex, uvs );
@@ -880,14 +880,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
880
880
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
881
881
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
882
882
  return col;
883
- }`);return{cylindrical:e,spherical:r,uv:o}}();var mc=class extends le{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include(mc.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ri=mc;Ri.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
883
+ }`);return{cylindrical:e,spherical:n,uv:o}}();var ku=class extends he{constructor(e,n){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=n}generate(e,n){if(e.isShader("fragment")){let o=e.include(ku.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Da=ku;Da.Nodes=function(){return{customNormal:new Z(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
884
884
  vec3 normal = packNormalToRGB( norm ).rgb;
885
885
  normal *= step( vec3(0.5), cnormal );
886
886
 
887
887
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
888
888
 
889
889
  return normal;
890
- }`)}}();var pt={normalRenderTarget:new Pt,normalRenderTargetDepth:new Pt,transmissionRenderTarget:new Pt,transmissionSize:new st(2048,2048),transmissionRenderTargetDepth:new Pt,pixelRatioNode:new Y(1),resolution:new st,penumbraSize:new tr(5,.5)};for(let n of Object.values(pt))n.isRenderGlobal=!0;var Vi=class extends it{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ce(5855577),this.emissive=new Ce(0),this.emissiveIntensity=new Y(1),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(0)}build(e){let r;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(Fi.UniformsUtils.merge([Fi.UniformsLib.fog,Fi.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(`
890
+ }`)}}();var _t={normalRenderTarget:new jt,normalRenderTargetDepth:new jt,transmissionRenderTarget:new jt,transmissionSize:new xt(2048,2048),transmissionRenderTargetDepth:new jt,pixelRatioNode:new J(1),resolution:new xt,penumbraSize:new Sr(5,.5)};for(let r of Object.values(_t))r.isRenderGlobal=!0;var Fa=class extends vt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ee(5855577),this.emissive=new Ee(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;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(Ba.UniformsUtils.merge([Ba.UniformsLib.fog,Ba.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(`
891
891
  `));let i=["#include <beginnormal_vertex>",`
892
892
  #ifndef USE_LAYER_DISPLACE
893
893
  #include <defaultnormal_vertex>
@@ -978,22 +978,22 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
978
978
  }
979
979
  #pragma unroll_loop_end
980
980
  #endif
981
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
982
- `)}else{e.mergeUniform({penumbraSize:pt.penumbraSize}),this.color===void 0&&(this.color=new Ce(5855577)),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.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"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(`
983
- `));let u=["#include <normal_fragment_begin>",`
981
+ `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
982
+ `)}else{e.mergeUniform({penumbraSize:_t.penumbraSize}),this.color===void 0&&(this.color=new Ee(5855577)),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"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"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(`
983
+ `));let p=["#include <normal_fragment_begin>",`
984
984
  // NOTE: gl_FrontFacing alternative using face normal estimation.
985
985
  vec3 viewdx = dFdx(vViewPosition);
986
986
  vec3 viewdy = dFdy(vViewPosition);
987
987
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
988
988
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
989
- `,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.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&&u.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),u.push(`
989
+ `,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.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&&p.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
990
990
  if (outgoingLight != diffuseColor) {
991
991
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
992
- accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
993
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
992
+ accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
993
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
994
994
  }
995
- `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
996
- `)}return r}};var En=require("three");var zi=class extends it{constructor(){super("standard");this.nodeType="Standard";this.color=new Ce(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(0)}build(e){let r;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(En.UniformsUtils.merge([En.UniformsLib.fog,En.UniformsLib.lights])),En.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(`
995
+ `),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=p.join(`
996
+ `)}return n}};var Ci=require("three");var Ra=class extends vt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ee(5855577),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;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(Ci.UniformsUtils.merge([Ci.UniformsLib.fog,Ci.UniformsLib.lights])),Ci.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(`
997
997
  `));let i=["#include <beginnormal_vertex>",`
998
998
  #if !defined( USE_LAYER_DISPLACE )
999
999
  #include <defaultnormal_vertex>
@@ -1010,9 +1010,9 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1010
1010
  #if !defined( USE_LAYER_DISPLACE )
1011
1011
  #include <begin_vertex>
1012
1012
  #endif /* !USE_LAYER_DISPLACE */
1013
- `];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;"),r=i.join(`
1014
- `)}else{e.mergeUniform({penumbraSize:pt.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ce(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),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 i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),p=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,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#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(`
1015
- `));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1013
+ `];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;"),n=i.join(`
1014
+ `)}else{e.mergeUniform({penumbraSize:_t.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),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 i=this.color.flow(e,"c",{slot:"color",context:o}),a=this.roughness.flow(e,"f"),s=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=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}];`,"#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(`
1015
+ `));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1016
1016
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1017
1017
  vec3 viewdx = dFdx(vViewPosition);
1018
1018
  vec3 viewdy = dFdy(vViewPosition);
@@ -1020,14 +1020,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1020
1020
  if (dot(normal, faceNormal) < 0.0) {
1021
1021
  normal *= -1.0;
1022
1022
  }
1023
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),u&&f.push(u.code,"#ifdef ALPHATEST"," if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),f.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 );"),d?f.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):f.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),f.push("#include <lights_fragment_begin>"),f.push("#include <lights_fragment_end>"),f.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),f.push(`
1023
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",a.code," float roughnessFactor = "+a.result+";",s.code," float metalnessFactor = "+s.result+";"),p&&d.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?d.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
1024
1024
  if (outgoingLight != diffuseColor) {
1025
1025
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1026
- accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
1027
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
1026
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
1027
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${u.result} );
1028
1028
  }
1029
- `),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 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
1030
- `)}return r}};var Ui=require("three");var ji=class extends it{constructor(){super("toon");this.nodeType="Toon";this.color=new Ce(5855577),this.specular=new Ce(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(0)}build(e){let r;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(Ui.UniformsUtils.merge([Ui.UniformsLib.fog,Ui.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(`
1029
+ `),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),p?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=d.join(`
1030
+ `)}return n}};var ka=require("three");var Ga=class extends vt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ee(5855577),this.specular=new Ee(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new Ae(0)}build(e){let n;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(ka.UniformsUtils.merge([ka.UniformsLib.fog,ka.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(`
1031
1031
  `));let i=["#include <beginnormal_vertex>",`
1032
1032
  #ifndef USE_LAYER_DISPLACE
1033
1033
  #include <defaultnormal_vertex>
@@ -1044,8 +1044,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1044
1044
  #ifndef USE_LAYER_DISPLACE
1045
1045
  #include <begin_vertex>
1046
1046
  #endif
1047
- `];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;"),r=i.join(`
1048
- `)}else{e.mergeUniform({penumbraSize:pt.penumbraSize}),this.color===void 0&&(this.color=new Ce(5855577)),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"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"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>",`
1047
+ `];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;"),n=i.join(`
1048
+ `)}else{e.mergeUniform({penumbraSize:_t.penumbraSize}),this.color===void 0&&(this.color=new Ee(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"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>",`
1049
1049
  varying vec3 vViewPosition;
1050
1050
  struct ToonMaterial {
1051
1051
  vec3 diffuseColor;
@@ -1066,7 +1066,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1066
1066
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
1067
1067
  #define Material_LightProbeLOD( material ) (0)
1068
1068
  `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
1069
- `));let u=["#include <normal_fragment_begin>",`
1069
+ `));let p=["#include <normal_fragment_begin>",`
1070
1070
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1071
1071
  vec3 viewdx = dFdx(vViewPosition);
1072
1072
  vec3 viewdy = dFdy(vViewPosition);
@@ -1074,14 +1074,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1074
1074
  if (dot(normal, faceNormal) < 0.0) {
1075
1075
  normal *= -1.0;
1076
1076
  }
1077
- `," ToonMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),u.push(`
1077
+ `," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
1078
1078
  if (outgoingLight != diffuseColor) {
1079
1079
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1080
- accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
1081
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
1080
+ accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
1081
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
1082
1082
  }
1083
- `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
1084
- `)}return r}};var We=require("three");function lm(n,t){switch(n.type){case"fresnel":return _S(n,t);case"gradient":return TS(n);case"depth":return AS(n);case"normal":return CS(n);case"noise":return NS(n,t);case"rainbow":return PS(n);case"toon":return IS(n,t);case"outline":return LS(n,t);case"transmission":return OS(n,t);case"color":return wS(n,t)}}function SS(n){return{type:n.type}}function Tr(n){let{alpha:t,mode:e}=n;return{...SS(n),alpha:t,mode:e}}function wS(n,t){return{...Tr(n),color:Qe(n.color,t)}}function _S(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...Tr(n),color:Qe(s,t),bias:e,scale:r,intensity:o,factor:i}}function TS(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n;return{...Tr(n),gradientType:t,smooth:e,colors:r.map(c=>new We.Vector4(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new We.Vector2(...s),morph:new We.Vector2(...a),angle:i}}function AS(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:p,smooth:l}=n;return{...Tr(n),gradientType:t,near:e,far:r,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:p.slice(0,c.length),smooth:l}}function CS(n){let{cnormal:t}=n;return{...Tr(n),cnormal:new We.Vector3(t[0],t[1],t[2])}}function NS(n,t){return{...Tr(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:Qe(n.colorA,t),colorB:Qe(n.colorB,t),colorC:Qe(n.colorC,t),colorD:Qe(n.colorD,t),noiseType:n.noiseType}}function PS(n){return{...Tr(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 IS(n,t){return{...Tr(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:Qe(n.shadowColor,t),offset:new We.Vector3(...n.offset)}}function LS(n,t){return{...Tr(n),outlineColor:Qe(n.outlineColor,t),contourColor:Qe(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation}}function OS(n,t){return{...Tr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var ao=class extends rt{};var dm=require("three");var pm=require("three");var hc=new Map,ki={url:"head",time:0,data:null,next:null,prev:null},Gn={url:"tail",time:1/0,data:null,next:null,prev:null};ki.next=Gn;Gn.prev=ki;var cm=0;function um(n){if(typeof n=="string")return n;let t=Date.now(),e=hc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},hc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Gn.prev,e.next=Gn,Gn.prev.next=e,Gn.prev=e,t-cm>1e3*10&&(cm=t+1e3,setTimeout(()=>{let r=Date.now(),o=ki.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),hc.delete(o.data),o=o.next,o.prev=ki,ki.next=o},900)),e.url}var Rn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){typeof document>"u"||(this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=um(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(t){let e=this[t];if(e)return e;{let r=new pm.Texture(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var Oo=class extends Rn{};var lo=class extends Ie{};var gc={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},yc={depth:["colors"]};function MS(n,t,e){let r=gc[n.type],o=yc[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let s=i[t]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function xc(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let s=i.image,a=t.image(s),c=r;c instanceof Oo||c.image.dispose(),c.image=a}if("wrapping"in i){let s=r;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 fm(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||vc(i,e,r))continue;e.visible=r.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof lo))switch(o=o||MS(e,i,s),a.constructor){case Ce:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof ao?a.value=new rt(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case qt:if(typeof s=="string"){let c=t.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof ao?a.value=new rt(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case st:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case ut:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Pt:{xc(s,t,e);break}case rr:{a.value=s.map(c=>new dm.Vector4(...c));break}default:{a.value=s;break}}}return o}var bc=class extends le{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(bc.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.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Hi=bc;Hi.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1083
+ `),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),n=p.join(`
1084
+ `)}return n}};var nt=require("three");function fg(r,t){switch(r.type){case"fresnel":return _C(r,t);case"gradient":return IC(r);case"depth":return OC(r);case"normal":return LC(r);case"noise":return NC(r,t);case"rainbow":return PC(r);case"toon":return MC(r,t);case"outline":return EC(r,t);case"transmission":return DC(r,t);case"color":return AC(r,t)}}function CC(r){return{type:r.type}}function Yr(r){let{alpha:t,mode:e}=r;return{...CC(r),alpha:t,mode:e}}function AC(r,t){return{...Yr(r),color:yt(r.color,t)}}function _C(r,t){let{bias:e,scale:n,intensity:o,factor:i,color:a}=r;return{...Yr(r),color:yt(a,t),bias:e,scale:n,intensity:o,factor:i}}function IC(r){let{gradientType:t,smooth:e,colors:n,steps:o,angle:i,offset:a,morph:s}=r;return{...Yr(r),gradientType:t,smooth:e,colors:n.map(l=>new nt.Vector4(l[0],l[1],l[2],l[3])),num:n.length,steps:o,offset:new nt.Vector2(...a),morph:new nt.Vector2(...s),angle:i}}function OC(r){let{gradientType:t,near:e,far:n,isVector:o,isWorldSpace:i,origin:a,direction:s,colors:l,steps:u,smooth:c}=r;return{...Yr(r),gradientType:t,near:e,far:n,isVector:o,isWorldSpace:i,origin:new nt.Vector3(...a),direction:s?new nt.Vector3(...s):new nt.Vector3(1,0,0),colors:l.map(p=>p!==void 0?new nt.Vector4(p[0],p[1],p[2],p[3]):new nt.Vector4(0,0,0,0)),steps:u.slice(0,l.length),smooth:c}}function LC(r){let{cnormal:t}=r;return{...Yr(r),cnormal:new nt.Vector3(t[0],t[1],t[2])}}function NC(r,t){return{...Yr(r),scale:r.scale,move:r.move,fA:new nt.Vector2(...r.fA),fB:new nt.Vector2(...r.fB),size:new nt.Vector3(...r.size),distortion:new nt.Vector2(...r.distortion),colorA:yt(r.colorA,t),colorB:yt(r.colorB,t),colorC:yt(r.colorC,t),colorD:yt(r.colorD,t),noiseType:r.noiseType}}function PC(r){return{...Yr(r),filmThickness:r.filmThickness,movement:r.movement,wavelengths:new nt.Vector3(...r.wavelengths),noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,offset:new nt.Vector3(...r.offset)}}function MC(r,t){return{...Yr(r),positioning:r.positioning,colors:r.colors.map(e=>new nt.Vector4(e[0],e[1],e[2],e[3])),num:r.colors.length,steps:r.steps,source:new nt.Vector3(...r.source),isWorldSpace:r.isWorldSpace,noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,shadowColor:yt(r.shadowColor,t),offset:new nt.Vector3(...r.offset)}}function EC(r,t){return{...Yr(r),outlineColor:yt(r.outlineColor,t),contourColor:yt(r.contourColor,t),outlineWidth:r.outlineWidth,contourWidth:r.contourWidth,outlineThreshold:r.outlineThreshold,contourThreshold:r.contourThreshold,outlineSmoothing:r.outlineSmoothing,contourFrequency:r.contourFrequency,contourDirection:r.contourDirection,positionalLines:r.positionalLines,compensation:r.compensation}}function DC(r,t){return{...Yr(r),thickness:r.thickness,ior:r.ior,roughness:r.roughness}}var zn=class extends pt{};var gg=require("three");var mg=require("three");var Gu=new Map,Ua={url:"head",time:0,data:null,next:null,prev:null},Ai={url:"tail",time:1/0,data:null,next:null,prev:null};Ua.next=Ai;Ai.prev=Ua;var dg=0;function hg(r){if(typeof r=="string")return r;let t=Date.now(),e=Gu.get(r);return e===void 0?(e={url:URL.createObjectURL(new Blob([r])),data:r,time:t,next:null,prev:null},Gu.set(r,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Ai.prev,e.next=Ai,Ai.prev.next=e,Ai.prev=e,t-dg>1e3*10&&(dg=t+1e3,setTimeout(()=>{let n=Date.now(),o=Ua.next;for(;o.time<n-1e3*10;)URL.revokeObjectURL(o.url),Gu.delete(o.data),o=o.next,o.prev=Ua,Ua.next=o},900)),e.url}var _i=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){typeof document>"u"||(this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=hg(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let n of e){let o=this[n];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(t){let e=this[t];if(e)return e;{let n=new mg.Texture(this.img,void 0,t,t);return this.loaded&&(n.needsUpdate=!0),this[t]=n,n}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var bo=class extends _i{};var jn=class extends Ge{};var Uu={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Vu={depth:["colors"]};function BC(r,t,e){let n=Uu[r.type],o=Vu[r.type];if(o!==void 0){let i=r.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return n!==void 0?n.includes(t):!1}function zu(r,t,e){let n=e.uniforms[`f${e.id}_texture`];if(!n)return!1;let o=!1,i=r;if("image"in i){let a=i.image,s=t.image(a),l=n;l instanceof bo||l.image.dispose(),l.image=s}if("wrapping"in i){let a=n;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function yg(r,t,e,n){let o=!1;for(let[i,a]of Object.entries(r)){if(!i||a===void 0||ju(i,e,n))continue;e.visible=n.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof jn))switch(o=o||BC(e,i,a),s.constructor){case Ee:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof zn?s.value=new pt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case pr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof zn?s.value=new pt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case xt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case At:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case jt:{zu(a,t,e);break}case wr:{s.value=a.map(l=>new gg.Vector4(...l));break}default:{s.value=a;break}}}return o}var Hu=class extends he{constructor(e,n,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=n,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Hu.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.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},Va=Hu;Va.Nodes=function(){return{matcap:new Z(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1085
1085
  vec3 viewDir = normalize( vViewPosition );
1086
1086
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
1087
1087
  vec3 y = cross( viewDir, x );
@@ -1093,14 +1093,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1093
1093
 
1094
1094
  return matcapColor.rgb;
1095
1095
  }
1096
- `)}}();var Wi=class extends lo{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};var mm=require("three");var Ma=class extends lo{constructor(e){super("v3");this.image=e;this._value=new mm.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Sc=class extends le{constructor(e,r,o,i,s,a,c,p,l,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=p,this.offset=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Sc.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},qi=Sc;qi.Nodes=function(){let e=new X(`float rand(float n) {
1096
+ `)}}();var za=class extends jn{constructor(e,n){super("t");this.image=e;this.wrap=n}get value(){return this.image.getTexture(this.wrap)}};var vg=require("three");var Ul=class extends jn{constructor(e){super("v3");this.image=e;this._value=new vg.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Wu=class extends he{constructor(e,n,o,i,a,s,l,u,c,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=n,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=u,this.offset=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,n){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Wu.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.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),n)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),n)}},ja=Wu;ja.Nodes=function(){let e=new Z(`float rand(float n) {
1097
1097
  return fract(sin(n) * 43758.5453123);
1098
- }`),r=new X(`float hash1(float p) {
1098
+ }`),n=new Z(`float hash1(float p) {
1099
1099
  p = fract(p * 0.011);
1100
1100
  p *= p + 7.5;
1101
1101
  p *= p + p;
1102
1102
  return fract(p);
1103
- }`),o=new X(`float valueNoise(vec3 x) {
1103
+ }`),o=new Z(`float valueNoise(vec3 x) {
1104
1104
  const vec3 step = vec3(110, 241, 171);
1105
1105
 
1106
1106
  vec3 i = floor(x);
@@ -1115,13 +1115,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1115
1115
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1116
1116
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1117
1117
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1118
- }`,[r]),i=new X(`vec3 hash3(vec3 x) {
1118
+ }`,[n]),i=new Z(`vec3 hash3(vec3 x) {
1119
1119
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1120
1120
  dot(x,vec3(269.5, 183.3, 246.1)),
1121
1121
  dot(x,vec3(113.5, 271.9, 124.6)));
1122
1122
 
1123
1123
  return fract(sin(x)*43758.5453123);
1124
- }`),s=new X(`vec3 voronoiNoise(in vec3 x)
1124
+ }`),a=new Z(`vec3 voronoiNoise(in vec3 x)
1125
1125
  {
1126
1126
  vec3 p = floor(x);
1127
1127
  vec3 f = fract(x);
@@ -1152,7 +1152,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1152
1152
 
1153
1153
  return vec3(sqrt(res), abs(id));
1154
1154
  }
1155
- `,[i]);return{toon:new X(`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 alpha, out float calpha) {
1155
+ `,[i]);return{toon:new Z(`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 alpha, out float calpha) {
1156
1156
  float t = 0.0;
1157
1157
  float shadow = 1.0;
1158
1158
 
@@ -1329,5 +1329,9 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1329
1329
 
1330
1330
  return color.xyz;
1331
1331
 
1332
- }`,[mt.simplex,e,o,s])}}();var gm=require("three");function hm(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Da=class extends Dn{constructor(e,r){super(new gm.Matrix3);this.repeat=e;this.offset=r;hm(this.value,e,r)}updateMatrix(){hm(this.value,this.repeat,this.offset)}};var Ar=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)vc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Cr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new Wi(i,r.texture.wrapping),a=new Ma(i),c=new Da(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),l=new xe(r.projection??0),u=new xe(["x","y","z"].indexOf(r.axis)??0),d=new xe(r.side??0),f=new st(r.size?new Oe.Vector2(r.size[0],r.size[1]):new Oe.Vector2(100,100)),m=new Y(r.alpha??1),h=new xe(r.mode??0),g=new Ei(s,a,p,l,u,d,f,c,m,h),x=new _e(g.calpha,"f");return new ot(t,e,r,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:f,mat:c,alpha:m,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new Wi(i,r.texture.wrapping),a=new Y(r.alpha??1),c=new xe(r.mode??0),p=new Hi(s,a,c),l=new _e(p.calpha,"f");return new ot(t,e,r,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new ut(new Oe.Vector3(...r.offset)),s=new Y(r.scale??10),a=new Y(r.intensity??8),c=new Y(r.movement??1),p=new xe(r.noiseType??0),l=new Di(a,c,i,s,p);return new $i(t,e,r,{offset:i,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else return BS(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:fm(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?xc(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},ot=class extends Ar{constructor(e,r,o,i,s,a,c){super(e,r,o,i);this.color=s;this.mode=a;this.alpha=c}},$i=class extends Ar{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},Cr=class extends Ar{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,a=new Y(o.alpha),c=new xe(o.mode),p;if(o.category==="lambert"){s=new Vi;let l=new Ce(i.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new Oa;let l=new Y(o.shininess??30),u=new Ce(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new ji;let l=new Y(o.shininess??30),u=new Ce(i.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new zi;let l=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new Lo,p={};return s.alpha=new Y(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new Cr(e,r,o,s,p)}};function ym(n){let t=n instanceof Ar?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function DS(n,t,e,r){switch(n.type){case"color":{let o=new Ce(r.color??5855577),i=new Y(r.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new xe(r.mode??0);return o.alpha=i,new ot(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}case"fresnel":{let o=new Ce(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),a=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),l=new xe(r.mode??0),u=new Ni(o,i,s,a,c,p,l),d=new _e(u.calpha,"f");return new ot(t,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,alpha:p,mode:l},u,l,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new ut(r.wavelengths??new Oe.Vector3(0,0,0)),a=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new ut(r.offset??new Oe.Vector3(0,0,0)),l=new Y(r.alpha??1),u=new Pi(o,i,s,a,c,p,l),d=new _e(u.calpha,"f"),f=new xe(r.mode??0);return new ot(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,mode:f},u,f,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),a=pt.transmissionSize,c=pt.transmissionRenderTarget,p=pt.transmissionRenderTargetDepth,l=window.innerWidth,u=window.innerHeight,d=l>=u?new st(u/l,1):new st(1,l/u),f=new Y(r.alpha??1),m=new Li(o,i,s,a,c,p,d,f),h=new _e(m.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,g,h)}case"toon":{let o=new xe(r.positioning??0),i;r.colors?i=new rr(r.colors.length,r.colors):(i=new rr(10,new Oe.Vector4(0,0,0,1)),i.value[1]=new Oe.Vector4(1,1,1,1));let s;r.steps?s=new tr(r.steps.length,r.steps):(s=new tr(10,1),s.value[0]=0);let a=new ut(r.source??new Oe.Vector3(0,0,0)),c=new so(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),l=new Y(r.noiseScale??1),u=new qt(r.shadowColor),d=new ut(r.offset??new Oe.Vector3(0,0,0)),f=new Y(r.alpha??1),m=new qi(o,i,s,a,c,p,l,u,d,f),h=new _e(m.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new Ce(r.outlineColor??16777215),i=new Ce(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),a=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),l=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new ut(r.contourDirections??new Oe.Vector3(0,1,0)),f=new so(r.positionalLines??!1),m=new so(r.compensation??!0),h=pt.normalRenderTarget,g=pt.normalRenderTargetDepth,x=pt.pixelRatioNode,v=pt.resolution,A=new Y(r.alpha??1),S=new Ii(o,i,s,a,c,p,l,u,d,f,m,v,h,g,x,A),b=new _e(S.calpha,"f"),D=new xe(r.mode??0);return new ot(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new xe(r.gradientType??0),i=new so(r.smooth??!1),s=new Y(r.near??50),a=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),l=new ut(r.origin??new Oe.Vector3),u=new ut(r.direction??new Oe.Vector3),d;r.colors?d=new rr(r.colors.length,r.colors):(d=new rr(2,new Oe.Vector4(0,0,0,1)),d.value[1]=new Oe.Vector4(1,1,1,1));let f;r.steps?f=new tr(r.steps.length,r.steps):(f=new tr(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new xe(r.mode??0),g=new Oi(o,i,s,a,c,p,l,u,d,f,m),x=new _e(g.calpha,"f");return new ot(t,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:d,steps:f,alpha:m,mode:h},g,h,x)}case"noise":{let o=new Y(r.scale??1),i=new ut(r.size??new Oe.Vector3(100,100,100)),s=new Y(r.move??1),a=new st(r.fA??new Oe.Vector2(1.7,9.2)),c=new st(r.fB??new Oe.Vector2(8.3,2.8)),p=new st(r.distortion??new Oe.Vector2(1,1)),l=new qt(r.colorA),u=new qt(r.colorB),d=new qt(r.colorC),f=new qt(r.colorD),m=new Y(r.alpha??1),h=new xe(r.mode??0),g=new xe(r.noiseType??0),x=new Ai(o,i,s,a,c,p,l,u,d,f,m,g),v=new _e(x.calpha,"f");return new ot(t,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new ut(r.cnormal??new Oe.Vector3(1,1,1)),i=new Y(r.alpha??1),s=new xe(r.mode??0),a=new Ri(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ot(t,e,n,{cnormal:o,alpha:i,mode:s},a,s,c)}case"gradient":{let o=new xe(r.gradientType??0),i=new so(r.smooth??!1),s;r.colors?s=new rr(r.colors.length,r.colors):(s=new rr(10,new Oe.Vector4(0,0,0,1)),s.value[1]=new Oe.Vector4(1,1,1,1));let a;r.steps?a=new tr(r.steps.length,r.steps):(a=new tr(10,1),a.value[0]=0);let c=new st(r.offset??new Oe.Vector2(0,0)),p=new st(r.morph??new Oe.Vector2(0,0)),l=new Y(r.angle??0),u=new Y(r.alpha??1),d=new xe(r.mode??0),f=new Bi(o,i,s,a,c,p,l,u),m=new _e(f.calpha,"f");return new ot(t,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:p,angle:l,alpha:u,mode:d},f,d,m)}default:{let o=new Ce(1,0,0,1),i=new Y(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new xe(0);return o.alpha=i,new ot(t,e,n,{color:o,alpha:i,mode:a},o,a,s)}}}function BS(n,t,e,r){let o=lm(e,r);return DS(e,n,t,o)}function vc(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var Rt=class extends Ba.ShaderMaterial{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.transparent=!0,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??Yt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Ar.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Cr),this.lightLayer===void 0&&(this.lightLayer=new Cr(0,"",eo.defaultData("light","basic"),new Lo,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=Ar.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===i);if(s){let a=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let p=Ar.create(this.layerIdGen++,i,a,o);this.layers.splice(this.layers.findIndex(l=>l.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Cr);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof ot&&(o=new Mi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Cr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ot&&(e=new Mi(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof $i);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new It(r,e[o].position,It.ADD),r=new It(r,new Y(.5).setReadonly(!0),It.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),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,r){let o=(i,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.category.toUpperCase()}",`;else{let o=(gc[r.type]??[]).map(a=>r[a]),i=(yc[r.type]??[]).map(a=>r[a]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new Ia;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Ba.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Rt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});var Ft=require("three");function ES(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=new Ft.Vector3(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Ft.Vector3})}t.forEach((i,s)=>{for(let a of i.normals)i.result.add(a);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=t.get(s)?.result;a&&(o[i]=a.x,o[i+1]=a.y,o[i+2]=a.z)}n.geometry.setAttribute("extrudeNormal",new Ft.Float32BufferAttribute(o,3))}function GS(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Ft.Vector3;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Ft.Float32BufferAttribute(e,3))}function co(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Rt)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?GS(n):ES(n)}}function uo(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[Ft.MathUtils.seededRandom(r),Ft.MathUtils.seededRandom(r+1e4),Ft.MathUtils.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Ft.BufferAttribute(e,3))}var lt=class extends Wt(Ea.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Ea.Matrix4;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Ql[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),co(this),r.getAttribute("randomColor")&&uo(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=vi(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new To(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new To(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Zt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),yr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)gr(e)&&(e.freeBooleanPointer(),yr(e)&&e.invalidateUpstreamBooleanData())}};var RS=new po.Vector3(0,0,1),xm=new po.Vector3,vm=new po.Vector3,bm=new po.Matrix3,Fn=class extends lt{constructor(e=xt.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new po.EventDispatcher;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),bm.getNormalMatrix(this.matrixWorld),xm.copy(RS).applyMatrix3(bm).normalize(),vm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(xm,vm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=xt.create(Object.assign({},i,{shape:r})),a=new Fn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){lt.prototype.raycast.call(this,e,r)}};var Nr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Qe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var Vn=new Ge.Vector3,wc=new Ge.Vector3,zr=class extends Nr(Wt(Ge.Camera),aa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=xo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ge.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new Ge.PerspectiveCamera(o,e/r,i??50,s),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.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new zr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}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){super.lookAt(e),this.getWorldPosition(Vn),this.targetOffset=Vn.distanceTo(e)}getTarget(e=new Ge.Vector3){return this.getWorldDirection(wc),this.getWorldPosition(Vn),wc.multiplyScalar(this.targetOffset),e.copy(Vn).add(wc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Vn),Vn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ge.Quaternion),r=new Ge.Vector3(0,0,1).applyQuaternion(e),o=new Ge.Vector3().copy(Ge.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Ge.Vector3().copy(Ge.Object3D.DefaultUp).projectOnPlane(r),s=new Ge.Vector3().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ge.Vector3),i=e.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ge.Vector3),i=this.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,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,r,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),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 r={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 nn(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.zoom),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(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};var Xi=require("three");var Sm=new Xi.Matrix4;var Ga=class extends lt{constructor(e=new Xi.BufferGeometry,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];yr(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(Jf(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=Zt.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else yr(s)&&s.needsTransformForDownstream===!0?(Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Sm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Zt.transformMeshSet(s.booleanMeshSetAddress,Sm),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Zt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Xi.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Zt.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,co(this),uo(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var wm=require("three");var Mo=class extends Nr(Wt(wm.Group),mn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Mo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};var Do=require("three");var zn=class extends Nr(Wt(Do.DirectionalLight),fn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new Do.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new zn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Do.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Do.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Do.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Kf(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};var ht=require("three");var Un=class extends Nr(Wt(ht.PointLight),hn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new ht.Box3(i,s),c=new ht.Box3Helper(a,new ht.Color(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new Un().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ht.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ht.Box3Helper&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof ht.Box3Helper){let o=this.shadow.camera,i=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};var Ot=require("three");var _m=new Ot.Vector3,Tm=new Ot.Vector3,Am=new Ot.Quaternion,jn=class extends Nr(Wt(Ot.SpotLight),ci){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=Ot.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Ot.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new jn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ot.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Tm.setFromMatrixPosition(this.matrixWorld),Am.setFromRotationMatrix(this.matrixWorld),_m.copy(this.up).applyQuaternion(Am).negate().multiplyScalar(this.distance),this.target.position.copy(Tm).add(_m),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Cm=n=>n.tagName==="VIDEO",kn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Cm(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];ym(s)&&kn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;Cm(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Ra=class extends lt{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&kn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Hn=class extends lt{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Fa=class extends Hn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var bt=require("three");var Lm=Mc(Pm());var _c;ba.then(n=>{_c=n});var Om=new bt.Matrix4,FS=new bt.Matrix4,VS=new bt.Matrix4,or=new bt.Box3,fo=new bt.Vector3,zS=new bt.Matrix4,US=new bt.Matrix4,Wn=class extends lt{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new bt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new bt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Ht.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Wn(i,s,a||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Ht.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,co(this),uo(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,lt.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Lm.SVD)(r),a=Om.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=FS.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),p=VS.copy(c).transpose();this.shearScale=zS.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=US.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,p),s.every(l=>Math.abs(s[0]-l)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new bt.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;or.setFromBufferAttribute(r),or.getCenter(o),e.boundingSphere.radius=o.distanceTo(or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(fo);let i={width:fo.x,height:fo.y,depth:fo.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;or.min.set(e[0],e[2],e[4]),or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(or.min.applyMatrix4(this.shearScaleInv),or.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new bt.Sphere);let o=r.boundingSphere.center;or.getCenter(o),r.boundingSphere.radius=o.distanceTo(or.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(fo);let i={width:fo.x,height:fo.y,depth:fo.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(_c.free_bvh(this.subdivPointer),_c.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Im(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Im(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Im(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Om.makeScale(t,e,r).invert().elements,a,c,p;for(var l=0,u=o.length;l<u;l+=3)o[l]*=t,o[l+1]*=e,o[l+2]*=r,a=i[l],c=i[l+1],p=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*p,i[l+1]=s[1]*a+s[5]*c+s[9]*p,i[l+2]=s[2]*a+s[6]*c+s[10]*p}var mo=require("three");function Mm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=mo.FrontSide:t.side===1?n.side=mo.BackSide:n.side=mo.DoubleSide)}function jS(n,t){if(Array.isArray(n.material))for(let e of n.material)Mm(e,t);else{let e=n.material;Mm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Dm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Wn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new mo.BufferGeometry:Sa(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Zs.is2DParametricMesh(o.userData.type)?r=new Ra(o,i):o?.userData.type==="VectorGeometry"?r=new Fn(o,i):t.geometry.type==="NonParametricGeometry"?r=new Fa(o,i):t.geometry.type==="BooleanGeometry"?(r=new Ga(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Hn(o,i),r.uuid=n,r.fromState(t,e)}return jS(r,t),r}var $t=require("three"),Bm=require("three/examples/jsm/loaders/FontLoader.js"),qe=class extends $t.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},c=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let p=qe.loadChar(e,o,a);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new $t.Vector2,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return qe._fontPath}static set FONTS_PATH(e){qe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new $t.Vector3(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=qe.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=qe.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=qe.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new qe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){qe.fontCache[e]?r(qe.fontCache[e]):new Bm.FontLoader().load(qe.FONTS_PATH+e+".json",s=>{qe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(qe.charCache[e]){if(qe.charCache[e][o]&&qe.charCache[e][o].fontFamily===r)return qe.charCache[e][o]}else qe.charCache[e]={};let i=qe.fontCache[r],s=i.generateShapes(e,1);return qe.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},qe.charCache[e][o]}},nr=qe;nr.charCache={},nr.fontCache={},nr._fontPath="/_assets/_fonts/";var Pr=require("three");var Tc=require("three"),za=new Tc.Vector2,Bo=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new Tc.Vector2(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){za.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(za),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),za.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(za),e)}clone(){let t=new Bo(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var Ac=class extends lt{constructor(e){super(e,new Pr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Pr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Pr.Object3D,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Pr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=va.create({parameters:{width:r.width,height:r.height}}),s=new Ac(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await nr.loadFont(o),r.text=e;let i=r.textOrigin,s=new Pr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Pr.DoubleSide}),a=e.split(`
1333
- `),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new Bo(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let f={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let h=new nr(f,m);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof nr&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=a,p.textOrigin.set(-.5*a,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<a.length;p+=1)for(let l=0;l<a[p].length;l+=1)i[s+1].addChar3D(a[p][l],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let c,p=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=p){s[a].containSpace()?c=s[a].getWord(0,1):c=s[a].popChar(0);for(let l=0;l<c.length;l+=1)c[l]&&s[a-1].addChar3D(c[l],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new Bo(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.visible=e}}}async updateFontFamily(e){await nr.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)a[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await nr.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let c=0;c<a.length;c++)i[s].message[c].updateChar(a[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Qe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},Eo=Ac;Eo.VerticalAlign=xl,Eo.HorizontalAlign=yl,Eo.TextTransform=vl;function Em(n,t,e){return t.type==="Mesh"?Dm(n,t,e):t.type==="TextFrame"?Eo.createFromState(n,t,e):t.type==="Empty"?Mo.createFromState(n,t):t.type==="PointLight"?Un.createFromState(n,t,e):t.type==="SpotLight"?jn.createFromState(n,t,e):t.type==="DirectionalLight"?zn.createFromState(n,t,e):sn.is(t.type)?zr.createFromState(n,t):(console.error(t),new Mo)}var Go=class extends Rt{};var Ur=require("three");function Gm(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,uo(n),co(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Rm(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),e}function Fm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Ur.Mesh&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gm(e,e.material[r])&&(t=!0);else Gm(e,e.material)&&(t=!0)}),t}function Vm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Ur.Mesh)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rm(e,e.material[r])&&(t=!0);else Rm(e,e.material)&&(t=!0)}),t}function zm(n){"material"in n&&HS(n.material),"geometry"in n&&n.geometry.dispose()}function HS(n){Dc(n).forEach(t=>{t instanceof Go||t.dispose()})}var WS=new Ur.Raycaster,qS=new Ur.Matrix4,$S=new Ur.Ray;function Um(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=qS.copy(o.matrixWorld).invert(),s=$S.copy(t.ray).applyMatrix4(i),a=n.matrixWorld;s.applyMatrix4(a);let c=WS;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var jm=new Ir.Vector3,Cc=class extends Aa(Ir.Scene){constructor(e,r){super();this.objectType="Scene";this.backupFog=new Ir.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.bgColor=new rt(1,1,1,1);this.entityByUuid={};this.ambientLight=new Ir.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,r),this.matrixAutoUpdate=!1}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Vm(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Fm(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Qe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof zr&&this.switchActiveCamera(o)}this.traverse(o=>{yr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{zm(e)});for(let e of this.children)br(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=zr.createFromState(Cc.PERSONAL_CAMERA_ID,{...ea.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)br(s)&&!s.raycastLock&&s.visible&&((gr(s)||_a(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),Um(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)br(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)br(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Qe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Yf(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Qe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=Em(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),yr(i)&&gr(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],p=this.find(a),l=c?p.recursiveBBox:p.singleBBox;r.push(...l.vertices)}let o=new Ir.Box3;return o.setFromPoints(r),o.getCenter(jm),jm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof lt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Rt&&e(r.material[o]);else r.material instanceof Rt&&e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ki=Cc;Ki.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var qm=Mc(km());var Hm=new Map;function Wm(n){if(typeof n=="string")return n;let t=Hm.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Hm.set(n,t)),t.url}var qn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Wm(t),format:"wav"},this.sound=new qm.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Qi=class{constructor(t,e={}){this.deletedMaterial=new Go(Yt.defaultTwoLayerData("basic"),this);this.deletedImage=new Oo(oa.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new Go(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);this.penumbraSize=t.penumbraSize}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new Rt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new Oo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new Rn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new ao(e.r,e.g,e.b,e.a):this.colors[t]=new ao(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new rt(0,0,0,0))}else return"a"in t?new rt(t.r,t.g,t.b,t.a):new rt(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof qn)return e;{let r=new qn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof qn&&e.dispose()}),this.audios={}}},Hj=new Qi(ra.emptyData());var $m=require("three/examples/jsm/loaders/DRACOLoader.js");var ho;function XS(){return ho||(ho=new $m.DRACOLoader,ho.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ho.decoderPending}async function YS(n){if(ho){let t={attributeIDs:ho.defaultAttributeIDs,attributeTypes:ho.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ho.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Xm(n,t){let[e,r]=tl($s.deserialize(new Uint8Array(n)));Ed(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 XS();for(let i of o){let s=await YS(Xt(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:p,itemSize:l})=>{a[c]={array:p,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var KS=require("three"),QS=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Ym(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}var Zi=require("three");function Km(n){let t=new Set;return n.traverse(e=>{if(gr(e))if(Fe(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(ZS(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Zi.Color,specularColor:new Zi.Color});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign({},Zi.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)}else o++,o<2&&(e.needsUpdate=!0)})}}else JS(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function ZS(n){return n.getLayersOfType("transmission").length>0}function JS(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function Qm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Zm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;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))}}t.push(r.name)}),n}var Jm=require("three/examples/jsm/utils/BufferGeometryUtils.js");function eh(n){let t=[];return n.traverse(e=>{e instanceof To&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(a=>{a.updateMatrix();let c=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Ym(c),c}),s=(0,Jm.mergeBufferGeometries)(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function th(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function rh(n){Object.values(n.shared.materials).forEach(t=>{Nc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Nc(e.material):"materials"in e&&e.materials.forEach(r=>{Nc(r)})})}function Nc(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var oh="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",ja=class extends ka.Loader{load(t,e,r,o=console.error){let i=new ka.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(oh+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(oh),i.load(t,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)}},r,o)}async parse(t){let e=await Xm(t,rh),r=new Qi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ki(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Xf(s)&&Object.assign(s,{makeDefault:!0})}return o=eh(o),o=Km(o),o=Qm(o),o=Zm(o),o=th(o),o}};
1332
+ }`,[Lt.simplex,e,o,a])}}();var bg=require("three");function xg(r,t,e){r.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Vl=class extends wi{constructor(e,n){super(new bg.Matrix3);this.repeat=e;this.offset=n;xg(this.value,e,n)}updateMatrix(){xg(this.value,this.repeat,this.offset)}};var $r=class{constructor(t,e,n,o){this.id=t;this.uuid=e;this.data=n;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in n)ju(i,this,n)}get type(){return this.data.type}static create(t,e,n,o){if(n.type==="light")return Kr.createLigherLayer(t,e,n,o);if(n.type==="texture"){let i=o.image(n.texture.image),a=new za(i,n.texture.wrapping),s=new Ul(i),l=new Vl(n.texture.repeat,n.texture.offset),u=new J(n.crop?1:0),c=new Ae(n.projection??0),p=new Ae(["x","y","z"].indexOf(n.axis)??0),f=new Ae(n.side??0),d=new xt(n.size?new ze.Vector2(n.size[0],n.size[1]):new ze.Vector2(100,100)),h=new J(n.alpha??1),m=new Ae(n.mode??0),g=new Ma(a,s,u,c,p,f,d,l,h,m),v=new Pe(g.calpha,"f");return new ft(t,e,n,{texture:a,textureSize:s,crop:u,projection:c,axis:p,side:f,size:d,mat:l,alpha:h,mode:m},g,m,v)}else if(n.type==="matcap"){let i=o.image(n.texture.image),a=new za(i,n.texture.wrapping),s=new J(n.alpha??1),l=new Ae(n.mode??0),u=new Va(a,s,l),c=new Pe(u.calpha,"f");return new ft(t,e,n,{texture:a,alpha:s,mode:l},u,l,c)}else if(n.type==="displace")if(n.displacementType==="noise"){let i=new At(new ze.Vector3(...n.offset)),a=new J(n.scale??10),s=new J(n.intensity??8),l=new J(n.movement??1),u=new Ae(n.noiseType??0),c=new Na(s,l,i,a,u);return new Ha(t,e,n,{offset:i,scale:a,intensity:s,movement:l,noiseType:u},c)}else throw new Error;else return RC(t,e,n,o)}updateByOp(t,e,n){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:yg(o.props,n,this,e)}else if(o.path[0]==="texture")return"texture"in e?zu(o.props,n,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let n=`f${this.id}_${t}`;this.hasValueByKey(n)&&e!==void 0&&(this.uniforms[n].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let n=/f\d+_(.*)/.exec(t);if(n&&n.length>1)return n[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let n=this.getName(e);n&&t.push(n)}return t}},ft=class extends $r{constructor(e,n,o,i,a,s,l){super(e,n,o,i);this.color=a;this.mode=s;this.alpha=l}},Ha=class extends $r{constructor(e,n,o,i,a){super(e,n,o,i);this.position=a}},Kr=class extends $r{constructor(e,n,o,i,a){super(e,n,o,a);this.data=o;this.node=i}static createLigherLayer(e,n,o,i){let a,s=new J(o.alpha),l=new Ae(o.mode),u;if(o.category==="lambert"){a=new Fa;let c=new Ee(i.color(o.emissive)??0);u={emissive:c},a.emissive=c}else if(o.category==="phong"){a=new Gl;let c=new J(o.shininess??30),p=new Ee(i.color(o.specular)??1118481);u={shininess:c,specular:p},a.shininess=c,a.specular=p}else if(o.category==="toon"){a=new Ga;let c=new J(o.shininess??30),p=new Ee(i.color(o.specular)??1118481);u={shininess:c,specular:p},a.shininess=c,a.specular=p}else if(o.category==="physical"){a=new Ra;let c=new J(o.roughness??.3),p=new J(o.metalness??0),f=new J(o.reflectivity??.5);u={roughness:c,metalness:p,reflectivity:f},a.roughness=c,a.metalness=p,a.reflectivity=f}else a=new xo,u={};return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,new Kr(e,n,o,a,u)}};function Sg(r){let t=r instanceof $r?r.type:r;return t==="texture"||t==="displace_map"||t==="matcap"}function FC(r,t,e,n){switch(r.type){case"color":{let o=new Ee(n.color??5855577),i=new J(n.alpha??1),a=new Pe("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");a.keywords.alpha=i;let s=new Ae(n.mode??0);return o.alpha=i,new ft(t,e,r,{color:o,alpha:i,mode:s},o,s,a)}case"fresnel":{let o=new Ee(n.color??16777215),i=new J(n.bias??.1),a=new J(n.scale??1),s=new J(n.intensity??2),l=new J(n.factor??1),u=new J(n.alpha??1),c=new Ae(n.mode??0),p=new Ca(o,i,a,s,l,u,c),f=new Pe(p.calpha,"f");return new ft(t,e,r,{color:o,bias:i,scale:a,intensity:s,factor:l,alpha:u,mode:c},p,c,f)}case"rainbow":{let o=new J(n.filmThickness??30),i=new J(n.movement??0),a=new At(n.wavelengths??new ze.Vector3(0,0,0)),s=new J(n.noiseStrength??0),l=new J(n.noiseScale??1),u=new At(n.offset??new ze.Vector3(0,0,0)),c=new J(n.alpha??1),p=new Aa(o,i,a,s,l,u,c),f=new Pe(p.calpha,"f"),d=new Ae(n.mode??0);return new ft(t,e,r,{filmThickness:o,movement:i,wavelengths:a,noiseStrength:s,noiseScale:l,offset:u,alpha:c,mode:d},p,d,f)}case"transmission":{let o=new J(n.thickness??10),i=new J(n.ior??1.5),a=new J(n.roughness??.5),s=_t.transmissionSize,l=_t.transmissionRenderTarget,u=_t.transmissionRenderTargetDepth,c=window.innerWidth,p=window.innerHeight,f=c>=p?new xt(p/c,1):new xt(1,c/p),d=new J(n.alpha??1),h=new Ia(o,i,a,s,l,u,f,d),m=new Pe(h.calpha,"f"),g=new Ae(n.mode??0);return new ft(t,e,r,{thickness:o,ior:i,roughness:a,aspectRatio:f,alpha:d,mode:g},h,g,m)}case"toon":{let o=new Ae(n.positioning??0),i;n.colors?i=new wr(n.colors.length,n.colors):(i=new wr(10,new ze.Vector4(0,0,0,1)),i.value[1]=new ze.Vector4(1,1,1,1));let a;n.steps?a=new Sr(n.steps.length,n.steps):(a=new Sr(10,1),a.value[0]=0);let s=new At(n.source??new ze.Vector3(0,0,0)),l=new Vn(n.isWorldSpace??!0),u=new J(n.noiseStrength??0),c=new J(n.noiseScale??1),p=new pr(n.shadowColor),f=new At(n.offset??new ze.Vector3(0,0,0)),d=new J(n.alpha??1),h=new ja(o,i,a,s,l,u,c,p,f,d),m=new Pe(h.calpha,"f"),g=new Ae(n.mode??0);return new ft(t,e,r,{positioning:o,colors:i,steps:a,source:s,isWorldSpace:l,noiseStrength:u,noiseScale:c,shadowColor:p,offset:f,alpha:d,mode:g},h,g,m)}case"outline":{let o=new Ee(n.outlineColor??16777215),i=new Ee(n.contourColor??16777215),a=new J(n.outlineWidth??.1),s=new J(n.contourWidth??.1),l=new J(n.outlineThreshold??.1),u=new J(n.contourThreshold??.1),c=new J(n.outlineSmoothing??.1),p=new J(n.contourFrequency??.1),f=new At(n.contourDirections??new ze.Vector3(0,1,0)),d=new Vn(n.positionalLines??!1),h=new Vn(n.compensation??!0),m=_t.normalRenderTarget,g=_t.normalRenderTargetDepth,v=_t.pixelRatioNode,x=_t.resolution,S=new J(n.alpha??1),w=new _a(o,i,a,s,l,u,c,p,f,d,h,x,m,g,v,S),b=new Pe(w.calpha,"f"),_=new Ae(n.mode??0);return new ft(t,e,r,{outlineColor:o,contourColor:i,outlineWidth:a,contourWidth:s,outlineThreshold:l,contourThreshold:u,outlineSmoothing:c,contourFrequency:p,contourDirection:f,positionalLines:d,compensation:h,alpha:S,mode:_},w,_,b)}case"depth":{let o=new Ae(n.gradientType??0),i=new Vn(n.smooth??!1),a=new J(n.near??50),s=new J(n.far??200),l=new J(n.isVector??1),u=new J(n.isWorldSpace??0),c=new At(n.origin??new ze.Vector3),p=new At(n.direction??new ze.Vector3),f;n.colors?f=new wr(n.colors.length,n.colors):(f=new wr(2,new ze.Vector4(0,0,0,1)),f.value[1]=new ze.Vector4(1,1,1,1));let d;n.steps?d=new Sr(n.steps.length,n.steps):(d=new Sr(2,1),d.value[0]=0);let h=new J(n.alpha??1),m=new Ae(n.mode??0),g=new Oa(o,i,a,s,l,u,c,p,f,d,h),v=new Pe(g.calpha,"f");return new ft(t,e,r,{gradientType:o,smooth:i,near:a,far:s,isVector:l,isWorldSpace:u,origin:c,direction:p,colors:f,steps:d,alpha:h,mode:m},g,m,v)}case"noise":{let o=new J(n.scale??1),i=new At(n.size??new ze.Vector3(100,100,100)),a=new J(n.move??1),s=new xt(n.fA??new ze.Vector2(1.7,9.2)),l=new xt(n.fB??new ze.Vector2(8.3,2.8)),u=new xt(n.distortion??new ze.Vector2(1,1)),c=new pr(n.colorA),p=new pr(n.colorB),f=new pr(n.colorC),d=new pr(n.colorD),h=new J(n.alpha??1),m=new Ae(n.mode??0),g=new Ae(n.noiseType??0),v=new wa(o,i,a,s,l,u,c,p,f,d,h,g),x=new Pe(v.calpha,"f");return new ft(t,e,r,{scale:o,size:i,move:a,fA:s,fB:l,distortion:u,colorA:c,colorB:p,colorC:f,colorD:d,alpha:h,mode:m,noiseType:g},v,m,x)}case"normal":{let o=new At(n.cnormal??new ze.Vector3(1,1,1)),i=new J(n.alpha??1),a=new Ae(n.mode??0),s=new Da(o,i),l=new Pe("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return l.keywords.alpha=i,new ft(t,e,r,{cnormal:o,alpha:i,mode:a},s,a,l)}case"gradient":{let o=new Ae(n.gradientType??0),i=new Vn(n.smooth??!1),a;n.colors?a=new wr(n.colors.length,n.colors):(a=new wr(10,new ze.Vector4(0,0,0,1)),a.value[1]=new ze.Vector4(1,1,1,1));let s;n.steps?s=new Sr(n.steps.length,n.steps):(s=new Sr(10,1),s.value[0]=0);let l=new xt(n.offset??new ze.Vector2(0,0)),u=new xt(n.morph??new ze.Vector2(0,0)),c=new J(n.angle??0),p=new J(n.alpha??1),f=new Ae(n.mode??0),d=new Pa(o,i,a,s,l,u,c,p),h=new Pe(d.calpha,"f");return new ft(t,e,r,{gradientType:o,smooth:i,colors:a,steps:s,offset:l,morph:u,angle:c,alpha:p,mode:f},d,f,h)}default:{let o=new Ee(1,0,0,1),i=new J(1),a=new Pe("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");a.keywords.alpha=i;let s=new Ae(0);return o.alpha=i,new ft(t,e,r,{color:o,alpha:i,mode:s},o,s,a)}}}function RC(r,t,e,n){let o=fg(e,n);return FC(e,r,t,o)}function ju(r,t,e){if(e.type==="displace"&&(r==="intensity"||r==="visible")){let n=t.uniforms[`f${t.id}_intensity`];return n?(n.value=e.intensity*(e.visible?1:0),n):void 0}if(e.type!=="displace"&&(r==="alpha"||r==="visible")){let n=t.uniforms[`f${t.id}_alpha`];if(!n)return;if(n.value=e.alpha*(e.visible?1:0),e.type==="outline"&&r=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return n}}var Qt=class extends zl.ShaderMaterial{constructor(e,n){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.transparent=!0,this.reset(e,n)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,n){let o=e.layers??Zt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>$r.create(this.layerIdGen++,i.id,i.data,n)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(n)}getLayersOfType(e){return this.layers.filter(n=>n.type===e)}getLayerByUuid(e){return this.layers.find(n=>n.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(n=>n instanceof Kr),this.lightLayer===void 0&&(this.lightLayer=new Kr(0,"",Dn.defaultData("light","basic"),new xo,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,n,o){if(this.data=n,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let a=$r.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,a)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let a=this.layers.findIndex(l=>l.uuid===e.id),s=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,s)}this.layers.reverse(),this.onUpdate(o)}else{let a=this.layers.find(s=>s.uuid===i);if(a){let s=n.layers.data(i);if(a.updateByOp({...e,path:e.path.slice(2)},s,o)){let u=$r.create(this.layerIdGen++,i,s,o);this.layers.splice(this.layers.findIndex(c=>c.uuid===i),1,u),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ft),n=this.layers.findIndex(o=>o instanceof Kr);if(e!==-1&&e<n){let o=this.layers[e].color;for(let i=e+1;i<n;++i){let a=this.layers[i];a instanceof ft&&(o=new La(o,a.color,a.alpha,a.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Pe("outgoingLight","f"),n=this.layers.findIndex(o=>o instanceof Kr);if(this.layers.length>n+1){for(let o=n+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ft&&(e=new La(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(n=>n instanceof Ha);if(e.length>0){let n=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(n=new Ht(n,e[o].position,Ht.ADD),n=new Ht(n,new J(.5).setReadonly(!0),Ht.MUL));this.fragment.position=n}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,n){this.build({renderer:n}),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,n){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let a=o(i.uniforms[`f${i.id}_intensity`].value,e,n);i.uniforms[`f${i.id}_intensity`].value=a}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){let e="[";for(let{data:n}of this.data.layers)if(n.type==="light")e+=`"${n.category.toUpperCase()}",`;else{let o=(Uu[n.type]??[]).map(s=>n[s]),i=(Vu[n.type]??[]).map(s=>n[s]?.length??0),a=[...o,...i];a.length?e+=`["${n.type}", "${a.join('","')}"],`:e+=`"${n.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let n=0;n<this.updaters.length;++n)e.updateNode(this.updaters[n])}build(e){e=e??{};let n=e.builder??new Rl;return this.lights=this.lightLayer.data.category!=="basic",n.setMaterial(this,e.renderer),n.build(this.fragment,this.fragment),this.vertexShader=n.getCode("vertex"),this.fragmentShader=n.getCode("fragment"),this.defines=n.defines,this.uniforms=n.uniforms,this.extensions=n.extensions,this.updaters=n.updaters,this.transparent=n.requires.transparent||this.blending>zl.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Qt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(r){r===!0&&this.version++,this.needsCompile=r},get:function(){return this.needsCompile}}});var Jt=require("three");function kC(r){if(r.geometry.attributes.extrudeNormal||!r.geometry.attributes.position)return;let t=new Map,e=r.geometry.attributes.position.array,n=r.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let a=`${e[i]}_${e[i+1]}_${e[i+2]}`,s=new Jt.Vector3(n[i],n[i+1],n[i+2]);t.has(a)?t.get(a)?.normals.push(s):t.set(a,{normals:[s],result:new Jt.Vector3})}t.forEach((i,a)=>{for(let s of i.normals)i.result.add(s);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let a=`${e[i]}_${e[i+1]}_${e[i+2]}`,s=t.get(a)?.result;s&&(o[i]=s.x,o[i+1]=s.y,o[i+2]=s.z)}r.geometry.setAttribute("extrudeNormal",new Jt.Float32BufferAttribute(o,3))}function GC(r){if(r.geometry.attributes.extrudeNormals||!r.geometry.attributes.position)return;let t=r.geometry.attributes.position.array,e=new Float32Array(t.length),n=new Jt.Vector3;for(let o=0;o<t.length;o+=3)n.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=n.x,e[o+1]=n.y,e[o+2]=n.z;r.geometry.setAttribute("extrudeNormal",new Jt.Float32BufferAttribute(e,3))}function Zr(r){if(Array.isArray(r.material)){for(let t of r.material)if(t.getLayersOfType("outline").length===0)return}else if(!(r.material instanceof Qt)||r.material.getLayersOfType("outline").length===0)return;r.objectType==="Mesh2D"||r.objectType==="TextFrame"&&r.data?.geometry?.depth===0?GC(r):kC(r)}function Qr(r){if(!r.geometry.attributes.position)return;let t=r.geometry.attributes.position.array,e=new Float32Array(t.length),n=parseInt(r.uuid.replace(/\D/g,"")),o=[Jt.MathUtils.seededRandom(n),Jt.MathUtils.seededRandom(n+1e4),Jt.MathUtils.seededRandom(n+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];r.geometry.setAttribute("randomColor",new Jt.BufferAttribute(e,3))}var St=class extends ur(jl.Mesh){constructor(e,n){super(e,n);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new jl.Matrix4;this.booleanExclude=null;Array.isArray(n)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e,n){let o=this.geometry,i=Su[o.userData.type],a=this.objectType==="NonParametric"?Object.assign({},o.userData,{geometry:o}):o.userData,s=i.build(i.normalizeInputs(e,a)),l=o.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=l,this.geometry.computeBoundingSphere(),Zr(this),o.getAttribute("randomColor")&&Qr(this)}clone(e){let n=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=ga(n),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,n=!0){return super.copy(e,n),e.cloner&&(this.cloner=new po(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new po(this)),this.cloner.fromClonerState(e))}fromState(e,n){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(yr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),jr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)zr(e)&&(e.freeBooleanPointer(),jr(e)&&e.invalidateUpstreamBooleanData())}};var UC=new Hn.Vector3(0,0,1),wg=new Hn.Vector3,Tg=new Hn.Vector3,Cg=new Hn.Matrix3,Ii=class extends St{constructor(e=Ct.create({}),n){super(e,n);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Hn.EventDispatcher;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e,n){if(super.updateGeometry(e,n),"userData"in this.geometry){let o=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:o})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,n){super.updateWorldMatrix(e,n),Cg.getNormalMatrix(this.matrixWorld),wg.copy(UC).applyMatrix3(Cg).normalize(),Tg.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(wg,Tg)}clone(e){let n=this.shape.clone(),o=this.material,i=this.geometry.userData,a=Ct.create(Object.assign({},i,{shape:n})),s=new Ii(a,o).copy(this,e);return s.shape=n,n.update(),s}raycast(e,n){St.prototype.raycast.call(this,e,n)}};var Jr=(r,t)=>class extends r{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let a=this;o.color!==void 0&&(a.color=yt(o.color,i)),o.intensity!==void 0&&(a.intensity=o.intensity),o.depth!==void 0&&(a.shadow.camera.far=o.depth,a.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var Oi=new qe.Vector3,qu=new qe.Vector3,gn=class extends Jr(ur(qe.Camera),gl){constructor(e=window.innerWidth,n=window.innerHeight,o=45,i,a=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=oo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=n,this.orthoCamera=new qe.OrthographicCamera(e*-.5,e*.5,n*.5,n*-.5,i??-5e4,a),this.perspCamera=new qe.PerspectiveCamera(o,e/n,i??50,a),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.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,n){let o=new gn().fromState(n);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,n){e==="PerspectiveCamera"?this.perspCamera.near=n:this.orthoCamera.near=n}setZoom(e,n){n>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=n:this.orthoCamera.zoom=n)}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){super.lookAt(e),this.getWorldPosition(Oi),this.targetOffset=Oi.distanceTo(e)}getTarget(e=new qe.Vector3){return this.getWorldDirection(qu),this.getWorldPosition(Oi),qu.multiplyScalar(this.targetOffset),e.copy(Oi).add(qu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Oi),Oi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new qe.Quaternion),n=new qe.Vector3(0,0,1).applyQuaternion(e),o=new qe.Vector3().copy(qe.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new qe.Vector3().copy(qe.Object3D.DefaultUp).projectOnPlane(n),a=new qe.Vector3().crossVectors(i,o).dot(n)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*a}getViewFrontToObject(e){let n=e.getWorldPosition(new qe.Vector3),i=e.getWorldDirection(new qe.Vector3).multiplyScalar(this.targetOffset);return{position:n.clone().add(i),target:n}}getViewToObject(e){let n=e.getWorldPosition(new qe.Vector3),i=this.getWorldDirection(new qe.Vector3).multiplyScalar(this.targetOffset);return{position:n.clone().sub(i),target:n}}setViewplaneSize(e,n){this.left=-e*.5,this.right=e*.5,this.top=n*.5,this.bottom=-n*.5,this.aspect=e/n,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,n,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,n,o,i,a,s):this.orthoCamera.setViewOffset(e,n,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,n){super.updateWorldMatrix(e,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,n){return super.copy(e,n),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 n={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 $o(n,e)}fromCameraState(e){let{orthographic:n,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),n!==void 0&&(n.near!==void 0&&(this.orthoCamera.near=n.near),n.zoom!==void 0&&(this.orthoCamera.zoom=n.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.zoom),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(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};var Wa=require("three");var Ag=new Wa.Matrix4;var Hl=class extends St{constructor(e=new Wa.BufferGeometry,n){super(e,n);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e,n=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];jr(a)&&a.recomputeBoolean(e===!0,n)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(ng(a)&&a.booleanExclude===!1&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=yr.getMeshSet(a.geometry,e===!0,n)),a.booleanMeshSetAddress===-1)return;yr.transformMeshSet(a.booleanMeshSetAddress,a.matrix),a.booleanMatrixInvOld.copy(a.matrix).invert(),a.booleanWasTransformed=!1}else jr(a)&&a.needsTransformForDownstream===!0?(yr.transformMeshSet(a.booleanMeshSetAddress,a.matrix),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Ag.multiplyMatrices(a.matrix,a.booleanMatrixInvOld),yr.transformMeshSet(a.booleanMeshSetAddress,Ag),a.booleanMatrixInvOld.copy(a.matrix).invert(),a.booleanWasTransformed=!1);this.meshSetAddresses.push(a.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return yr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Wa.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=yr.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,Zr(this),Qr(this)}updateGeometry(e,n){let o=e.parameters;o.operation!==void 0&&(this.booleanOp=o.operation),o.phongAngle!==void 0&&(this.phongAngle=o.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var _g=require("three");var So=class extends Jr(ur(_g.Group),oi){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,n){let o=new So().fromState(n);return o.uuid=e,o.objectHelper.update(),o}};var wo=require("three");var Li=class extends Jr(ur(wo.DirectionalLight),ni){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new wo.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,n,o){let i=new Li().fromState(n,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof wo.CameraHelper&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof wo.CameraHelper&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let n=this._gizmos[e];n instanceof wo.CameraHelper&&n.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,n){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,n),e.size!==void 0&&eg(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,n){return super.fromState(e),this.fromDirectionalLightState(e,n),this}};var Nt=require("three");var Ni=class extends Jr(ur(Nt.PointLight),ii){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new Nt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),a=new Nt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),s=new Nt.Box3(i,a),l=new Nt.Box3Helper(s,new Nt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,n,o){let i=new Ni().fromState(n,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Nt.Box3Helper&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Nt.Box3Helper&&(n.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let n=this._gizmos[e];if(n instanceof Nt.Box3Helper){let o=this.shadow.camera,i=new Nt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),a=new Nt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);n.box.set(i,a),n.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,n){return super.fromLightState(e,n),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,n){return super.fromState(e),this.fromPointLightState(e,n),this}};var qt=require("three");var Ig=new qt.Vector3,Og=new qt.Vector3,Lg=new qt.Quaternion,Pi=class extends Jr(ur(qt.SpotLight),aa){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=qt.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new qt.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,n,o){let i=new Pi().fromState(n,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof qt.CameraHelper&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof qt.CameraHelper&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let n=this._gizmos[e];n instanceof qt.CameraHelper&&n.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Og.setFromMatrixPosition(this.matrixWorld),Lg.setFromRotationMatrix(this.matrixWorld),Ig.copy(this.up).applyQuaternion(Lg).negate().multiplyScalar(this.distance),this.target.position.copy(Og).add(Ig),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,n){return super.fromLightState(e,n),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,n){return super.fromState(e),this.fromSpotLightState(e,n),this}};var Ng=r=>r.tagName==="VIDEO",Mi=class{static resize(t,e,n){let o=t/e,i;if(!n.image)return;let a=n.image;Ng(a)?i=a.videoWidth/a.videoHeight:i=a.width/a.height,o>i&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*i/o):n.repeat.set(1,1*i/o)),o<i&&(n.imageType=="WEBCAM"?n.repeat.set(1*o/i*-1,1):n.repeat.set(1*o/i,1)),o==i&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1))}static resizeTextureLayer(t,e,n){let o=t/e,i=n.image!==void 0?n.image.width/n.image.height:1,a;o>i?a={x:1,y:i/o}:o<i?a={x:o/i,y:1}:a={x:1,y:1},n.repeat.set(a.x,a.y),n.updateMatrix()}static resizeTextureLayers(t,e,n){let o=n.layers;for(let i=0;i<o.length;i++){let a=o[i];Sg(a)&&Mi.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value)}}static resizeComplex(t,e,n,o){let i=t/e,a,s=n.image;Ng(s)?a=s.videoWidth/s.videoHeight:a=s.width/s.height,o.geometry.type.includes("Shape")?(i>a&&(n.imageType=="WEBCAM"?n.repeat.set(1/t*-1,1/e*a/i):n.repeat.set(1/t,1/e*a/i)),i<a&&(n.imageType=="WEBCAM"?n.repeat.set(1/t*i/a*-1,1/e):n.repeat.set(1/t*i/a,1/e)),i==a&&(n.imageType=="WEBCAM"?n.repeat.set(1/t*-1,1/e):n.repeat.set(1/t,1/e))):(i>a&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*a/i):n.repeat.set(1,1*a/i)),i<a&&(n.imageType=="WEBCAM"?n.repeat.set(1*i/a*-1,1):n.repeat.set(1*i/a,1)),i==a&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1)))}};var Wl=class extends St{constructor(e,n){super(e,n);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e,n){super.updateGeometry(e,n),this.material.layers&&Mi.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Ei=class extends St{constructor(e,n){super(e,n);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var ql=class extends Ei{constructor(e,n){super(e,n);this.objectType="NonParametric"}};String.prototype.codePointAt||function(){var r=function(){try{var e={},n=Object.defineProperty,o=n(e,e,e)&&n}catch{}return o}(),t=function(e){if(this==null)throw TypeError();var n=String(this),o=n.length,i=e?Number(e):0;if(i!=i&&(i=0),!(i<0||i>=o)){var a=n.charCodeAt(i),s;return a>=55296&&a<=56319&&o>i+1&&(s=n.charCodeAt(i+1),s>=56320&&s<=57343)?(a-55296)*1024+s-56320+65536:a}};r?r(String.prototype,"codePointAt",{value:t,configurable:!0,writable:!0}):String.prototype.codePointAt=t}();var fp=0,gy=-3;function $a(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function VC(r,t){this.source=r,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new $a,this.dtree=new $a}var yy=new $a,vy=new $a,dp=new Uint8Array(30),hp=new Uint16Array(30),xy=new Uint8Array(30),by=new Uint16Array(30),zC=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pg=new $a,en=new Uint8Array(288+32);function Sy(r,t,e,n){var o,i;for(o=0;o<e;++o)r[o]=0;for(o=0;o<30-e;++o)r[o+e]=o/e|0;for(i=n,o=0;o<30;++o)t[o]=i,i+=1<<r[o]}function jC(r,t){var e;for(e=0;e<7;++e)r.table[e]=0;for(r.table[7]=24,r.table[8]=152,r.table[9]=112,e=0;e<24;++e)r.trans[e]=256+e;for(e=0;e<144;++e)r.trans[24+e]=e;for(e=0;e<8;++e)r.trans[24+144+e]=280+e;for(e=0;e<112;++e)r.trans[24+144+8+e]=144+e;for(e=0;e<5;++e)t.table[e]=0;for(t.table[5]=32,e=0;e<32;++e)t.trans[e]=e}var Mg=new Uint16Array(16);function Yu(r,t,e,n){var o,i;for(o=0;o<16;++o)r.table[o]=0;for(o=0;o<n;++o)r.table[t[e+o]]++;for(r.table[0]=0,i=0,o=0;o<16;++o)Mg[o]=i,i+=r.table[o];for(o=0;o<n;++o)t[e+o]&&(r.trans[Mg[t[e+o]]++]=o)}function HC(r){r.bitcount--||(r.tag=r.source[r.sourceIndex++],r.bitcount=7);var t=r.tag&1;return r.tag>>>=1,t}function tn(r,t,e){if(!t)return e;for(;r.bitcount<24;)r.tag|=r.source[r.sourceIndex++]<<r.bitcount,r.bitcount+=8;var n=r.tag&65535>>>16-t;return r.tag>>>=t,r.bitcount-=t,n+e}function np(r,t){for(;r.bitcount<24;)r.tag|=r.source[r.sourceIndex++]<<r.bitcount,r.bitcount+=8;var e=0,n=0,o=0,i=r.tag;do n=2*n+(i&1),i>>>=1,++o,e+=t.table[o],n-=t.table[o];while(n>=0);return r.tag=i,r.bitcount-=o,t.trans[e+n]}function WC(r,t,e){var n,o,i,a,s,l;for(n=tn(r,5,257),o=tn(r,5,1),i=tn(r,4,4),a=0;a<19;++a)en[a]=0;for(a=0;a<i;++a){var u=tn(r,3,0);en[zC[a]]=u}for(Yu(Pg,en,0,19),s=0;s<n+o;){var c=np(r,Pg);switch(c){case 16:var p=en[s-1];for(l=tn(r,2,3);l;--l)en[s++]=p;break;case 17:for(l=tn(r,3,3);l;--l)en[s++]=0;break;case 18:for(l=tn(r,7,11);l;--l)en[s++]=0;break;default:en[s++]=c;break}}Yu(t,en,0,n),Yu(e,en,n,o)}function Eg(r,t,e){for(;;){var n=np(r,t);if(n===256)return fp;if(n<256)r.dest[r.destLen++]=n;else{var o,i,a,s;for(n-=257,o=tn(r,dp[n],hp[n]),i=np(r,e),a=r.destLen-tn(r,xy[i],by[i]),s=a;s<a+o;++s)r.dest[r.destLen++]=r.dest[s]}}}function qC(r){for(var t,e,n;r.bitcount>8;)r.sourceIndex--,r.bitcount-=8;if(t=r.source[r.sourceIndex+1],t=256*t+r.source[r.sourceIndex],e=r.source[r.sourceIndex+3],e=256*e+r.source[r.sourceIndex+2],t!==(~e&65535))return gy;for(r.sourceIndex+=4,n=t;n;--n)r.dest[r.destLen++]=r.source[r.sourceIndex++];return r.bitcount=0,fp}function XC(r,t){var e=new VC(r,t),n,o,i;do{switch(n=HC(e),o=tn(e,2,0),o){case 0:i=qC(e);break;case 1:i=Eg(e,yy,vy);break;case 2:WC(e,e.ltree,e.dtree),i=Eg(e,e.ltree,e.dtree);break;default:i=gy}if(i!==fp)throw new Error("Data error")}while(!n);return e.destLen<e.dest.length?typeof e.dest.slice=="function"?e.dest.slice(0,e.destLen):e.dest.subarray(0,e.destLen):e.dest}jC(yy,vy);Sy(dp,hp,4,3);Sy(xy,by,2,1);dp[28]=0;hp[28]=258;var YC=XC;function Di(r,t,e,n,o){return Math.pow(1-o,3)*r+3*Math.pow(1-o,2)*o*t+3*(1-o)*Math.pow(o,2)*e+Math.pow(o,3)*n}function Zn(){this.x1=Number.NaN,this.y1=Number.NaN,this.x2=Number.NaN,this.y2=Number.NaN}Zn.prototype.isEmpty=function(){return isNaN(this.x1)||isNaN(this.y1)||isNaN(this.x2)||isNaN(this.y2)};Zn.prototype.addPoint=function(r,t){typeof r=="number"&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=r,this.x2=r),r<this.x1&&(this.x1=r),r>this.x2&&(this.x2=r)),typeof t=="number"&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),t<this.y1&&(this.y1=t),t>this.y2&&(this.y2=t))};Zn.prototype.addX=function(r){this.addPoint(r,null)};Zn.prototype.addY=function(r){this.addPoint(null,r)};Zn.prototype.addBezier=function(r,t,e,n,o,i,a,s){var l=[r,t],u=[e,n],c=[o,i],p=[a,s];this.addPoint(r,t),this.addPoint(a,s);for(var f=0;f<=1;f++){var d=6*l[f]-12*u[f]+6*c[f],h=-3*l[f]+9*u[f]-9*c[f]+3*p[f],m=3*u[f]-3*l[f];if(h===0){if(d===0)continue;var g=-m/d;0<g&&g<1&&(f===0&&this.addX(Di(l[f],u[f],c[f],p[f],g)),f===1&&this.addY(Di(l[f],u[f],c[f],p[f],g)));continue}var v=Math.pow(d,2)-4*m*h;if(!(v<0)){var x=(-d+Math.sqrt(v))/(2*h);0<x&&x<1&&(f===0&&this.addX(Di(l[f],u[f],c[f],p[f],x)),f===1&&this.addY(Di(l[f],u[f],c[f],p[f],x)));var S=(-d-Math.sqrt(v))/(2*h);0<S&&S<1&&(f===0&&this.addX(Di(l[f],u[f],c[f],p[f],S)),f===1&&this.addY(Di(l[f],u[f],c[f],p[f],S)))}}};Zn.prototype.addQuad=function(r,t,e,n,o,i){var a=r+.6666666666666666*(e-r),s=t+2/3*(n-t),l=a+1/3*(o-r),u=s+1/3*(i-t);this.addBezier(r,t,a,s,l,u,o,i)};function dt(){this.commands=[],this.fill="black",this.stroke=null,this.strokeWidth=1}dt.prototype.moveTo=function(r,t){this.commands.push({type:"M",x:r,y:t})};dt.prototype.lineTo=function(r,t){this.commands.push({type:"L",x:r,y:t})};dt.prototype.curveTo=dt.prototype.bezierCurveTo=function(r,t,e,n,o,i){this.commands.push({type:"C",x1:r,y1:t,x2:e,y2:n,x:o,y:i})};dt.prototype.quadTo=dt.prototype.quadraticCurveTo=function(r,t,e,n){this.commands.push({type:"Q",x1:r,y1:t,x:e,y:n})};dt.prototype.close=dt.prototype.closePath=function(){this.commands.push({type:"Z"})};dt.prototype.extend=function(r){if(r.commands)r=r.commands;else if(r instanceof Zn){var t=r;this.moveTo(t.x1,t.y1),this.lineTo(t.x2,t.y1),this.lineTo(t.x2,t.y2),this.lineTo(t.x1,t.y2),this.close();return}Array.prototype.push.apply(this.commands,r)};dt.prototype.getBoundingBox=function(){for(var r=new Zn,t=0,e=0,n=0,o=0,i=0;i<this.commands.length;i++){var a=this.commands[i];switch(a.type){case"M":r.addPoint(a.x,a.y),t=n=a.x,e=o=a.y;break;case"L":r.addPoint(a.x,a.y),n=a.x,o=a.y;break;case"Q":r.addQuad(n,o,a.x1,a.y1,a.x,a.y),n=a.x,o=a.y;break;case"C":r.addBezier(n,o,a.x1,a.y1,a.x2,a.y2,a.x,a.y),n=a.x,o=a.y;break;case"Z":n=t,o=e;break;default:throw new Error("Unexpected path command "+a.type)}}return r.isEmpty()&&r.addPoint(0,0),r};dt.prototype.draw=function(r){r.beginPath();for(var t=0;t<this.commands.length;t+=1){var e=this.commands[t];e.type==="M"?r.moveTo(e.x,e.y):e.type==="L"?r.lineTo(e.x,e.y):e.type==="C"?r.bezierCurveTo(e.x1,e.y1,e.x2,e.y2,e.x,e.y):e.type==="Q"?r.quadraticCurveTo(e.x1,e.y1,e.x,e.y):e.type==="Z"&&r.closePath()}this.fill&&(r.fillStyle=this.fill,r.fill()),this.stroke&&(r.strokeStyle=this.stroke,r.lineWidth=this.strokeWidth,r.stroke())};dt.prototype.toPathData=function(r){r=r!==void 0?r:2;function t(a){return Math.round(a)===a?""+Math.round(a):a.toFixed(r)}function e(){for(var a=arguments,s="",l=0;l<arguments.length;l+=1){var u=a[l];u>=0&&l>0&&(s+=" "),s+=t(u)}return s}for(var n="",o=0;o<this.commands.length;o+=1){var i=this.commands[o];i.type==="M"?n+="M"+e(i.x,i.y):i.type==="L"?n+="L"+e(i.x,i.y):i.type==="C"?n+="C"+e(i.x1,i.y1,i.x2,i.y2,i.x,i.y):i.type==="Q"?n+="Q"+e(i.x1,i.y1,i.x,i.y):i.type==="Z"&&(n+="Z")}return n};dt.prototype.toSVG=function(r){var t='<path d="';return t+=this.toPathData(r),t+='"',this.fill&&this.fill!=="black"&&(this.fill===null?t+=' fill="none"':t+=' fill="'+this.fill+'"'),this.stroke&&(t+=' stroke="'+this.stroke+'" stroke-width="'+this.strokeWidth+'"'),t+="/>",t};dt.prototype.toDOMElement=function(r){var t=this.toPathData(r),e=document.createElementNS("http://www.w3.org/2000/svg","path");return e.setAttribute("d",t),e};function wy(r){throw new Error(r)}function Dg(r,t){r||wy(t)}var xe={fail:wy,argument:Dg,assert:Dg},Bg=32768,Fg=2147483648,Fi={},te={},be={};function _r(r){return function(){return r}}te.BYTE=function(r){return xe.argument(r>=0&&r<=255,"Byte value should be between 0 and 255."),[r]};be.BYTE=_r(1);te.CHAR=function(r){return[r.charCodeAt(0)]};be.CHAR=_r(1);te.CHARARRAY=function(r){typeof r>"u"&&(r="",console.warn("Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name."));for(var t=[],e=0;e<r.length;e+=1)t[e]=r.charCodeAt(e);return t};be.CHARARRAY=function(r){return typeof r>"u"?0:r.length};te.USHORT=function(r){return[r>>8&255,r&255]};be.USHORT=_r(2);te.SHORT=function(r){return r>=Bg&&(r=-(2*Bg-r)),[r>>8&255,r&255]};be.SHORT=_r(2);te.UINT24=function(r){return[r>>16&255,r>>8&255,r&255]};be.UINT24=_r(3);te.ULONG=function(r){return[r>>24&255,r>>16&255,r>>8&255,r&255]};be.ULONG=_r(4);te.LONG=function(r){return r>=Fg&&(r=-(2*Fg-r)),[r>>24&255,r>>16&255,r>>8&255,r&255]};be.LONG=_r(4);te.FIXED=te.ULONG;be.FIXED=be.ULONG;te.FWORD=te.SHORT;be.FWORD=be.SHORT;te.UFWORD=te.USHORT;be.UFWORD=be.USHORT;te.LONGDATETIME=function(r){return[0,0,0,0,r>>24&255,r>>16&255,r>>8&255,r&255]};be.LONGDATETIME=_r(8);te.TAG=function(r){return xe.argument(r.length===4,"Tag should be exactly 4 ASCII characters."),[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3)]};be.TAG=_r(4);te.Card8=te.BYTE;be.Card8=be.BYTE;te.Card16=te.USHORT;be.Card16=be.USHORT;te.OffSize=te.BYTE;be.OffSize=be.BYTE;te.SID=te.USHORT;be.SID=be.USHORT;te.NUMBER=function(r){return r>=-107&&r<=107?[r+139]:r>=108&&r<=1131?(r=r-108,[(r>>8)+247,r&255]):r>=-1131&&r<=-108?(r=-r-108,[(r>>8)+251,r&255]):r>=-32768&&r<=32767?te.NUMBER16(r):te.NUMBER32(r)};be.NUMBER=function(r){return te.NUMBER(r).length};te.NUMBER16=function(r){return[28,r>>8&255,r&255]};be.NUMBER16=_r(3);te.NUMBER32=function(r){return[29,r>>24&255,r>>16&255,r>>8&255,r&255]};be.NUMBER32=_r(5);te.REAL=function(r){var t=r.toString(),e=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(e){var n=parseFloat("1e"+((e[2]?+e[2]:0)+e[1].length));t=(Math.round(r*n)/n).toString()}for(var o="",i=0,a=t.length;i<a;i+=1){var s=t[i];s==="e"?o+=t[++i]==="-"?"c":"b":s==="."?o+="a":s==="-"?o+="e":o+=s}o+=o.length&1?"f":"ff";for(var l=[30],u=0,c=o.length;u<c;u+=2)l.push(parseInt(o.substr(u,2),16));return l};be.REAL=function(r){return te.REAL(r).length};te.NAME=te.CHARARRAY;be.NAME=be.CHARARRAY;te.STRING=te.CHARARRAY;be.STRING=be.CHARARRAY;Fi.UTF8=function(r,t,e){for(var n=[],o=e,i=0;i<o;i++,t+=1)n[i]=r.getUint8(t);return String.fromCharCode.apply(null,n)};Fi.UTF16=function(r,t,e){for(var n=[],o=e/2,i=0;i<o;i++,t+=2)n[i]=r.getUint16(t);return String.fromCharCode.apply(null,n)};te.UTF16=function(r){for(var t=[],e=0;e<r.length;e+=1){var n=r.charCodeAt(e);t[t.length]=n>>8&255,t[t.length]=n&255}return t};be.UTF16=function(r){return r.length*2};var op={"x-mac-croatian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u03A9\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uF8FF\xA9\u2044\u20AC\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7","x-mac-cyrillic":"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E","x-mac-gaelic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u1E02\xB1\u2264\u2265\u1E03\u010A\u010B\u1E0A\u1E0B\u1E1E\u1E1F\u0120\u0121\u1E40\xE6\xF8\u1E41\u1E56\u1E57\u027C\u0192\u017F\u1E60\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u1E61\u1E9B\xFF\u0178\u1E6A\u20AC\u2039\u203A\u0176\u0177\u1E6B\xB7\u1EF2\u1EF3\u204A\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u2663\xD2\xDA\xDB\xD9\u0131\xDD\xFD\u0174\u0175\u1E84\u1E85\u1E80\u1E81\u1E82\u1E83","x-mac-greek":"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\u20AC\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\xB7\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\xAD","x-mac-icelandic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-inuit":"\u1403\u1404\u1405\u1406\u140A\u140B\u1431\u1432\u1433\u1434\u1438\u1439\u1449\u144E\u144F\u1450\u1451\u1455\u1456\u1466\u146D\u146E\u146F\u1470\u1472\u1473\u1483\u148B\u148C\u148D\u148E\u1490\u1491\xB0\u14A1\u14A5\u14A6\u2022\xB6\u14A7\xAE\xA9\u2122\u14A8\u14AA\u14AB\u14BB\u14C2\u14C3\u14C4\u14C5\u14C7\u14C8\u14D0\u14EF\u14F0\u14F1\u14F2\u14F4\u14F5\u1505\u14D5\u14D6\u14D7\u14D8\u14DA\u14DB\u14EA\u1528\u1529\u152A\u152B\u152D\u2026\xA0\u152E\u153E\u1555\u1556\u1557\u2013\u2014\u201C\u201D\u2018\u2019\u1558\u1559\u155A\u155D\u1546\u1547\u1548\u1549\u154B\u154C\u1550\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u157C\u0141\u0142","x-mac-ce":"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7",macintosh:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-romanian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u0218\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\u0103\u0219\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\u021A\u021B\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-turkish":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\uF8A0\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"};Fi.MACSTRING=function(r,t,e,n){var o=op[n];if(o!==void 0){for(var i="",a=0;a<e;a++){var s=r.getUint8(t+a);s<=127?i+=String.fromCharCode(s):i+=o[s&127]}return i}};var Xl=typeof WeakMap=="function"&&new WeakMap,Yl,$C=function(r){if(!Yl){Yl={};for(var t in op)Yl[t]=new String(t)}var e=Yl[r];if(e!==void 0){if(Xl){var n=Xl.get(e);if(n!==void 0)return n}var o=op[r];if(o!==void 0){for(var i={},a=0;a<o.length;a++)i[o.charCodeAt(a)]=a+128;return Xl&&Xl.set(e,i),i}}};te.MACSTRING=function(r,t){var e=$C(t);if(e!==void 0){for(var n=[],o=0;o<r.length;o++){var i=r.charCodeAt(o);if(i>=128&&(i=e[i],i===void 0))return;n[o]=i}return n}};be.MACSTRING=function(r,t){var e=te.MACSTRING(r,t);return e!==void 0?e.length:0};function ip(r){return r>=-128&&r<=127}function KC(r,t,e){for(var n=0,o=r.length;t<o&&n<64&&r[t]===0;)++t,++n;return e.push(128|n-1),t}function ZC(r,t,e){for(var n=0,o=r.length,i=t;i<o&&n<64;){var a=r[i];if(!ip(a)||a===0&&i+1<o&&r[i+1]===0)break;++i,++n}e.push(n-1);for(var s=t;s<i;++s)e.push(r[s]+256&255);return i}function QC(r,t,e){for(var n=0,o=r.length,i=t;i<o&&n<64;){var a=r[i];if(a===0||ip(a)&&i+1<o&&ip(r[i+1]))break;++i,++n}e.push(64|n-1);for(var s=t;s<i;++s){var l=r[s];e.push(l+65536>>8&255,l+256&255)}return i}te.VARDELTAS=function(r){for(var t=0,e=[];t<r.length;){var n=r[t];n===0?t=KC(r,t,e):n>=-128&&n<=127?t=ZC(r,t,e):t=QC(r,t,e)}return e};te.INDEX=function(r){for(var t=1,e=[t],n=[],o=0;o<r.length;o+=1){var i=te.OBJECT(r[o]);Array.prototype.push.apply(n,i),t+=i.length,e.push(t)}if(n.length===0)return[0,0];for(var a=[],s=1+Math.floor(Math.log(t)/Math.log(2))/8|0,l=[void 0,te.BYTE,te.USHORT,te.UINT24,te.ULONG][s],u=0;u<e.length;u+=1){var c=l(e[u]);Array.prototype.push.apply(a,c)}return Array.prototype.concat(te.Card16(r.length),te.OffSize(s),a,n)};be.INDEX=function(r){return te.INDEX(r).length};te.DICT=function(r){for(var t=[],e=Object.keys(r),n=e.length,o=0;o<n;o+=1){var i=parseInt(e[o],0),a=r[i];t=t.concat(te.OPERAND(a.value,a.type)),t=t.concat(te.OPERATOR(i))}return t};be.DICT=function(r){return te.DICT(r).length};te.OPERATOR=function(r){return r<1200?[r]:[12,r-1200]};te.OPERAND=function(r,t){var e=[];if(Array.isArray(t))for(var n=0;n<t.length;n+=1)xe.argument(r.length===t.length,"Not enough arguments given for type"+t),e=e.concat(te.OPERAND(r[n],t[n]));else if(t==="SID")e=e.concat(te.NUMBER(r));else if(t==="offset")e=e.concat(te.NUMBER32(r));else if(t==="number")e=e.concat(te.NUMBER(r));else if(t==="real")e=e.concat(te.REAL(r));else throw new Error("Unknown operand type "+t);return e};te.OP=te.BYTE;be.OP=be.BYTE;var $l=typeof WeakMap=="function"&&new WeakMap;te.CHARSTRING=function(r){if($l){var t=$l.get(r);if(t!==void 0)return t}for(var e=[],n=r.length,o=0;o<n;o+=1){var i=r[o];e=e.concat(te[i.type](i.value))}return $l&&$l.set(r,e),e};be.CHARSTRING=function(r){return te.CHARSTRING(r).length};te.OBJECT=function(r){var t=te[r.type];return xe.argument(t!==void 0,"No encoding function for type "+r.type),t(r.value)};be.OBJECT=function(r){var t=be[r.type];return xe.argument(t!==void 0,"No sizeOf function for type "+r.type),t(r.value)};te.TABLE=function(r){for(var t=[],e=r.fields.length,n=[],o=[],i=0;i<e;i+=1){var a=r.fields[i],s=te[a.type];xe.argument(s!==void 0,"No encoding function for field type "+a.type+" ("+a.name+")");var l=r[a.name];l===void 0&&(l=a.value);var u=s(l);a.type==="TABLE"?(o.push(t.length),t=t.concat([0,0]),n.push(u)):t=t.concat(u)}for(var c=0;c<n.length;c+=1){var p=o[c],f=t.length;xe.argument(f<65536,"Table "+r.tableName+" too big."),t[p]=f>>8,t[p+1]=f&255,t=t.concat(n[c])}return t};be.TABLE=function(r){for(var t=0,e=r.fields.length,n=0;n<e;n+=1){var o=r.fields[n],i=be[o.type];xe.argument(i!==void 0,"No sizeOf function for field type "+o.type+" ("+o.name+")");var a=r[o.name];a===void 0&&(a=o.value),t+=i(a),o.type==="TABLE"&&(t+=2)}return t};te.RECORD=te.TABLE;be.RECORD=be.TABLE;te.LITERAL=function(r){return r};be.LITERAL=function(r){return r.length};function wt(r,t,e){if(t.length&&(t[0].name!=="coverageFormat"||t[0].value===1))for(var n=0;n<t.length;n+=1){var o=t[n];this[o.name]=o.value}if(this.tableName=r,this.fields=t,e)for(var i=Object.keys(e),a=0;a<i.length;a+=1){var s=i[a],l=e[s];this[s]!==void 0&&(this[s]=l)}}wt.prototype.encode=function(){return te.TABLE(this)};wt.prototype.sizeOf=function(){return be.TABLE(this)};function Ka(r,t,e){e===void 0&&(e=t.length);var n=new Array(t.length+1);n[0]={name:r+"Count",type:"USHORT",value:e};for(var o=0;o<t.length;o++)n[o+1]={name:r+o,type:"USHORT",value:t[o]};return n}function ap(r,t,e){var n=t.length,o=new Array(n+1);o[0]={name:r+"Count",type:"USHORT",value:n};for(var i=0;i<n;i++)o[i+1]={name:r+i,type:"TABLE",value:e(t[i],i)};return o}function Za(r,t,e){var n=t.length,o=[];o[0]={name:r+"Count",type:"USHORT",value:n};for(var i=0;i<n;i++)o=o.concat(e(t[i],i));return o}function ec(r){r.format===1?wt.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:1}].concat(Ka("glyph",r.glyphs))):r.format===2?wt.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:2}].concat(Za("rangeRecord",r.ranges,function(t){return[{name:"startGlyphID",type:"USHORT",value:t.start},{name:"endGlyphID",type:"USHORT",value:t.end},{name:"startCoverageIndex",type:"USHORT",value:t.index}]}))):xe.assert(!1,"Coverage format must be 1 or 2.")}ec.prototype=Object.create(wt.prototype);ec.prototype.constructor=ec;function tc(r){wt.call(this,"scriptListTable",Za("scriptRecord",r,function(t,e){var n=t.script,o=n.defaultLangSys;return xe.assert(!!o,"Unable to write GSUB: script "+t.tag+" has no default language system."),[{name:"scriptTag"+e,type:"TAG",value:t.tag},{name:"script"+e,type:"TABLE",value:new wt("scriptTable",[{name:"defaultLangSys",type:"TABLE",value:new wt("defaultLangSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:o.reqFeatureIndex}].concat(Ka("featureIndex",o.featureIndexes)))}].concat(Za("langSys",n.langSysRecords,function(i,a){var s=i.langSys;return[{name:"langSysTag"+a,type:"TAG",value:i.tag},{name:"langSys"+a,type:"TABLE",value:new wt("langSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:s.reqFeatureIndex}].concat(Ka("featureIndex",s.featureIndexes)))}]})))}]}))}tc.prototype=Object.create(wt.prototype);tc.prototype.constructor=tc;function rc(r){wt.call(this,"featureListTable",Za("featureRecord",r,function(t,e){var n=t.feature;return[{name:"featureTag"+e,type:"TAG",value:t.tag},{name:"feature"+e,type:"TABLE",value:new wt("featureTable",[{name:"featureParams",type:"USHORT",value:n.featureParams}].concat(Ka("lookupListIndex",n.lookupListIndexes)))}]}))}rc.prototype=Object.create(wt.prototype);rc.prototype.constructor=rc;function nc(r,t){wt.call(this,"lookupListTable",ap("lookup",r,function(e){var n=t[e.lookupType];return xe.assert(!!n,"Unable to write GSUB lookup type "+e.lookupType+" tables."),new wt("lookupTable",[{name:"lookupType",type:"USHORT",value:e.lookupType},{name:"lookupFlag",type:"USHORT",value:e.lookupFlag}].concat(ap("subtable",e.subtables,n)))}))}nc.prototype=Object.create(wt.prototype);nc.prototype.constructor=nc;var le={Table:wt,Record:wt,Coverage:ec,ScriptList:tc,FeatureList:rc,LookupList:nc,ushortList:Ka,tableList:ap,recordList:Za};function Rg(r,t){return r.getUint8(t)}function oc(r,t){return r.getUint16(t,!1)}function JC(r,t){return r.getInt16(t,!1)}function mp(r,t){return r.getUint32(t,!1)}function Ty(r,t){var e=r.getInt16(t,!1),n=r.getUint16(t+2,!1);return e+n/65535}function eA(r,t){for(var e="",n=t;n<t+4;n+=1)e+=String.fromCharCode(r.getInt8(n));return e}function tA(r,t,e){for(var n=0,o=0;o<e;o+=1)n<<=8,n+=r.getUint8(t+o);return n}function rA(r,t,e){for(var n=[],o=t;o<e;o+=1)n.push(r.getUint8(o));return n}function nA(r){for(var t="",e=0;e<r.length;e+=1)t+=String.fromCharCode(r[e]);return t}var oA={byte:1,uShort:2,short:2,uLong:4,fixed:4,longDateTime:8,tag:4};function E(r,t){this.data=r,this.offset=t,this.relativeOffset=0}E.prototype.parseByte=function(){var r=this.data.getUint8(this.offset+this.relativeOffset);return this.relativeOffset+=1,r};E.prototype.parseChar=function(){var r=this.data.getInt8(this.offset+this.relativeOffset);return this.relativeOffset+=1,r};E.prototype.parseCard8=E.prototype.parseByte;E.prototype.parseUShort=function(){var r=this.data.getUint16(this.offset+this.relativeOffset);return this.relativeOffset+=2,r};E.prototype.parseCard16=E.prototype.parseUShort;E.prototype.parseSID=E.prototype.parseUShort;E.prototype.parseOffset16=E.prototype.parseUShort;E.prototype.parseShort=function(){var r=this.data.getInt16(this.offset+this.relativeOffset);return this.relativeOffset+=2,r};E.prototype.parseF2Dot14=function(){var r=this.data.getInt16(this.offset+this.relativeOffset)/16384;return this.relativeOffset+=2,r};E.prototype.parseULong=function(){var r=mp(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,r};E.prototype.parseOffset32=E.prototype.parseULong;E.prototype.parseFixed=function(){var r=Ty(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,r};E.prototype.parseString=function(r){var t=this.data,e=this.offset+this.relativeOffset,n="";this.relativeOffset+=r;for(var o=0;o<r;o++)n+=String.fromCharCode(t.getUint8(e+o));return n};E.prototype.parseTag=function(){return this.parseString(4)};E.prototype.parseLongDateTime=function(){var r=mp(this.data,this.offset+this.relativeOffset+4);return r-=2082844800,this.relativeOffset+=8,r};E.prototype.parseVersion=function(r){var t=oc(this.data,this.offset+this.relativeOffset),e=oc(this.data,this.offset+this.relativeOffset+2);return this.relativeOffset+=4,r===void 0&&(r=4096),t+e/r/10};E.prototype.skip=function(r,t){t===void 0&&(t=1),this.relativeOffset+=oA[r]*t};E.prototype.parseULongList=function(r){r===void 0&&(r=this.parseULong());for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getUint32(n),n+=4;return this.relativeOffset+=r*4,t};E.prototype.parseOffset16List=E.prototype.parseUShortList=function(r){r===void 0&&(r=this.parseUShort());for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getUint16(n),n+=2;return this.relativeOffset+=r*2,t};E.prototype.parseShortList=function(r){for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getInt16(n),n+=2;return this.relativeOffset+=r*2,t};E.prototype.parseByteList=function(r){for(var t=new Array(r),e=this.data,n=this.offset+this.relativeOffset,o=0;o<r;o++)t[o]=e.getUint8(n++);return this.relativeOffset+=r,t};E.prototype.parseList=function(r,t){t||(t=r,r=this.parseUShort());for(var e=new Array(r),n=0;n<r;n++)e[n]=t.call(this);return e};E.prototype.parseList32=function(r,t){t||(t=r,r=this.parseULong());for(var e=new Array(r),n=0;n<r;n++)e[n]=t.call(this);return e};E.prototype.parseRecordList=function(r,t){t||(t=r,r=this.parseUShort());for(var e=new Array(r),n=Object.keys(t),o=0;o<r;o++){for(var i={},a=0;a<n.length;a++){var s=n[a],l=t[s];i[s]=l.call(this)}e[o]=i}return e};E.prototype.parseRecordList32=function(r,t){t||(t=r,r=this.parseULong());for(var e=new Array(r),n=Object.keys(t),o=0;o<r;o++){for(var i={},a=0;a<n.length;a++){var s=n[a],l=t[s];i[s]=l.call(this)}e[o]=i}return e};E.prototype.parseStruct=function(r){if(typeof r=="function")return r.call(this);for(var t=Object.keys(r),e={},n=0;n<t.length;n++){var o=t[n],i=r[o];e[o]=i.call(this)}return e};E.prototype.parseValueRecord=function(r){if(r===void 0&&(r=this.parseUShort()),r!==0){var t={};return r&1&&(t.xPlacement=this.parseShort()),r&2&&(t.yPlacement=this.parseShort()),r&4&&(t.xAdvance=this.parseShort()),r&8&&(t.yAdvance=this.parseShort()),r&16&&(t.xPlaDevice=void 0,this.parseShort()),r&32&&(t.yPlaDevice=void 0,this.parseShort()),r&64&&(t.xAdvDevice=void 0,this.parseShort()),r&128&&(t.yAdvDevice=void 0,this.parseShort()),t}};E.prototype.parseValueRecordList=function(){for(var r=this.parseUShort(),t=this.parseUShort(),e=new Array(t),n=0;n<t;n++)e[n]=this.parseValueRecord(r);return e};E.prototype.parsePointer=function(r){var t=this.parseOffset16();if(t>0)return new E(this.data,this.offset+t).parseStruct(r)};E.prototype.parsePointer32=function(r){var t=this.parseOffset32();if(t>0)return new E(this.data,this.offset+t).parseStruct(r)};E.prototype.parseListOfLists=function(r){for(var t=this.parseOffset16List(),e=t.length,n=this.relativeOffset,o=new Array(e),i=0;i<e;i++){var a=t[i];if(a===0){o[i]=void 0;continue}if(this.relativeOffset=a,r){for(var s=this.parseOffset16List(),l=new Array(s.length),u=0;u<s.length;u++)this.relativeOffset=a+s[u],l[u]=r.call(this);o[i]=l}else o[i]=this.parseUShortList()}return this.relativeOffset=n,o};E.prototype.parseCoverage=function(){var r=this.offset+this.relativeOffset,t=this.parseUShort(),e=this.parseUShort();if(t===1)return{format:1,glyphs:this.parseUShortList(e)};if(t===2){for(var n=new Array(e),o=0;o<e;o++)n[o]={start:this.parseUShort(),end:this.parseUShort(),index:this.parseUShort()};return{format:2,ranges:n}}throw new Error("0x"+r.toString(16)+": Coverage format must be 1 or 2.")};E.prototype.parseClassDef=function(){var r=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{format:1,startGlyph:this.parseUShort(),classes:this.parseUShortList()};if(t===2)return{format:2,ranges:this.parseRecordList({start:E.uShort,end:E.uShort,classId:E.uShort})};throw new Error("0x"+r.toString(16)+": ClassDef format must be 1 or 2.")};E.list=function(r,t){return function(){return this.parseList(r,t)}};E.list32=function(r,t){return function(){return this.parseList32(r,t)}};E.recordList=function(r,t){return function(){return this.parseRecordList(r,t)}};E.recordList32=function(r,t){return function(){return this.parseRecordList32(r,t)}};E.pointer=function(r){return function(){return this.parsePointer(r)}};E.pointer32=function(r){return function(){return this.parsePointer32(r)}};E.tag=E.prototype.parseTag;E.byte=E.prototype.parseByte;E.uShort=E.offset16=E.prototype.parseUShort;E.uShortList=E.prototype.parseUShortList;E.uLong=E.offset32=E.prototype.parseULong;E.uLongList=E.prototype.parseULongList;E.struct=E.prototype.parseStruct;E.coverage=E.prototype.parseCoverage;E.classDef=E.prototype.parseClassDef;var kg={reserved:E.uShort,reqFeatureIndex:E.uShort,featureIndexes:E.uShortList};E.prototype.parseScriptList=function(){return this.parsePointer(E.recordList({tag:E.tag,script:E.pointer({defaultLangSys:E.pointer(kg),langSysRecords:E.recordList({tag:E.tag,langSys:E.pointer(kg)})})}))||[]};E.prototype.parseFeatureList=function(){return this.parsePointer(E.recordList({tag:E.tag,feature:E.pointer({featureParams:E.offset16,lookupListIndexes:E.uShortList})}))||[]};E.prototype.parseLookupList=function(r){return this.parsePointer(E.list(E.pointer(function(){var t=this.parseUShort();xe.argument(1<=t&&t<=9,"GPOS/GSUB lookup type "+t+" unknown.");var e=this.parseUShort(),n=e&16;return{lookupType:t,lookupFlag:e,subtables:this.parseList(E.pointer(r[t])),markFilteringSet:n?this.parseUShort():void 0}})))||[]};E.prototype.parseFeatureVariationsList=function(){return this.parsePointer32(function(){var r=this.parseUShort(),t=this.parseUShort();xe.argument(r===1&&t<1,"GPOS/GSUB feature variations table unknown.");var e=this.parseRecordList32({conditionSetOffset:E.offset32,featureTableSubstitutionOffset:E.offset32});return e})||[]};var pe={getByte:Rg,getCard8:Rg,getUShort:oc,getCard16:oc,getShort:JC,getULong:mp,getFixed:Ty,getTag:eA,getOffset:tA,getBytes:rA,bytesToString:nA,Parser:E};function iA(r,t){t.parseUShort(),r.length=t.parseULong(),r.language=t.parseULong();var e;r.groupCount=e=t.parseULong(),r.glyphIndexMap={};for(var n=0;n<e;n+=1)for(var o=t.parseULong(),i=t.parseULong(),a=t.parseULong(),s=o;s<=i;s+=1)r.glyphIndexMap[s]=a,a++}function aA(r,t,e,n,o){r.length=t.parseUShort(),r.language=t.parseUShort();var i;r.segCount=i=t.parseUShort()>>1,t.skip("uShort",3),r.glyphIndexMap={};for(var a=new pe.Parser(e,n+o+14),s=new pe.Parser(e,n+o+16+i*2),l=new pe.Parser(e,n+o+16+i*4),u=new pe.Parser(e,n+o+16+i*6),c=n+o+16+i*8,p=0;p<i-1;p+=1)for(var f=void 0,d=a.parseUShort(),h=s.parseUShort(),m=l.parseShort(),g=u.parseUShort(),v=h;v<=d;v+=1)g!==0?(c=u.offset+u.relativeOffset-2,c+=g,c+=(v-h)*2,f=pe.getUShort(e,c),f!==0&&(f=f+m&65535)):f=v+m&65535,r.glyphIndexMap[v]=f}function sA(r,t){var e={};e.version=pe.getUShort(r,t),xe.argument(e.version===0,"cmap table version should be 0."),e.numTables=pe.getUShort(r,t+2);for(var n=-1,o=e.numTables-1;o>=0;o-=1){var i=pe.getUShort(r,t+4+o*8),a=pe.getUShort(r,t+4+o*8+2);if(i===3&&(a===0||a===1||a===10)||i===0&&(a===0||a===1||a===2||a===3||a===4)){n=pe.getULong(r,t+4+o*8+4);break}}if(n===-1)throw new Error("No valid cmap sub-tables found.");var s=new pe.Parser(r,t+n);if(e.format=s.parseUShort(),e.format===12)iA(e,s);else if(e.format===4)aA(e,s,r,t,n);else throw new Error("Only format 4 and 12 cmap tables are supported (found format "+e.format+").");return e}function lA(r,t,e){r.segments.push({end:t,start:t,delta:-(t-e),offset:0,glyphIndex:e})}function cA(r){r.segments.push({end:65535,start:65535,delta:1,offset:0})}function uA(r){var t=!0,e;for(e=r.length-1;e>0;e-=1){var n=r.get(e);if(n.unicode>65535){console.log("Adding CMAP format 12 (needed!)"),t=!1;break}}var o=[{name:"version",type:"USHORT",value:0},{name:"numTables",type:"USHORT",value:t?1:2},{name:"platformID",type:"USHORT",value:3},{name:"encodingID",type:"USHORT",value:1},{name:"offset",type:"ULONG",value:t?12:12+8}];t||(o=o.concat([{name:"cmap12PlatformID",type:"USHORT",value:3},{name:"cmap12EncodingID",type:"USHORT",value:10},{name:"cmap12Offset",type:"ULONG",value:0}])),o=o.concat([{name:"format",type:"USHORT",value:4},{name:"cmap4Length",type:"USHORT",value:0},{name:"language",type:"USHORT",value:0},{name:"segCountX2",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);var i=new le.Table("cmap",o);for(i.segments=[],e=0;e<r.length;e+=1){for(var a=r.get(e),s=0;s<a.unicodes.length;s+=1)lA(i,a.unicodes[s],e);i.segments=i.segments.sort(function(x,S){return x.start-S.start})}cA(i);var l=i.segments.length,u=0,c=[],p=[],f=[],d=[],h=[],m=[];for(e=0;e<l;e+=1){var g=i.segments[e];g.end<=65535&&g.start<=65535?(c=c.concat({name:"end_"+e,type:"USHORT",value:g.end}),p=p.concat({name:"start_"+e,type:"USHORT",value:g.start}),f=f.concat({name:"idDelta_"+e,type:"SHORT",value:g.delta}),d=d.concat({name:"idRangeOffset_"+e,type:"USHORT",value:g.offset}),g.glyphId!==void 0&&(h=h.concat({name:"glyph_"+e,type:"USHORT",value:g.glyphId}))):u+=1,!t&&g.glyphIndex!==void 0&&(m=m.concat({name:"cmap12Start_"+e,type:"ULONG",value:g.start}),m=m.concat({name:"cmap12End_"+e,type:"ULONG",value:g.end}),m=m.concat({name:"cmap12Glyph_"+e,type:"ULONG",value:g.glyphIndex}))}if(i.segCountX2=(l-u)*2,i.searchRange=Math.pow(2,Math.floor(Math.log(l-u)/Math.log(2)))*2,i.entrySelector=Math.log(i.searchRange/2)/Math.log(2),i.rangeShift=i.segCountX2-i.searchRange,i.fields=i.fields.concat(c),i.fields.push({name:"reservedPad",type:"USHORT",value:0}),i.fields=i.fields.concat(p),i.fields=i.fields.concat(f),i.fields=i.fields.concat(d),i.fields=i.fields.concat(h),i.cmap4Length=14+c.length*2+2+p.length*2+f.length*2+d.length*2+h.length*2,!t){var v=16+m.length*4;i.cmap12Offset=12+2*2+4+i.cmap4Length,i.fields=i.fields.concat([{name:"cmap12Format",type:"USHORT",value:12},{name:"cmap12Reserved",type:"USHORT",value:0},{name:"cmap12Length",type:"ULONG",value:v},{name:"cmap12Language",type:"ULONG",value:0},{name:"cmap12nGroups",type:"ULONG",value:m.length/3}]),i.fields=i.fields.concat(m)}return i}var Cy={parse:sA,make:uA},Ql=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],pA=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],fA=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],Co=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function Ay(r){this.font=r}Ay.prototype.charToGlyphIndex=function(r){var t=r.codePointAt(0),e=this.font.glyphs;if(e){for(var n=0;n<e.length;n+=1)for(var o=e.get(n),i=0;i<o.unicodes.length;i+=1)if(o.unicodes[i]===t)return n}return null};function _y(r){this.cmap=r}_y.prototype.charToGlyphIndex=function(r){return this.cmap.glyphIndexMap[r.codePointAt(0)]||0};function ic(r,t){this.encoding=r,this.charset=t}ic.prototype.charToGlyphIndex=function(r){var t=r.codePointAt(0),e=this.encoding[t];return this.charset.indexOf(e)};function gp(r){switch(r.version){case 1:this.names=Co.slice();break;case 2:this.names=new Array(r.numberOfGlyphs);for(var t=0;t<r.numberOfGlyphs;t++)r.glyphNameIndex[t]<Co.length?this.names[t]=Co[r.glyphNameIndex[t]]:this.names[t]=r.names[r.glyphNameIndex[t]-Co.length];break;case 2.5:this.names=new Array(r.numberOfGlyphs);for(var e=0;e<r.numberOfGlyphs;e++)this.names[e]=Co[e+r.glyphNameIndex[e]];break;case 3:this.names=[];break;default:this.names=[];break}}gp.prototype.nameToGlyphIndex=function(r){return this.names.indexOf(r)};gp.prototype.glyphIndexToName=function(r){return this.names[r]};function dA(r){for(var t,e=r.tables.cmap.glyphIndexMap,n=Object.keys(e),o=0;o<n.length;o+=1){var i=n[o],a=e[i];t=r.glyphs.get(a),t.addUnicode(parseInt(i))}for(var s=0;s<r.glyphs.length;s+=1)t=r.glyphs.get(s),r.cffEncoding?r.isCIDFont?t.name="gid"+s:t.name=r.cffEncoding.charset[s]:r.glyphNames.names&&(t.name=r.glyphNames.glyphIndexToName(s))}function hA(r){r._IndexToUnicodeMap={};for(var t=r.tables.cmap.glyphIndexMap,e=Object.keys(t),n=0;n<e.length;n+=1){var o=e[n],i=t[o];r._IndexToUnicodeMap[i]===void 0?r._IndexToUnicodeMap[i]={unicodes:[parseInt(o)]}:r._IndexToUnicodeMap[i].unicodes.push(parseInt(o))}}function mA(r,t){t.lowMemory?hA(r):dA(r)}function gA(r,t,e,n,o){r.beginPath(),r.moveTo(t,e),r.lineTo(n,o),r.stroke()}var To={line:gA};function yA(r,t){var e=t||new dt;return{configurable:!0,get:function(){return typeof e=="function"&&(e=e()),e},set:function(n){e=n}}}function fr(r){this.bindConstructorValues(r)}fr.prototype.bindConstructorValues=function(r){this.index=r.index||0,this.name=r.name||null,this.unicode=r.unicode||void 0,this.unicodes=r.unicodes||r.unicode!==void 0?[r.unicode]:[],"xMin"in r&&(this.xMin=r.xMin),"yMin"in r&&(this.yMin=r.yMin),"xMax"in r&&(this.xMax=r.xMax),"yMax"in r&&(this.yMax=r.yMax),"advanceWidth"in r&&(this.advanceWidth=r.advanceWidth),Object.defineProperty(this,"path",yA(this,r.path))};fr.prototype.addUnicode=function(r){this.unicodes.length===0&&(this.unicode=r),this.unicodes.push(r)};fr.prototype.getBoundingBox=function(){return this.path.getBoundingBox()};fr.prototype.getPath=function(r,t,e,n,o){r=r!==void 0?r:0,t=t!==void 0?t:0,e=e!==void 0?e:72;var i,a;n||(n={});var s=n.xScale,l=n.yScale;if(n.hinting&&o&&o.hinting&&(a=this.path&&o.hinting.exec(this,e)),a)i=o.hinting.getCommands(a),r=Math.round(r),t=Math.round(t),s=l=1;else{i=this.path.commands;var u=1/(this.path.unitsPerEm||1e3)*e;s===void 0&&(s=u),l===void 0&&(l=u)}for(var c=new dt,p=0;p<i.length;p+=1){var f=i[p];f.type==="M"?c.moveTo(r+f.x*s,t+-f.y*l):f.type==="L"?c.lineTo(r+f.x*s,t+-f.y*l):f.type==="Q"?c.quadraticCurveTo(r+f.x1*s,t+-f.y1*l,r+f.x*s,t+-f.y*l):f.type==="C"?c.curveTo(r+f.x1*s,t+-f.y1*l,r+f.x2*s,t+-f.y2*l,r+f.x*s,t+-f.y*l):f.type==="Z"&&c.closePath()}return c};fr.prototype.getContours=function(){if(this.points===void 0)return[];for(var r=[],t=[],e=0;e<this.points.length;e+=1){var n=this.points[e];t.push(n),n.lastPointOfContour&&(r.push(t),t=[])}return xe.argument(t.length===0,"There are still points left in the current contour."),r};fr.prototype.getMetrics=function(){for(var r=this.path.commands,t=[],e=[],n=0;n<r.length;n+=1){var o=r[n];o.type!=="Z"&&(t.push(o.x),e.push(o.y)),(o.type==="Q"||o.type==="C")&&(t.push(o.x1),e.push(o.y1)),o.type==="C"&&(t.push(o.x2),e.push(o.y2))}var i={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,e),xMax:Math.max.apply(null,t),yMax:Math.max.apply(null,e),leftSideBearing:this.leftSideBearing};return isFinite(i.xMin)||(i.xMin=0),isFinite(i.xMax)||(i.xMax=this.advanceWidth),isFinite(i.yMin)||(i.yMin=0),isFinite(i.yMax)||(i.yMax=0),i.rightSideBearing=this.advanceWidth-i.leftSideBearing-(i.xMax-i.xMin),i};fr.prototype.draw=function(r,t,e,n,o){this.getPath(t,e,n,o).draw(r)};fr.prototype.drawPoints=function(r,t,e,n){function o(p,f,d,h){r.beginPath();for(var m=0;m<p.length;m+=1)r.moveTo(f+p[m].x*h,d+p[m].y*h),r.arc(f+p[m].x*h,d+p[m].y*h,2,0,Math.PI*2,!1);r.closePath(),r.fill()}t=t!==void 0?t:0,e=e!==void 0?e:0,n=n!==void 0?n:24;for(var i=1/this.path.unitsPerEm*n,a=[],s=[],l=this.path,u=0;u<l.commands.length;u+=1){var c=l.commands[u];c.x!==void 0&&a.push({x:c.x,y:-c.y}),c.x1!==void 0&&s.push({x:c.x1,y:-c.y1}),c.x2!==void 0&&s.push({x:c.x2,y:-c.y2})}r.fillStyle="blue",o(a,t,e,i),r.fillStyle="red",o(s,t,e,i)};fr.prototype.drawMetrics=function(r,t,e,n){var o;t=t!==void 0?t:0,e=e!==void 0?e:0,n=n!==void 0?n:24,o=1/this.path.unitsPerEm*n,r.lineWidth=1,r.strokeStyle="black",To.line(r,t,-1e4,t,1e4),To.line(r,-1e4,e,1e4,e);var i=this.xMin||0,a=this.yMin||0,s=this.xMax||0,l=this.yMax||0,u=this.advanceWidth||0;r.strokeStyle="blue",To.line(r,t+i*o,-1e4,t+i*o,1e4),To.line(r,t+s*o,-1e4,t+s*o,1e4),To.line(r,-1e4,e+-a*o,1e4,e+-a*o),To.line(r,-1e4,e+-l*o,1e4,e+-l*o),r.strokeStyle="green",To.line(r,t+u*o,-1e4,t+u*o,1e4)};function Kl(r,t,e){Object.defineProperty(r,t,{get:function(){return r.path,r[e]},set:function(n){r[e]=n},enumerable:!0,configurable:!0})}function yp(r,t){if(this.font=r,this.glyphs={},Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];n.path.unitsPerEm=r.unitsPerEm,this.glyphs[e]=n}this.length=t&&t.length||0}yp.prototype.get=function(r){if(this.glyphs[r]===void 0){this.font._push(r),typeof this.glyphs[r]=="function"&&(this.glyphs[r]=this.glyphs[r]());var t=this.glyphs[r],e=this.font._IndexToUnicodeMap[r];if(e)for(var n=0;n<e.unicodes.length;n++)t.addUnicode(e.unicodes[n]);this.font.cffEncoding?this.font.isCIDFont?t.name="gid"+r:t.name=this.font.cffEncoding.charset[r]:this.font.glyphNames.names&&(t.name=this.font.glyphNames.glyphIndexToName(r)),this.glyphs[r].advanceWidth=this.font._hmtxTableData[r].advanceWidth,this.glyphs[r].leftSideBearing=this.font._hmtxTableData[r].leftSideBearing}else typeof this.glyphs[r]=="function"&&(this.glyphs[r]=this.glyphs[r]());return this.glyphs[r]};yp.prototype.push=function(r,t){this.glyphs[r]=t,this.length++};function vA(r,t){return new fr({index:t,font:r})}function xA(r,t,e,n,o,i){return function(){var a=new fr({index:t,font:r});return a.path=function(){e(a,n,o);var s=i(r.glyphs,a);return s.unitsPerEm=r.unitsPerEm,s},Kl(a,"xMin","_xMin"),Kl(a,"xMax","_xMax"),Kl(a,"yMin","_yMin"),Kl(a,"yMax","_yMax"),a}}function bA(r,t,e,n){return function(){var o=new fr({index:t,font:r});return o.path=function(){var i=e(r,o,n);return i.unitsPerEm=r.unitsPerEm,i},o}}var nn={GlyphSet:yp,glyphLoader:vA,ttfGlyphLoader:xA,cffGlyphLoader:bA};function Iy(r,t){if(r===t)return!0;if(Array.isArray(r)&&Array.isArray(t)){if(r.length!==t.length)return!1;for(var e=0;e<r.length;e+=1)if(!Iy(r[e],t[e]))return!1;return!0}else return!1}function sp(r){var t;return r.length<1240?t=107:r.length<33900?t=1131:t=32768,t}function Xn(r,t,e){var n=[],o=[],i=pe.getCard16(r,t),a,s;if(i!==0){var l=pe.getByte(r,t+2);a=t+(i+1)*l+2;for(var u=t+3,c=0;c<i+1;c+=1)n.push(pe.getOffset(r,u,l)),u+=l;s=a+n[i]}else s=t+2;for(var p=0;p<n.length-1;p+=1){var f=pe.getBytes(r,a+n[p],a+n[p+1]);e&&(f=e(f)),o.push(f)}return{objects:o,startOffset:t,endOffset:s}}function SA(r,t){var e=[],n=pe.getCard16(r,t),o,i;if(n!==0){var a=pe.getByte(r,t+2);o=t+(n+1)*a+2;for(var s=t+3,l=0;l<n+1;l+=1)e.push(pe.getOffset(r,s,a)),s+=a;i=o+e[n]}else i=t+2;return{offsets:e,startOffset:t,endOffset:i}}function wA(r,t,e,n,o){var i=pe.getCard16(e,n),a=0;if(i!==0){var s=pe.getByte(e,n+2);a=n+(i+1)*s+2}var l=pe.getBytes(e,a+t[r],a+t[r+1]);return o&&(l=o(l)),l}function TA(r){for(var t="",e=15,n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"];;){var o=r.parseByte(),i=o>>4,a=o&15;if(i===e||(t+=n[i],a===e))break;t+=n[a]}return parseFloat(t)}function CA(r,t){var e,n,o,i;if(t===28)return e=r.parseByte(),n=r.parseByte(),e<<8|n;if(t===29)return e=r.parseByte(),n=r.parseByte(),o=r.parseByte(),i=r.parseByte(),e<<24|n<<16|o<<8|i;if(t===30)return TA(r);if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return e=r.parseByte(),(t-247)*256+e+108;if(t>=251&&t<=254)return e=r.parseByte(),-(t-251)*256-e-108;throw new Error("Invalid b0 "+t)}function AA(r){for(var t={},e=0;e<r.length;e+=1){var n=r[e][0],o=r[e][1],i=void 0;if(o.length===1?i=o[0]:i=o,t.hasOwnProperty(n)&&!isNaN(t[n]))throw new Error("Object "+t+" already has key "+n);t[n]=i}return t}function Oy(r,t,e){t=t!==void 0?t:0;var n=new pe.Parser(r,t),o=[],i=[];for(e=e!==void 0?e:r.length;n.relativeOffset<e;){var a=n.parseByte();a<=21?(a===12&&(a=1200+n.parseByte()),o.push([a,i]),i=[]):i.push(CA(n,a))}return AA(o)}function Ya(r,t){return t<=390?t=Ql[t]:t=r[t-391],t}function Ly(r,t,e){for(var n={},o,i=0;i<t.length;i+=1){var a=t[i];if(Array.isArray(a.type)){var s=[];s.length=a.type.length;for(var l=0;l<a.type.length;l++)o=r[a.op]!==void 0?r[a.op][l]:void 0,o===void 0&&(o=a.value!==void 0&&a.value[l]!==void 0?a.value[l]:null),a.type[l]==="SID"&&(o=Ya(e,o)),s[l]=o;n[a.name]=s}else o=r[a.op],o===void 0&&(o=a.value!==void 0?a.value:null),a.type==="SID"&&(o=Ya(e,o)),n[a.name]=o}return n}function _A(r,t){var e={};return e.formatMajor=pe.getCard8(r,t),e.formatMinor=pe.getCard8(r,t+1),e.size=pe.getCard8(r,t+2),e.offsetSize=pe.getCard8(r,t+3),e.startOffset=t,e.endOffset=t+4,e}var Ny=[{name:"version",op:0,type:"SID"},{name:"notice",op:1,type:"SID"},{name:"copyright",op:1200,type:"SID"},{name:"fullName",op:2,type:"SID"},{name:"familyName",op:3,type:"SID"},{name:"weight",op:4,type:"SID"},{name:"isFixedPitch",op:1201,type:"number",value:0},{name:"italicAngle",op:1202,type:"number",value:0},{name:"underlinePosition",op:1203,type:"number",value:-100},{name:"underlineThickness",op:1204,type:"number",value:50},{name:"paintType",op:1205,type:"number",value:0},{name:"charstringType",op:1206,type:"number",value:2},{name:"fontMatrix",op:1207,type:["real","real","real","real","real","real"],value:[.001,0,0,.001,0,0]},{name:"uniqueId",op:13,type:"number"},{name:"fontBBox",op:5,type:["number","number","number","number"],value:[0,0,0,0]},{name:"strokeWidth",op:1208,type:"number",value:0},{name:"xuid",op:14,type:[],value:null},{name:"charset",op:15,type:"offset",value:0},{name:"encoding",op:16,type:"offset",value:0},{name:"charStrings",op:17,type:"offset",value:0},{name:"private",op:18,type:["number","offset"],value:[0,0]},{name:"ros",op:1230,type:["SID","SID","number"]},{name:"cidFontVersion",op:1231,type:"number",value:0},{name:"cidFontRevision",op:1232,type:"number",value:0},{name:"cidFontType",op:1233,type:"number",value:0},{name:"cidCount",op:1234,type:"number",value:8720},{name:"uidBase",op:1235,type:"number"},{name:"fdArray",op:1236,type:"offset"},{name:"fdSelect",op:1237,type:"offset"},{name:"fontName",op:1238,type:"SID"}],Py=[{name:"subrs",op:19,type:"offset",value:0},{name:"defaultWidthX",op:20,type:"number",value:0},{name:"nominalWidthX",op:21,type:"number",value:0}];function IA(r,t){var e=Oy(r,0,r.byteLength);return Ly(e,Ny,t)}function My(r,t,e,n){var o=Oy(r,t,e);return Ly(o,Py,n)}function Gg(r,t,e,n){for(var o=[],i=0;i<e.length;i+=1){var a=new DataView(new Uint8Array(e[i]).buffer),s=IA(a,n);s._subrs=[],s._subrsBias=0,s._defaultWidthX=0,s._nominalWidthX=0;var l=s.private[0],u=s.private[1];if(l!==0&&u!==0){var c=My(r,u+t,l,n);if(s._defaultWidthX=c.defaultWidthX,s._nominalWidthX=c.nominalWidthX,c.subrs!==0){var p=u+c.subrs,f=Xn(r,p+t);s._subrs=f.objects,s._subrsBias=sp(s._subrs)}s._privateDict=c}o.push(s)}return o}function OA(r,t,e,n){var o,i,a=new pe.Parser(r,t);e-=1;var s=[".notdef"],l=a.parseCard8();if(l===0)for(var u=0;u<e;u+=1)o=a.parseSID(),s.push(Ya(n,o));else if(l===1)for(;s.length<=e;){o=a.parseSID(),i=a.parseCard8();for(var c=0;c<=i;c+=1)s.push(Ya(n,o)),o+=1}else if(l===2)for(;s.length<=e;){o=a.parseSID(),i=a.parseCard16();for(var p=0;p<=i;p+=1)s.push(Ya(n,o)),o+=1}else throw new Error("Unknown charset format "+l);return s}function LA(r,t,e){var n,o={},i=new pe.Parser(r,t),a=i.parseCard8();if(a===0)for(var s=i.parseCard8(),l=0;l<s;l+=1)n=i.parseCard8(),o[n]=l;else if(a===1){var u=i.parseCard8();n=1;for(var c=0;c<u;c+=1)for(var p=i.parseCard8(),f=i.parseCard8(),d=p;d<=p+f;d+=1)o[d]=n,n+=1}else throw new Error("Unknown encoding format "+a);return new ic(o,e)}function Ug(r,t,e){var n,o,i,a,s=new dt,l=[],u=0,c=!1,p=!1,f=0,d=0,h,m,g,v;if(r.isCIDFont){var x=r.tables.cff.topDict._fdSelect[t.index],S=r.tables.cff.topDict._fdArray[x];h=S._subrs,m=S._subrsBias,g=S._defaultWidthX,v=S._nominalWidthX}else h=r.tables.cff.topDict._subrs,m=r.tables.cff.topDict._subrsBias,g=r.tables.cff.topDict._defaultWidthX,v=r.tables.cff.topDict._nominalWidthX;var w=g;function b(y,I){p&&s.closePath(),s.moveTo(y,I),p=!0}function _(){var y;y=l.length%2!==0,y&&!c&&(w=l.shift()+v),u+=l.length>>1,l.length=0,c=!0}function T(y){for(var I,A,O,C,N,P,G,$,Y,ie,j,H,V=0;V<y.length;){var R=y[V];switch(V+=1,R){case 1:_();break;case 3:_();break;case 4:l.length>1&&!c&&(w=l.shift()+v,c=!0),d+=l.pop(),b(f,d);break;case 5:for(;l.length>0;)f+=l.shift(),d+=l.shift(),s.lineTo(f,d);break;case 6:for(;l.length>0&&(f+=l.shift(),s.lineTo(f,d),l.length!==0);)d+=l.shift(),s.lineTo(f,d);break;case 7:for(;l.length>0&&(d+=l.shift(),s.lineTo(f,d),l.length!==0);)f+=l.shift(),s.lineTo(f,d);break;case 8:for(;l.length>0;)n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+l.shift(),s.curveTo(n,o,i,a,f,d);break;case 10:N=l.pop()+m,P=h[N],P&&T(P);break;case 11:return;case 12:switch(R=y[V],V+=1,R){case 35:n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a+l.shift(),Y=G+l.shift(),ie=$+l.shift(),j=Y+l.shift(),H=ie+l.shift(),f=j+l.shift(),d=H+l.shift(),l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;case 34:n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a,Y=G+l.shift(),ie=a,j=Y+l.shift(),H=d,f=j+l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;case 36:n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a,Y=G+l.shift(),ie=a,j=Y+l.shift(),H=ie+l.shift(),f=j+l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;case 37:n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),G=i+l.shift(),$=a+l.shift(),Y=G+l.shift(),ie=$+l.shift(),j=Y+l.shift(),H=ie+l.shift(),Math.abs(j-f)>Math.abs(H-d)?f=j+l.shift():d=H+l.shift(),s.curveTo(n,o,i,a,G,$),s.curveTo(Y,ie,j,H,f,d);break;default:console.log("Glyph "+t.index+": unknown operator "+1200+R),l.length=0}break;case 14:l.length>0&&!c&&(w=l.shift()+v,c=!0),p&&(s.closePath(),p=!1);break;case 18:_();break;case 19:case 20:_(),V+=u+7>>3;break;case 21:l.length>2&&!c&&(w=l.shift()+v,c=!0),d+=l.pop(),f+=l.pop(),b(f,d);break;case 22:l.length>1&&!c&&(w=l.shift()+v,c=!0),f+=l.pop(),b(f,d);break;case 23:_();break;case 24:for(;l.length>2;)n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+l.shift(),s.curveTo(n,o,i,a,f,d);f+=l.shift(),d+=l.shift(),s.lineTo(f,d);break;case 25:for(;l.length>6;)f+=l.shift(),d+=l.shift(),s.lineTo(f,d);n=f+l.shift(),o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+l.shift(),s.curveTo(n,o,i,a,f,d);break;case 26:for(l.length%2&&(f+=l.shift());l.length>0;)n=f,o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i,d=a+l.shift(),s.curveTo(n,o,i,a,f,d);break;case 27:for(l.length%2&&(d+=l.shift());l.length>0;)n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a,s.curveTo(n,o,i,a,f,d);break;case 28:I=y[V],A=y[V+1],l.push((I<<24|A<<16)>>16),V+=2;break;case 29:N=l.pop()+r.gsubrsBias,P=r.gsubrs[N],P&&T(P);break;case 30:for(;l.length>0&&(n=f,o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d),l.length!==0);)n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),d=a+l.shift(),f=i+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d);break;case 31:for(;l.length>0&&(n=f+l.shift(),o=d,i=n+l.shift(),a=o+l.shift(),d=a+l.shift(),f=i+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d),l.length!==0);)n=f,o=d+l.shift(),i=n+l.shift(),a=o+l.shift(),f=i+l.shift(),d=a+(l.length===1?l.shift():0),s.curveTo(n,o,i,a,f,d);break;default:R<32?console.log("Glyph "+t.index+": unknown operator "+R):R<247?l.push(R-139):R<251?(I=y[V],V+=1,l.push((R-247)*256+I+108)):R<255?(I=y[V],V+=1,l.push(-(R-251)*256-I-108)):(I=y[V],A=y[V+1],O=y[V+2],C=y[V+3],V+=4,l.push((I<<24|A<<16|O<<8|C)/65536))}}}return T(e),t.advanceWidth=w,s}function NA(r,t,e,n){var o=[],i,a=new pe.Parser(r,t),s=a.parseCard8();if(s===0)for(var l=0;l<e;l++){if(i=a.parseCard8(),i>=n)throw new Error("CFF table CID Font FDSelect has bad FD index value "+i+" (FD count "+n+")");o.push(i)}else if(s===3){var u=a.parseCard16(),c=a.parseCard16();if(c!==0)throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID "+c);for(var p,f=0;f<u;f++){if(i=a.parseCard8(),p=a.parseCard16(),i>=n)throw new Error("CFF table CID Font FDSelect has bad FD index value "+i+" (FD count "+n+")");if(p>e)throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID "+p);for(;c<p;c++)o.push(i);c=p}if(p!==e)throw new Error("CFF Table CID Font FDSelect format 3 range has bad final GID "+p)}else throw new Error("CFF Table CID Font FDSelect table has unsupported format "+s);return o}function PA(r,t,e,n){e.tables.cff={};var o=_A(r,t),i=Xn(r,o.endOffset,pe.bytesToString),a=Xn(r,i.endOffset),s=Xn(r,a.endOffset,pe.bytesToString),l=Xn(r,s.endOffset);e.gsubrs=l.objects,e.gsubrsBias=sp(e.gsubrs);var u=Gg(r,t,a.objects,s.objects);if(u.length!==1)throw new Error("CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = "+u.length);var c=u[0];if(e.tables.cff.topDict=c,c._privateDict&&(e.defaultWidthX=c._privateDict.defaultWidthX,e.nominalWidthX=c._privateDict.nominalWidthX),c.ros[0]!==void 0&&c.ros[1]!==void 0&&(e.isCIDFont=!0),e.isCIDFont){var p=c.fdArray,f=c.fdSelect;if(p===0||f===0)throw new Error("Font is marked as a CID font, but FDArray and/or FDSelect information is missing");p+=t;var d=Xn(r,p),h=Gg(r,t,d.objects,s.objects);c._fdArray=h,f+=t,c._fdSelect=NA(r,f,e.numGlyphs,h.length)}var m=t+c.private[1],g=My(r,m,c.private[0],s.objects);if(e.defaultWidthX=g.defaultWidthX,e.nominalWidthX=g.nominalWidthX,g.subrs!==0){var v=m+g.subrs,x=Xn(r,v);e.subrs=x.objects,e.subrsBias=sp(e.subrs)}else e.subrs=[],e.subrsBias=0;var S;n.lowMemory?(S=SA(r,t+c.charStrings),e.nGlyphs=S.offsets.length):(S=Xn(r,t+c.charStrings),e.nGlyphs=S.objects.length);var w=OA(r,t+c.charset,e.nGlyphs,s.objects);if(c.encoding===0?e.cffEncoding=new ic(pA,w):c.encoding===1?e.cffEncoding=new ic(fA,w):e.cffEncoding=LA(r,t+c.encoding,w),e.encoding=e.encoding||e.cffEncoding,e.glyphs=new nn.GlyphSet(e),n.lowMemory)e._push=function(T){var y=wA(T,S.offsets,r,t+c.charStrings);e.glyphs.push(T,nn.cffGlyphLoader(e,T,Ug,y))};else for(var b=0;b<e.nGlyphs;b+=1){var _=S.objects[b];e.glyphs.push(b,nn.cffGlyphLoader(e,b,Ug,_))}}function Ey(r,t){var e,n=Ql.indexOf(r);return n>=0&&(e=n),n=t.indexOf(r),n>=0?e=n+Ql.length:(e=Ql.length+t.length,t.push(r)),e}function MA(){return new le.Record("Header",[{name:"major",type:"Card8",value:1},{name:"minor",type:"Card8",value:0},{name:"hdrSize",type:"Card8",value:4},{name:"major",type:"Card8",value:1}])}function EA(r){var t=new le.Record("Name INDEX",[{name:"names",type:"INDEX",value:[]}]);t.names=[];for(var e=0;e<r.length;e+=1)t.names.push({name:"name_"+e,type:"NAME",value:r[e]});return t}function Dy(r,t,e){for(var n={},o=0;o<r.length;o+=1){var i=r[o],a=t[i.name];a!==void 0&&!Iy(a,i.value)&&(i.type==="SID"&&(a=Ey(a,e)),n[i.op]={name:i.name,type:i.type,value:a})}return n}function Vg(r,t){var e=new le.Record("Top DICT",[{name:"dict",type:"DICT",value:{}}]);return e.dict=Dy(Ny,r,t),e}function zg(r){var t=new le.Record("Top DICT INDEX",[{name:"topDicts",type:"INDEX",value:[]}]);return t.topDicts=[{name:"topDict_0",type:"TABLE",value:r}],t}function DA(r){var t=new le.Record("String INDEX",[{name:"strings",type:"INDEX",value:[]}]);t.strings=[];for(var e=0;e<r.length;e+=1)t.strings.push({name:"string_"+e,type:"STRING",value:r[e]});return t}function BA(){return new le.Record("Global Subr INDEX",[{name:"subrs",type:"INDEX",value:[]}])}function FA(r,t){for(var e=new le.Record("Charsets",[{name:"format",type:"Card8",value:0}]),n=0;n<r.length;n+=1){var o=r[n],i=Ey(o,t);e.fields.push({name:"glyph_"+n,type:"SID",value:i})}return e}function RA(r){var t=[],e=r.path;t.push({name:"width",type:"NUMBER",value:r.advanceWidth});for(var n=0,o=0,i=0;i<e.commands.length;i+=1){var a=void 0,s=void 0,l=e.commands[i];if(l.type==="Q"){var u=.3333333333333333,c=2/3;l={type:"C",x:l.x,y:l.y,x1:Math.round(u*n+c*l.x1),y1:Math.round(u*o+c*l.y1),x2:Math.round(u*l.x+c*l.x1),y2:Math.round(u*l.y+c*l.y1)}}if(l.type==="M")a=Math.round(l.x-n),s=Math.round(l.y-o),t.push({name:"dx",type:"NUMBER",value:a}),t.push({name:"dy",type:"NUMBER",value:s}),t.push({name:"rmoveto",type:"OP",value:21}),n=Math.round(l.x),o=Math.round(l.y);else if(l.type==="L")a=Math.round(l.x-n),s=Math.round(l.y-o),t.push({name:"dx",type:"NUMBER",value:a}),t.push({name:"dy",type:"NUMBER",value:s}),t.push({name:"rlineto",type:"OP",value:5}),n=Math.round(l.x),o=Math.round(l.y);else if(l.type==="C"){var p=Math.round(l.x1-n),f=Math.round(l.y1-o),d=Math.round(l.x2-l.x1),h=Math.round(l.y2-l.y1);a=Math.round(l.x-l.x2),s=Math.round(l.y-l.y2),t.push({name:"dx1",type:"NUMBER",value:p}),t.push({name:"dy1",type:"NUMBER",value:f}),t.push({name:"dx2",type:"NUMBER",value:d}),t.push({name:"dy2",type:"NUMBER",value:h}),t.push({name:"dx",type:"NUMBER",value:a}),t.push({name:"dy",type:"NUMBER",value:s}),t.push({name:"rrcurveto",type:"OP",value:8}),n=Math.round(l.x),o=Math.round(l.y)}}return t.push({name:"endchar",type:"OP",value:14}),t}function kA(r){for(var t=new le.Record("CharStrings INDEX",[{name:"charStrings",type:"INDEX",value:[]}]),e=0;e<r.length;e+=1){var n=r.get(e),o=RA(n);t.charStrings.push({name:n.name,type:"CHARSTRING",value:o})}return t}function GA(r,t){var e=new le.Record("Private DICT",[{name:"dict",type:"DICT",value:{}}]);return e.dict=Dy(Py,r,t),e}function UA(r,t){for(var e=new le.Table("CFF ",[{name:"header",type:"RECORD"},{name:"nameIndex",type:"RECORD"},{name:"topDictIndex",type:"RECORD"},{name:"stringIndex",type:"RECORD"},{name:"globalSubrIndex",type:"RECORD"},{name:"charsets",type:"RECORD"},{name:"charStringsIndex",type:"RECORD"},{name:"privateDict",type:"RECORD"}]),n=1/t.unitsPerEm,o={version:t.version,fullName:t.fullName,familyName:t.familyName,weight:t.weightName,fontBBox:t.fontBBox||[0,0,0,0],fontMatrix:[n,0,0,n,0,0],charset:999,encoding:0,charStrings:999,private:[0,999]},i={},a=[],s,l=1;l<r.length;l+=1)s=r.get(l),a.push(s.name);var u=[];e.header=MA(),e.nameIndex=EA([t.postScriptName]);var c=Vg(o,u);e.topDictIndex=zg(c),e.globalSubrIndex=BA(),e.charsets=FA(a,u),e.charStringsIndex=kA(r),e.privateDict=GA(i,u),e.stringIndex=DA(u);var p=e.header.sizeOf()+e.nameIndex.sizeOf()+e.topDictIndex.sizeOf()+e.stringIndex.sizeOf()+e.globalSubrIndex.sizeOf();return o.charset=p,o.encoding=0,o.charStrings=o.charset+e.charsets.sizeOf(),o.private[1]=o.charStrings+e.charStringsIndex.sizeOf(),c=Vg(o,u),e.topDictIndex=zg(c),e}var By={parse:PA,make:UA};function VA(r,t){var e={},n=new pe.Parser(r,t);return e.version=n.parseVersion(),e.fontRevision=Math.round(n.parseFixed()*1e3)/1e3,e.checkSumAdjustment=n.parseULong(),e.magicNumber=n.parseULong(),xe.argument(e.magicNumber===1594834165,"Font header has wrong magic number."),e.flags=n.parseUShort(),e.unitsPerEm=n.parseUShort(),e.created=n.parseLongDateTime(),e.modified=n.parseLongDateTime(),e.xMin=n.parseShort(),e.yMin=n.parseShort(),e.xMax=n.parseShort(),e.yMax=n.parseShort(),e.macStyle=n.parseUShort(),e.lowestRecPPEM=n.parseUShort(),e.fontDirectionHint=n.parseShort(),e.indexToLocFormat=n.parseShort(),e.glyphDataFormat=n.parseShort(),e}function zA(r){var t=Math.round(new Date().getTime()/1e3)+2082844800,e=t;return r.createdTimestamp&&(e=r.createdTimestamp+2082844800),new le.Table("head",[{name:"version",type:"FIXED",value:65536},{name:"fontRevision",type:"FIXED",value:65536},{name:"checkSumAdjustment",type:"ULONG",value:0},{name:"magicNumber",type:"ULONG",value:1594834165},{name:"flags",type:"USHORT",value:0},{name:"unitsPerEm",type:"USHORT",value:1e3},{name:"created",type:"LONGDATETIME",value:e},{name:"modified",type:"LONGDATETIME",value:t},{name:"xMin",type:"SHORT",value:0},{name:"yMin",type:"SHORT",value:0},{name:"xMax",type:"SHORT",value:0},{name:"yMax",type:"SHORT",value:0},{name:"macStyle",type:"USHORT",value:0},{name:"lowestRecPPEM",type:"USHORT",value:0},{name:"fontDirectionHint",type:"SHORT",value:2},{name:"indexToLocFormat",type:"SHORT",value:0},{name:"glyphDataFormat",type:"SHORT",value:0}],r)}var Fy={parse:VA,make:zA};function jA(r,t){var e={},n=new pe.Parser(r,t);return e.version=n.parseVersion(),e.ascender=n.parseShort(),e.descender=n.parseShort(),e.lineGap=n.parseShort(),e.advanceWidthMax=n.parseUShort(),e.minLeftSideBearing=n.parseShort(),e.minRightSideBearing=n.parseShort(),e.xMaxExtent=n.parseShort(),e.caretSlopeRise=n.parseShort(),e.caretSlopeRun=n.parseShort(),e.caretOffset=n.parseShort(),n.relativeOffset+=8,e.metricDataFormat=n.parseShort(),e.numberOfHMetrics=n.parseUShort(),e}function HA(r){return new le.Table("hhea",[{name:"version",type:"FIXED",value:65536},{name:"ascender",type:"FWORD",value:0},{name:"descender",type:"FWORD",value:0},{name:"lineGap",type:"FWORD",value:0},{name:"advanceWidthMax",type:"UFWORD",value:0},{name:"minLeftSideBearing",type:"FWORD",value:0},{name:"minRightSideBearing",type:"FWORD",value:0},{name:"xMaxExtent",type:"FWORD",value:0},{name:"caretSlopeRise",type:"SHORT",value:1},{name:"caretSlopeRun",type:"SHORT",value:0},{name:"caretOffset",type:"SHORT",value:0},{name:"reserved1",type:"SHORT",value:0},{name:"reserved2",type:"SHORT",value:0},{name:"reserved3",type:"SHORT",value:0},{name:"reserved4",type:"SHORT",value:0},{name:"metricDataFormat",type:"SHORT",value:0},{name:"numberOfHMetrics",type:"USHORT",value:0}],r)}var Ry={parse:jA,make:HA};function WA(r,t,e,n,o){for(var i,a,s=new pe.Parser(r,t),l=0;l<n;l+=1){l<e&&(i=s.parseUShort(),a=s.parseShort());var u=o.get(l);u.advanceWidth=i,u.leftSideBearing=a}}function qA(r,t,e,n,o){r._hmtxTableData={};for(var i,a,s=new pe.Parser(t,e),l=0;l<o;l+=1)l<n&&(i=s.parseUShort(),a=s.parseShort()),r._hmtxTableData[l]={advanceWidth:i,leftSideBearing:a}}function XA(r,t,e,n,o,i,a){a.lowMemory?qA(r,t,e,n,o):WA(t,e,n,o,i)}function YA(r){for(var t=new le.Table("hmtx",[]),e=0;e<r.length;e+=1){var n=r.get(e),o=n.advanceWidth||0,i=n.leftSideBearing||0;t.fields.push({name:"advanceWidth_"+e,type:"USHORT",value:o}),t.fields.push({name:"leftSideBearing_"+e,type:"SHORT",value:i})}return t}var ky={parse:XA,make:YA};function $A(r){for(var t=new le.Table("ltag",[{name:"version",type:"ULONG",value:1},{name:"flags",type:"ULONG",value:0},{name:"numTags",type:"ULONG",value:r.length}]),e="",n=12+r.length*4,o=0;o<r.length;++o){var i=e.indexOf(r[o]);i<0&&(i=e.length,e+=r[o]),t.fields.push({name:"offset "+o,type:"USHORT",value:n+i}),t.fields.push({name:"length "+o,type:"USHORT",value:r[o].length})}return t.fields.push({name:"stringPool",type:"CHARARRAY",value:e}),t}function KA(r,t){var e=new pe.Parser(r,t),n=e.parseULong();xe.argument(n===1,"Unsupported ltag table version."),e.skip("uLong",1);for(var o=e.parseULong(),i=[],a=0;a<o;a++){for(var s="",l=t+e.parseUShort(),u=e.parseUShort(),c=l;c<l+u;++c)s+=String.fromCharCode(r.getInt8(c));i.push(s)}return i}var Gy={make:$A,parse:KA};function ZA(r,t){var e={},n=new pe.Parser(r,t);return e.version=n.parseVersion(),e.numGlyphs=n.parseUShort(),e.version===1&&(e.maxPoints=n.parseUShort(),e.maxContours=n.parseUShort(),e.maxCompositePoints=n.parseUShort(),e.maxCompositeContours=n.parseUShort(),e.maxZones=n.parseUShort(),e.maxTwilightPoints=n.parseUShort(),e.maxStorage=n.parseUShort(),e.maxFunctionDefs=n.parseUShort(),e.maxInstructionDefs=n.parseUShort(),e.maxStackElements=n.parseUShort(),e.maxSizeOfInstructions=n.parseUShort(),e.maxComponentElements=n.parseUShort(),e.maxComponentDepth=n.parseUShort()),e}function QA(r){return new le.Table("maxp",[{name:"version",type:"FIXED",value:20480},{name:"numGlyphs",type:"USHORT",value:r}])}var Uy={parse:ZA,make:QA},Vy=["copyright","fontFamily","fontSubfamily","uniqueID","fullName","version","postScriptName","trademark","manufacturer","designer","description","manufacturerURL","designerURL","license","licenseURL","reserved","preferredFamily","preferredSubfamily","compatibleFullName","sampleText","postScriptFindFontName","wwsFamily","wwsSubfamily"],zy={0:"en",1:"fr",2:"de",3:"it",4:"nl",5:"sv",6:"es",7:"da",8:"pt",9:"no",10:"he",11:"ja",12:"ar",13:"fi",14:"el",15:"is",16:"mt",17:"tr",18:"hr",19:"zh-Hant",20:"ur",21:"hi",22:"th",23:"ko",24:"lt",25:"pl",26:"hu",27:"es",28:"lv",29:"se",30:"fo",31:"fa",32:"ru",33:"zh",34:"nl-BE",35:"ga",36:"sq",37:"ro",38:"cz",39:"sk",40:"si",41:"yi",42:"sr",43:"mk",44:"bg",45:"uk",46:"be",47:"uz",48:"kk",49:"az-Cyrl",50:"az-Arab",51:"hy",52:"ka",53:"mo",54:"ky",55:"tg",56:"tk",57:"mn-CN",58:"mn",59:"ps",60:"ks",61:"ku",62:"sd",63:"bo",64:"ne",65:"sa",66:"mr",67:"bn",68:"as",69:"gu",70:"pa",71:"or",72:"ml",73:"kn",74:"ta",75:"te",76:"si",77:"my",78:"km",79:"lo",80:"vi",81:"id",82:"tl",83:"ms",84:"ms-Arab",85:"am",86:"ti",87:"om",88:"so",89:"sw",90:"rw",91:"rn",92:"ny",93:"mg",94:"eo",128:"cy",129:"eu",130:"ca",131:"la",132:"qu",133:"gn",134:"ay",135:"tt",136:"ug",137:"dz",138:"jv",139:"su",140:"gl",141:"af",142:"br",143:"iu",144:"gd",145:"gv",146:"ga",147:"to",148:"el-polyton",149:"kl",150:"az",151:"nn"},JA={0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:5,11:1,12:4,13:0,14:6,15:0,16:0,17:0,18:0,19:2,20:4,21:9,22:21,23:3,24:29,25:29,26:29,27:29,28:29,29:0,30:0,31:4,32:7,33:25,34:0,35:0,36:0,37:0,38:29,39:29,40:0,41:5,42:7,43:7,44:7,45:7,46:7,47:7,48:7,49:7,50:4,51:24,52:23,53:7,54:7,55:7,56:7,57:27,58:7,59:4,60:4,61:4,62:4,63:26,64:9,65:9,66:9,67:13,68:13,69:11,70:10,71:12,72:17,73:16,74:14,75:15,76:18,77:19,78:20,79:22,80:30,81:0,82:0,83:0,84:4,85:28,86:28,87:28,88:0,89:0,90:0,91:0,92:0,93:0,94:0,128:0,129:0,130:0,131:0,132:0,133:0,134:0,135:7,136:4,137:26,138:0,139:0,140:0,141:0,142:0,143:28,144:0,145:0,146:0,147:0,148:6,149:0,150:0,151:0},jy={1078:"af",1052:"sq",1156:"gsw",1118:"am",5121:"ar-DZ",15361:"ar-BH",3073:"ar",2049:"ar-IQ",11265:"ar-JO",13313:"ar-KW",12289:"ar-LB",4097:"ar-LY",6145:"ary",8193:"ar-OM",16385:"ar-QA",1025:"ar-SA",10241:"ar-SY",7169:"aeb",14337:"ar-AE",9217:"ar-YE",1067:"hy",1101:"as",2092:"az-Cyrl",1068:"az",1133:"ba",1069:"eu",1059:"be",2117:"bn",1093:"bn-IN",8218:"bs-Cyrl",5146:"bs",1150:"br",1026:"bg",1027:"ca",3076:"zh-HK",5124:"zh-MO",2052:"zh",4100:"zh-SG",1028:"zh-TW",1155:"co",1050:"hr",4122:"hr-BA",1029:"cs",1030:"da",1164:"prs",1125:"dv",2067:"nl-BE",1043:"nl",3081:"en-AU",10249:"en-BZ",4105:"en-CA",9225:"en-029",16393:"en-IN",6153:"en-IE",8201:"en-JM",17417:"en-MY",5129:"en-NZ",13321:"en-PH",18441:"en-SG",7177:"en-ZA",11273:"en-TT",2057:"en-GB",1033:"en",12297:"en-ZW",1061:"et",1080:"fo",1124:"fil",1035:"fi",2060:"fr-BE",3084:"fr-CA",1036:"fr",5132:"fr-LU",6156:"fr-MC",4108:"fr-CH",1122:"fy",1110:"gl",1079:"ka",3079:"de-AT",1031:"de",5127:"de-LI",4103:"de-LU",2055:"de-CH",1032:"el",1135:"kl",1095:"gu",1128:"ha",1037:"he",1081:"hi",1038:"hu",1039:"is",1136:"ig",1057:"id",1117:"iu",2141:"iu-Latn",2108:"ga",1076:"xh",1077:"zu",1040:"it",2064:"it-CH",1041:"ja",1099:"kn",1087:"kk",1107:"km",1158:"quc",1159:"rw",1089:"sw",1111:"kok",1042:"ko",1088:"ky",1108:"lo",1062:"lv",1063:"lt",2094:"dsb",1134:"lb",1071:"mk",2110:"ms-BN",1086:"ms",1100:"ml",1082:"mt",1153:"mi",1146:"arn",1102:"mr",1148:"moh",1104:"mn",2128:"mn-CN",1121:"ne",1044:"nb",2068:"nn",1154:"oc",1096:"or",1123:"ps",1045:"pl",1046:"pt",2070:"pt-PT",1094:"pa",1131:"qu-BO",2155:"qu-EC",3179:"qu",1048:"ro",1047:"rm",1049:"ru",9275:"smn",4155:"smj-NO",5179:"smj",3131:"se-FI",1083:"se",2107:"se-SE",8251:"sms",6203:"sma-NO",7227:"sms",1103:"sa",7194:"sr-Cyrl-BA",3098:"sr",6170:"sr-Latn-BA",2074:"sr-Latn",1132:"nso",1074:"tn",1115:"si",1051:"sk",1060:"sl",11274:"es-AR",16394:"es-BO",13322:"es-CL",9226:"es-CO",5130:"es-CR",7178:"es-DO",12298:"es-EC",17418:"es-SV",4106:"es-GT",18442:"es-HN",2058:"es-MX",19466:"es-NI",6154:"es-PA",15370:"es-PY",10250:"es-PE",20490:"es-PR",3082:"es",1034:"es",21514:"es-US",14346:"es-UY",8202:"es-VE",2077:"sv-FI",1053:"sv",1114:"syr",1064:"tg",2143:"tzm",1097:"ta",1092:"tt",1098:"te",1054:"th",1105:"bo",1055:"tr",1090:"tk",1152:"ug",1058:"uk",1070:"hsb",1056:"ur",2115:"uz-Cyrl",1091:"uz",1066:"vi",1106:"cy",1160:"wo",1157:"sah",1144:"ii",1130:"yo"};function e_(r,t,e){switch(r){case 0:if(t===65535)return"und";if(e)return e[t];break;case 1:return zy[t];case 3:return jy[t]}}var lp="utf-16",t_={0:"macintosh",1:"x-mac-japanese",2:"x-mac-chinesetrad",3:"x-mac-korean",6:"x-mac-greek",7:"x-mac-cyrillic",9:"x-mac-devanagai",10:"x-mac-gurmukhi",11:"x-mac-gujarati",12:"x-mac-oriya",13:"x-mac-bengali",14:"x-mac-tamil",15:"x-mac-telugu",16:"x-mac-kannada",17:"x-mac-malayalam",18:"x-mac-sinhalese",19:"x-mac-burmese",20:"x-mac-khmer",21:"x-mac-thai",22:"x-mac-lao",23:"x-mac-georgian",24:"x-mac-armenian",25:"x-mac-chinesesimp",26:"x-mac-tibetan",27:"x-mac-mongolian",28:"x-mac-ethiopic",29:"x-mac-ce",30:"x-mac-vietnamese",31:"x-mac-extarabic"},r_={15:"x-mac-icelandic",17:"x-mac-turkish",18:"x-mac-croatian",24:"x-mac-ce",25:"x-mac-ce",26:"x-mac-ce",27:"x-mac-ce",28:"x-mac-ce",30:"x-mac-icelandic",37:"x-mac-romanian",38:"x-mac-ce",39:"x-mac-ce",40:"x-mac-ce",143:"x-mac-inuit",146:"x-mac-gaelic"};function Hy(r,t,e){switch(r){case 0:return lp;case 1:return r_[e]||t_[t];case 3:if(t===1||t===10)return lp;break}}function n_(r,t,e){for(var n={},o=new pe.Parser(r,t),i=o.parseUShort(),a=o.parseUShort(),s=o.offset+o.parseUShort(),l=0;l<a;l++){var u=o.parseUShort(),c=o.parseUShort(),p=o.parseUShort(),f=o.parseUShort(),d=Vy[f]||f,h=o.parseUShort(),m=o.parseUShort(),g=e_(u,p,e),v=Hy(u,c,p);if(v!==void 0&&g!==void 0){var x=void 0;if(v===lp?x=Fi.UTF16(r,s+m,h):x=Fi.MACSTRING(r,s+m,h,v),x){var S=n[d];S===void 0&&(S=n[d]={}),S[g]=x}}}var w=0;return i===1&&(w=o.parseUShort()),n}function $u(r){var t={};for(var e in r)t[r[e]]=parseInt(e);return t}function jg(r,t,e,n,o,i){return new le.Record("NameRecord",[{name:"platformID",type:"USHORT",value:r},{name:"encodingID",type:"USHORT",value:t},{name:"languageID",type:"USHORT",value:e},{name:"nameID",type:"USHORT",value:n},{name:"length",type:"USHORT",value:o},{name:"offset",type:"USHORT",value:i}])}function o_(r,t){var e=r.length,n=t.length-e+1;e:for(var o=0;o<n;o++)for(;o<n;o++){for(var i=0;i<e;i++)if(t[o+i]!==r[i])continue e;return o}return-1}function Hg(r,t){var e=o_(r,t);if(e<0){e=t.length;for(var n=0,o=r.length;n<o;++n)t.push(r[n])}return e}function i_(r,t){var e,n=[],o={},i=$u(Vy);for(var a in r){var s=i[a];if(s===void 0&&(s=a),e=parseInt(s),isNaN(e))throw new Error('Name table entry "'+a+'" does not exist, see nameTableNames for complete list.');o[e]=r[a],n.push(e)}for(var l=$u(zy),u=$u(jy),c=[],p=[],f=0;f<n.length;f++){e=n[f];var d=o[e];for(var h in d){var m=d[h],g=1,v=l[h],x=JA[v],S=Hy(g,x,v),w=te.MACSTRING(m,S);w===void 0&&(g=0,v=t.indexOf(h),v<0&&(v=t.length,t.push(h)),x=4,w=te.UTF16(m));var b=Hg(w,p);c.push(jg(g,x,v,e,w.length,b));var _=u[h];if(_!==void 0){var T=te.UTF16(m),y=Hg(T,p);c.push(jg(3,1,_,e,T.length,y))}}}c.sort(function(O,C){return O.platformID-C.platformID||O.encodingID-C.encodingID||O.languageID-C.languageID||O.nameID-C.nameID});for(var I=new le.Table("name",[{name:"format",type:"USHORT",value:0},{name:"count",type:"USHORT",value:c.length},{name:"stringOffset",type:"USHORT",value:6+c.length*12}]),A=0;A<c.length;A++)I.fields.push({name:"record_"+A,type:"RECORD",value:c[A]});return I.fields.push({name:"strings",type:"LITERAL",value:p}),I}var Wy={parse:n_,make:i_},cp=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];function a_(r){for(var t=0;t<cp.length;t+=1){var e=cp[t];if(r>=e.begin&&r<e.end)return t}return-1}function s_(r,t){var e={},n=new pe.Parser(r,t);e.version=n.parseUShort(),e.xAvgCharWidth=n.parseShort(),e.usWeightClass=n.parseUShort(),e.usWidthClass=n.parseUShort(),e.fsType=n.parseUShort(),e.ySubscriptXSize=n.parseShort(),e.ySubscriptYSize=n.parseShort(),e.ySubscriptXOffset=n.parseShort(),e.ySubscriptYOffset=n.parseShort(),e.ySuperscriptXSize=n.parseShort(),e.ySuperscriptYSize=n.parseShort(),e.ySuperscriptXOffset=n.parseShort(),e.ySuperscriptYOffset=n.parseShort(),e.yStrikeoutSize=n.parseShort(),e.yStrikeoutPosition=n.parseShort(),e.sFamilyClass=n.parseShort(),e.panose=[];for(var o=0;o<10;o++)e.panose[o]=n.parseByte();return e.ulUnicodeRange1=n.parseULong(),e.ulUnicodeRange2=n.parseULong(),e.ulUnicodeRange3=n.parseULong(),e.ulUnicodeRange4=n.parseULong(),e.achVendID=String.fromCharCode(n.parseByte(),n.parseByte(),n.parseByte(),n.parseByte()),e.fsSelection=n.parseUShort(),e.usFirstCharIndex=n.parseUShort(),e.usLastCharIndex=n.parseUShort(),e.sTypoAscender=n.parseShort(),e.sTypoDescender=n.parseShort(),e.sTypoLineGap=n.parseShort(),e.usWinAscent=n.parseUShort(),e.usWinDescent=n.parseUShort(),e.version>=1&&(e.ulCodePageRange1=n.parseULong(),e.ulCodePageRange2=n.parseULong()),e.version>=2&&(e.sxHeight=n.parseShort(),e.sCapHeight=n.parseShort(),e.usDefaultChar=n.parseUShort(),e.usBreakChar=n.parseUShort(),e.usMaxContent=n.parseUShort()),e}function l_(r){return new le.Table("OS/2",[{name:"version",type:"USHORT",value:3},{name:"xAvgCharWidth",type:"SHORT",value:0},{name:"usWeightClass",type:"USHORT",value:0},{name:"usWidthClass",type:"USHORT",value:0},{name:"fsType",type:"USHORT",value:0},{name:"ySubscriptXSize",type:"SHORT",value:650},{name:"ySubscriptYSize",type:"SHORT",value:699},{name:"ySubscriptXOffset",type:"SHORT",value:0},{name:"ySubscriptYOffset",type:"SHORT",value:140},{name:"ySuperscriptXSize",type:"SHORT",value:650},{name:"ySuperscriptYSize",type:"SHORT",value:699},{name:"ySuperscriptXOffset",type:"SHORT",value:0},{name:"ySuperscriptYOffset",type:"SHORT",value:479},{name:"yStrikeoutSize",type:"SHORT",value:49},{name:"yStrikeoutPosition",type:"SHORT",value:258},{name:"sFamilyClass",type:"SHORT",value:0},{name:"bFamilyType",type:"BYTE",value:0},{name:"bSerifStyle",type:"BYTE",value:0},{name:"bWeight",type:"BYTE",value:0},{name:"bProportion",type:"BYTE",value:0},{name:"bContrast",type:"BYTE",value:0},{name:"bStrokeVariation",type:"BYTE",value:0},{name:"bArmStyle",type:"BYTE",value:0},{name:"bLetterform",type:"BYTE",value:0},{name:"bMidline",type:"BYTE",value:0},{name:"bXHeight",type:"BYTE",value:0},{name:"ulUnicodeRange1",type:"ULONG",value:0},{name:"ulUnicodeRange2",type:"ULONG",value:0},{name:"ulUnicodeRange3",type:"ULONG",value:0},{name:"ulUnicodeRange4",type:"ULONG",value:0},{name:"achVendID",type:"CHARARRAY",value:"XXXX"},{name:"fsSelection",type:"USHORT",value:0},{name:"usFirstCharIndex",type:"USHORT",value:0},{name:"usLastCharIndex",type:"USHORT",value:0},{name:"sTypoAscender",type:"SHORT",value:0},{name:"sTypoDescender",type:"SHORT",value:0},{name:"sTypoLineGap",type:"SHORT",value:0},{name:"usWinAscent",type:"USHORT",value:0},{name:"usWinDescent",type:"USHORT",value:0},{name:"ulCodePageRange1",type:"ULONG",value:0},{name:"ulCodePageRange2",type:"ULONG",value:0},{name:"sxHeight",type:"SHORT",value:0},{name:"sCapHeight",type:"SHORT",value:0},{name:"usDefaultChar",type:"USHORT",value:0},{name:"usBreakChar",type:"USHORT",value:0},{name:"usMaxContext",type:"USHORT",value:0}],r)}var up={parse:s_,make:l_,unicodeRanges:cp,getUnicodeRange:a_};function c_(r,t){var e={},n=new pe.Parser(r,t);switch(e.version=n.parseVersion(),e.italicAngle=n.parseFixed(),e.underlinePosition=n.parseShort(),e.underlineThickness=n.parseShort(),e.isFixedPitch=n.parseULong(),e.minMemType42=n.parseULong(),e.maxMemType42=n.parseULong(),e.minMemType1=n.parseULong(),e.maxMemType1=n.parseULong(),e.version){case 1:e.names=Co.slice();break;case 2:e.numberOfGlyphs=n.parseUShort(),e.glyphNameIndex=new Array(e.numberOfGlyphs);for(var o=0;o<e.numberOfGlyphs;o++)e.glyphNameIndex[o]=n.parseUShort();e.names=[];for(var i=0;i<e.numberOfGlyphs;i++)if(e.glyphNameIndex[i]>=Co.length){var a=n.parseChar();e.names.push(n.parseString(a))}break;case 2.5:e.numberOfGlyphs=n.parseUShort(),e.offset=new Array(e.numberOfGlyphs);for(var s=0;s<e.numberOfGlyphs;s++)e.offset[s]=n.parseChar();break}return e}function u_(){return new le.Table("post",[{name:"version",type:"FIXED",value:196608},{name:"italicAngle",type:"FIXED",value:0},{name:"underlinePosition",type:"FWORD",value:0},{name:"underlineThickness",type:"FWORD",value:0},{name:"isFixedPitch",type:"ULONG",value:0},{name:"minMemType42",type:"ULONG",value:0},{name:"maxMemType42",type:"ULONG",value:0},{name:"minMemType1",type:"ULONG",value:0},{name:"maxMemType1",type:"ULONG",value:0}])}var qy={parse:c_,make:u_},Tr=new Array(9);Tr[1]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{substFormat:1,coverage:this.parsePointer(E.coverage),deltaGlyphId:this.parseUShort()};if(e===2)return{substFormat:2,coverage:this.parsePointer(E.coverage),substitute:this.parseOffset16List()};xe.assert(!1,"0x"+t.toString(16)+": lookup type 1 format must be 1 or 2.")};Tr[2]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB Multiple Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),sequences:this.parseListOfLists()}};Tr[3]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB Alternate Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),alternateSets:this.parseListOfLists()}};Tr[4]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB ligature table identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),ligatureSets:this.parseListOfLists(function(){return{ligGlyph:this.parseUShort(),components:this.parseUShortList(this.parseUShort()-1)}})}};var Bi={sequenceIndex:E.uShort,lookupListIndex:E.uShort};Tr[5]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{substFormat:e,coverage:this.parsePointer(E.coverage),ruleSets:this.parseListOfLists(function(){var i=this.parseUShort(),a=this.parseUShort();return{input:this.parseUShortList(i-1),lookupRecords:this.parseRecordList(a,Bi)}})};if(e===2)return{substFormat:e,coverage:this.parsePointer(E.coverage),classDef:this.parsePointer(E.classDef),classSets:this.parseListOfLists(function(){var i=this.parseUShort(),a=this.parseUShort();return{classes:this.parseUShortList(i-1),lookupRecords:this.parseRecordList(a,Bi)}})};if(e===3){var n=this.parseUShort(),o=this.parseUShort();return{substFormat:e,coverages:this.parseList(n,E.pointer(E.coverage)),lookupRecords:this.parseRecordList(o,Bi)}}xe.assert(!1,"0x"+t.toString(16)+": lookup type 5 format must be 1, 2 or 3.")};Tr[6]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{substFormat:1,coverage:this.parsePointer(E.coverage),chainRuleSets:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(Bi)}})};if(e===2)return{substFormat:2,coverage:this.parsePointer(E.coverage),backtrackClassDef:this.parsePointer(E.classDef),inputClassDef:this.parsePointer(E.classDef),lookaheadClassDef:this.parsePointer(E.classDef),chainClassSet:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(Bi)}})};if(e===3)return{substFormat:3,backtrackCoverage:this.parseList(E.pointer(E.coverage)),inputCoverage:this.parseList(E.pointer(E.coverage)),lookaheadCoverage:this.parseList(E.pointer(E.coverage)),lookupRecords:this.parseRecordList(Bi)};xe.assert(!1,"0x"+t.toString(16)+": lookup type 6 format must be 1, 2 or 3.")};Tr[7]=function(){var t=this.parseUShort();xe.argument(t===1,"GSUB Extension Substitution subtable identifier-format must be 1");var e=this.parseUShort(),n=new E(this.data,this.offset+this.parseULong());return{substFormat:1,lookupType:e,extension:Tr[e].call(n)}};Tr[8]=function(){var t=this.parseUShort();return xe.argument(t===1,"GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),backtrackCoverage:this.parseList(E.pointer(E.coverage)),lookaheadCoverage:this.parseList(E.pointer(E.coverage)),substitutes:this.parseUShortList()}};function p_(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);return xe.argument(n===1||n===1.1,"Unsupported GSUB table version."),n===1?{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Tr)}:{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Tr),variations:e.parseFeatureVariationsList()}}var Ri=new Array(9);Ri[1]=function(t){return t.substFormat===1?new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)},{name:"deltaGlyphID",type:"USHORT",value:t.deltaGlyphId}]):new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:2},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.ushortList("substitute",t.substitute)))};Ri[2]=function(t){return xe.assert(t.substFormat===1,"Lookup type 2 substFormat must be 1."),new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("seqSet",t.sequences,function(e){return new le.Table("sequenceSetTable",le.ushortList("sequence",e))})))};Ri[3]=function(t){return xe.assert(t.substFormat===1,"Lookup type 3 substFormat must be 1."),new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("altSet",t.alternateSets,function(e){return new le.Table("alternateSetTable",le.ushortList("alternate",e))})))};Ri[4]=function(t){return xe.assert(t.substFormat===1,"Lookup type 4 substFormat must be 1."),new le.Table("substitutionTable",[{name:"substFormat",type:"USHORT",value:1},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("ligSet",t.ligatureSets,function(e){return new le.Table("ligatureSetTable",le.tableList("ligature",e,function(n){return new le.Table("ligatureTable",[{name:"ligGlyph",type:"USHORT",value:n.ligGlyph}].concat(le.ushortList("component",n.components,n.components.length+1)))}))})))};Ri[6]=function(t){if(t.substFormat===1){var e=new le.Table("chainContextTable",[{name:"substFormat",type:"USHORT",value:t.substFormat},{name:"coverage",type:"TABLE",value:new le.Coverage(t.coverage)}].concat(le.tableList("chainRuleSet",t.chainRuleSets,function(i){return new le.Table("chainRuleSetTable",le.tableList("chainRule",i,function(a){var s=le.ushortList("backtrackGlyph",a.backtrack,a.backtrack.length).concat(le.ushortList("inputGlyph",a.input,a.input.length+1)).concat(le.ushortList("lookaheadGlyph",a.lookahead,a.lookahead.length)).concat(le.ushortList("substitution",[],a.lookupRecords.length));return a.lookupRecords.forEach(function(l,u){s=s.concat({name:"sequenceIndex"+u,type:"USHORT",value:l.sequenceIndex}).concat({name:"lookupListIndex"+u,type:"USHORT",value:l.lookupListIndex})}),new le.Table("chainRuleTable",s)}))})));return e}else if(t.substFormat===2)xe.assert(!1,"lookup type 6 format 2 is not yet supported.");else if(t.substFormat===3){var n=[{name:"substFormat",type:"USHORT",value:t.substFormat}];n.push({name:"backtrackGlyphCount",type:"USHORT",value:t.backtrackCoverage.length}),t.backtrackCoverage.forEach(function(i,a){n.push({name:"backtrackCoverage"+a,type:"TABLE",value:new le.Coverage(i)})}),n.push({name:"inputGlyphCount",type:"USHORT",value:t.inputCoverage.length}),t.inputCoverage.forEach(function(i,a){n.push({name:"inputCoverage"+a,type:"TABLE",value:new le.Coverage(i)})}),n.push({name:"lookaheadGlyphCount",type:"USHORT",value:t.lookaheadCoverage.length}),t.lookaheadCoverage.forEach(function(i,a){n.push({name:"lookaheadCoverage"+a,type:"TABLE",value:new le.Coverage(i)})}),n.push({name:"substitutionCount",type:"USHORT",value:t.lookupRecords.length}),t.lookupRecords.forEach(function(i,a){n=n.concat({name:"sequenceIndex"+a,type:"USHORT",value:i.sequenceIndex}).concat({name:"lookupListIndex"+a,type:"USHORT",value:i.lookupListIndex})});var o=new le.Table("chainContextTable",n);return o}xe.assert(!1,"lookup type 6 format must be 1, 2 or 3.")};function f_(r){return new le.Table("GSUB",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new le.ScriptList(r.scripts)},{name:"features",type:"TABLE",value:new le.FeatureList(r.features)},{name:"lookups",type:"TABLE",value:new le.LookupList(r.lookups,Ri)}])}var Xy={parse:p_,make:f_};function d_(r,t){var e=new pe.Parser(r,t),n=e.parseULong();xe.argument(n===1,"Unsupported META table version."),e.parseULong(),e.parseULong();for(var o=e.parseULong(),i={},a=0;a<o;a++){var s=e.parseTag(),l=e.parseULong(),u=e.parseULong(),c=Fi.UTF8(r,t+l,u);i[s]=c}return i}function h_(r){var t=Object.keys(r).length,e="",n=16+t*12,o=new le.Table("meta",[{name:"version",type:"ULONG",value:1},{name:"flags",type:"ULONG",value:0},{name:"offset",type:"ULONG",value:n},{name:"numTags",type:"ULONG",value:t}]);for(var i in r){var a=e.length;e+=r[i],o.fields.push({name:"tag "+i,type:"TAG",value:i}),o.fields.push({name:"offset "+i,type:"ULONG",value:n+a}),o.fields.push({name:"length "+i,type:"ULONG",value:r[i].length})}return o.fields.push({name:"stringPool",type:"CHARARRAY",value:e}),o}var Yy={parse:d_,make:h_};function Wg(r){return Math.log(r)/Math.log(2)|0}function vp(r){for(;r.length%4!==0;)r.push(0);for(var t=0,e=0;e<r.length;e+=4)t+=(r[e]<<24)+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];return t%=Math.pow(2,32),t}function qg(r,t,e,n){return new le.Record("Table Record",[{name:"tag",type:"TAG",value:r!==void 0?r:""},{name:"checkSum",type:"ULONG",value:t!==void 0?t:0},{name:"offset",type:"ULONG",value:e!==void 0?e:0},{name:"length",type:"ULONG",value:n!==void 0?n:0}])}function $y(r){var t=new le.Table("sfnt",[{name:"version",type:"TAG",value:"OTTO"},{name:"numTables",type:"USHORT",value:0},{name:"searchRange",type:"USHORT",value:0},{name:"entrySelector",type:"USHORT",value:0},{name:"rangeShift",type:"USHORT",value:0}]);t.tables=r,t.numTables=r.length;var e=Math.pow(2,Wg(t.numTables));t.searchRange=16*e,t.entrySelector=Wg(e),t.rangeShift=t.numTables*16-t.searchRange;for(var n=[],o=[],i=t.sizeOf()+qg().sizeOf()*t.numTables;i%4!==0;)i+=1,o.push({name:"padding",type:"BYTE",value:0});for(var a=0;a<r.length;a+=1){var s=r[a];xe.argument(s.tableName.length===4,"Table name"+s.tableName+" is invalid.");var l=s.sizeOf(),u=qg(s.tableName,vp(s.encode()),i,l);for(n.push({name:u.tag+" Table Record",type:"RECORD",value:u}),o.push({name:s.tableName+" table",type:"RECORD",value:s}),i+=l,xe.argument(!isNaN(i),"Something went wrong calculating the offset.");i%4!==0;)i+=1,o.push({name:"padding",type:"BYTE",value:0})}return n.sort(function(c,p){return c.value.tag>p.value.tag?1:-1}),t.fields=t.fields.concat(n),t.fields=t.fields.concat(o),t}function Xg(r,t,e){for(var n=0;n<t.length;n+=1){var o=r.charToGlyphIndex(t[n]);if(o>0){var i=r.glyphs.get(o);return i.getMetrics()}}return e}function m_(r){for(var t=0,e=0;e<r.length;e+=1)t+=r[e];return t/r.length}function g_(r){for(var t=[],e=[],n=[],o=[],i=[],a=[],s=[],l,u=0,c=0,p=0,f=0,d=0,h=0;h<r.glyphs.length;h+=1){var m=r.glyphs.get(h),g=m.unicode|0;if(isNaN(m.advanceWidth))throw new Error("Glyph "+m.name+" ("+h+"): advanceWidth is not a number.");(l>g||l===void 0)&&g>0&&(l=g),u<g&&(u=g);var v=up.getUnicodeRange(g);if(v<32)c|=1<<v;else if(v<64)p|=1<<v-32;else if(v<96)f|=1<<v-64;else if(v<123)d|=1<<v-96;else throw new Error("Unicode ranges bits > 123 are reserved for internal usage");if(m.name!==".notdef"){var x=m.getMetrics();t.push(x.xMin),e.push(x.yMin),n.push(x.xMax),o.push(x.yMax),a.push(x.leftSideBearing),s.push(x.rightSideBearing),i.push(m.advanceWidth)}}var S={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,e),xMax:Math.max.apply(null,n),yMax:Math.max.apply(null,o),advanceWidthMax:Math.max.apply(null,i),advanceWidthAvg:m_(i),minLeftSideBearing:Math.min.apply(null,a),maxLeftSideBearing:Math.max.apply(null,a),minRightSideBearing:Math.min.apply(null,s)};S.ascender=r.ascender,S.descender=r.descender;var w=Fy.make({flags:3,unitsPerEm:r.unitsPerEm,xMin:S.xMin,yMin:S.yMin,xMax:S.xMax,yMax:S.yMax,lowestRecPPEM:3,createdTimestamp:r.createdTimestamp}),b=Ry.make({ascender:S.ascender,descender:S.descender,advanceWidthMax:S.advanceWidthMax,minLeftSideBearing:S.minLeftSideBearing,minRightSideBearing:S.minRightSideBearing,xMaxExtent:S.maxLeftSideBearing+(S.xMax-S.xMin),numberOfHMetrics:r.glyphs.length}),_=Uy.make(r.glyphs.length),T=up.make(Object.assign({xAvgCharWidth:Math.round(S.advanceWidthAvg),usFirstCharIndex:l,usLastCharIndex:u,ulUnicodeRange1:c,ulUnicodeRange2:p,ulUnicodeRange3:f,ulUnicodeRange4:d,sTypoAscender:S.ascender,sTypoDescender:S.descender,sTypoLineGap:0,usWinAscent:S.yMax,usWinDescent:Math.abs(S.yMin),ulCodePageRange1:1,sxHeight:Xg(r,"xyvw",{yMax:Math.round(S.ascender/2)}).yMax,sCapHeight:Xg(r,"HIKLEFJMNTZBDPRAGOQSUVWXY",S).yMax,usDefaultChar:r.hasChar(" ")?32:0,usBreakChar:r.hasChar(" ")?32:0},r.tables.os2)),y=ky.make(r.glyphs),I=Cy.make(r.glyphs),A=r.getEnglishName("fontFamily"),O=r.getEnglishName("fontSubfamily"),C=A+" "+O,N=r.getEnglishName("postScriptName");N||(N=A.replace(/\s/g,"")+"-"+O);var P={};for(var G in r.names)P[G]=r.names[G];P.uniqueID||(P.uniqueID={en:r.getEnglishName("manufacturer")+":"+C}),P.postScriptName||(P.postScriptName={en:N}),P.preferredFamily||(P.preferredFamily=r.names.fontFamily),P.preferredSubfamily||(P.preferredSubfamily=r.names.fontSubfamily);var $=[],Y=Wy.make(P,$),ie=$.length>0?Gy.make($):void 0,j=qy.make(),H=By.make(r.glyphs,{version:r.getEnglishName("version"),fullName:C,familyName:A,weightName:O,postScriptName:N,unitsPerEm:r.unitsPerEm,fontBBox:[0,S.yMin,S.ascender,S.advanceWidthMax]}),V=r.metas&&Object.keys(r.metas).length>0?Yy.make(r.metas):void 0,R=[w,b,_,T,Y,I,j,H,y];ie&&R.push(ie),r.tables.gsub&&R.push(Xy.make(r.tables.gsub)),V&&R.push(V);for(var D=$y(R),F=D.encode(),B=vp(F),X=D.fields,K=!1,q=0;q<X.length;q+=1)if(X[q].name==="head table"){X[q].value.checkSumAdjustment=2981146554-B,K=!0;break}if(!K)throw new Error("Could not find head table with checkSum to adjust.");return D}var y_={make:$y,fontToTable:g_,computeCheckSum:vp};function Ku(r,t){for(var e=0,n=r.length-1;e<=n;){var o=e+n>>>1,i=r[o].tag;if(i===t)return o;i<t?e=o+1:n=o-1}return-e-1}function Yg(r,t){for(var e=0,n=r.length-1;e<=n;){var o=e+n>>>1,i=r[o];if(i===t)return o;i<t?e=o+1:n=o-1}return-e-1}function $g(r,t){for(var e,n=0,o=r.length-1;n<=o;){var i=n+o>>>1;e=r[i];var a=e.start;if(a===t)return e;a<t?n=i+1:o=i-1}if(n>0)return e=r[n-1],t>e.end?0:e}function Ja(r,t){this.font=r,this.tableName=t}Ja.prototype={searchTag:Ku,binSearch:Yg,getTable:function(r){var t=this.font.tables[this.tableName];return!t&&r&&(t=this.font.tables[this.tableName]=this.createDefaultTable()),t},getScriptNames:function(){var r=this.getTable();return r?r.scripts.map(function(t){return t.tag}):[]},getDefaultScriptName:function(){var r=this.getTable();if(!!r){for(var t=!1,e=0;e<r.scripts.length;e++){var n=r.scripts[e].tag;if(n==="DFLT")return n;n==="latn"&&(t=!0)}if(t)return"latn"}},getScriptTable:function(r,t){var e=this.getTable(t);if(e){r=r||"DFLT";var n=e.scripts,o=Ku(e.scripts,r);if(o>=0)return n[o].script;if(t){var i={tag:r,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return n.splice(-1-o,0,i),i.script}}},getLangSysTable:function(r,t,e){var n=this.getScriptTable(r,e);if(n){if(!t||t==="dflt"||t==="DFLT")return n.defaultLangSys;var o=Ku(n.langSysRecords,t);if(o>=0)return n.langSysRecords[o].langSys;if(e){var i={tag:t,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return n.langSysRecords.splice(-1-o,0,i),i.langSys}}},getFeatureTable:function(r,t,e,n){var o=this.getLangSysTable(r,t,n);if(o){for(var i,a=o.featureIndexes,s=this.font.tables[this.tableName].features,l=0;l<a.length;l++)if(i=s[a[l]],i.tag===e)return i.feature;if(n){var u=s.length;return xe.assert(u===0||e>=s[u-1].tag,"Features must be added in alphabetical order."),i={tag:e,feature:{params:0,lookupListIndexes:[]}},s.push(i),a.push(u),i.feature}}},getLookupTables:function(r,t,e,n,o){var i=this.getFeatureTable(r,t,e,o),a=[];if(i){for(var s,l=i.lookupListIndexes,u=this.font.tables[this.tableName].lookups,c=0;c<l.length;c++)s=u[l[c]],s.lookupType===n&&a.push(s);if(a.length===0&&o){s={lookupType:n,lookupFlag:0,subtables:[],markFilteringSet:void 0};var p=u.length;return u.push(s),l.push(p),[s]}}return a},getGlyphClass:function(r,t){switch(r.format){case 1:return r.startGlyph<=t&&t<r.startGlyph+r.classes.length?r.classes[t-r.startGlyph]:0;case 2:var e=$g(r.ranges,t);return e?e.classId:0}},getCoverageIndex:function(r,t){switch(r.format){case 1:var e=Yg(r.glyphs,t);return e>=0?e:-1;case 2:var n=$g(r.ranges,t);return n?n.index+t-n.start:-1}},expandCoverage:function(r){if(r.format===1)return r.glyphs;for(var t=[],e=r.ranges,n=0;n<e.length;n++)for(var o=e[n],i=o.start,a=o.end,s=i;s<=a;s++)t.push(s);return t}};function es(r){Ja.call(this,r,"gpos")}es.prototype=Ja.prototype;es.prototype.init=function(){var r=this.getDefaultScriptName();this.defaultKerningTables=this.getKerningTables(r)};es.prototype.getKerningValue=function(r,t,e){for(var n=0;n<r.length;n++)for(var o=r[n].subtables,i=0;i<o.length;i++){var a=o[i],s=this.getCoverageIndex(a.coverage,t);if(!(s<0))switch(a.posFormat){case 1:for(var l=a.pairSets[s],u=0;u<l.length;u++){var c=l[u];if(c.secondGlyph===e)return c.value1&&c.value1.xAdvance||0}break;case 2:var p=this.getGlyphClass(a.classDef1,t),f=this.getGlyphClass(a.classDef2,e),d=a.classRecords[p][f];return d.value1&&d.value1.xAdvance||0}}return 0};es.prototype.getKerningTables=function(r,t){if(this.font.tables.gpos)return this.getLookupTables(r,t,"kern",2)};function er(r){Ja.call(this,r,"gsub")}function v_(r,t){var e=r.length;if(e!==t.length)return!1;for(var n=0;n<e;n++)if(r[n]!==t[n])return!1;return!0}function xp(r,t,e){for(var n=r.subtables,o=0;o<n.length;o++){var i=n[o];if(i.substFormat===t)return i}if(e)return n.push(e),e}er.prototype=Ja.prototype;er.prototype.createDefaultTable=function(){return{version:1,scripts:[{tag:"DFLT",script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}}],features:[],lookups:[]}};er.prototype.getSingle=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,1),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++){var l=a[s],u=this.expandCoverage(l.coverage),c=void 0;if(l.substFormat===1){var p=l.deltaGlyphId;for(c=0;c<u.length;c++){var f=u[c];n.push({sub:f,by:f+p})}}else{var d=l.substitute;for(c=0;c<u.length;c++)n.push({sub:u[c],by:d[c]})}}return n};er.prototype.getMultiple=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,2),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++){var l=a[s],u=this.expandCoverage(l.coverage),c=void 0;for(c=0;c<u.length;c++){var p=u[c],f=l.sequences[c];n.push({sub:p,by:f})}}return n};er.prototype.getAlternates=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,3),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++)for(var l=a[s],u=this.expandCoverage(l.coverage),c=l.alternateSets,p=0;p<u.length;p++)n.push({sub:u[p],by:c[p]});return n};er.prototype.getLigatures=function(r,t,e){for(var n=[],o=this.getLookupTables(t,e,r,4),i=0;i<o.length;i++)for(var a=o[i].subtables,s=0;s<a.length;s++)for(var l=a[s],u=this.expandCoverage(l.coverage),c=l.ligatureSets,p=0;p<u.length;p++)for(var f=u[p],d=c[p],h=0;h<d.length;h++){var m=d[h];n.push({sub:[f].concat(m.components),by:m.ligGlyph})}return n};er.prototype.addSingle=function(r,t,e,n){var o=this.getLookupTables(e,n,r,1,!0)[0],i=xp(o,2,{substFormat:2,coverage:{format:1,glyphs:[]},substitute:[]});xe.assert(i.coverage.format===1,"Single: unable to modify coverage table format "+i.coverage.format);var a=t.sub,s=this.binSearch(i.coverage.glyphs,a);s<0&&(s=-1-s,i.coverage.glyphs.splice(s,0,a),i.substitute.splice(s,0,0)),i.substitute[s]=t.by};er.prototype.addMultiple=function(r,t,e,n){xe.assert(t.by instanceof Array&&t.by.length>1,'Multiple: "by" must be an array of two or more ids');var o=this.getLookupTables(e,n,r,2,!0)[0],i=xp(o,1,{substFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});xe.assert(i.coverage.format===1,"Multiple: unable to modify coverage table format "+i.coverage.format);var a=t.sub,s=this.binSearch(i.coverage.glyphs,a);s<0&&(s=-1-s,i.coverage.glyphs.splice(s,0,a),i.sequences.splice(s,0,0)),i.sequences[s]=t.by};er.prototype.addAlternate=function(r,t,e,n){var o=this.getLookupTables(e,n,r,3,!0)[0],i=xp(o,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});xe.assert(i.coverage.format===1,"Alternate: unable to modify coverage table format "+i.coverage.format);var a=t.sub,s=this.binSearch(i.coverage.glyphs,a);s<0&&(s=-1-s,i.coverage.glyphs.splice(s,0,a),i.alternateSets.splice(s,0,0)),i.alternateSets[s]=t.by};er.prototype.addLigature=function(r,t,e,n){var o=this.getLookupTables(e,n,r,4,!0)[0],i=o.subtables[0];i||(i={substFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]},o.subtables[0]=i),xe.assert(i.coverage.format===1,"Ligature: unable to modify coverage table format "+i.coverage.format);var a=t.sub[0],s=t.sub.slice(1),l={ligGlyph:t.by,components:s},u=this.binSearch(i.coverage.glyphs,a);if(u>=0){for(var c=i.ligatureSets[u],p=0;p<c.length;p++)if(v_(c[p].components,s))return;c.push(l)}else u=-1-u,i.coverage.glyphs.splice(u,0,a),i.ligatureSets.splice(u,0,[l])};er.prototype.getFeature=function(r,t,e){if(/ss\d\d/.test(r))return this.getSingle(r,t,e);switch(r){case"aalt":case"salt":return this.getSingle(r,t,e).concat(this.getAlternates(r,t,e));case"dlig":case"liga":case"rlig":return this.getLigatures(r,t,e);case"ccmp":return this.getMultiple(r,t,e).concat(this.getLigatures(r,t,e));case"stch":return this.getMultiple(r,t,e)}};er.prototype.add=function(r,t,e,n){if(/ss\d\d/.test(r))return this.addSingle(r,t,e,n);switch(r){case"aalt":case"salt":return typeof t.by=="number"?this.addSingle(r,t,e,n):this.addAlternate(r,t,e,n);case"dlig":case"liga":case"rlig":return this.addLigature(r,t,e,n);case"ccmp":return t.by instanceof Array?this.addMultiple(r,t,e,n):this.addLigature(r,t,e,n)}};function x_(){return typeof window<"u"}function b_(r){for(var t=new ArrayBuffer(r.length),e=new Uint8Array(t),n=0;n<r.length;++n)e[n]=r[n];return t}function S_(r){for(var t=new Buffer(r.byteLength),e=new Uint8Array(r),n=0;n<t.length;++n)t[n]=e[n];return t}function Xa(r,t){if(!r)throw t}function Kg(r,t,e,n,o){var i;return(t&n)>0?(i=r.parseByte(),(t&o)===0&&(i=-i),i=e+i):(t&o)>0?i=e:i=e+r.parseShort(),i}function Ky(r,t,e){var n=new pe.Parser(t,e);r.numberOfContours=n.parseShort(),r._xMin=n.parseShort(),r._yMin=n.parseShort(),r._xMax=n.parseShort(),r._yMax=n.parseShort();var o,i;if(r.numberOfContours>0){for(var a=r.endPointIndices=[],s=0;s<r.numberOfContours;s+=1)a.push(n.parseUShort());r.instructionLength=n.parseUShort(),r.instructions=[];for(var l=0;l<r.instructionLength;l+=1)r.instructions.push(n.parseByte());var u=a[a.length-1]+1;o=[];for(var c=0;c<u;c+=1)if(i=n.parseByte(),o.push(i),(i&8)>0)for(var p=n.parseByte(),f=0;f<p;f+=1)o.push(i),c+=1;if(xe.argument(o.length===u,"Bad flags."),a.length>0){var d=[],h;if(u>0){for(var m=0;m<u;m+=1)i=o[m],h={},h.onCurve=!!(i&1),h.lastPointOfContour=a.indexOf(m)>=0,d.push(h);for(var g=0,v=0;v<u;v+=1)i=o[v],h=d[v],h.x=Kg(n,i,g,2,16),g=h.x;for(var x=0,S=0;S<u;S+=1)i=o[S],h=d[S],h.y=Kg(n,i,x,4,32),x=h.y}r.points=d}else r.points=[]}else if(r.numberOfContours===0)r.points=[];else{r.isComposite=!0,r.points=[],r.components=[];for(var w=!0;w;){o=n.parseUShort();var b={glyphIndex:n.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(b.dx=n.parseShort(),b.dy=n.parseShort()):b.matchedPoints=[n.parseUShort(),n.parseUShort()]:(o&2)>0?(b.dx=n.parseChar(),b.dy=n.parseChar()):b.matchedPoints=[n.parseByte(),n.parseByte()],(o&8)>0?b.xScale=b.yScale=n.parseF2Dot14():(o&64)>0?(b.xScale=n.parseF2Dot14(),b.yScale=n.parseF2Dot14()):(o&128)>0&&(b.xScale=n.parseF2Dot14(),b.scale01=n.parseF2Dot14(),b.scale10=n.parseF2Dot14(),b.yScale=n.parseF2Dot14()),r.components.push(b),w=!!(o&32)}if(o&256){r.instructionLength=n.parseUShort(),r.instructions=[];for(var _=0;_<r.instructionLength;_+=1)r.instructions.push(n.parseByte())}}}function Zu(r,t){for(var e=[],n=0;n<r.length;n+=1){var o=r[n],i={x:t.xScale*o.x+t.scale01*o.y+t.dx,y:t.scale10*o.x+t.yScale*o.y+t.dy,onCurve:o.onCurve,lastPointOfContour:o.lastPointOfContour};e.push(i)}return e}function w_(r){for(var t=[],e=[],n=0;n<r.length;n+=1){var o=r[n];e.push(o),o.lastPointOfContour&&(t.push(e),e=[])}return xe.argument(e.length===0,"There are still points left in the current contour."),t}function Zy(r){var t=new dt;if(!r)return t;for(var e=w_(r),n=0;n<e.length;++n){var o=e[n],i=null,a=o[o.length-1],s=o[0];if(a.onCurve)t.moveTo(a.x,a.y);else if(s.onCurve)t.moveTo(s.x,s.y);else{var l={x:(a.x+s.x)*.5,y:(a.y+s.y)*.5};t.moveTo(l.x,l.y)}for(var u=0;u<o.length;++u)if(i=a,a=s,s=o[(u+1)%o.length],a.onCurve)t.lineTo(a.x,a.y);else{var c=i,p=s;i.onCurve||(c={x:(a.x+i.x)*.5,y:(a.y+i.y)*.5}),s.onCurve||(p={x:(a.x+s.x)*.5,y:(a.y+s.y)*.5}),t.quadraticCurveTo(a.x,a.y,p.x,p.y)}t.closePath()}return t}function Qy(r,t){if(t.isComposite)for(var e=0;e<t.components.length;e+=1){var n=t.components[e],o=r.get(n.glyphIndex);if(o.getPath(),o.points){var i=void 0;if(n.matchedPoints===void 0)i=Zu(o.points,n);else{if(n.matchedPoints[0]>t.points.length-1||n.matchedPoints[1]>o.points.length-1)throw Error("Matched points out of range in "+t.name);var a=t.points[n.matchedPoints[0]],s=o.points[n.matchedPoints[1]],l={xScale:n.xScale,scale01:n.scale01,scale10:n.scale10,yScale:n.yScale,dx:0,dy:0};s=Zu([s],l)[0],l.dx=a.x-s.x,l.dy=a.y-s.y,i=Zu(o.points,l)}t.points=t.points.concat(i)}}return Zy(t.points)}function T_(r,t,e,n){for(var o=new nn.GlyphSet(n),i=0;i<e.length-1;i+=1){var a=e[i],s=e[i+1];a!==s?o.push(i,nn.ttfGlyphLoader(n,i,Ky,r,t+a,Qy)):o.push(i,nn.glyphLoader(n,i))}return o}function C_(r,t,e,n){var o=new nn.GlyphSet(n);return n._push=function(i){var a=e[i],s=e[i+1];a!==s?o.push(i,nn.ttfGlyphLoader(n,i,Ky,r,t+a,Qy)):o.push(i,nn.glyphLoader(n,i))},o}function A_(r,t,e,n,o){return o.lowMemory?C_(r,t,e,n):T_(r,t,e,n)}var Jy={getPath:Zy,parse:A_},e0,_o,t0,pp;function r0(r){this.font=r,this.getCommands=function(t){return Jy.getPath(t).commands},this._fpgmState=this._prepState=void 0,this._errorState=0}function __(r){return r}function n0(r){return Math.sign(r)*Math.round(Math.abs(r))}function I_(r){return Math.sign(r)*Math.round(Math.abs(r*2))/2}function O_(r){return Math.sign(r)*(Math.round(Math.abs(r)+.5)-.5)}function L_(r){return Math.sign(r)*Math.ceil(Math.abs(r))}function N_(r){return Math.sign(r)*Math.floor(Math.abs(r))}var o0=function(r){var t=this.srPeriod,e=this.srPhase,n=this.srThreshold,o=1;return r<0&&(r=-r,o=-1),r+=n-e,r=Math.trunc(r/t)*t,r+=e,r<0?e*o:r*o},rn={x:1,y:0,axis:"x",distance:function(r,t,e,n){return(e?r.xo:r.x)-(n?t.xo:t.x)},interpolate:function(r,t,e,n){var o,i,a,s,l,u,c;if(!n||n===this){if(o=r.xo-t.xo,i=r.xo-e.xo,l=t.x-t.xo,u=e.x-e.xo,a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){r.x=r.xo+(l+u)/2;return}r.x=r.xo+(l*s+u*a)/c;return}if(o=n.distance(r,t,!0,!0),i=n.distance(r,e,!0,!0),l=n.distance(t,t,!1,!0),u=n.distance(e,e,!1,!0),a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){rn.setRelative(r,r,(l+u)/2,n,!0);return}rn.setRelative(r,r,(l*s+u*a)/c,n,!0)},normalSlope:Number.NEGATIVE_INFINITY,setRelative:function(r,t,e,n,o){if(!n||n===this){r.x=(o?t.xo:t.x)+e;return}var i=o?t.xo:t.x,a=o?t.yo:t.y,s=i+e*n.x,l=a+e*n.y;r.x=s+(r.y-l)/n.normalSlope},slope:0,touch:function(r){r.xTouched=!0},touched:function(r){return r.xTouched},untouch:function(r){r.xTouched=!1}},yn={x:0,y:1,axis:"y",distance:function(r,t,e,n){return(e?r.yo:r.y)-(n?t.yo:t.y)},interpolate:function(r,t,e,n){var o,i,a,s,l,u,c;if(!n||n===this){if(o=r.yo-t.yo,i=r.yo-e.yo,l=t.y-t.yo,u=e.y-e.yo,a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){r.y=r.yo+(l+u)/2;return}r.y=r.yo+(l*s+u*a)/c;return}if(o=n.distance(r,t,!0,!0),i=n.distance(r,e,!0,!0),l=n.distance(t,t,!1,!0),u=n.distance(e,e,!1,!0),a=Math.abs(o),s=Math.abs(i),c=a+s,c===0){yn.setRelative(r,r,(l+u)/2,n,!0);return}yn.setRelative(r,r,(l*s+u*a)/c,n,!0)},normalSlope:0,setRelative:function(r,t,e,n,o){if(!n||n===this){r.y=(o?t.yo:t.y)+e;return}var i=o?t.xo:t.x,a=o?t.yo:t.y,s=i+e*n.x,l=a+e*n.y;r.y=l+n.normalSlope*(r.x-s)},slope:Number.POSITIVE_INFINITY,touch:function(r){r.yTouched=!0},touched:function(r){return r.yTouched},untouch:function(r){r.yTouched=!1}};Object.freeze(rn);Object.freeze(yn);function ts(r,t){this.x=r,this.y=t,this.axis=void 0,this.slope=t/r,this.normalSlope=-r/t,Object.freeze(this)}ts.prototype.distance=function(r,t,e,n){return this.x*rn.distance(r,t,e,n)+this.y*yn.distance(r,t,e,n)};ts.prototype.interpolate=function(r,t,e,n){var o,i,a,s,l,u,c;if(a=n.distance(r,t,!0,!0),s=n.distance(r,e,!0,!0),o=n.distance(t,t,!1,!0),i=n.distance(e,e,!1,!0),l=Math.abs(a),u=Math.abs(s),c=l+u,c===0){this.setRelative(r,r,(o+i)/2,n,!0);return}this.setRelative(r,r,(o*u+i*l)/c,n,!0)};ts.prototype.setRelative=function(r,t,e,n,o){n=n||this;var i=o?t.xo:t.x,a=o?t.yo:t.y,s=i+e*n.x,l=a+e*n.y,u=n.normalSlope,c=this.slope,p=r.x,f=r.y;r.x=(c*p-u*s+l-f)/(c-u),r.y=c*(r.x-p)+f};ts.prototype.touch=function(r){r.xTouched=!0,r.yTouched=!0};function rs(r,t){var e=Math.sqrt(r*r+t*t);return r/=e,t/=e,r===1&&t===0?rn:r===0&&t===1?yn:new ts(r,t)}function vn(r,t,e,n){this.x=this.xo=Math.round(r*64)/64,this.y=this.yo=Math.round(t*64)/64,this.lastPointOfContour=e,this.onCurve=n,this.prevPointOnContour=void 0,this.nextPointOnContour=void 0,this.xTouched=!1,this.yTouched=!1,Object.preventExtensions(this)}vn.prototype.nextTouched=function(r){for(var t=this.nextPointOnContour;!r.touched(t)&&t!==this;)t=t.nextPointOnContour;return t};vn.prototype.prevTouched=function(r){for(var t=this.prevPointOnContour;!r.touched(t)&&t!==this;)t=t.prevPointOnContour;return t};var Qa=Object.freeze(new vn(0,0)),P_={cvCutIn:17/16,deltaBase:9,deltaShift:.125,loop:1,minDis:1,autoFlip:!0};function Yn(r,t){switch(this.env=r,this.stack=[],this.prog=t,r){case"glyf":this.zp0=this.zp1=this.zp2=1,this.rp0=this.rp1=this.rp2=0;case"prep":this.fv=this.pv=this.dpv=rn,this.round=n0}}r0.prototype.exec=function(r,t){if(typeof t!="number")throw new Error("Point size is not a number!");if(!(this._errorState>2)){var e=this.font,n=this._prepState;if(!n||n.ppem!==t){var o=this._fpgmState;if(!o){Yn.prototype=P_,o=this._fpgmState=new Yn("fpgm",e.tables.fpgm),o.funcs=[],o.font=e,exports.DEBUG&&(console.log("---EXEC FPGM---"),o.step=-1);try{_o(o)}catch(u){console.log("Hinting error in FPGM:"+u),this._errorState=3;return}}Yn.prototype=o,n=this._prepState=new Yn("prep",e.tables.prep),n.ppem=t;var i=e.tables.cvt;if(i)for(var a=n.cvt=new Array(i.length),s=t/e.unitsPerEm,l=0;l<i.length;l++)a[l]=i[l]*s;else n.cvt=[];exports.DEBUG&&(console.log("---EXEC PREP---"),n.step=-1);try{_o(n)}catch(u){this._errorState<2&&console.log("Hinting error in PREP:"+u),this._errorState=2}}if(!(this._errorState>1))try{return t0(r,n)}catch(u){this._errorState<1&&(console.log("Hinting error:"+u),console.log("Note: further hinting errors are silenced")),this._errorState=1;return}}};t0=function(r,t){var e=t.ppem/t.font.unitsPerEm,n=e,o=r.components,i,a,s;if(Yn.prototype=t,!o)s=new Yn("glyf",r.instructions),exports.DEBUG&&(console.log("---EXEC GLYPH---"),s.step=-1),pp(r,s,e,n),a=s.gZone;else{var l=t.font;a=[],i=[];for(var u=0;u<o.length;u++){var c=o[u],p=l.glyphs.get(c.glyphIndex);s=new Yn("glyf",p.instructions),exports.DEBUG&&(console.log("---EXEC COMP "+u+"---"),s.step=-1),pp(p,s,e,n);for(var f=Math.round(c.dx*e),d=Math.round(c.dy*n),h=s.gZone,m=s.contours,g=0;g<h.length;g++){var v=h[g];v.xTouched=v.yTouched=!1,v.xo=v.x=v.x+f,v.yo=v.y=v.y+d}var x=a.length;a.push.apply(a,h);for(var S=0;S<m.length;S++)i.push(m[S]+x)}r.instructions&&!s.inhibitGridFit&&(s=new Yn("glyf",r.instructions),s.gZone=s.z0=s.z1=s.z2=a,s.contours=i,a.push(new vn(0,0),new vn(Math.round(r.advanceWidth*e),0)),exports.DEBUG&&(console.log("---EXEC COMPOSITE---"),s.step=-1),_o(s),a.length-=2)}return a};pp=function(r,t,e,n){for(var o=r.points||[],i=o.length,a=t.gZone=t.z0=t.z1=t.z2=[],s=t.contours=[],l,u=0;u<i;u++)l=o[u],a[u]=new vn(l.x*e,l.y*n,l.lastPointOfContour,l.onCurve);for(var c,p,f=0;f<i;f++)l=a[f],c||(c=l,s.push(f)),l.lastPointOfContour?(l.nextPointOnContour=c,c.prevPointOnContour=l,c=void 0):(p=a[f+1],l.nextPointOnContour=p,p.prevPointOnContour=l);if(!t.inhibitGridFit){if(exports.DEBUG){console.log("PROCESSING GLYPH",t.stack);for(var d=0;d<i;d++)console.log(d,a[d].x,a[d].y)}if(a.push(new vn(0,0),new vn(Math.round(r.advanceWidth*e),0)),_o(t),a.length-=2,exports.DEBUG){console.log("FINISHED GLYPH",t.stack);for(var h=0;h<i;h++)console.log(h,a[h].x,a[h].y)}}};_o=function(r){var t=r.prog;if(!!t){var e=t.length,n;for(r.ip=0;r.ip<e;r.ip++){if(exports.DEBUG&&r.step++,n=e0[t[r.ip]],!n)throw new Error("unknown instruction: 0x"+Number(t[r.ip]).toString(16));n(r)}}};function ac(r){for(var t=r.tZone=new Array(r.gZone.length),e=0;e<t.length;e++)t[e]=new vn(0,0)}function i0(r,t){var e=r.prog,n=r.ip,o=1,i;do if(i=e[++n],i===88)o++;else if(i===89)o--;else if(i===64)n+=e[n+1]+1;else if(i===65)n+=2*e[n+1]+1;else if(i>=176&&i<=183)n+=i-176+1;else if(i>=184&&i<=191)n+=(i-184+1)*2;else if(t&&o===1&&i===27)break;while(o>0);r.ip=n}function Zg(r,t){exports.DEBUG&&console.log(t.step,"SVTCA["+r.axis+"]"),t.fv=t.pv=t.dpv=r}function Qg(r,t){exports.DEBUG&&console.log(t.step,"SPVTCA["+r.axis+"]"),t.pv=t.dpv=r}function Jg(r,t){exports.DEBUG&&console.log(t.step,"SFVTCA["+r.axis+"]"),t.fv=r}function ey(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z2[n],a=t.z1[o];exports.DEBUG&&console.log("SPVTL["+r+"]",n,o);var s,l;r?(s=i.y-a.y,l=a.x-i.x):(s=a.x-i.x,l=a.y-i.y),t.pv=t.dpv=rs(s,l)}function ty(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z2[n],a=t.z1[o];exports.DEBUG&&console.log("SFVTL["+r+"]",n,o);var s,l;r?(s=i.y-a.y,l=a.x-i.x):(s=a.x-i.x,l=a.y-i.y),t.fv=rs(s,l)}function M_(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SPVFS[]",e,n),r.pv=r.dpv=rs(n,e)}function E_(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SPVFS[]",e,n),r.fv=rs(n,e)}function D_(r){var t=r.stack,e=r.pv;exports.DEBUG&&console.log(r.step,"GPV[]"),t.push(e.x*16384),t.push(e.y*16384)}function B_(r){var t=r.stack,e=r.fv;exports.DEBUG&&console.log(r.step,"GFV[]"),t.push(e.x*16384),t.push(e.y*16384)}function F_(r){r.fv=r.pv,exports.DEBUG&&console.log(r.step,"SFVTPV[]")}function R_(r){var t=r.stack,e=t.pop(),n=t.pop(),o=t.pop(),i=t.pop(),a=t.pop(),s=r.z0,l=r.z1,u=s[e],c=s[n],p=l[o],f=l[i],d=r.z2[a];exports.DEBUG&&console.log("ISECT[], ",e,n,o,i,a);var h=u.x,m=u.y,g=c.x,v=c.y,x=p.x,S=p.y,w=f.x,b=f.y,_=(h-g)*(S-b)-(m-v)*(x-w),T=h*v-m*g,y=x*b-S*w;d.x=(T*(x-w)-y*(h-g))/_,d.y=(T*(S-b)-y*(m-v))/_}function k_(r){r.rp0=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP0[]",r.rp0)}function G_(r){r.rp1=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP1[]",r.rp1)}function U_(r){r.rp2=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP2[]",r.rp2)}function V_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP0[]",t),r.zp0=t,t){case 0:r.tZone||ac(r),r.z0=r.tZone;break;case 1:r.z0=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function z_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP1[]",t),r.zp1=t,t){case 0:r.tZone||ac(r),r.z1=r.tZone;break;case 1:r.z1=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function j_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP2[]",t),r.zp2=t,t){case 0:r.tZone||ac(r),r.z2=r.tZone;break;case 1:r.z2=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function H_(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZPS[]",t),r.zp0=r.zp1=r.zp2=t,t){case 0:r.tZone||ac(r),r.z0=r.z1=r.z2=r.tZone;break;case 1:r.z0=r.z1=r.z2=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function W_(r){r.loop=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SLOOP[]",r.loop)}function q_(r){exports.DEBUG&&console.log(r.step,"RTG[]"),r.round=n0}function X_(r){exports.DEBUG&&console.log(r.step,"RTHG[]"),r.round=O_}function Y_(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SMD[]",t),r.minDis=t/64}function $_(r){exports.DEBUG&&console.log(r.step,"ELSE[]"),i0(r,!1)}function K_(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"JMPR[]",t),r.ip+=t-1}function Z_(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCVTCI[]",t),r.cvCutIn=t/64}function Q_(r){var t=r.stack;exports.DEBUG&&console.log(r.step,"DUP[]"),t.push(t[t.length-1])}function Qu(r){exports.DEBUG&&console.log(r.step,"POP[]"),r.stack.pop()}function J_(r){exports.DEBUG&&console.log(r.step,"CLEAR[]"),r.stack.length=0}function e2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SWAP[]"),t.push(e),t.push(n)}function t2(r){var t=r.stack;exports.DEBUG&&console.log(r.step,"DEPTH[]"),t.push(t.length)}function r2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"LOOPCALL[]",e,n);var o=r.ip,i=r.prog;r.prog=r.funcs[e];for(var a=0;a<n;a++)_o(r),exports.DEBUG&&console.log(++r.step,a+1<n?"next loopcall":"done loopcall",a);r.ip=o,r.prog=i}function n2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"CALL[]",t);var e=r.ip,n=r.prog;r.prog=r.funcs[t],_o(r),r.ip=e,r.prog=n,exports.DEBUG&&console.log(++r.step,"returning from",t)}function o2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"CINDEX[]",e),t.push(t[t.length-e])}function i2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"MINDEX[]",e),t.push(t.splice(t.length-e,1)[0])}function a2(r){if(r.env!=="fpgm")throw new Error("FDEF not allowed here");var t=r.stack,e=r.prog,n=r.ip,o=t.pop(),i=n;for(exports.DEBUG&&console.log(r.step,"FDEF[]",o);e[++n]!==45;);r.ip=n,r.funcs[o]=e.slice(i+1,n)}function ry(r,t){var e=t.stack.pop(),n=t.z0[e],o=t.fv,i=t.pv;exports.DEBUG&&console.log(t.step,"MDAP["+r+"]",e);var a=i.distance(n,Qa);r&&(a=t.round(a)),o.setRelative(n,Qa,a,i),o.touch(n),t.rp0=t.rp1=e}function ny(r,t){var e=t.z2,n=e.length-2,o,i,a;exports.DEBUG&&console.log(t.step,"IUP["+r.axis+"]");for(var s=0;s<n;s++)o=e[s],!r.touched(o)&&(i=o.prevTouched(r),i!==o&&(a=o.nextTouched(r),i===a&&r.setRelative(o,o,r.distance(i,i,!1,!0),r,!0),r.interpolate(o,i,a,r)))}function oy(r,t){for(var e=t.stack,n=r?t.rp1:t.rp2,o=(r?t.z0:t.z1)[n],i=t.fv,a=t.pv,s=t.loop,l=t.z2;s--;){var u=e.pop(),c=l[u],p=a.distance(o,o,!1,!0);i.setRelative(c,c,p,a),i.touch(c),exports.DEBUG&&console.log(t.step,(t.loop>1?"loop "+(t.loop-s)+": ":"")+"SHP["+(r?"rp1":"rp2")+"]",u)}t.loop=1}function iy(r,t){var e=t.stack,n=r?t.rp1:t.rp2,o=(r?t.z0:t.z1)[n],i=t.fv,a=t.pv,s=e.pop(),l=t.z2[t.contours[s]],u=l;exports.DEBUG&&console.log(t.step,"SHC["+r+"]",s);var c=a.distance(o,o,!1,!0);do u!==o&&i.setRelative(u,u,c,a),u=u.nextPointOnContour;while(u!==l)}function ay(r,t){var e=t.stack,n=r?t.rp1:t.rp2,o=(r?t.z0:t.z1)[n],i=t.fv,a=t.pv,s=e.pop();exports.DEBUG&&console.log(t.step,"SHZ["+r+"]",s);var l;switch(s){case 0:l=t.tZone;break;case 1:l=t.gZone;break;default:throw new Error("Invalid zone")}for(var u,c=a.distance(o,o,!1,!0),p=l.length-2,f=0;f<p;f++)u=l[f],i.setRelative(u,u,c,a)}function s2(r){for(var t=r.stack,e=r.loop,n=r.fv,o=t.pop()/64,i=r.z2;e--;){var a=t.pop(),s=i[a];exports.DEBUG&&console.log(r.step,(r.loop>1?"loop "+(r.loop-e)+": ":"")+"SHPIX[]",a,o),n.setRelative(s,s,o),n.touch(s)}r.loop=1}function l2(r){for(var t=r.stack,e=r.rp1,n=r.rp2,o=r.loop,i=r.z0[e],a=r.z1[n],s=r.fv,l=r.dpv,u=r.z2;o--;){var c=t.pop(),p=u[c];exports.DEBUG&&console.log(r.step,(r.loop>1?"loop "+(r.loop-o)+": ":"")+"IP[]",c,e,"<->",n),s.interpolate(p,i,a,l),s.touch(p)}r.loop=1}function sy(r,t){var e=t.stack,n=e.pop()/64,o=e.pop(),i=t.z1[o],a=t.z0[t.rp0],s=t.fv,l=t.pv;s.setRelative(i,a,n,l),s.touch(i),exports.DEBUG&&console.log(t.step,"MSIRP["+r+"]",n,o),t.rp1=t.rp0,t.rp2=o,r&&(t.rp0=o)}function c2(r){for(var t=r.stack,e=r.rp0,n=r.z0[e],o=r.loop,i=r.fv,a=r.pv,s=r.z1;o--;){var l=t.pop(),u=s[l];exports.DEBUG&&console.log(r.step,(r.loop>1?"loop "+(r.loop-o)+": ":"")+"ALIGNRP[]",l),i.setRelative(u,n,0,a),i.touch(u)}r.loop=1}function u2(r){exports.DEBUG&&console.log(r.step,"RTDG[]"),r.round=I_}function ly(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z0[o],a=t.fv,s=t.pv,l=t.cvt[n];exports.DEBUG&&console.log(t.step,"MIAP["+r+"]",n,"(",l,")",o);var u=s.distance(i,Qa);r&&(Math.abs(u-l)<t.cvCutIn&&(u=l),u=t.round(u)),a.setRelative(i,Qa,u,s),t.zp0===0&&(i.xo=i.x,i.yo=i.y),a.touch(i),t.rp0=t.rp1=o}function p2(r){var t=r.prog,e=r.ip,n=r.stack,o=t[++e];exports.DEBUG&&console.log(r.step,"NPUSHB[]",o);for(var i=0;i<o;i++)n.push(t[++e]);r.ip=e}function f2(r){var t=r.ip,e=r.prog,n=r.stack,o=e[++t];exports.DEBUG&&console.log(r.step,"NPUSHW[]",o);for(var i=0;i<o;i++){var a=e[++t]<<8|e[++t];a&32768&&(a=-((a^65535)+1)),n.push(a)}r.ip=t}function d2(r){var t=r.stack,e=r.store;e||(e=r.store=[]);var n=t.pop(),o=t.pop();exports.DEBUG&&console.log(r.step,"WS",n,o),e[o]=n}function h2(r){var t=r.stack,e=r.store,n=t.pop();exports.DEBUG&&console.log(r.step,"RS",n);var o=e&&e[n]||0;t.push(o)}function m2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"WCVTP",e,n),r.cvt[n]=e/64}function g2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"RCVT",e),t.push(r.cvt[e]*64)}function cy(r,t){var e=t.stack,n=e.pop(),o=t.z2[n];exports.DEBUG&&console.log(t.step,"GC["+r+"]",n),e.push(t.dpv.distance(o,Qa,r,!1)*64)}function uy(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z1[n],a=t.z0[o],s=t.dpv.distance(a,i,r,r);exports.DEBUG&&console.log(t.step,"MD["+r+"]",n,o,"->",s),t.stack.push(Math.round(s*64))}function y2(r){exports.DEBUG&&console.log(r.step,"MPPEM[]"),r.stack.push(r.ppem)}function v2(r){exports.DEBUG&&console.log(r.step,"FLIPON[]"),r.autoFlip=!0}function x2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"LT[]",e,n),t.push(n<e?1:0)}function b2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"LTEQ[]",e,n),t.push(n<=e?1:0)}function S2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"GT[]",e,n),t.push(n>e?1:0)}function w2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"GTEQ[]",e,n),t.push(n>=e?1:0)}function T2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"EQ[]",e,n),t.push(e===n?1:0)}function C2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"NEQ[]",e,n),t.push(e!==n?1:0)}function A2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"ODD[]",e),t.push(Math.trunc(e)%2?1:0)}function _2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"EVEN[]",e),t.push(Math.trunc(e)%2?0:1)}function I2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"IF[]",t),t||(i0(r,!0),exports.DEBUG&&console.log(r.step,"EIF[]"))}function O2(r){exports.DEBUG&&console.log(r.step,"EIF[]")}function L2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"AND[]",e,n),t.push(e&&n?1:0)}function N2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"OR[]",e,n),t.push(e||n?1:0)}function P2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"NOT[]",e),t.push(e?0:1)}function Ju(r,t){var e=t.stack,n=e.pop(),o=t.fv,i=t.pv,a=t.ppem,s=t.deltaBase+(r-1)*16,l=t.deltaShift,u=t.z0;exports.DEBUG&&console.log(t.step,"DELTAP["+r+"]",n,e);for(var c=0;c<n;c++){var p=e.pop(),f=e.pop(),d=s+((f&240)>>4);if(d===a){var h=(f&15)-8;h>=0&&h++,exports.DEBUG&&console.log(t.step,"DELTAPFIX",p,"by",h*l);var m=u[p];o.setRelative(m,m,h*l,i)}}}function M2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"SDB[]",e),r.deltaBase=e}function E2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"SDS[]",e),r.deltaShift=Math.pow(.5,e)}function D2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"ADD[]",e,n),t.push(n+e)}function B2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SUB[]",e,n),t.push(n-e)}function F2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"DIV[]",e,n),t.push(n*64/e)}function R2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"MUL[]",e,n),t.push(n*e/64)}function k2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"ABS[]",e),t.push(Math.abs(e))}function G2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"NEG[]",e),t.push(-e)}function U2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"FLOOR[]",e),t.push(Math.floor(e/64)*64)}function V2(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"CEILING[]",e),t.push(Math.ceil(e/64)*64)}function Zl(r,t){var e=t.stack,n=e.pop();exports.DEBUG&&console.log(t.step,"ROUND[]"),e.push(t.round(n/64)*64)}function z2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"WCVTF[]",e,n),r.cvt[n]=e*r.ppem/r.font.unitsPerEm}function ep(r,t){var e=t.stack,n=e.pop(),o=t.ppem,i=t.deltaBase+(r-1)*16,a=t.deltaShift;exports.DEBUG&&console.log(t.step,"DELTAC["+r+"]",n,e);for(var s=0;s<n;s++){var l=e.pop(),u=e.pop(),c=i+((u&240)>>4);if(c===o){var p=(u&15)-8;p>=0&&p++;var f=p*a;exports.DEBUG&&console.log(t.step,"DELTACFIX",l,"by",f),t.cvt[l]+=f}}}function j2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SROUND[]",t),r.round=o0;var e;switch(t&192){case 0:e=.5;break;case 64:e=1;break;case 128:e=2;break;default:throw new Error("invalid SROUND value")}switch(r.srPeriod=e,t&48){case 0:r.srPhase=0;break;case 16:r.srPhase=.25*e;break;case 32:r.srPhase=.5*e;break;case 48:r.srPhase=.75*e;break;default:throw new Error("invalid SROUND value")}t&=15,t===0?r.srThreshold=0:r.srThreshold=(t/8-.5)*e}function H2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"S45ROUND[]",t),r.round=o0;var e;switch(t&192){case 0:e=Math.sqrt(2)/2;break;case 64:e=Math.sqrt(2);break;case 128:e=2*Math.sqrt(2);break;default:throw new Error("invalid S45ROUND value")}switch(r.srPeriod=e,t&48){case 0:r.srPhase=0;break;case 16:r.srPhase=.25*e;break;case 32:r.srPhase=.5*e;break;case 48:r.srPhase=.75*e;break;default:throw new Error("invalid S45ROUND value")}t&=15,t===0?r.srThreshold=0:r.srThreshold=(t/8-.5)*e}function W2(r){exports.DEBUG&&console.log(r.step,"ROFF[]"),r.round=__}function q2(r){exports.DEBUG&&console.log(r.step,"RUTG[]"),r.round=L_}function X2(r){exports.DEBUG&&console.log(r.step,"RDTG[]"),r.round=N_}function Y2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCANCTRL[]",t)}function py(r,t){var e=t.stack,n=e.pop(),o=e.pop(),i=t.z2[n],a=t.z1[o];exports.DEBUG&&console.log(t.step,"SDPVTL["+r+"]",n,o);var s,l;r?(s=i.y-a.y,l=a.x-i.x):(s=a.x-i.x,l=a.y-i.y),t.dpv=rs(s,l)}function $2(r){var t=r.stack,e=t.pop(),n=0;exports.DEBUG&&console.log(r.step,"GETINFO[]",e),e&1&&(n=35),e&32&&(n|=4096),t.push(n)}function K2(r){var t=r.stack,e=t.pop(),n=t.pop(),o=t.pop();exports.DEBUG&&console.log(r.step,"ROLL[]"),t.push(n),t.push(e),t.push(o)}function Z2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"MAX[]",e,n),t.push(Math.max(n,e))}function Q2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"MIN[]",e,n),t.push(Math.min(n,e))}function J2(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCANTYPE[]",t)}function eI(r){var t=r.stack.pop(),e=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"INSTCTRL[]",t,e),t){case 1:r.inhibitGridFit=!!e;return;case 2:r.ignoreCvt=!!e;return;default:throw new Error("invalid INSTCTRL[] selector")}}function Wn(r,t){var e=t.stack,n=t.prog,o=t.ip;exports.DEBUG&&console.log(t.step,"PUSHB["+r+"]");for(var i=0;i<r;i++)e.push(n[++o]);t.ip=o}function qn(r,t){var e=t.ip,n=t.prog,o=t.stack;exports.DEBUG&&console.log(t.ip,"PUSHW["+r+"]");for(var i=0;i<r;i++){var a=n[++e]<<8|n[++e];a&32768&&(a=-((a^65535)+1)),o.push(a)}t.ip=e}function ue(r,t,e,n,o,i){var a=i.stack,s=r&&a.pop(),l=a.pop(),u=i.rp0,c=i.z0[u],p=i.z1[l],f=i.minDis,d=i.fv,h=i.dpv,m,g,v,x;g=m=h.distance(p,c,!0,!0),v=g>=0?1:-1,g=Math.abs(g),r&&(x=i.cvt[s],n&&Math.abs(g-x)<i.cvCutIn&&(g=x)),e&&g<f&&(g=f),n&&(g=i.round(g)),d.setRelative(p,c,v*g,h),d.touch(p),exports.DEBUG&&console.log(i.step,(r?"MIRP[":"MDRP[")+(t?"M":"m")+(e?">":"_")+(n?"R":"_")+(o===0?"Gr":o===1?"Bl":o===2?"Wh":"")+"]",r?s+"("+i.cvt[s]+","+x+")":"",l,"(d =",m,"->",v*g,")"),i.rp1=i.rp0,i.rp2=l,t&&(i.rp0=l)}e0=[Zg.bind(void 0,yn),Zg.bind(void 0,rn),Qg.bind(void 0,yn),Qg.bind(void 0,rn),Jg.bind(void 0,yn),Jg.bind(void 0,rn),ey.bind(void 0,0),ey.bind(void 0,1),ty.bind(void 0,0),ty.bind(void 0,1),M_,E_,D_,B_,F_,R_,k_,G_,U_,V_,z_,j_,H_,W_,q_,X_,Y_,$_,K_,Z_,void 0,void 0,Q_,Qu,J_,e2,t2,o2,i2,void 0,void 0,void 0,r2,n2,a2,void 0,ry.bind(void 0,0),ry.bind(void 0,1),ny.bind(void 0,yn),ny.bind(void 0,rn),oy.bind(void 0,0),oy.bind(void 0,1),iy.bind(void 0,0),iy.bind(void 0,1),ay.bind(void 0,0),ay.bind(void 0,1),s2,l2,sy.bind(void 0,0),sy.bind(void 0,1),c2,u2,ly.bind(void 0,0),ly.bind(void 0,1),p2,f2,d2,h2,m2,g2,cy.bind(void 0,0),cy.bind(void 0,1),void 0,uy.bind(void 0,0),uy.bind(void 0,1),y2,void 0,v2,void 0,void 0,x2,b2,S2,w2,T2,C2,A2,_2,I2,O2,L2,N2,P2,Ju.bind(void 0,1),M2,E2,D2,B2,F2,R2,k2,G2,U2,V2,Zl.bind(void 0,0),Zl.bind(void 0,1),Zl.bind(void 0,2),Zl.bind(void 0,3),void 0,void 0,void 0,void 0,z2,Ju.bind(void 0,2),Ju.bind(void 0,3),ep.bind(void 0,1),ep.bind(void 0,2),ep.bind(void 0,3),j2,H2,void 0,void 0,W2,void 0,q2,X2,Qu,Qu,void 0,void 0,void 0,void 0,void 0,Y2,py.bind(void 0,0),py.bind(void 0,1),$2,void 0,K2,Z2,Q2,J2,eI,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,Wn.bind(void 0,1),Wn.bind(void 0,2),Wn.bind(void 0,3),Wn.bind(void 0,4),Wn.bind(void 0,5),Wn.bind(void 0,6),Wn.bind(void 0,7),Wn.bind(void 0,8),qn.bind(void 0,1),qn.bind(void 0,2),qn.bind(void 0,3),qn.bind(void 0,4),qn.bind(void 0,5),qn.bind(void 0,6),qn.bind(void 0,7),qn.bind(void 0,8),ue.bind(void 0,0,0,0,0,0),ue.bind(void 0,0,0,0,0,1),ue.bind(void 0,0,0,0,0,2),ue.bind(void 0,0,0,0,0,3),ue.bind(void 0,0,0,0,1,0),ue.bind(void 0,0,0,0,1,1),ue.bind(void 0,0,0,0,1,2),ue.bind(void 0,0,0,0,1,3),ue.bind(void 0,0,0,1,0,0),ue.bind(void 0,0,0,1,0,1),ue.bind(void 0,0,0,1,0,2),ue.bind(void 0,0,0,1,0,3),ue.bind(void 0,0,0,1,1,0),ue.bind(void 0,0,0,1,1,1),ue.bind(void 0,0,0,1,1,2),ue.bind(void 0,0,0,1,1,3),ue.bind(void 0,0,1,0,0,0),ue.bind(void 0,0,1,0,0,1),ue.bind(void 0,0,1,0,0,2),ue.bind(void 0,0,1,0,0,3),ue.bind(void 0,0,1,0,1,0),ue.bind(void 0,0,1,0,1,1),ue.bind(void 0,0,1,0,1,2),ue.bind(void 0,0,1,0,1,3),ue.bind(void 0,0,1,1,0,0),ue.bind(void 0,0,1,1,0,1),ue.bind(void 0,0,1,1,0,2),ue.bind(void 0,0,1,1,0,3),ue.bind(void 0,0,1,1,1,0),ue.bind(void 0,0,1,1,1,1),ue.bind(void 0,0,1,1,1,2),ue.bind(void 0,0,1,1,1,3),ue.bind(void 0,1,0,0,0,0),ue.bind(void 0,1,0,0,0,1),ue.bind(void 0,1,0,0,0,2),ue.bind(void 0,1,0,0,0,3),ue.bind(void 0,1,0,0,1,0),ue.bind(void 0,1,0,0,1,1),ue.bind(void 0,1,0,0,1,2),ue.bind(void 0,1,0,0,1,3),ue.bind(void 0,1,0,1,0,0),ue.bind(void 0,1,0,1,0,1),ue.bind(void 0,1,0,1,0,2),ue.bind(void 0,1,0,1,0,3),ue.bind(void 0,1,0,1,1,0),ue.bind(void 0,1,0,1,1,1),ue.bind(void 0,1,0,1,1,2),ue.bind(void 0,1,0,1,1,3),ue.bind(void 0,1,1,0,0,0),ue.bind(void 0,1,1,0,0,1),ue.bind(void 0,1,1,0,0,2),ue.bind(void 0,1,1,0,0,3),ue.bind(void 0,1,1,0,1,0),ue.bind(void 0,1,1,0,1,1),ue.bind(void 0,1,1,0,1,2),ue.bind(void 0,1,1,0,1,3),ue.bind(void 0,1,1,1,0,0),ue.bind(void 0,1,1,1,0,1),ue.bind(void 0,1,1,1,0,2),ue.bind(void 0,1,1,1,0,3),ue.bind(void 0,1,1,1,1,0),ue.bind(void 0,1,1,1,1,1),ue.bind(void 0,1,1,1,1,2),ue.bind(void 0,1,1,1,1,3)];function ki(r){this.char=r,this.state={},this.activeState=null}function bp(r,t,e){this.contextName=e,this.startIndex=r,this.endOffset=t}function tI(r,t,e){this.contextName=r,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=e}function Cr(r,t){this.context=r,this.index=t,this.length=r.length,this.current=r[t],this.backtrack=r.slice(0,t),this.lookahead=r.slice(t+1)}function sc(r){this.eventId=r,this.subscribers=[]}function rI(r){var t=this,e=["start","end","next","newToken","contextStart","contextEnd","insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD","updateContextsRanges"];e.forEach(function(o){Object.defineProperty(t.events,o,{value:new sc(o)})}),r&&e.forEach(function(o){var i=r[o];typeof i=="function"&&t.events[o].subscribe(i)});var n=["insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD"];n.forEach(function(o){t.events[o].subscribe(t.updateContextsRanges)})}function Qe(r){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],rI.call(this,r)}ki.prototype.setState=function(r,t){return this.state[r]=t,this.activeState={key:r,value:this.state[r]},this.activeState};ki.prototype.getState=function(r){return this.state[r]||null};Qe.prototype.inboundIndex=function(r){return r>=0&&r<this.tokens.length};Qe.prototype.composeRUD=function(r){var t=this,e=!0,n=r.map(function(i){return t[i[0]].apply(t,i.slice(1).concat(e))}),o=function(i){return typeof i=="object"&&i.hasOwnProperty("FAIL")};if(n.every(o))return{FAIL:"composeRUD: one or more operations hasn't completed successfully",report:n.filter(o)};this.dispatch("composeRUD",[n.filter(function(i){return!o(i)})])};Qe.prototype.replaceRange=function(r,t,e,n){t=t!==null?t:this.tokens.length;var o=e.every(function(a){return a instanceof ki});if(!isNaN(r)&&this.inboundIndex(r)&&o){var i=this.tokens.splice.apply(this.tokens,[r,t].concat(e));return n||this.dispatch("replaceToken",[r,t,e]),[i,e]}else return{FAIL:"replaceRange: invalid tokens or startIndex."}};Qe.prototype.replaceToken=function(r,t,e){if(!isNaN(r)&&this.inboundIndex(r)&&t instanceof ki){var n=this.tokens.splice(r,1,t);return e||this.dispatch("replaceToken",[r,t]),[n[0],t]}else return{FAIL:"replaceToken: invalid token or index."}};Qe.prototype.removeRange=function(r,t,e){t=isNaN(t)?this.tokens.length:t;var n=this.tokens.splice(r,t);return e||this.dispatch("removeRange",[n,r,t]),n};Qe.prototype.removeToken=function(r,t){if(!isNaN(r)&&this.inboundIndex(r)){var e=this.tokens.splice(r,1);return t||this.dispatch("removeToken",[e,r]),e}else return{FAIL:"removeToken: invalid token index."}};Qe.prototype.insertToken=function(r,t,e){var n=r.every(function(o){return o instanceof ki});return n?(this.tokens.splice.apply(this.tokens,[t,0].concat(r)),e||this.dispatch("insertToken",[r,t]),r):{FAIL:"insertToken: invalid token(s)."}};Qe.prototype.registerModifier=function(r,t,e){this.events.newToken.subscribe(function(n,o){var i=[n,o],a=t===null||t.apply(this,i)===!0,s=[n,o];if(a){var l=e.apply(this,s);n.setState(r,l)}}),this.registeredModifiers.push(r)};sc.prototype.subscribe=function(r){return typeof r=="function"?this.subscribers.push(r)-1:{FAIL:"invalid '"+this.eventId+"' event handler"}};sc.prototype.unsubscribe=function(r){this.subscribers.splice(r,1)};Cr.prototype.setCurrentIndex=function(r){this.index=r,this.current=this.context[r],this.backtrack=this.context.slice(0,r),this.lookahead=this.context.slice(r+1)};Cr.prototype.get=function(r){switch(!0){case r===0:return this.current;case(r<0&&Math.abs(r)<=this.backtrack.length):return this.backtrack.slice(r)[0];case(r>0&&r<=this.lookahead.length):return this.lookahead[r-1];default:return null}};Qe.prototype.rangeToText=function(r){if(r instanceof bp)return this.getRangeTokens(r).map(function(t){return t.char}).join("")};Qe.prototype.getText=function(){return this.tokens.map(function(r){return r.char}).join("")};Qe.prototype.getContext=function(r){var t=this.registeredContexts[r];return t||null};Qe.prototype.on=function(r,t){var e=this.events[r];return e?e.subscribe(t):null};Qe.prototype.dispatch=function(r,t){var e=this,n=this.events[r];n instanceof sc&&n.subscribers.forEach(function(o){o.apply(e,t||[])})};Qe.prototype.registerContextChecker=function(r,t,e){if(this.getContext(r))return{FAIL:"context name '"+r+"' is already registered."};if(typeof t!="function")return{FAIL:"missing context start check."};if(typeof e!="function")return{FAIL:"missing context end check."};var n=new tI(r,t,e);return this.registeredContexts[r]=n,this.contextCheckers.push(n),n};Qe.prototype.getRangeTokens=function(r){var t=r.startIndex+r.endOffset;return[].concat(this.tokens.slice(r.startIndex,t))};Qe.prototype.getContextRanges=function(r){var t=this.getContext(r);return t?t.ranges:{FAIL:"context checker '"+r+"' is not registered."}};Qe.prototype.resetContextsRanges=function(){var r=this.registeredContexts;for(var t in r)if(r.hasOwnProperty(t)){var e=r[t];e.ranges=[]}};Qe.prototype.updateContextsRanges=function(){this.resetContextsRanges();for(var r=this.tokens.map(function(n){return n.char}),t=0;t<r.length;t++){var e=new Cr(r,t);this.runContextCheck(e)}this.dispatch("updateContextsRanges",[this.registeredContexts])};Qe.prototype.setEndOffset=function(r,t){var e=this.getContext(t).openRange.startIndex,n=new bp(e,r,t),o=this.getContext(t).ranges;return n.rangeId=t+"."+o.length,o.push(n),this.getContext(t).openRange=null,n};Qe.prototype.runContextCheck=function(r){var t=this,e=r.index;this.contextCheckers.forEach(function(n){var o=n.contextName,i=t.getContext(o).openRange;if(!i&&n.checkStart(r)&&(i=new bp(e,null,o),t.getContext(o).openRange=i,t.dispatch("contextStart",[o,e])),!!i&&n.checkEnd(r)){var a=e-i.startIndex+1,s=t.setEndOffset(a,o);t.dispatch("contextEnd",[o,s])}})};Qe.prototype.tokenize=function(r){this.tokens=[],this.resetContextsRanges();var t=Array.from(r);this.dispatch("start");for(var e=0;e<t.length;e++){var n=t[e],o=new Cr(t,e);this.dispatch("next",[o]),this.runContextCheck(o);var i=new ki(n);this.tokens.push(i),this.dispatch("newToken",[i,o])}return this.dispatch("end",[this.tokens]),this.tokens};function $n(r){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(r)}function a0(r){return/[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(r)}function Kn(r){return/[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(r)}function Jl(r){return/[A-z]/.test(r)}function nI(r){return/\s/.test(r)}function tr(r){this.font=r,this.features={}}function Ao(r){this.id=r.id,this.tag=r.tag,this.substitution=r.substitution}function ns(r,t){if(!r)return-1;switch(t.format){case 1:return t.glyphs.indexOf(r);case 2:for(var e=t.ranges,n=0;n<e.length;n++){var o=e[n];if(r>=o.start&&r<=o.end){var i=r-o.start;return o.index+i}}break;default:return-1}return-1}function oI(r,t){var e=ns(r,t.coverage);return e===-1?null:r+t.deltaGlyphId}function iI(r,t){var e=ns(r,t.coverage);return e===-1?null:t.substitute[e]}function tp(r,t){for(var e=[],n=0;n<r.length;n++){var o=r[n],i=t.current;i=Array.isArray(i)?i[0]:i;var a=ns(i,o);a!==-1&&e.push(a)}return e.length!==r.length?-1:e}function aI(r,t){var e=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(r.context.length<e)return[];var n=tp(t.inputCoverage,r);if(n===-1)return[];var o=t.inputCoverage.length-1;if(r.lookahead.length<t.lookaheadCoverage.length)return[];for(var i=r.lookahead.slice(o);i.length&&Kn(i[0].char);)i.shift();var a=new Cr(i,0),s=tp(t.lookaheadCoverage,a),l=[].concat(r.backtrack);for(l.reverse();l.length&&Kn(l[0].char);)l.shift();if(l.length<t.backtrackCoverage.length)return[];var u=new Cr(l,0),c=tp(t.backtrackCoverage,u),p=n.length===t.inputCoverage.length&&s.length===t.lookaheadCoverage.length&&c.length===t.backtrackCoverage.length,f=[];if(p)for(var d=0;d<t.lookupRecords.length;d++)for(var h=t.lookupRecords[d],m=h.lookupListIndex,g=this.getLookupByIndex(m),v=0;v<g.subtables.length;v++){var x=g.subtables[v],S=this.getLookupMethod(g,x),w=this.getSubstitutionType(g,x);if(w==="12")for(var b=0;b<n.length;b++){var _=r.get(b),T=S(_);T&&f.push(T)}}return f}function sI(r,t){var e=r.current,n=ns(e,t.coverage);if(n===-1)return null;for(var o,i=t.ligatureSets[n],a=0;a<i.length;a++){o=i[a];for(var s=0;s<o.components.length;s++){var l=r.lookahead[s],u=o.components[s];if(l!==u)break;if(s===o.components.length-1)return o}}return null}function lI(r,t){var e=ns(r,t.coverage);return e===-1?null:t.sequences[e]}tr.prototype.getDefaultScriptFeaturesIndexes=function(){for(var r=this.font.tables.gsub.scripts,t=0;t<r.length;t++){var e=r[t];if(e.tag==="DFLT")return e.script.defaultLangSys.featureIndexes}return[]};tr.prototype.getScriptFeaturesIndexes=function(r){var t=this.font.tables;if(!t.gsub)return[];if(!r)return this.getDefaultScriptFeaturesIndexes();for(var e=this.font.tables.gsub.scripts,n=0;n<e.length;n++){var o=e[n];if(o.tag===r&&o.script.defaultLangSys)return o.script.defaultLangSys.featureIndexes;var i=o.langSysRecords;if(i)for(var a=0;a<i.length;a++){var s=i[a];if(s.tag===r){var l=s.langSys;return l.featureIndexes}}}return this.getDefaultScriptFeaturesIndexes()};tr.prototype.mapTagsToFeatures=function(r,t){for(var e={},n=0;n<r.length;n++){var o=r[n].tag,i=r[n].feature;e[o]=i}this.features[t].tags=e};tr.prototype.getScriptFeatures=function(r){var t=this.features[r];if(this.features.hasOwnProperty(r))return t;var e=this.getScriptFeaturesIndexes(r);if(!e)return null;var n=this.font.tables.gsub;return t=e.map(function(o){return n.features[o]}),this.features[r]=t,this.mapTagsToFeatures(t,r),t};tr.prototype.getSubstitutionType=function(r,t){var e=r.lookupType.toString(),n=t.substFormat.toString();return e+n};tr.prototype.getLookupMethod=function(r,t){var e=this,n=this.getSubstitutionType(r,t);switch(n){case"11":return function(o){return oI.apply(e,[o,t])};case"12":return function(o){return iI.apply(e,[o,t])};case"63":return function(o){return aI.apply(e,[o,t])};case"41":return function(o){return sI.apply(e,[o,t])};case"21":return function(o){return lI.apply(e,[o,t])};default:throw new Error("lookupType: "+r.lookupType+" - substFormat: "+t.substFormat+" is not yet supported")}};tr.prototype.lookupFeature=function(r){var t=r.contextParams,e=t.index,n=this.getFeature({tag:r.tag,script:r.script});if(!n)return new Error("font '"+this.font.names.fullName.en+"' doesn't support feature '"+r.tag+"' for script '"+r.script+"'.");for(var o=this.getFeatureLookups(n),i=[].concat(t.context),a=0;a<o.length;a++)for(var s=o[a],l=this.getLookupSubtables(s),u=0;u<l.length;u++){var c=l[u],p=this.getSubstitutionType(s,c),f=this.getLookupMethod(s,c),d=void 0;switch(p){case"11":d=f(t.current),d&&i.splice(e,1,new Ao({id:11,tag:r.tag,substitution:d}));break;case"12":d=f(t.current),d&&i.splice(e,1,new Ao({id:12,tag:r.tag,substitution:d}));break;case"63":d=f(t),Array.isArray(d)&&d.length&&i.splice(e,1,new Ao({id:63,tag:r.tag,substitution:d}));break;case"41":d=f(t),d&&i.splice(e,1,new Ao({id:41,tag:r.tag,substitution:d}));break;case"21":d=f(t.current),d&&i.splice(e,1,new Ao({id:21,tag:r.tag,substitution:d}));break}t=new Cr(i,e),!(Array.isArray(d)&&!d.length)&&(d=null)}return i.length?i:null};tr.prototype.supports=function(r){if(!r.script)return!1;this.getScriptFeatures(r.script);var t=this.features.hasOwnProperty(r.script);if(!r.tag)return t;var e=this.features[r.script].some(function(n){return n.tag===r.tag});return t&&e};tr.prototype.getLookupSubtables=function(r){return r.subtables||null};tr.prototype.getLookupByIndex=function(r){var t=this.font.tables.gsub.lookups;return t[r]||null};tr.prototype.getFeatureLookups=function(r){return r.lookupListIndexes.map(this.getLookupByIndex.bind(this))};tr.prototype.getFeature=function(t){if(!this.font)return{FAIL:"No font was found"};this.features.hasOwnProperty(t.script)||this.getScriptFeatures(t.script);var e=this.features[t.script];return e?e.tags[t.tag]?this.features[t.script].tags[t.tag]:null:{FAIL:"No feature for script "+t.script}};function cI(r){var t=r.current,e=r.get(-1);return e===null&&$n(t)||!$n(e)&&$n(t)}function uI(r){var t=r.get(1);return t===null||!$n(t)}var pI={startCheck:cI,endCheck:uI};function fI(r){var t=r.current,e=r.get(-1);return($n(t)||Kn(t))&&!$n(e)}function dI(r){var t=r.get(1);switch(!0){case t===null:return!0;case(!$n(t)&&!Kn(t)):var e=nI(t);if(!e)return!0;if(e){var n=!1;if(n=r.lookahead.some(function(o){return $n(o)||Kn(o)}),!n)return!0}break;default:return!1}}var hI={startCheck:fI,endCheck:dI};function mI(r,t,e){t[e].setState(r.tag,r.substitution)}function gI(r,t,e){t[e].setState(r.tag,r.substitution)}function yI(r,t,e){r.substitution.forEach(function(n,o){var i=t[e+o];i.setState(r.tag,n)})}function vI(r,t,e){var n=t[e];n.setState(r.tag,r.substitution.ligGlyph);for(var o=r.substitution.components.length,i=0;i<o;i++)n=t[e+i+1],n.setState("deleted",!0)}var fy={11:mI,12:gI,63:yI,41:vI};function Sp(r,t,e){r instanceof Ao&&fy[r.id]&&fy[r.id](r,t,e)}function xI(r){for(var t=[].concat(r.backtrack),e=t.length-1;e>=0;e--){var n=t[e],o=a0(n),i=Kn(n);if(!o&&!i)return!0;if(o)return!1}return!1}function bI(r){if(a0(r.current))return!1;for(var t=0;t<r.lookahead.length;t++){var e=r.lookahead[t],n=Kn(e);if(!n)return!0}return!1}function SI(r){var t=this,e="arab",n=this.featuresTags[e],o=this.tokenizer.getRangeTokens(r);if(o.length!==1){var i=new Cr(o.map(function(s){return s.getState("glyphIndex")}),0),a=new Cr(o.map(function(s){return s.char}),0);o.forEach(function(s,l){if(!Kn(s.char)){i.setCurrentIndex(l),a.setCurrentIndex(l);var u=0;xI(a)&&(u|=1),bI(a)&&(u|=2);var c;switch(u){case 1:c="fina";break;case 2:c="init";break;case 3:c="medi";break}if(n.indexOf(c)!==-1){var p=t.query.lookupFeature({tag:c,script:e,contextParams:i});if(p instanceof Error)return console.info(p.message);p.forEach(function(f,d){f instanceof Ao&&(Sp(f,o,d),i.context[d]=f.substitution)})}}})}}function dy(r,t){var e=r.map(function(n){return n.activeState.value});return new Cr(e,t||0)}function wI(r){var t=this,e="arab",n=this.tokenizer.getRangeTokens(r),o=dy(n);o.context.forEach(function(i,a){o.setCurrentIndex(a);var s=t.query.lookupFeature({tag:"rlig",script:e,contextParams:o});s.length&&(s.forEach(function(l){return Sp(l,n,a)}),o=dy(n))})}function TI(r){var t=r.current,e=r.get(-1);return e===null&&Jl(t)||!Jl(e)&&Jl(t)}function CI(r){var t=r.get(1);return t===null||!Jl(t)}var AI={startCheck:TI,endCheck:CI};function hy(r,t){var e=r.map(function(n){return n.activeState.value});return new Cr(e,t||0)}function _I(r){var t=this,e="latn",n=this.tokenizer.getRangeTokens(r),o=hy(n);o.context.forEach(function(i,a){o.setCurrentIndex(a);var s=t.query.lookupFeature({tag:"liga",script:e,contextParams:o});s.length&&(s.forEach(function(l){return Sp(l,n,a)}),o=hy(n))})}function Ir(r){this.baseDir=r||"ltr",this.tokenizer=new Qe,this.featuresTags={}}Ir.prototype.setText=function(r){this.text=r};Ir.prototype.contextChecks={latinWordCheck:AI,arabicWordCheck:pI,arabicSentenceCheck:hI};function rp(r){var t=this.contextChecks[r+"Check"];return this.tokenizer.registerContextChecker(r,t.startCheck,t.endCheck)}function II(){return rp.call(this,"latinWord"),rp.call(this,"arabicWord"),rp.call(this,"arabicSentence"),this.tokenizer.tokenize(this.text)}function OI(){var r=this,t=this.tokenizer.getContextRanges("arabicSentence");t.forEach(function(e){var n=r.tokenizer.getRangeTokens(e);r.tokenizer.replaceRange(e.startIndex,e.endOffset,n.reverse())})}Ir.prototype.registerFeatures=function(r,t){var e=this,n=t.filter(function(o){return e.query.supports({script:r,tag:o})});this.featuresTags.hasOwnProperty(r)?this.featuresTags[r]=this.featuresTags[r].concat(n):this.featuresTags[r]=n};Ir.prototype.applyFeatures=function(r,t){if(!r)throw new Error("No valid font was provided to apply features");this.query||(this.query=new tr(r));for(var e=0;e<t.length;e++){var n=t[e];!this.query.supports({script:n.script})||this.registerFeatures(n.script,n.tags)}};Ir.prototype.registerModifier=function(r,t,e){this.tokenizer.registerModifier(r,t,e)};function wp(){if(this.tokenizer.registeredModifiers.indexOf("glyphIndex")===-1)throw new Error("glyphIndex modifier is required to apply arabic presentation features.")}function LI(){var r=this,t="arab";if(!!this.featuresTags.hasOwnProperty(t)){wp.call(this);var e=this.tokenizer.getContextRanges("arabicWord");e.forEach(function(n){SI.call(r,n)})}}function NI(){var r=this,t="arab";if(!!this.featuresTags.hasOwnProperty(t)){var e=this.featuresTags[t];if(e.indexOf("rlig")!==-1){wp.call(this);var n=this.tokenizer.getContextRanges("arabicWord");n.forEach(function(o){wI.call(r,o)})}}}function PI(){var r=this,t="latn";if(!!this.featuresTags.hasOwnProperty(t)){var e=this.featuresTags[t];if(e.indexOf("liga")!==-1){wp.call(this);var n=this.tokenizer.getContextRanges("latinWord");n.forEach(function(o){_I.call(r,o)})}}}Ir.prototype.checkContextReady=function(r){return!!this.tokenizer.getContext(r)};Ir.prototype.applyFeaturesToContexts=function(){this.checkContextReady("arabicWord")&&(LI.call(this),NI.call(this)),this.checkContextReady("latinWord")&&PI.call(this),this.checkContextReady("arabicSentence")&&OI.call(this)};Ir.prototype.processText=function(r){(!this.text||this.text!==r)&&(this.setText(r),II.call(this),this.applyFeaturesToContexts())};Ir.prototype.getBidiText=function(r){return this.processText(r),this.tokenizer.getText()};Ir.prototype.getTextGlyphs=function(r){this.processText(r);for(var t=[],e=0;e<this.tokenizer.tokens.length;e++){var n=this.tokenizer.tokens[e];if(!n.state.deleted){var o=n.activeState.value;t.push(Array.isArray(o)?o[0]:o)}}return t};function Ue(r){r=r||{},r.tables=r.tables||{},r.empty||(Xa(r.familyName,"When creating a new Font object, familyName is required."),Xa(r.styleName,"When creating a new Font object, styleName is required."),Xa(r.unitsPerEm,"When creating a new Font object, unitsPerEm is required."),Xa(r.ascender,"When creating a new Font object, ascender is required."),Xa(r.descender<=0,"When creating a new Font object, negative descender value is required."),this.names={fontFamily:{en:r.familyName||" "},fontSubfamily:{en:r.styleName||" "},fullName:{en:r.fullName||r.familyName+" "+r.styleName},postScriptName:{en:r.postScriptName||(r.familyName+r.styleName).replace(/\s/g,"")},designer:{en:r.designer||" "},designerURL:{en:r.designerURL||" "},manufacturer:{en:r.manufacturer||" "},manufacturerURL:{en:r.manufacturerURL||" "},license:{en:r.license||" "},licenseURL:{en:r.licenseURL||" "},version:{en:r.version||"Version 0.1"},description:{en:r.description||" "},copyright:{en:r.copyright||" "},trademark:{en:r.trademark||" "}},this.unitsPerEm=r.unitsPerEm||1e3,this.ascender=r.ascender,this.descender=r.descender,this.createdTimestamp=r.createdTimestamp,this.tables=Object.assign(r.tables,{os2:Object.assign({usWeightClass:r.weightClass||this.usWeightClasses.MEDIUM,usWidthClass:r.widthClass||this.usWidthClasses.MEDIUM,fsSelection:r.fsSelection||this.fsSelectionValues.REGULAR},r.tables.os2)})),this.supported=!0,this.glyphs=new nn.GlyphSet(this,r.glyphs||[]),this.encoding=new Ay(this),this.position=new es(this),this.substitution=new er(this),this.tables=this.tables||{},this._push=null,this._hmtxTableData={},Object.defineProperty(this,"hinting",{get:function(){if(this._hinting)return this._hinting;if(this.outlinesFormat==="truetype")return this._hinting=new r0(this)}})}Ue.prototype.hasChar=function(r){return this.encoding.charToGlyphIndex(r)!==null};Ue.prototype.charToGlyphIndex=function(r){return this.encoding.charToGlyphIndex(r)};Ue.prototype.charToGlyph=function(r){var t=this.charToGlyphIndex(r),e=this.glyphs.get(t);return e||(e=this.glyphs.get(0)),e};Ue.prototype.updateFeatures=function(r){return this.defaultRenderOptions.features.map(function(t){return t.script==="latn"?{script:"latn",tags:t.tags.filter(function(e){return r[e]})}:t})};Ue.prototype.stringToGlyphs=function(r,t){var e=this,n=new Ir,o=function(p){return e.charToGlyphIndex(p.char)};n.registerModifier("glyphIndex",null,o);var i=t?this.updateFeatures(t.features):this.defaultRenderOptions.features;n.applyFeatures(this,i);for(var a=n.getTextGlyphs(r),s=a.length,l=new Array(s),u=this.glyphs.get(0),c=0;c<s;c+=1)l[c]=this.glyphs.get(a[c])||u;return l};Ue.prototype.nameToGlyphIndex=function(r){return this.glyphNames.nameToGlyphIndex(r)};Ue.prototype.nameToGlyph=function(r){var t=this.nameToGlyphIndex(r),e=this.glyphs.get(t);return e||(e=this.glyphs.get(0)),e};Ue.prototype.glyphIndexToName=function(r){return this.glyphNames.glyphIndexToName?this.glyphNames.glyphIndexToName(r):""};Ue.prototype.getKerningValue=function(r,t){r=r.index||r,t=t.index||t;var e=this.position.defaultKerningTables;return e?this.position.getKerningValue(e,r,t):this.kerningPairs[r+","+t]||0};Ue.prototype.defaultRenderOptions={kerning:!0,features:[{script:"arab",tags:["init","medi","fina","rlig"]},{script:"latn",tags:["liga","rlig"]}]};Ue.prototype.forEachGlyph=function(r,t,e,n,o,i){t=t!==void 0?t:0,e=e!==void 0?e:0,n=n!==void 0?n:72,o=Object.assign({},this.defaultRenderOptions,o);var a=1/this.unitsPerEm*n,s=this.stringToGlyphs(r,o),l;if(o.kerning){var u=o.script||this.position.getDefaultScriptName();l=this.position.getKerningTables(u,o.language)}for(var c=0;c<s.length;c+=1){var p=s[c];if(i.call(this,p,t,e,n,o),p.advanceWidth&&(t+=p.advanceWidth*a),o.kerning&&c<s.length-1){var f=l?this.position.getKerningValue(l,p.index,s[c+1].index):this.getKerningValue(p,s[c+1]);t+=f*a}o.letterSpacing?t+=o.letterSpacing*n:o.tracking&&(t+=o.tracking/1e3*n)}return t};Ue.prototype.getPath=function(r,t,e,n,o){var i=new dt;return this.forEachGlyph(r,t,e,n,o,function(a,s,l,u){var c=a.getPath(s,l,u,o,this);i.extend(c)}),i};Ue.prototype.getPaths=function(r,t,e,n,o){var i=[];return this.forEachGlyph(r,t,e,n,o,function(a,s,l,u){var c=a.getPath(s,l,u,o,this);i.push(c)}),i};Ue.prototype.getAdvanceWidth=function(r,t,e){return this.forEachGlyph(r,0,0,t,e,function(){})};Ue.prototype.draw=function(r,t,e,n,o,i){this.getPath(t,e,n,o,i).draw(r)};Ue.prototype.drawPoints=function(r,t,e,n,o,i){this.forEachGlyph(t,e,n,o,i,function(a,s,l,u){a.drawPoints(r,s,l,u)})};Ue.prototype.drawMetrics=function(r,t,e,n,o,i){this.forEachGlyph(t,e,n,o,i,function(a,s,l,u){a.drawMetrics(r,s,l,u)})};Ue.prototype.getEnglishName=function(r){var t=this.names[r];if(t)return t.en};Ue.prototype.validate=function(){var r=this;function t(n,o){}function e(n){var o=r.getEnglishName(n);o&&o.trim().length>0}e("fontFamily"),e("weightName"),e("manufacturer"),e("copyright"),e("version"),this.unitsPerEm>0};Ue.prototype.toTables=function(){return y_.fontToTable(this)};Ue.prototype.toBuffer=function(){return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."),this.toArrayBuffer()};Ue.prototype.toArrayBuffer=function(){for(var r=this.toTables(),t=r.encode(),e=new ArrayBuffer(t.length),n=new Uint8Array(e),o=0;o<t.length;o++)n[o]=t[o];return e};Ue.prototype.download=function(r){var t=this.getEnglishName("fontFamily"),e=this.getEnglishName("fontSubfamily");r=r||t.replace(/\s/g,"")+"-"+e+".otf";var n=this.toArrayBuffer();if(x_())if(window.URL=window.URL||window.webkitURL,window.URL){var o=new DataView(n),i=new Blob([o],{type:"font/opentype"}),a=document.createElement("a");a.href=window.URL.createObjectURL(i),a.download=r;var s=document.createEvent("MouseEvents");s.initEvent("click",!0,!1),a.dispatchEvent(s)}else console.warn("Font file could not be downloaded. Try using a different browser.");else{var l=Xu(),u=S_(n);l.writeFileSync(r,u)}};Ue.prototype.fsSelectionValues={ITALIC:1,UNDERSCORE:2,NEGATIVE:4,OUTLINED:8,STRIKEOUT:16,BOLD:32,REGULAR:64,USER_TYPO_METRICS:128,WWS:256,OBLIQUE:512};Ue.prototype.usWidthClasses={ULTRA_CONDENSED:1,EXTRA_CONDENSED:2,CONDENSED:3,SEMI_CONDENSED:4,MEDIUM:5,SEMI_EXPANDED:6,EXPANDED:7,EXTRA_EXPANDED:8,ULTRA_EXPANDED:9};Ue.prototype.usWeightClasses={THIN:100,EXTRA_LIGHT:200,LIGHT:300,NORMAL:400,MEDIUM:500,SEMI_BOLD:600,BOLD:700,EXTRA_BOLD:800,BLACK:900};function s0(r,t){var e=JSON.stringify(r),n=256;for(var o in t){var i=parseInt(o);if(!(!i||i<256)){if(JSON.stringify(t[o])===e)return i;n<=i&&(n=i+1)}}return t[n]=r,n}function MI(r,t,e){var n=s0(t.name,e);return[{name:"tag_"+r,type:"TAG",value:t.tag},{name:"minValue_"+r,type:"FIXED",value:t.minValue<<16},{name:"defaultValue_"+r,type:"FIXED",value:t.defaultValue<<16},{name:"maxValue_"+r,type:"FIXED",value:t.maxValue<<16},{name:"flags_"+r,type:"USHORT",value:0},{name:"nameID_"+r,type:"USHORT",value:n}]}function EI(r,t,e){var n={},o=new pe.Parser(r,t);return n.tag=o.parseTag(),n.minValue=o.parseFixed(),n.defaultValue=o.parseFixed(),n.maxValue=o.parseFixed(),o.skip("uShort",1),n.name=e[o.parseUShort()]||{},n}function DI(r,t,e,n){for(var o=s0(t.name,n),i=[{name:"nameID_"+r,type:"USHORT",value:o},{name:"flags_"+r,type:"USHORT",value:0}],a=0;a<e.length;++a){var s=e[a].tag;i.push({name:"axis_"+r+" "+s,type:"FIXED",value:t.coordinates[s]<<16})}return i}function BI(r,t,e,n){var o={},i=new pe.Parser(r,t);o.name=n[i.parseUShort()]||{},i.skip("uShort",1),o.coordinates={};for(var a=0;a<e.length;++a)o.coordinates[e[a].tag]=i.parseFixed();return o}function FI(r,t){var e=new le.Table("fvar",[{name:"version",type:"ULONG",value:65536},{name:"offsetToData",type:"USHORT",value:0},{name:"countSizePairs",type:"USHORT",value:2},{name:"axisCount",type:"USHORT",value:r.axes.length},{name:"axisSize",type:"USHORT",value:20},{name:"instanceCount",type:"USHORT",value:r.instances.length},{name:"instanceSize",type:"USHORT",value:4+r.axes.length*4}]);e.offsetToData=e.sizeOf();for(var n=0;n<r.axes.length;n++)e.fields=e.fields.concat(MI(n,r.axes[n],t));for(var o=0;o<r.instances.length;o++)e.fields=e.fields.concat(DI(o,r.instances[o],r.axes,t));return e}function RI(r,t,e){var n=new pe.Parser(r,t),o=n.parseULong();xe.argument(o===65536,"Unsupported fvar table version.");var i=n.parseOffset16();n.skip("uShort",1);for(var a=n.parseUShort(),s=n.parseUShort(),l=n.parseUShort(),u=n.parseUShort(),c=[],p=0;p<a;p++)c.push(EI(r,t+i+p*s,e));for(var f=[],d=t+i+a*s,h=0;h<l;h++)f.push(BI(r,d+h*u,c,e));return{axes:c,instances:f}}var kI={make:FI,parse:RI},GI=function(){return{coverage:this.parsePointer(E.coverage),attachPoints:this.parseList(E.pointer(E.uShortList))}},UI=function(){var r=this.parseUShort();if(xe.argument(r===1||r===2||r===3,"Unsupported CaretValue table version."),r===1)return{coordinate:this.parseShort()};if(r===2)return{pointindex:this.parseShort()};if(r===3)return{coordinate:this.parseShort()}},VI=function(){return this.parseList(E.pointer(UI))},zI=function(){return{coverage:this.parsePointer(E.coverage),ligGlyphs:this.parseList(E.pointer(VI))}},jI=function(){return this.parseUShort(),this.parseList(E.pointer(E.coverage))};function HI(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);xe.argument(n===1||n===1.2||n===1.3,"Unsupported GDEF table version.");var o={version:n,classDef:e.parsePointer(E.classDef),attachList:e.parsePointer(GI),ligCaretList:e.parsePointer(zI),markAttachClassDef:e.parsePointer(E.classDef)};return n>=1.2&&(o.markGlyphSets=e.parsePointer(jI)),o}var WI={parse:HI},Ar=new Array(10);Ar[1]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();if(e===1)return{posFormat:1,coverage:this.parsePointer(E.coverage),value:this.parseValueRecord()};if(e===2)return{posFormat:2,coverage:this.parsePointer(E.coverage),values:this.parseValueRecordList()};xe.assert(!1,"0x"+t.toString(16)+": GPOS lookup type 1 format must be 1 or 2.")};Ar[2]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();xe.assert(e===1||e===2,"0x"+t.toString(16)+": GPOS lookup type 2 format must be 1 or 2.");var n=this.parsePointer(E.coverage),o=this.parseUShort(),i=this.parseUShort();if(e===1)return{posFormat:e,coverage:n,valueFormat1:o,valueFormat2:i,pairSets:this.parseList(E.pointer(E.list(function(){return{secondGlyph:this.parseUShort(),value1:this.parseValueRecord(o),value2:this.parseValueRecord(i)}})))};if(e===2){var a=this.parsePointer(E.classDef),s=this.parsePointer(E.classDef),l=this.parseUShort(),u=this.parseUShort();return{posFormat:e,coverage:n,valueFormat1:o,valueFormat2:i,classDef1:a,classDef2:s,class1Count:l,class2Count:u,classRecords:this.parseList(l,E.list(u,function(){return{value1:this.parseValueRecord(o),value2:this.parseValueRecord(i)}}))}}};Ar[3]=function(){return{error:"GPOS Lookup 3 not supported"}};Ar[4]=function(){return{error:"GPOS Lookup 4 not supported"}};Ar[5]=function(){return{error:"GPOS Lookup 5 not supported"}};Ar[6]=function(){return{error:"GPOS Lookup 6 not supported"}};Ar[7]=function(){return{error:"GPOS Lookup 7 not supported"}};Ar[8]=function(){return{error:"GPOS Lookup 8 not supported"}};Ar[9]=function(){return{error:"GPOS Lookup 9 not supported"}};function qI(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);return xe.argument(n===1||n===1.1,"Unsupported GPOS table version "+n),n===1?{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Ar)}:{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(Ar),variations:e.parseFeatureVariationsList()}}var XI=new Array(10);function YI(r){return new le.Table("GPOS",[{name:"version",type:"ULONG",value:65536},{name:"scripts",type:"TABLE",value:new le.ScriptList(r.scripts)},{name:"features",type:"TABLE",value:new le.FeatureList(r.features)},{name:"lookups",type:"TABLE",value:new le.LookupList(r.lookups,XI)}])}var $I={parse:qI,make:YI};function KI(r){var t={};r.skip("uShort");var e=r.parseUShort();xe.argument(e===0,"Unsupported kern sub-table version."),r.skip("uShort",2);var n=r.parseUShort();r.skip("uShort",3);for(var o=0;o<n;o+=1){var i=r.parseUShort(),a=r.parseUShort(),s=r.parseShort();t[i+","+a]=s}return t}function ZI(r){var t={};r.skip("uShort");var e=r.parseULong();e>1&&console.warn("Only the first kern subtable is supported."),r.skip("uLong");var n=r.parseUShort(),o=n&255;if(r.skip("uShort"),o===0){var i=r.parseUShort();r.skip("uShort",3);for(var a=0;a<i;a+=1){var s=r.parseUShort(),l=r.parseUShort(),u=r.parseShort();t[s+","+l]=u}}return t}function QI(r,t){var e=new pe.Parser(r,t),n=e.parseUShort();if(n===0)return KI(e);if(n===1)return ZI(e);throw new Error("Unsupported kern table version ("+n+").")}var JI={parse:QI};function eO(r,t,e,n){for(var o=new pe.Parser(r,t),i=n?o.parseUShort:o.parseULong,a=[],s=0;s<e+1;s+=1){var l=i.call(o);n&&(l*=2),a.push(l)}return a}var tO={parse:eO};function rO(r,t){var e=Xu();e.readFile(r,function(n,o){if(n)return t(n.message);t(null,b_(o))})}function nO(r,t){var e=new XMLHttpRequest;e.open("get",r,!0),e.responseType="arraybuffer",e.onload=function(){return e.response?t(null,e.response):t("Font could not be loaded: "+e.statusText)},e.onerror=function(){t("Font could not be loaded")},e.send()}function my(r,t){for(var e=[],n=12,o=0;o<t;o+=1){var i=pe.getTag(r,n),a=pe.getULong(r,n+4),s=pe.getULong(r,n+8),l=pe.getULong(r,n+12);e.push({tag:i,checksum:a,offset:s,length:l,compression:!1}),n+=16}return e}function oO(r,t){for(var e=[],n=44,o=0;o<t;o+=1){var i=pe.getTag(r,n),a=pe.getULong(r,n+4),s=pe.getULong(r,n+8),l=pe.getULong(r,n+12),u=void 0;s<l?u="WOFF":u=!1,e.push({tag:i,offset:a,compression:u,compressedLength:s,length:l}),n+=20}return e}function ot(r,t){if(t.compression==="WOFF"){var e=new Uint8Array(r.buffer,t.offset+2,t.compressedLength-2),n=new Uint8Array(t.length);if(YC(e,n),n.byteLength!==t.length)throw new Error("Decompression error: "+t.tag+" decompressed length doesn't match recorded length");var o=new DataView(n.buffer,0);return{data:o,offset:0}}else return{data:r,offset:t.offset}}function Tp(r,t){t=t??{};var e,n,o=new Ue({empty:!0}),i=new DataView(r,0),a,s=[],l=pe.getTag(i,0);if(l===String.fromCharCode(0,1,0,0)||l==="true"||l==="typ1")o.outlinesFormat="truetype",a=pe.getUShort(i,4),s=my(i,a);else if(l==="OTTO")o.outlinesFormat="cff",a=pe.getUShort(i,4),s=my(i,a);else if(l==="wOFF"){var u=pe.getTag(i,4);if(u===String.fromCharCode(0,1,0,0))o.outlinesFormat="truetype";else if(u==="OTTO")o.outlinesFormat="cff";else throw new Error("Unsupported OpenType flavor "+l);a=pe.getUShort(i,12),s=oO(i,a)}else throw new Error("Unsupported OpenType signature "+l);for(var c,p,f,d,h,m,g,v,x,S,w,b,_=0;_<a;_+=1){var T=s[_],y=void 0;switch(T.tag){case"cmap":y=ot(i,T),o.tables.cmap=Cy.parse(y.data,y.offset),o.encoding=new _y(o.tables.cmap);break;case"cvt ":y=ot(i,T),b=new pe.Parser(y.data,y.offset),o.tables.cvt=b.parseShortList(T.length/2);break;case"fvar":p=T;break;case"fpgm":y=ot(i,T),b=new pe.Parser(y.data,y.offset),o.tables.fpgm=b.parseByteList(T.length);break;case"head":y=ot(i,T),o.tables.head=Fy.parse(y.data,y.offset),o.unitsPerEm=o.tables.head.unitsPerEm,e=o.tables.head.indexToLocFormat;break;case"hhea":y=ot(i,T),o.tables.hhea=Ry.parse(y.data,y.offset),o.ascender=o.tables.hhea.ascender,o.descender=o.tables.hhea.descender,o.numberOfHMetrics=o.tables.hhea.numberOfHMetrics;break;case"hmtx":g=T;break;case"ltag":y=ot(i,T),n=Gy.parse(y.data,y.offset);break;case"maxp":y=ot(i,T),o.tables.maxp=Uy.parse(y.data,y.offset),o.numGlyphs=o.tables.maxp.numGlyphs;break;case"name":S=T;break;case"OS/2":y=ot(i,T),o.tables.os2=up.parse(y.data,y.offset);break;case"post":y=ot(i,T),o.tables.post=qy.parse(y.data,y.offset),o.glyphNames=new gp(o.tables.post);break;case"prep":y=ot(i,T),b=new pe.Parser(y.data,y.offset),o.tables.prep=b.parseByteList(T.length);break;case"glyf":f=T;break;case"loca":x=T;break;case"CFF ":c=T;break;case"kern":v=T;break;case"GDEF":d=T;break;case"GPOS":h=T;break;case"GSUB":m=T;break;case"meta":w=T;break}}var I=ot(i,S);if(o.tables.name=Wy.parse(I.data,I.offset,n),o.names=o.tables.name,f&&x){var A=e===0,O=ot(i,x),C=tO.parse(O.data,O.offset,o.numGlyphs,A),N=ot(i,f);o.glyphs=Jy.parse(N.data,N.offset,C,o,t)}else if(c){var P=ot(i,c);By.parse(P.data,P.offset,o,t)}else throw new Error("Font doesn't contain TrueType or CFF outlines.");var G=ot(i,g);if(ky.parse(o,G.data,G.offset,o.numberOfHMetrics,o.numGlyphs,o.glyphs,t),mA(o,t),v){var $=ot(i,v);o.kerningPairs=JI.parse($.data,$.offset)}else o.kerningPairs={};if(d){var Y=ot(i,d);o.tables.gdef=WI.parse(Y.data,Y.offset)}if(h){var ie=ot(i,h);o.tables.gpos=$I.parse(ie.data,ie.offset),o.position.init()}if(m){var j=ot(i,m);o.tables.gsub=Xy.parse(j.data,j.offset)}if(p){var H=ot(i,p);o.tables.fvar=kI.parse(H.data,H.offset,o.names)}if(w){var V=ot(i,w);o.tables.meta=Yy.parse(V.data,V.offset),o.metas=o.tables.meta}return o}function l0(r,t,e){e=e??{};var n=typeof window>"u",o=n&&!e.isUrl?rO:nO;return new Promise(function(i,a){o(r,function(s,l){if(s){if(t)return t(s);a(s)}var u;try{u=Tp(l,e)}catch(c){if(t)return t(c,null);a(c)}if(t)return t(null,u);i(u)})})}var os=class{load(t,e,n=()=>{}){l0(t,(o,i)=>{o||!i?n(o??"Something went wrong"):e(i)})}parse(t){try{return Tp(t)}catch(e){console.error(e)}}};var iO="AIzaSyCiLGWdiRt3ErAKMH8t6fgppJ9AaQRafyY",is=null,c0=null,aO={"Spline Sans_300":"SplineSans-Light.ttf","Spline Sans_regular":"SplineSans-Regular.ttf","Spline Sans_500":"SplineSans-Medium.ttf","Spline Sans_600":"SplineSans-SemiBold.ttf","Spline Sans_700":"SplineSans-Bold.ttf","Spline Sans Mono_300":"SplineSansMono-Light.ttf","Spline Sans Mono_regular":"SplineSansMono-Regular.ttf","Spline Sans Mono_500":"SplineSansMono-Medium.ttf","Spline Sans Mono_600":"SplineSansMono-SemiBold.ttf","Spline Sans Mono_700":"SplineSansMono-Bold.ttf","Spline Sans Mono_300italic":"SplineSansMono-LightItalic.ttf","Spline Sans Mono_italic":"SplineSansMono-Italic.ttf","Spline Sans Mono_500italic":"SplineSansMono-MediumItalic.ttf","Spline Sans Mono_600italic":"SplineSansMono-SemiBoldItalic.ttf","Spline Sans Mono_700italic":"SplineSansMono-BoldItalic.ttf"};async function sO(){is=await(await fetch("https://www.googleapis.com/webfonts/v1/webfonts?key="+iO)).json(),c0=[],is?.items.forEach(t=>{let e=t.family;t.variants.forEach(n=>{c0?.push({key:e+"_"+n,name:e+" "+n})})})}function lO(r,t){return r.items.find(e=>e.family===t)}async function Cp(r){return await(await fetch(r)).arrayBuffer()}async function cO(r,t=!0){let e=aO[r];if(e!==void 0){let a="/_assets/_fonts/"+e;return{arr:await Cp(a),url:a,intercepted:!0}}await pO();let[n,o]=r.split("_"),i=lO(is,n);if(i!==void 0&&i.variants.includes(o)){let a=t?i.files[o].replace("http://","https://"):i.files[o];if(a)return{arr:await Cp(a),url:a,intercepted:!1}}return null}var uO=new os;async function u0(r,t){let e,n,o=!1;if(r.url)e=await Cp(r.url),n=r.url;else if(!r.data&&t){let i=await cO(t);i&&(e=i.arr,n=i.url,o=i.intercepted)}else r.data&&(e=r.data.buffer);if(e){let i=uO.parse(e);if(i)return{font:i,url:n,intercepted:o,arr:e}}return null}async function pO(){return is===null&&await sO(),is}var Ui=require("three");var Io=require("three"),p0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function fO(){let r=new Io.BufferGeometry;return r.setAttribute("position",new Io.BufferAttribute(new Float32Array([]),3)),r.setIndex(new Io.BufferAttribute(new Uint16Array([]),1)),r}var dO=12;var Gi=class extends Io.BufferGeometry{constructor(e,n){super();this.data=e;this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.update(e,n)}async update(e,n){this.data=e,this.userData={parameters:e};let o=n.getFont(e.font);o&&(this.font=o,await o.loadingPromise,await this.updateWithCurrentFont(e))}async updateWithCurrentFont(e){let n=this.font;if(!n||!n.isLoaded){console.warn("Cannot update text because its font is not loaded");return}this.data=e;let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:u,textTransform:c,subdivisions:p}=e;await n.loadingPromise;let f=c===2?u.toUpperCase():c===3?u.toLowerCase():u,d=hO(e,n,f),{shapes:h,charWidths:m,charCoords:g}=await n.generateShapes(d,e),v=o*.5,x=i*.5,S=h.map(b=>Ct.create({shape:new Le().fromShape(b),parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?ke.NONZERO:ke.ODD,subdivisions:p??dO}})),w=S.length?(0,p0.mergeBufferGeometries)(S):fO();w.translate(-v,x,0),this.dispose(),this.wrappedText=d,this.charCoords=g,this.charWidths=m,Object.entries(w.attributes).forEach(([b,_])=>{this.setAttribute(b,_)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=to(new Io.BufferGeometry,Gi.prototype);return e.copy(this),e}copy(e){return Object.entries(e.attributes).forEach(([n,o])=>{this.setAttribute(n,o)}),this.setIndex(e.index),this.data=e.data,this}async setText(e){this.font&&await this.font.loadingPromise,await this.updateWithCurrentFont({...this.data,text:e})}get text(){return this.data.text??""}};function hO(r,t,e){e=e??r.text;let n=[""],o="";for(let i of e)o+=i,i===" "||i===`
1333
+ `?(n[n.length-1]+=o,o="",i===`
1334
+ `&&n.push("")):t.getTextWidth(n[n.length-1]+o,r)>r.width&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+o,r)>r.width&&(o.length===1?(n[n.length-1]+=o,o=""):(n[n.length-1]+=o.slice(0,-1),o=o[o.length-1],n.push(""))));return n[n.length-1]+=o,n}var f0=new Ui.Vector3,d0=new Ui.Matrix4,h0=new Ui.Ray,lc=class extends St{constructor(e,n,o){super(new Gi(n.geometry,o),o.material(n.material));this.data=n;this.objectType="TextFrame";this.wrappedText=[""];this.charWidths=[];this.charCoords=[];this.castShadow=n.castShadow,this.receiveShadow=n.receiveShadow,this.name=n.name,this.uuid=e,this.updateState(n,o)}async updateGeometry(e,n){if(!n){console.warn("To update a Text Geometry you need to pass the SharedAssetsManager instance in order to get the font");return}let o=this.geometry.getAttribute("randomColor"),i={...this.data.geometry,...e.parameters};Object.assign(this.data,{geometry:i}),await this.geometry.update(i,n),Zr(this),o&&Qr(this);let{wrappedText:a,charCoords:s,charWidths:l}=this.geometry;this.wrappedText=a,this.charWidths=l,this.charCoords=s,this.resetBBoxNeedsUpdate()}updateState(e,n){this.data=e,this.material=n.material(e.material),this.fromState(e,n),this.updateGeometry({parameters:e.geometry},n)}get font(){return this.geometry.font}get initialOffsetY(){return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,this.data.geometry.height,this.fontScale,this.data.geometry.verticalAlign)??0}get fontScale(){return this.font?this.data.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(){return this.data.geometry.fontSize*this.data.geometry.lineHeight}raycast(e,n){let{matrixWorld:o}=this;if(d0.copy(o).invert(),h0.copy(e.ray).applyMatrix4(d0),h0.intersectBox(this.singleBBox,f0)){let i=f0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);n.push({distance:a,point:i.clone(),object:this})}}};var Dt=require("three");var v0=Fp(g0());var Ap;Ol.then(r=>{Ap=r});var x0=new Dt.Matrix4,mO=new Dt.Matrix4,gO=new Dt.Matrix4,Or=new Dt.Box3,Qn=new Dt.Vector3,yO=new Dt.Matrix4,vO=new Dt.Matrix4,Vi=class extends St{constructor(e,n,o,i){super(o??n,i);this.subdivPointer=e;this.originalGeometry=n;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Dt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Dt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,n,o){let{subdivPointer:i,originalGeometry:a,subdividedGeometry:s}=lr.build(n.geometry,void 0,void 0,!n.flatShading),l=o.material(n.material),u=new Vi(i,a,s||void 0,l);return n.geometry.phongAngle!==void 0&&(u.phongAngle=n.geometry.phongAngle),u.calcBoundingBox(),u.freeSubdivPointer(),u.uuid=e,u.fromState(n),u}buildFromStore(e,n){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=lr.build(e,n,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,Zr(this),Qr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){lr.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&lr.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=lr.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=lr.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,n){this.geometry=this.originalGeometry,St.prototype.raycast.call(this,e,n),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,n=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:a}=(0,v0.SVD)(n),s=x0.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=mO.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=gO.copy(l).transpose();this.shearScale=yO.makeScale(a[0],a[1],a[2]).multiply(u).premultiply(l),this.shearScaleInv=vO.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(s,u),a.every(c=>Math.abs(a[0]-c)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Dt.Sphere);let n=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(n),Or.getCenter(o),e.boundingSphere.radius=o.distanceTo(Or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(Qn);let i={width:Qn.x,height:Qn.y,depth:Qn.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let n=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),n.boundingSphere===null&&(n.boundingSphere=new Dt.Sphere);let o=n.boundingSphere.center;Or.getCenter(o),n.boundingSphere.radius=o.distanceTo(Or.max),isNaN(n.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(Qn);let i={width:Qn.x,height:Qn.y,depth:Qn.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(Ap.free_bvh(this.subdivPointer),Ap.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e,n){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,y0(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(y0(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function y0(r,t,e,n){let o=r.position.array,i=r.normal.array,a=x0.makeScale(t,e,n).invert().elements,s,l,u;for(var c=0,p=o.length;c<p;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=n,s=i[c],l=i[c+1],u=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*u,i[c+1]=a[1]*s+a[5]*l+a[9]*u,i[c+2]=a[2]*s+a[6]*l+a[10]*u}var Jn=require("three");function b0(r,t){t.flatShading!==void 0&&(r.flatShading=t.flatShading,r.needsUpdate=!0),t.wireframe!==void 0&&(r.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?r.side=Jn.FrontSide:t.side===1?r.side=Jn.BackSide:r.side=Jn.DoubleSide)}function xO(r,t){if(Array.isArray(r.material))for(let e of r.material)b0(e,t);else{let e=r.material;b0(e,t)}r.objectType==="SubdivObject"&&t.flatShading!==void 0&&(r.material.flatShading=!1,r.smoothShading=!t.flatShading,r.updateMesh())}function S0(r,t,e){let n;if(t.geometry.type==="SubdivGeometry")n=Vi.createFromState(r,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Jn.BufferGeometry:Ll(t.geometry,e),i="materials"in t?t.materials.map(a=>e.material(a)):e.material(t.material);ll.is2DParametricMesh(o.userData.type)?n=new Wl(o,i):o?.userData.type==="VectorGeometry"?n=new Ii(o,i):t.geometry.type==="NonParametricGeometry"?n=new ql(o,i):t.geometry.type==="BooleanGeometry"?(n=new Hl(void 0,i),n.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(n.phongAngle=t.geometry.phongAngle)):n=new Ei(o,i),n.uuid=r,n.fromState(t,e)}return xO(n,t),n}function w0(r,t,e){return t.type==="Mesh"?t.geometry.type==="TextGeometry"?new lc(r,t,e):S0(r,t,e):t.type==="Empty"?So.createFromState(r,t):t.type==="PointLight"?Ni.createFromState(r,t,e):t.type==="SpotLight"?Pi.createFromState(r,t,e):t.type==="DirectionalLight"?Li.createFromState(r,t,e):Ko.is(t.type)?gn.createFromState(r,t):(console.error(t),new So)}var Oo=class extends Qt{};var xn=require("three");function T0(r,t){let e=!1,n=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(r.layers.set(8),n.length>0&&r.layers.enable(3),e=!0,Qr(r),Zr(r)),n.length===0&&o.length===0&&r.layers.set(0),e}function C0(r,t){if(!t.layers)return!1;let e=!1,n=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return n.length>0&&(r.layers.set(3),o.length>0&&r.layers.enable(8),e=!0),n.length===0&&o.length===0&&r.layers.set(0),e}function A0(r){let t=!1;return r.traverseEntity(e=>{if(e instanceof xn.Mesh)if(Array.isArray(e.material))for(let n=0;n<e.material.length;n++)T0(e,e.material[n])&&(t=!0);else T0(e,e.material)&&(t=!0)}),t}function _0(r){let t=!1;return r.traverseEntity(e=>{if(e instanceof xn.Mesh)if(Array.isArray(e.material))for(let n=0;n<e.material.length;n++)C0(e,e.material[n])&&(t=!0);else C0(e,e.material)&&(t=!0)}),t}function I0(r){"material"in r&&SO(r.material),"geometry"in r&&r.geometry.dispose()}function SO(r){Rp(r).forEach(t=>{t instanceof Oo||t.dispose()})}var wO=new xn.Raycaster,TO=new xn.Matrix4,CO=new xn.Ray;function O0(r,t,e){let n=r.cloner;if(n)for(let o of n.children){let i=TO.copy(o.matrixWorld).invert(),a=CO.copy(t.ray).applyMatrix4(i),s=r.matrixWorld;a.applyMatrix4(s);let l=wO;l.set(a.origin,a.direction),l.near=t.near,l.far=t.far,l.intersectObject(r,!1).length>0&&e.push({object:r})}}var L0=new on.Vector3,_p=class extends El(on.Scene){constructor(e,n){super();this.objectType="Scene";this.backupFog=new on.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.bgColor=new pt(1,1,1,1);this.entityByUuid={};this.ambientLight=new on.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,n),this.matrixAutoUpdate=!1}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=_0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=A0(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let n=this.entityByUuid[e];return n===void 0?this.getObjectByProperty("uuid",e):n}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,n){if(this.createChildrenObjects(e.objects,this,n),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(yt(e.backgroundColor,n)),this.updateFog(e.fog,n),this.updateAmbientLight(e.environment.ambientLight,n),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof gn&&this.switchActiveCamera(o)}this.traverse(o=>{jr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{I0(e)});for(let e of this.children)Hr(e)&&e.removeFromParent()}resetAfterClear(e,n){this.init(e,n)}createPersonalCamera(){let e=gn.createFromState(_p.PERSONAL_CAMERA_ID,{...cl.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let n=[],o=i=>{for(let a of i.children)Hr(a)&&!a.raycastLock&&a.visible&&((zr(a)||Pl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,n),O0(a,e,n)),o(a))};return o(this),n}traverseEntity(e){for(let n of this.children)Hr(n)&&n.traverseEntity(e)}traverseVisibleEntity(e){for(let n of this.children)Hr(n)&&n.visible&&n.traverseVisibleEntity(e)}updateFog(e,n){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=yt(e.color,n),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,n){Jm(this.ambientLight,e,n),e.groundColor!==void 0&&(this.ambientLight.groundColor=yt(e.groundColor,n)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,n,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,n,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let n of e.children)this.unregisterObject(n)}createChildObject(e,n,o,i,a){let s=w0(e,n,a);return s&&(this.entityByUuid[e]=s,i.add(s),jr(i)&&zr(s)&&(s.prevBooleanObjectParent=i),this.createChildrenObjects(o,s,a)),s}getCenter(e){let n=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],u=this.find(s),c=l?u.recursiveBBox:u.singleBBox;n.push(...c.vertices)}let o=new on.Box3;return o.setFromPoints(n),o.getCenter(L0),L0}copyMatrixWorld(e,n){if(e===null){n.identity();return}let o=this.find(e);o?n.copy(o.matrixWorld):n.identity()}copyParentMatrixWorld(e,n){if(e===null){n.identity();return}let o=this.find(e)?.parent;o?n.copy(o.matrixWorld):n.identity()}traverseMaterial(e){this.traverseEntity(n=>{if(n instanceof St)if(Array.isArray(n.material))for(let o=0;o<n.material.length;o++)n.material[o]instanceof Qt&&e(n.material[o]);else n.material instanceof Qt&&e(n.material)})}updateCanvasSize(e,n){this.activeCamera.setViewplaneSize(e,n);let o,i;e>=n?(o=n/e,i=1):(o=1,i=e/n),this.traverseMaterial(a=>{a.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},as=_p;as.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var ht=require("three"),uc=class{constructor(){this.type="ShapePath";this.color=new ht.Color;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new ht.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,n,o){return this.currentPath?.quadraticCurveTo(t,e,n,o),this}bezierCurveTo(t,e,n,o,i,a){return this.currentPath?.bezierCurveTo(t,e,n,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},n={loc:e.ORIGIN,t:0};function o(m,g,v,x){let S=m.x,w=g.x,b=v.x,_=x.x,T=m.y,y=g.y,I=v.y,A=x.y,O=(_-b)*(T-I)-(A-I)*(S-b),C=(w-S)*(T-I)-(y-T)*(S-b),N=(A-I)*(w-S)-(_-b)*(y-T),P=O/N,G=C/N;if(N===0&&O!==0||P<=0||P>=1||G<0||G>1)return null;if(O===0&&N===0){for(let $=0;$<2;$++)if(i($===0?v:x,m,g),n.loc===e.ORIGIN){let Y=$===0?v:x;return{x:Y.x,y:Y.y,t:n.t}}else if(n.loc===e.BETWEEN){let Y=+(S+n.t*(w-S)).toPrecision(10),ie=+(T+n.t*(y-T)).toPrecision(10);return{x:Y,y:ie,t:n.t}}return null}else{for(let ie=0;ie<2;ie++)if(i(ie===0?v:x,m,g),n.loc===e.ORIGIN){let j=ie===0?v:x;return{x:j.x,y:j.y,t:n.t}}let $=+(S+P*(w-S)).toPrecision(10),Y=+(T+P*(y-T)).toPrecision(10);return{x:$,y:Y,t:P}}}function i(m,g,v){let x=v.x-g.x,S=v.y-g.y,w=m.x-g.x,b=m.y-g.y,_=x*b-w*S;if(m.x===g.x&&m.y===g.y){n.loc=e.ORIGIN,n.t=0;return}if(m.x===v.x&&m.y===v.y){n.loc=e.DESTINATION,n.t=1;return}if(_<-Number.EPSILON){n.loc=e.LEFT;return}if(_>Number.EPSILON){n.loc=e.RIGHT;return}if(x*w<0||S*b<0){n.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){n.loc=e.BEYOND;return}let T;x!==0?T=w/x:T=b/S,n.loc=e.BETWEEN,n.t=T}function a(m,g){let v=[],x=[];for(let S=1;S<m.length;S++){let w=m[S-1],b=m[S];for(let _=1;_<g.length;_++){let T=g[_-1],y=g[_],I=o(w,b,T,y);I!==null&&v.find(A=>A.t<=I.t+Number.EPSILON&&A.t>=I.t-Number.EPSILON)===void 0&&(v.push(I),x.push(new ht.Vector2(I.x,I.y)))}}return x}function s(m,g,v){let x=new ht.Vector2;g.getCenter(x);let S=[];return v.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function l(m,g,v,x,S){(S==null||S==="")&&(S="nonzero");let w=new ht.Vector2;m.boundingBox.getCenter(w);let b=[new ht.Vector2(v,w.y),new ht.Vector2(x,w.y)],_=s(b,m.boundingBox,g);_.sort((C,N)=>C.point.x-N.point.x);let T=[],y=[];_.forEach(C=>{C.identifier===m.identifier?T.push(C):y.push(C)});let I=T[0].point.x,A=[],O=0;for(;O<y.length&&y[O].point.x<I;)A.length>0&&A[A.length-1]===y[O].identifier?A.pop():A.push(y[O].identifier),O++;if(A.push(m.identifier),S==="evenodd"){let C=A.length%2===0,N=A[A.length-2];return{identifier:m.identifier,isHole:C,for:N}}else if(S==="nonzero"){let C=!0,N=null,P=null;for(let G=0;G<A.length;G++){let $=A[G];g[$]&&(C?(P=g[$].isCW,C=!1,N=$):P!==g[$].isCW&&(P=g[$].isCW,C=!0))}return{identifier:m.identifier,isHole:C,for:N}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,c=999999999,p=-999999999,f=[];this.subPaths.forEach(m=>{let g=m.getPoints(),v=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<g.length;b++){let _=g[b];_.y>v&&(v=_.y),_.y<x&&(x=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}p<=S&&(p=S+1),c>=w&&(c=w-1),g.length&&f.push({curves:m.curves,points:g,isCW:ht.ShapeUtils.isClockWise(g),identifier:u++,boundingBox:new ht.Box2(new ht.Vector2(w,x),new ht.Vector2(S,v))})});let d=f.map(m=>l(m,f,c,p,this.userData?.style.fillRule)),h=[];return f.forEach(m=>{let g=d[m.identifier];if(g&&!g.isHole){let v=new ht.Shape;v.curves=m.curves,d.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=f[S.identifier],b=new ht.Path;b.curves=w.curves,v.holes.push(b)}}),h.push(v)}}),h}};var E0=Fp(N0());var P0=new Map;function M0(r){if(typeof r=="string")return r;let t=P0.get(r);return t||(t={url:URL.createObjectURL(new Blob([r]))},P0.set(r,t)),t.url}var zi=class{constructor({src:t,volume:e,delay:n,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:M0(t),format:"wav"},this.sound=new E0.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),n!==void 0&&(this.delay=n),o!==void 0&&(this.loop=o)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,n){this.sound.on(t,e,n)}off(t,e,n){this.sound.off(t,e,n)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};function ji(r){this.char=r,this.state={},this.activeState=null}function Ip(r,t,e){this.contextName=e,this.startIndex=r,this.endOffset=t}function AO(r,t,e){this.contextName=r,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=e}function Bt(r,t){this.context=r,this.index=t,this.length=r.length,this.current=r[t],this.backtrack=r.slice(0,t),this.lookahead=r.slice(t+1)}function fc(r){this.eventId=r,this.subscribers=[]}function _O(r){let t=["start","end","next","newToken","contextStart","contextEnd","insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD","updateContextsRanges"];t.forEach(n=>{Object.defineProperty(this.events,n,{value:new fc(n)})}),r&&t.forEach(n=>{let o=r[n];typeof o=="function"&&this.events[n].subscribe(o)}),["insertToken","removeToken","removeRange","replaceToken","replaceRange","composeRUD"].forEach(n=>{this.events[n].subscribe(this.updateContextsRanges)})}function Je(r){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],_O.call(this,r)}ji.prototype.setState=function(r,t){return this.state[r]=t,this.activeState={key:r,value:this.state[r]},this.activeState};ji.prototype.getState=function(r){return this.state[r]||null};Je.prototype.inboundIndex=function(r){return r>=0&&r<this.tokens.length};Je.prototype.composeRUD=function(r){let e=r.map(o=>this[o[0]].apply(this,o.slice(1).concat(!0))),n=o=>typeof o=="object"&&o.hasOwnProperty("FAIL");if(e.every(n))return{FAIL:"composeRUD: one or more operations hasn't completed successfully",report:e.filter(n)};this.dispatch("composeRUD",[e.filter(o=>!n(o))])};Je.prototype.replaceRange=function(r,t,e,n){t=t!==null?t:this.tokens.length;let o=e.every(i=>i instanceof ji);if(!isNaN(r)&&this.inboundIndex(r)&&o){let i=this.tokens.splice.apply(this.tokens,[r,t].concat(e));return n||this.dispatch("replaceToken",[r,t,e]),[i,e]}else return{FAIL:"replaceRange: invalid tokens or startIndex."}};Je.prototype.replaceToken=function(r,t,e){if(!isNaN(r)&&this.inboundIndex(r)&&t instanceof ji){let n=this.tokens.splice(r,1,t);return e||this.dispatch("replaceToken",[r,t]),[n[0],t]}else return{FAIL:"replaceToken: invalid token or index."}};Je.prototype.removeRange=function(r,t,e){t=isNaN(t)?this.tokens.length:t;let n=this.tokens.splice(r,t);return e||this.dispatch("removeRange",[n,r,t]),n};Je.prototype.removeToken=function(r,t){if(!isNaN(r)&&this.inboundIndex(r)){let e=this.tokens.splice(r,1);return t||this.dispatch("removeToken",[e,r]),e}else return{FAIL:"removeToken: invalid token index."}};Je.prototype.insertToken=function(r,t,e){return r.every(o=>o instanceof ji)?(this.tokens.splice.apply(this.tokens,[t,0].concat(r)),e||this.dispatch("insertToken",[r,t]),r):{FAIL:"insertToken: invalid token(s)."}};Je.prototype.registerModifier=function(r,t,e){this.events.newToken.subscribe(function(n,o){let i=[n,o],a=t===null||t.apply(this,i)===!0,s=[n,o];if(a){let l=e.apply(this,s);n.setState(r,l)}}),this.registeredModifiers.push(r)};fc.prototype.subscribe=function(r){return typeof r=="function"?this.subscribers.push(r)-1:{FAIL:`invalid '${this.eventId}' event handler`}};fc.prototype.unsubscribe=function(r){this.subscribers.splice(r,1)};Bt.prototype.setCurrentIndex=function(r){this.index=r,this.current=this.context[r],this.backtrack=this.context.slice(0,r),this.lookahead=this.context.slice(r+1)};Bt.prototype.get=function(r){switch(!0){case r===0:return this.current;case(r<0&&Math.abs(r)<=this.backtrack.length):return this.backtrack.slice(r)[0];case(r>0&&r<=this.lookahead.length):return this.lookahead[r-1];default:return null}};Je.prototype.rangeToText=function(r){if(r instanceof Ip)return this.getRangeTokens(r).map(t=>t.char).join("")};Je.prototype.getText=function(){return this.tokens.map(r=>r.char).join("")};Je.prototype.getContext=function(r){let t=this.registeredContexts[r];return t||null};Je.prototype.on=function(r,t){let e=this.events[r];return e?e.subscribe(t):null};Je.prototype.dispatch=function(r,t){let e=this.events[r];e instanceof fc&&e.subscribers.forEach(n=>{n.apply(this,t||[])})};Je.prototype.registerContextChecker=function(r,t,e){if(this.getContext(r))return{FAIL:`context name '${r}' is already registered.`};if(typeof t!="function")return{FAIL:"missing context start check."};if(typeof e!="function")return{FAIL:"missing context end check."};let n=new AO(r,t,e);return this.registeredContexts[r]=n,this.contextCheckers.push(n),n};Je.prototype.getRangeTokens=function(r){let t=r.startIndex+r.endOffset;return[].concat(this.tokens.slice(r.startIndex,t))};Je.prototype.getContextRanges=function(r){let t=this.getContext(r);return t?t.ranges:{FAIL:`context checker '${r}' is not registered.`}};Je.prototype.resetContextsRanges=function(){let r=this.registeredContexts;for(let t in r)if(r.hasOwnProperty(t)){let e=r[t];e.ranges=[]}};Je.prototype.updateContextsRanges=function(){this.resetContextsRanges();let r=this.tokens.map(t=>t.char);for(let t=0;t<r.length;t++){let e=new Bt(r,t);this.runContextCheck(e)}this.dispatch("updateContextsRanges",[this.registeredContexts])};Je.prototype.setEndOffset=function(r,t){let e=this.getContext(t).openRange.startIndex,n=new Ip(e,r,t),o=this.getContext(t).ranges;return n.rangeId=`${t}.${o.length}`,o.push(n),this.getContext(t).openRange=null,n};Je.prototype.runContextCheck=function(r){let t=r.index;this.contextCheckers.forEach(e=>{let n=e.contextName,o=this.getContext(n).openRange;if(!o&&e.checkStart(r)&&(o=new Ip(t,null,n),this.getContext(n).openRange=o,this.dispatch("contextStart",[n,t])),!!o&&e.checkEnd(r)){let i=t-o.startIndex+1,a=this.setEndOffset(i,n);this.dispatch("contextEnd",[n,a])}})};Je.prototype.tokenize=function(r){this.tokens=[],this.resetContextsRanges();let t=Array.from(r);this.dispatch("start");for(let e=0;e<t.length;e++){let n=t[e],o=new Bt(t,e);this.dispatch("next",[o]),this.runContextCheck(o);let i=new ji(n);this.tokens.push(i),this.dispatch("newToken",[i,o])}return this.dispatch("end",[this.tokens]),this.tokens};var D0=Je;function an(r){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(r)}function Op(r){return/[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(r)}function Lr(r){return/[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(r)}function ss(r){return/[A-z]/.test(r)}function B0(r){return/\s/.test(r)}function rr(r){this.font=r,this.features={}}function bn(r){this.id=r.id,this.tag=r.tag,this.substitution=r.substitution}function ls(r,t){if(!r)return-1;switch(t.format){case 1:return t.glyphs.indexOf(r);case 2:let e=t.ranges;for(let n=0;n<e.length;n++){let o=e[n];if(r>=o.start&&r<=o.end){let i=r-o.start;return o.index+i}}break;default:return-1}return-1}function IO(r,t){return ls(r,t.coverage)===-1?null:r+t.deltaGlyphId}function OO(r,t){let e=ls(r,t.coverage);return e===-1?null:t.substitute[e]}function Lp(r,t){let e=[];for(let n=0;n<r.length;n++){let o=r[n],i=t.current;i=Array.isArray(i)?i[0]:i;let a=ls(i,o);a!==-1&&e.push(a)}return e.length!==r.length?-1:e}function LO(r,t){let e=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(r.context.length<e)return[];let n=Lp(t.inputCoverage,r);if(n===-1)return[];let o=t.inputCoverage.length-1;if(r.lookahead.length<t.lookaheadCoverage.length)return[];let i=r.lookahead.slice(o);for(;i.length&&Lr(i[0].char);)i.shift();let a=new Bt(i,0),s=Lp(t.lookaheadCoverage,a),l=[].concat(r.backtrack);for(l.reverse();l.length&&Lr(l[0].char);)l.shift();if(l.length<t.backtrackCoverage.length)return[];let u=new Bt(l,0),c=Lp(t.backtrackCoverage,u),p=n.length===t.inputCoverage.length&&s.length===t.lookaheadCoverage.length&&c.length===t.backtrackCoverage.length,f=[];if(p)for(let d=0;d<t.lookupRecords.length;d++){let m=t.lookupRecords[d].lookupListIndex,g=this.getLookupByIndex(m);for(let v=0;v<g.subtables.length;v++){let x=g.subtables[v],S=this.getLookupMethod(g,x);if(this.getSubstitutionType(g,x)==="12")for(let b=0;b<n.length;b++){let _=r.get(b),T=S(_);T&&f.push(T)}}}return f}function NO(r,t){let e=r.current,n=ls(e,t.coverage);if(n===-1)return null;let o,i=t.ligatureSets[n];for(let a=0;a<i.length;a++){o=i[a];for(let s=0;s<o.components.length;s++){let l=r.lookahead[s],u=o.components[s];if(l!==u)break;if(s===o.components.length-1)return o}}return null}function PO(r,t){let e=ls(r,t.coverage);return e===-1?null:t.sequences[e]}rr.prototype.getDefaultScriptFeaturesIndexes=function(){let r=this.font.tables.gsub.scripts;for(let t=0;t<r.length;t++){let e=r[t];if(e.tag==="DFLT")return e.script.defaultLangSys.featureIndexes}return[]};rr.prototype.getScriptFeaturesIndexes=function(r){if(!this.font.tables.gsub)return[];if(!r)return this.getDefaultScriptFeaturesIndexes();let e=this.font.tables.gsub.scripts;for(let n=0;n<e.length;n++){let o=e[n];if(o.tag===r&&o.script.defaultLangSys)return o.script.defaultLangSys.featureIndexes;{let i=o.langSysRecords;if(i)for(let a=0;a<i.length;a++){let s=i[a];if(s.tag===r)return s.langSys.featureIndexes}}}return this.getDefaultScriptFeaturesIndexes()};rr.prototype.mapTagsToFeatures=function(r,t){let e={};for(let n=0;n<r.length;n++){let o=r[n].tag,i=r[n].feature;e[o]=i}this.features[t].tags=e};rr.prototype.getScriptFeatures=function(r){let t=this.features[r];if(this.features.hasOwnProperty(r))return t;let e=this.getScriptFeaturesIndexes(r);if(!e)return null;let n=this.font.tables.gsub;return t=e.map(o=>n.features[o]),this.features[r]=t,this.mapTagsToFeatures(t,r),t};rr.prototype.getSubstitutionType=function(r,t){let e=r.lookupType.toString(),n=t.substFormat.toString();return e+n};rr.prototype.getLookupMethod=function(r,t){switch(this.getSubstitutionType(r,t)){case"11":return n=>IO.apply(this,[n,t]);case"12":return n=>OO.apply(this,[n,t]);case"63":return n=>LO.apply(this,[n,t]);case"41":return n=>NO.apply(this,[n,t]);case"21":return n=>PO.apply(this,[n,t]);default:throw new Error(`lookupType: ${r.lookupType} - substFormat: ${t.substFormat} is not yet supported`)}};rr.prototype.lookupFeature=function(r){let t=r.contextParams,e=t.index,n=this.getFeature({tag:r.tag,script:r.script});if(!n)return new Error(`font '${this.font.names.fullName.en}' doesn't support feature '${r.tag}' for script '${r.script}'.`);let o=this.getFeatureLookups(n),i=[].concat(t.context);for(let a=0;a<o.length;a++){let s=o[a],l=this.getLookupSubtables(s);for(let u=0;u<l.length;u++){let c=l[u],p=this.getSubstitutionType(s,c),f=this.getLookupMethod(s,c),d;switch(p){case"11":d=f(t.current),d&&i.splice(e,1,new bn({id:11,tag:r.tag,substitution:d}));break;case"12":d=f(t.current),d&&i.splice(e,1,new bn({id:12,tag:r.tag,substitution:d}));break;case"63":d=f(t),Array.isArray(d)&&d.length&&i.splice(e,1,new bn({id:63,tag:r.tag,substitution:d}));break;case"41":d=f(t),d&&i.splice(e,1,new bn({id:41,tag:r.tag,substitution:d}));break;case"21":d=f(t.current),d&&i.splice(e,1,new bn({id:21,tag:r.tag,substitution:d}));break}t=new Bt(i,e),!(Array.isArray(d)&&!d.length)&&(d=null)}}return i.length?i:null};rr.prototype.supports=function(r){if(!r.script)return!1;this.getScriptFeatures(r.script);let t=this.features.hasOwnProperty(r.script);if(!r.tag)return t;let e=this.features[r.script].some(n=>n.tag===r.tag);return t&&e};rr.prototype.getLookupSubtables=function(r){return r.subtables||null};rr.prototype.getLookupByIndex=function(r){return this.font.tables.gsub.lookups[r]||null};rr.prototype.getFeatureLookups=function(r){return r.lookupListIndexes.map(this.getLookupByIndex.bind(this))};rr.prototype.getFeature=function(t){if(!this.font)return{FAIL:"No font was found"};this.features.hasOwnProperty(t.script)||this.getScriptFeatures(t.script);let e=this.features[t.script];return e?e.tags[t.tag]?this.features[t.script].tags[t.tag]:null:{FAIL:`No feature for script ${t.script}`}};var F0=rr;function MO(r){let t=r.current,e=r.get(-1);return e===null&&an(t)||!an(e)&&an(t)}function EO(r){let t=r.get(1);return t===null||!an(t)}var R0={startCheck:MO,endCheck:EO};function DO(r){let t=r.current,e=r.get(-1);return(an(t)||Lr(t))&&!an(e)}function BO(r){let t=r.get(1);switch(!0){case t===null:return!0;case(!an(t)&&!Lr(t)):let e=B0(t);if(!e)return!0;if(e){let n=!1;if(n=r.lookahead.some(o=>an(o)||Lr(o)),!n)return!0}break;default:return!1}}var k0={startCheck:DO,endCheck:BO};function FO(r,t,e){t[e].setState(r.tag,r.substitution)}function RO(r,t,e){t[e].setState(r.tag,r.substitution)}function kO(r,t,e){r.substitution.forEach((n,o)=>{t[e+o].setState(r.tag,n)})}function GO(r,t,e){let n=t[e];n.setState(r.tag,r.substitution.ligGlyph);let o=r.substitution.components.length;for(let i=0;i<o;i++)n=t[e+i+1],n.setState("deleted",!0)}var G0={11:FO,12:RO,63:kO,41:GO};function UO(r,t,e){r instanceof bn&&G0[r.id]&&G0[r.id](r,t,e)}var Hi=UO;function VO(r){let t=[].concat(r.backtrack);for(let e=t.length-1;e>=0;e--){let n=t[e],o=Op(n),i=Lr(n);if(!o&&!i)return!0;if(o)return!1}return!1}function zO(r){if(Op(r.current))return!1;for(let t=0;t<r.lookahead.length;t++){let e=r.lookahead[t];if(!Lr(e))return!0}return!1}function jO(r){let t="arab",e=this.featuresTags[t],n=this.tokenizer.getRangeTokens(r);if(n.length===1)return;let o=new Bt(n.map(a=>a.getState("glyphIndex")),0),i=new Bt(n.map(a=>a.char),0);n.forEach((a,s)=>{if(Lr(a.char))return;o.setCurrentIndex(s),i.setCurrentIndex(s);let l=0;VO(i)&&(l|=1),zO(i)&&(l|=2);let u;switch(l){case 1:u="fina";break;case 2:u="init";break;case 3:u="medi";break}if(e.indexOf(u)===-1)return;let c=this.query.lookupFeature({tag:u,script:t,contextParams:o});if(c instanceof Error)return console.info(c.message);c.forEach((p,f)=>{p instanceof bn&&(Hi(p,n,f),o.context[f]=p.substitution)})})}var U0=jO;function V0(r,t){let e=r.map(n=>n.activeState.value);return new Bt(e,t||0)}function HO(r){let t="arab",e=this.tokenizer.getRangeTokens(r),n=V0(e);n.context.forEach((o,i)=>{n.setCurrentIndex(i);let a=this.query.lookupFeature({tag:"rlig",script:t,contextParams:n});a.length&&(a.forEach(s=>Hi(s,e,i)),n=V0(e))})}var z0=HO;function WO(r){let t=r.current,e=r.get(-1);return e===null&&ss(t)||!ss(e)&&ss(t)}function qO(r){let t=r.get(1);return t===null||!ss(t)}var j0={startCheck:WO,endCheck:qO};function H0(r,t){let e=r.map(n=>n.activeState.value);return new Bt(e,t||0)}function XO(r){let t="latn",e=this.tokenizer.getRangeTokens(r),n=H0(e);n.context.forEach((o,i)=>{n.setCurrentIndex(i);let a=this.query.lookupFeature({tag:"liga",script:t,contextParams:n});a.length&&(a.forEach(s=>Hi(s,e,i)),n=H0(e))})}var W0=XO;function Nr(r){this.baseDir=r||"ltr",this.tokenizer=new D0,this.featuresTags={}}Nr.prototype.setText=function(r){this.text=r};Nr.prototype.contextChecks={latinWordCheck:j0,arabicWordCheck:R0,arabicSentenceCheck:k0};function Np(r){let t=this.contextChecks[`${r}Check`];return this.tokenizer.registerContextChecker(r,t.startCheck,t.endCheck)}function YO(){return Np.call(this,"latinWord"),Np.call(this,"arabicWord"),Np.call(this,"arabicSentence"),this.tokenizer.tokenize(this.text)}function $O(){this.tokenizer.getContextRanges("arabicSentence").forEach(t=>{let e=this.tokenizer.getRangeTokens(t);this.tokenizer.replaceRange(t.startIndex,t.endOffset,e.reverse())})}Nr.prototype.registerFeatures=function(r,t){let e=t.filter(n=>this.query.supports({script:r,tag:n}));this.featuresTags.hasOwnProperty(r)?this.featuresTags[r]=this.featuresTags[r].concat(e):this.featuresTags[r]=e};Nr.prototype.applyFeatures=function(r,t){if(!r)throw new Error("No valid font was provided to apply features");this.query||(this.query=new F0(r));for(let e=0;e<t.length;e++){let n=t[e];!this.query.supports({script:n.script})||this.registerFeatures(n.script,n.tags)}};Nr.prototype.registerModifier=function(r,t,e){this.tokenizer.registerModifier(r,t,e)};function Pp(){if(this.tokenizer.registeredModifiers.indexOf("glyphIndex")===-1)throw new Error("glyphIndex modifier is required to apply arabic presentation features.")}function KO(){let r="arab";if(!this.featuresTags.hasOwnProperty(r))return;Pp.call(this),this.tokenizer.getContextRanges("arabicWord").forEach(e=>{U0.call(this,e)})}function ZO(){let r="arab";if(!this.featuresTags.hasOwnProperty(r)||this.featuresTags[r].indexOf("rlig")===-1)return;Pp.call(this),this.tokenizer.getContextRanges("arabicWord").forEach(n=>{z0.call(this,n)})}function QO(){let r="latn";if(!this.featuresTags.hasOwnProperty(r)||this.featuresTags[r].indexOf("liga")===-1)return;Pp.call(this),this.tokenizer.getContextRanges("latinWord").forEach(n=>{W0.call(this,n)})}Nr.prototype.checkContextReady=function(r){return!!this.tokenizer.getContext(r)};Nr.prototype.applyFeaturesToContexts=function(){this.checkContextReady("arabicWord")&&(KO.call(this),ZO.call(this)),this.checkContextReady("latinWord")&&QO.call(this),this.checkContextReady("arabicSentence")&&$O.call(this)};Nr.prototype.processText=function(r){(!this.text||this.text!==r)&&(this.setText(r),YO.call(this),this.applyFeaturesToContexts())};Nr.prototype.getBidiText=function(r){return this.processText(r),this.tokenizer.getText()};Nr.prototype.getTextGlyphs=function(r){this.processText(r);let t=[];for(let e=0;e<this.tokenizer.tokens.length;e++){let n=this.tokenizer.tokens[e];if(n.state.deleted)continue;let o=n.activeState.value;t.push(Array.isArray(o)?o[0]:o)}return t};var q0=Nr;function JO(r,t){return t.state.glyphIndex===r||t.state.fina===r||t.state.medi===r||t.state.init===r}var dc=class{constructor(t,e,n){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=u0(t,e).then(o=>{o&&(this._arrayBuffer=o.arr,this._url=o.url,this.font=o.font,this._intercepted=o.intercepted,this._isLoaded=!0,n())})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,n){let o=new q0,i=c=>t.charToGlyphIndex(c.char);o.registerModifier("glyphIndex",null,i),o.applyFeatures(t,t.defaultRenderOptions.features),o.getTextGlyphs(e);let a=o.tokenizer.tokens,s=[],l=0,u=n.length===a.length;for(let c=0;c<n.length;c++){let p=n[c].index,f=String.fromCharCode(n[c].unicode),d=a[l];if(JO(p,d)||u)s.push({char:f,index:p,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),l++;else{let h=d.char,m="",g=[d.state.glyphIndex],v=[],x=!1;for(;!x;)l++,m=e.charAt(l),h+=m,g.push(t.charToGlyphIndex(m)),v=t.stringToGlyphs(h),v.length===1&&v[0].index===p&&(x=!0),l>e.length&&(x=!0);s.push({char:f,index:p,replacements:g,replacementChars:Array.from(h)}),l++}}return s}async generateShapes(t,e){await this._loadingPromise;let n=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign),u=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),c=this.computeSpaceWidthForLine(t,0,e),p=this.getCharWidth(`
1335
+ `,e),f=[],d=t.map(v=>[]),h=t.map(v=>[]),m;for(let v=0;v<t.length;v++){let x=t[v],S={features:{liga:!0}},w=[];try{w=n.stringToGlyphs(x,S)}catch(_){console.warn(_)}l=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign);let b=[];try{b=this.reverseLigaturesTable(n,x,w)}catch(_){console.warn(_)}c=this.computeSpaceWidthForLine(t,v,e);for(let _=0;_<w.length;_++){let T=w[_],y=T.index===0?`
1336
+ `:T.unicode?String.fromCharCode(T.unicode):void 0,I=b[_],A=0,O=0;_===0&&e.horizontalAlign===2&&T.leftSideBearing!==void 0&&(O=-T.leftSideBearing*o),m&&(A=n.getKerningValue(T,m)*o),l+=O+A;let C=0;if(y===`
1337
+ `)C=p;else if(y===" ")C=c;else{let N=this.createPath(T,o,l,u,e);N&&(C=N.offsetX-(A+O),f.push(N.path))}if(I.replacements.length===1)h[v].push([l,u]),d[v].push(C);else{let N=I.replacements.map(Y=>(n.glyphs.get(Y).advanceWidth??0)*o),P=N.reduce((Y,ie)=>Y+=ie,0),G=N.map(Y=>Y/P),$=l;for(let Y=0;Y<G.length;Y++){let ie=C*G[Y];h[v].push([$,u]),d[v].push(ie),$+=ie}}l+=C,m=T}u-=i}let g=[];for(let v=0,x=f.length;v<x;v++)g.push(...f[v].toShapes());return{shapes:g,charWidths:d,lineWidths:a,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(t,e,n){return n===3?e*.5-t*.5:n===2?e-t:0}getLineInitialOffsetY(t,e,n,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,u=-this.ascender*o-l/2;return i===3?-(n-a-u):i===2?-(n*.5-a*.5-u):u}createPath(t,e,n,o,i){let a=t.getPath(n,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new uc,l=(t.advanceWidth??1)*e;if(t)for(let u of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&u.type!=="Z"&&c.x===u.x&&-c.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,n){let o=this.getCharWidth(" ",n),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(n.horizontalAlign===4&&e<t.length-1&&a){let s=n.width,l=this.getTextWidth(i,n);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};var cs=class{constructor(t,e={}){this.deletedMaterial=new Oo(Zt.defaultTwoLayerData("basic"),this);this.deletedImage=new bo(fl.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.onFontLoad=()=>{this._onFontLoad&&this._onFontLoad()};if(e.images)for(let[n,o]of Object.entries(e.images))this.addImage(n,o);if(e.audios)for(let[n,o]of Object.entries(e.audios))this.addAudio(n,o.data);this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}setOnFontLoad(t){this._onFontLoad=t}reset(t){for(let[e,n]of Object.entries(t.images))this.addImage(e,n);for(let[e,n]of Object.entries(t.colors))this.addColor(e,n);for(let[e,n]of Object.entries(t.materials))this.addMaterial(e,new Oo(n,this));for(let[e,n]of Object.entries(t.audios))this.addAudio(e,n.data);for(let[e,n]of Object.entries(t.fonts))this.addFont(e,n);this.penumbraSize=t.penumbraSize}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new Qt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new bo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new _i(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new zn(e.r,e.g,e.b,e.a):this.colors[t]=new zn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let n=this.colors[t];return this.colors[t].r=e.r??n.r,this.colors[t].g=e.g??n.g,this.colors[t].b=e.b??n.b,this.colors[t].a=e.a??n.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let n=this.getColor(t);n?e=n:(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 t?new pt(t.r,t.g,t.b,t.a):new pt(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof zi)return e;{let n=new zi({src:e});return this.audios[t]=n,n}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}addFont(t,e){this.fonts[t]=new dc(e,t,this.onFontLoad)}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof zi&&e.dispose()}),this.audios={}}},W9=new cs(pl.emptyData());var X0=require("three/examples/jsm/loaders/DRACOLoader.js");var eo;function eL(){return eo||(eo=new X0.DRACOLoader,eo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),eo.decoderPending}async function tL(r){if(eo){let t={attributeIDs:eo.defaultAttributeIDs,attributeTypes:eo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await eo.decodeGeometry(new Int8Array(r).buffer,t)}catch(n){console.error(n)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([n,o])=>({name:n,itemSize:o.itemSize,array:o.array}))}}return null}async function Y0(r,t){let[e,n]=Oc(ol.deserialize(new Uint8Array(r)));Gh(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await eL();for(let i of o){let a=await tL(Ut(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:u,itemSize:c})=>{s[l]={array:u,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),n.result().data}var rL=require("three"),nL=require("three/examples/jsm/utils/BufferGeometryUtils.js");function $0(r){let t;if(!!r.index)for(let e=0;e<r.index.array.length;e+=3)t=r.index.array[e],r.index.array[e]=r.index.array[e+2],r.index.array[e+2]=t}var us=require("three");function K0(r){let t=new Set;return r.traverse(e=>{if(zr(e))if(Xe(e.material))e.material.forEach(n=>{let o=n;t.has(o)||t.add(o)});else{let n=e.material;t.has(n)||t.add(n)}}),t.forEach(e=>{if(e instanceof Array)return;let n=e.onBeforeCompile.bind(e);if(oL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new us.Color,specularColor:new us.Color});let o=0;e.onBeforeCompile=(i,a)=>{n&&n(i,a),i.uniforms=Object.assign({},us.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else iL(e)||(e.onBeforeCompile=(o,i)=>{n&&n(o,i),e.transparent=!1})}),r}function oL(r){return r.getLayersOfType("transmission").length>0}function iL(r){let t=0;return r.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let n=e.uniforms["f"+e.id+"_alpha"];n&&(t+=(1-t)*n.value)}}),t<1}function Z0(r){return r.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),r}function Q0(r){let t=[],e=(n,o=0)=>{let i=o>0?n+o:n;return t.includes(i)?e(n,o+1):i};return r.traverse(n=>{if(t.includes(n.name)){let o=n.name,i=e(n.name);if(n.name=i,n.isMesh){let a=n;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}t.push(n.name)}),r}var J0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ev(r){let t=[];return r.traverse(e=>{e instanceof po&&t.push(e)}),t.forEach(e=>{let n=e.object,i=e.children.map(s=>{s.updateMatrix();let l=s.geometry.clone().applyMatrix4(s.matrix);return s.matrix.determinant()<0&&$0(l),l}),a=(0,J0.mergeBufferGeometries)(e.parameters.hideBase?i:[n.geometry,...i]);n.geometry=a,n.remove(e),n.cloner=void 0}),r}function tv(r){return r.traverse(t=>{t.matrixAutoUpdate=!0}),r}function rv(r){Object.values(r.shared.materials).forEach(t=>{Mp(t)}),r.scene.objects.traverse((t,e)=>{"material"in e?Mp(e.material):"materials"in e&&e.materials.forEach(n=>{Mp(n)})})}function Mp(r){if(typeof r=="string")return;let t=[];r.layers.forEach((e,n)=>{e.type==="outline"&&t.push(n)}),t.reverse().forEach(e=>{r.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var nv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",hc=class extends mc.Loader{load(t,e,n,o=console.error){let i=new mc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(nv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(nv),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},n,o)}async parse(t){let e=await Y0(t,rv),n=new cs(e.shared);Object.values(n.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new as(e.scene,n);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let a=o.find(i);a&&Qm(a)&&Object.assign(a,{makeDefault:!0})}return o=ev(o),o=K0(o),o=Z0(o),o=Q0(o),o=tv(o),o}};