@splinetool/loader 0.9.125 → 0.9.127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,16 @@
1
- var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDescriptor;var Iv=Object.getOwnPropertyNames;var Lv=Object.getPrototypeOf,Nv=Object.prototype.hasOwnProperty;var sc=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),Pv=(r,t)=>{for(var e in t)ac(r,e,{get:t[e],enumerable:!0})},Mv=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Iv(t))!Nv.call(r,o)&&o!==e&&ac(r,o,{get:()=>t[o],enumerable:!(n=Ov(t,o))||n.enumerable});return r};var kp=(r,t,e)=>(e=r!=null?_v(Lv(r)):{},Mv(t||!r||!r.__esModule?ac(e,"default",{value:r,enumerable:!0}):e,r));var Ku=sc(()=>{});var L0=sc((ec,I0)=>{(function(r,t){typeof ec=="object"&&typeof I0<"u"?t(ec):typeof define=="function"&&define.amd?define(["exports"],t):t((r=typeof globalThis<"u"?globalThis:r||self).SVDJS={})})(ec,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,b=t.length;if(b<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],_=[],T=e==="f"?b:x,y=m=f=0;y<b;y++)S[y]=new Array(T).fill(0);for(y=0;y<x;y++)_[y]=new Array(x).fill(0);var O,A=new Array(x).fill(0);for(y=0;y<b;y++)for(a=0;a<x;a++)S[y][a]=t[y][a];for(y=0;y<x;y++){for(w[y]=f,h=0,l=y+1,a=y;a<b;a++)h+=Math.pow(S[a][y],2);if(h<i)f=0;else for(d=(p=S[y][y])*(f=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[y][y]=p-f,a=l;a<x;a++){for(h=0,s=y;s<b;s++)h+=S[s][y]*S[s][a];for(p=h/d,s=y;s<b;s++)S[s][a]=S[s][a]+p*S[s][y]}for(A[y]=f,h=0,a=l;a<x;a++)h+=Math.pow(S[y][a],2);if(h<i)f=0;else{for(d=(p=S[y][y+1])*(f=p<0?Math.sqrt(h):-Math.sqrt(h))-h,S[y][y+1]=p-f,a=l;a<x;a++)w[a]=S[y][a]/d;for(a=l;a<b;a++){for(h=0,s=l;s<x;s++)h+=S[a][s]*S[y][s];for(s=l;s<x;s++)S[a][s]=S[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=S[y][y+1]*f,a=l;a<x;a++)_[a][y]=S[y][a]/d;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=S[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<b;y++){for(a=x;a<b;a++)S[y][a]=0;S[y][y]=1}for(y=x-1;0<=y;y--){for(l=y+1,f=A[y],a=l;a<T;a++)S[y][a]=0;if(f!==0){for(d=S[y][y]*f,a=l;a<T;a++){for(h=0,s=l;s<b;s++)h+=S[s][y]*S[s][a];for(p=h/d,s=y;s<b;s++)S[s][a]=S[s][a]+p*S[s][y]}for(a=y;a<b;a++)S[a][y]=S[a][y]/f}else for(a=y;a<b;a++)S[a][y]=0;S[y][y]=S[y][y]+1}}for(o*=m,s=x-1;0<=s;s--)for(var I=0;I<50;I++){for(O=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){O=!0;break}if(Math.abs(A[l-1])<=o)break}if(!O){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<b;a++)g=S[a][u],v=S[a][y],S[a][u]=g*c+v*h,S[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<b;a++)g=S[a][y-1],v=S[a][y],S[a][y-1]=g*c+v*h,S[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:S,q:A,v:_}},r.VERSION="1.1.1",Object.defineProperty(r,"__esModule",{value:!0})})});var W0=sc(tc=>{(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 b=0;b<c._howls.length;b++)c._howls[b]._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),b=Math.max(0,(f._sprite[c][0]+f._sprite[c][1])/1e3-x),w=b*1e3/Math.abs(g._rate),S=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=S,g._stop=_,g._loop=!!(g._loop||f._sprite[c][2])};if(x>=_){f._ended(g);return}var y=g._node;if(f._webAudio){var O=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,b):g._loop?y.bufferSource.start(0,x,86400):y.bufferSource.start(0,x,b),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"?O():(f._playLock=!0,f.once("resume",O),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 I=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||I)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,b=x+f/1e3;v._volume=c,v._node.gain.setValueAtTime(c,x),v._node.gain.linearRampToValueAtTime(p,b)}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,b=Math.abs(x/.01),w=Math.max(4,b>0?d/b:d),S=Date.now();c._fadeTo=f,c._interval=setInterval(function(){var _=(Date.now()-S)/d;S=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]),b=(c._sprite[g._sprite][0]+c._sprite[g._sprite][1])/1e3-x,w=b*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 b=function(){c._playLock?setTimeout(b,0):x()};setTimeout(b,0)}else x()}else if(c._webAudio){var w=c.playing(d)?t.ctx.currentTime-g._playStart:0,S=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(S+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 tc<"u"&&(tc.Howler=t,tc.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)}})()});import{FileLoader as GP,Loader as UP}from"three";var Ge=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,Ge.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,Ge.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,Ge.prototype),delete i[n],{data:i,actual:t,reverse:{type:1,id:n,data:o}}}}throw new Error("illegal arg")}};function Mi(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"&&Mi(n)}return Object.freeze(r)}function Gp(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 ho=class extends Error{};function vr(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 zn(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 Up(){return typeof process<"u"}function Vp(r,t){for(let e of r)t(e.id,e.data),Vp(e.children,t)}function zp(r,t){t(r.id,r.data);for(let e of r.children)zp(e,t)}var Ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mi(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&&zp(o,n)}}traverse(e){Vp(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,Ve.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 ho("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)=>Gp(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 vr(0,o,o);{let a=i[0].fi;return vr(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 vr(l,l+o,o)}else return vr(a.fi,s.fi,o)}}};var mo;(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})(mo||(mo={}));var Se=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Se.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mi(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,Se.prototype);let n=e;return Up()||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 vr(0,n,n);{let i=o[0].fi;return vr(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 vr(s,s+n,n)}else return vr(i.fi,a.fi,n)}}};var Et=class{unusedFun(t){}runOp(t){let e=[],n=this,o=0,i={};for(;o<t.path.length;){if(e.push(n),n=n===void 0?void 0:n[t.path[o]],n instanceof Ve||n instanceof Se)return null;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,Et.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},jp;(e=>{function r(n,o){return Ei(n,o)??n}e.apply=r;function t(n,o){if(o.type===0){let i=0,a=o.path,s=n;for(;i<a.length&&s!==void 0;){if(s=xr.zoomOnce(s,a[i]),s instanceof Ve||s instanceof Se)return;i+=1}if(s===void 0)return o;if(typeof s=="string"||typeof s=="number"||zn(s))return;if(s&&typeof s=="object"){let l={...o.props};for(let u of Object.keys(s))delete l[u];return{...o,props:l}}else return}else if(o.type===1||o.type===4||o.type===7){let i=xr.zoom(n,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||zn(i))return;if(i&&typeof i=="object"){let a={...o.data,...i};return{...o,data:a}}else return}else return o}e.filterOp=t})(jp||(jp={}));function Hp(r,t){if(t===void 0)return;let e=!1,n=r.map(o=>{let i=o.id,a=Ei(o.data,t[i]);e=e||a!==void 0,a===void 0&&(a=o.data);let s=Hp(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}});if(e)return n}function Ev(r,t){if(t===void 0)return;let e=!1,n=r.map(o=>{let i=o.id,a=Ei(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 Ei(r,t){if(t!==void 0){if(t instanceof Se||t instanceof Ve||typeof t=="string"||typeof t=="number"||t===null)return t;if(r instanceof Ve){let e=Hp(r,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(r)),e}else{if(r instanceof Se)return Ev(r,t);if(Array.isArray(r)){let e=!1,n=r.map((o,i)=>{let a=Ei(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=Ei(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}}}function Wp(r,t){let e={cur:[],result:[],len:0};return r=Di(r,t,e)??r,[r,e.result]}function Ja(r,t){return r===null?null:(r.cur[r.len]=t,r.len+=1,r)}function es(r){r&&(r.len-=1)}function Dv(r){if(r===null)return null;r.result.push(r.cur.slice(0,r.len))}function qp(r,t,e){let n=!1,o=r.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(n=!0,a=s,e!==null))throw new Error("not supported");let l=Di(i.data,t,Ja(e,a));es(e),n=n||l!==void 0,l===void 0&&(l=i.data);let u=qp(i.children,t,e);return u!==void 0?n=!0:u=i.children,{...i,id:a,data:l,children:u}});if(n)return o}function Bv(r,t,e){let n=!1,o=r.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(n=!0,a=s,e!==null))throw new Error("not supported");let l=Di(i.data,t,Ja(e,a));return es(e),n=n||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(n)return Object.setPrototypeOf(o,Object.getPrototypeOf(r)),o}function Di(r,t,e){if(r instanceof Ve){let n=qp(r,t,e);return n!==void 0&&Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n}else{if(r instanceof Se)return Bv(r,t,e);if(Array.isArray(r)){let n=!1,o=r.map((i,a)=>{let s=Di(i,t,Ja(e,a));return es(e),n=n||s!==void 0,s===void 0&&(s=i),s});return n?(Object.setPrototypeOf(o,Object.getPrototypeOf(r)),o):void 0}else if(r&&typeof r=="object"){let n={},o=!1;for(let[i,a]of Object.entries(r))if(i!=="name"&&i!=="text"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Di(a,t,Ja(e,i));es(e),o=o||l!==void 0,l===void 0&&(l=a),n[i]=l}else n[i]=a;return o?(Object.setPrototypeOf(n,Object.getPrototypeOf(r)),n):void 0}else if(typeof r=="string"){let n=t[r];if(n!==void 0){if(r.length!==36)throw new Error("for now you should only call this method when the key is a uuid");Dv(e)}return n}else return}}var Xp;(t=>{function r(e,n){let o=xr.zoom(n,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=r})(Xp||(Xp={}));var un;(s=>{function r(l,u){return{...l,path:l.path.slice(u)}}s.drop=r;function t(l,u){return e(l,u)?.data??l}s.applySimple=t;function e(l,u){let c=u.path;for(var p=[];;){let f;if(l instanceof Et&&u.type===0&&(f=l.runOp({...u,path:c.slice(p.length)}),f===null&&(f=void 0)),p.length===c.length&&(l instanceof Ve||l instanceof Se||l instanceof Ge?f=l.runOp(u):f=mo.runOp(l,u)),f!==void 0)if(f!==null){let m=f.data;for(let g=p.length-1;g>=0;g--){let v=c[g],x=p[g];if(x instanceof Ve){if(typeof v=="number")throw new Error("illegal arg");m=x.modifyById(v,m)}else if(x instanceof Se){if(typeof v=="number")throw new Error("illegal arg");m=x.modifyById(v,m)}else if(x instanceof Ge){if(typeof v=="number")throw new Error("illegal arg");m=x.modifyById(v,m)}else if(x instanceof Et){let b={...x,[v]:m};m=Object.setPrototypeOf(b,Et.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof v=="string"&&(v=parseInt(v),isNaN(v)))throw new Error("Invalid path");let b=m;m=[...x],m[v]=b}else m={...x,[v]:m};else return null}return{data:m,actual:{...f.actual,path:c},reverse:{...f.reverse,path:c}}}else return null;let d=c[p.length],h;if(l instanceof Ve){if(typeof d=="number")throw new Error("");h=l.get(d)?.data}else if(l instanceof Se){if(typeof d=="number")throw new Error("");h=l.get(d)?.data}else l!==null&&(h=l[d]);if(h!==void 0)p.push(l),l=h;else return null}}s.apply=e;function n(l,u){for(let c=0;c<l.length&&c<u.length;c++)if(l[c]!==u[c])return!0;return!1}s.pathDisjoint=n;function o(l,u){if(l.length!==u.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==u[c])return!1;return!0}s.pathEq=o;function i(l,u){return n(l.path,u.path)}s.commutative=i;function a(l,u){return l.type===0&&u.type===0&&o(l.path,u.path)?Object.keys(l.props).every(c=>u.props[c]!==void 0):!1}s.subsumed=a})(un||(un={}));var Yp;(l=>{function r(){return[]}l.empty=r;function t(u,c){let p=[];for(let f of u){let[d,...h]=f.path;d===c&&p.push({...f,path:h})}return p}l.removePrefix=t;function e(u,c){return u.map(p=>({...p,path:[c,...p.path]}))}l.addPrefix=e;function n(u,c){return[...u,...c]}l.concat=n;function o(u,c){return[...u.filter(f=>!c.some(d=>un.subsumed(f,d))),...c]}l.compress=o;function i(u,c){return u.every(p=>c.every(f=>un.commutative(p,f)))}l.commutative=i;function a(u,c){for(let p of c){let f=s(u,p);f!==null&&(u=f.data)}return u}l.applyAll=a;function s(u,c){var p=u;let f=[],d=[];for(let h of c)try{if(h.type===3){let m=xr.zoom(p,[...h.path,h.id]),g=un.apply(p,{...h,type:2});if(g!==null){p=g.data;let[v,x]=Wp(p,{[h.id]:m});p=v;for(let b of x){let w=b[b.length-1];b.splice(b.length-1,1),f.push({type:0,path:b,props:{[w]:m}}),d.push({type:0,path:b,props:{[w]:h.id}})}d.push(g.reverse),f.push(g.actual)}}else{let m=un.apply(p,h);m!==null&&(f.push(m.actual),p=m.data,d.push(m.reverse))}}catch(m){if(m instanceof ho)return null;throw m}return{data:p,actual:f,reverse:d.reverse()}}l.apply=s})(Yp||(Yp={}));var $p=Symbol(),Bi=Symbol(),jn=class{reportOp(t,e,n=[]){let o=this;if(e===null)return;o._current=e.data;let i=n;for(;!(o instanceof rs);){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[Bi];n&&n(),delete this._children[t]}}}},cc=class extends jn{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,mo.runOp(this._current,t),t.path)}},uc=class extends jn{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,Ge.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Kp={get(r,t){if(t===Bi)return()=>{r._parent=null};if(t===$p)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=ns(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]}}},Fv={...Kp,set(r,t,e){let n={type:0,props:{[t]:Ct(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}},Rv={...Kp,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}},go=class extends jn{constructor(t,e,n){super(),this._children={},this._parent=t,this._path=e,this._current=n,this[Bi]=()=>{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=ns(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)}},ts=class extends jn{constructor(t,e,n){super(),this._parent=t,this._path=e,this._current=n,this[Bi]=()=>{this._parent=null}}feedOp(t){let{path:e,...n}=t;this.reportOp(n,un.apply(this._current,t),e)}},yo=class extends jn{constructor(t,e,n){super(),this._children={},this._parent=t,this._path=e,this._current=n,this[Bi]=()=>{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,i=this._current[n].fi;t(this.data(this._current[n].id),o,i)}}find(t){let e=this.length;for(let n=0;n<e;n++){let o=this._current[n].id;if(t(this.data(o),o))return this.get(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=ns(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 lc(r,t,e){if(r.length>0){let n=r[r.length-1];if(n.type===0&&t.type===0&&xr.equal(n.path,e)){Object.assign(n.props,t.props);return}}r.push({...t,path:e})}var rs=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){lc(this.ts,e,t),lc(this.actual,n,t),lc(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ns(r,t,e){return e instanceof Ve?new go(r,t,e):e instanceof Se?new yo(r,t,e):e instanceof Et?new ts(r,t,e):e instanceof Ge?new Proxy(new uc(r,t,e),Rv):e!==null&&typeof e=="object"?zn(e)?e:new Proxy(new cc(r,t,e),Fv):e}function pc(r){let t=new rs(r);return[ns(t,"",r),t]}function fc(r,t){let[e,n]=pc(r);return t(e),n.result()}function Ct(r){return r instanceof go||r instanceof yo||r instanceof ts?r._current:r!==null&&typeof r=="object"?r[$p]:r}var xr;(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 Ve||i instanceof go)&&typeof a=="string")return i.data(a);if((i instanceof Se||i instanceof yo)&&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})(xr||(xr={}));var os=class{},Fi=class extends os{constructor(e){super();this.id=e}},Ri=class extends os{constructor(e){super();this.data=e}};var hc;try{hc=new TextDecoder}catch{}var se,fn,L=0;var of=[],mc=of,gc=0,At={},Oe,pn,zt=0,br=0,Dt,$r,xt=[],Me,Zp={useRecords:!1,mapsAsObjects:!0},ki=class{},vc=new ki;vc.name="MessagePack 0xC1";var vo=!1,Sr=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 uf(()=>(as(),this?this.unpack(t,e):Sr.prototype.unpack.call(Zp,t,e)));fn=e>-1?e:t.length,L=0,gc=0,br=0,pn=null,mc=of,Dt=null,se=t;try{Me=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 Sr){if(At=this,this.structures)return Oe=this.structures,is();(!Oe||Oe.length>0)&&(Oe=[])}else At=Zp,(!Oe||Oe.length>0)&&(Oe=[]);return is()}unpackMultiple(t,e){let n,o=0;try{vo=!0;let i=t.length,a=this?this.unpack(t,i):cs.unpack(t,i);if(e){for(e(a);L<i;)if(o=L,e(is())===!1)return}else{for(n=[a];L<i;)o=L,n.push(is());return n}}catch(i){throw i.lastPosition=o,i.values=n,i}finally{vo=!1,as()}}_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 is(){try{if(!At.trusted&&!vo){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let r=ze();if(L==fn)Oe.restoreStructures&&Qp(),Oe=null,se=null,$r&&($r=null);else if(L>fn){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!vo)throw new Error("Data read, but end of buffer not reached");return r}catch(r){throw Oe.restoreStructures&&Qp(),as(),(r instanceof RangeError||r.message.startsWith("Unexpected end of buffer"))&&(r.incomplete=!0),r}}function Qp(){for(let r in Oe.restoreStructures)Oe[r]=Oe.restoreStructures[r];Oe.restoreStructures=null}function ze(){let r=se[L++];if(r<160)if(r<128){if(r<64)return r;{let t=Oe[r&63]||At.getStructures&&af()[r&63];return t?(t.read||(t.read=xc(t,r&63)),t.read()):r}}else if(r<144)if(r-=128,At.mapsAsObjects){let t={};for(let e=0;e<r;e++)t[lf()]=ze();return t}else{let t=new Map;for(let e=0;e<r;e++)t.set(ze(),ze());return t}else{r-=144;let t=new Array(r);for(let e=0;e<r;e++)t[e]=ze();return t}else if(r<192){let t=r-160;if(br>=L)return pn.slice(L-zt,(L+=t)-zt);if(br==0&&fn<140){let e=t<16?bc(t):sf(t);if(e!=null)return e}return yc(t)}else{let t;switch(r){case 192:return null;case 193:return Dt?(t=ze(),t>0?Dt[1].slice(Dt.position1,Dt.position1+=t):Dt[0].slice(Dt.position0,Dt.position0-=t)):vc;case 194:return!1;case 195:return!0;case 196:return dc(se[L++]);case 197:return t=Me.getUint16(L),L+=2,dc(t);case 198:return t=Me.getUint32(L),L+=4,dc(t);case 199:return Hn(se[L++]);case 200:return t=Me.getUint16(L),L+=2,Hn(t);case 201:return t=Me.getUint32(L),L+=4,Hn(t);case 202:if(t=Me.getFloat32(L),At.useFloat32>2){let e=ls[(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=Me.getFloat64(L),L+=8,t;case 204:return se[L++];case 205:return t=Me.getUint16(L),L+=2,t;case 206:return t=Me.getUint32(L),L+=4,t;case 207:return At.int64AsNumber?(t=Me.getUint32(L)*4294967296,t+=Me.getUint32(L+4)):t=Me.getBigUint64(L),L+=8,t;case 208:return Me.getInt8(L++);case 209:return t=Me.getInt16(L),L+=2,t;case 210:return t=Me.getInt32(L),L+=4,t;case 211:return At.int64AsNumber?(t=Me.getInt32(L)*4294967296,t+=Me.getUint32(L+4)):t=Me.getBigInt64(L),L+=8,t;case 212:if(t=se[L++],t==114)return nf(se[L++]&63);{let e=xt[t];if(e)return e.read?(L++,e.read(ze())):e.noBuffer?(L++,e()):e(se.subarray(L,++L));throw new Error("Unknown extension "+t)}case 213:return t=se[L],t==114?(L++,nf(se[L++]&63,se[L++])):Hn(2);case 214:return Hn(4);case 215:return Hn(8);case 216:return Hn(16);case 217:return t=se[L++],br>=L?pn.slice(L-zt,(L+=t)-zt):Gv(t);case 218:return t=Me.getUint16(L),L+=2,br>=L?pn.slice(L-zt,(L+=t)-zt):Uv(t);case 219:return t=Me.getUint32(L),L+=4,br>=L?pn.slice(L-zt,(L+=t)-zt):Vv(t);case 220:return t=Me.getUint16(L),L+=2,ef(t);case 221:return t=Me.getUint32(L),L+=4,ef(t);case 222:return t=Me.getUint16(L),L+=2,tf(t);case 223:return t=Me.getUint32(L),L+=4,tf(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 kv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function xc(r,t){function e(){if(e.count++>2){let o=r.read=new Function("r","return function(){return {"+r.map(i=>kv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(ze);return r.highByte===0&&(r.read=Jp(t,r.read)),o()}let n={};for(let o=0,i=r.length;o<i;o++){let a=r[o];n[a]=ze()}return n}return e.count=0,r.highByte===0?Jp(t,e):e}var Jp=(r,t)=>function(){let e=se[L++];if(e===0)return t();let n=r<32?-(r+(e<<5)):r+(e<<5),o=Oe[n]||af()[n];if(!o)throw new Error("Record id is not defined for "+n);return o.read||(o.read=xc(o,r)),o.read()};function af(){let r=uf(()=>(se=null,At.getStructures()));return Oe=At._mergeStructures(r,Oe)}var yc=ss,Gv=ss,Uv=ss,Vv=ss;function ss(r){let t;if(r<16&&(t=bc(r)))return t;if(r>64&&hc)return hc.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+=ot.apply(String,n),n.length=0)}return n.length>0&&(t+=ot.apply(String,n)),t}function ef(r){let t=new Array(r);for(let e=0;e<r;e++)t[e]=ze();return t}function tf(r){if(At.mapsAsObjects){let t={};for(let e=0;e<r;e++)t[lf()]=ze();return t}else{let t=new Map;for(let e=0;e<r;e++)t.set(ze(),ze());return t}}var ot=String.fromCharCode;function sf(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 ot.apply(String,e)}function bc(r){if(r<4)if(r<2){if(r===0)return"";{let t=se[L++];if((t&128)>1){L-=1;return}return ot(t)}}else{let t=se[L++],e=se[L++];if((t&128)>0||(e&128)>0){L-=2;return}if(r<3)return ot(t,e);let n=se[L++];if((n&128)>0){L-=3;return}return ot(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 ot(t,e,n,o);{let i=se[L++];if((i&128)>0){L-=5;return}return ot(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 ot(t,e,n,o,i,a);let s=se[L++];if((s&128)>0){L-=7;return}return ot(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 ot(t,e,n,o,i,a,s,l);{let u=se[L++];if((u&128)>0){L-=9;return}return ot(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 ot(t,e,n,o,i,a,s,l,u,c);let p=se[L++];if((p&128)>0){L-=11;return}return ot(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 ot(t,e,n,o,i,a,s,l,u,c,p,f);{let d=se[L++];if((d&128)>0){L-=13;return}return ot(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 ot(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 ot(t,e,n,o,i,a,s,l,u,c,p,f,d,h,m)}}}}}function dc(r){return At.copyBuffers?Uint8Array.prototype.slice.call(se,L,L+=r):se.subarray(L,L+=r)}function Hn(r){let t=se[L++];if(xt[t])return xt[t](se.subarray(L,L+=r));throw new Error("Unknown extension type "+t)}var rf=new Array(4096);function lf(){let r=se[L++];if(r>=160&&r<192){if(r=r-160,br>=L)return pn.slice(L-zt,(L+=r)-zt);if(!(br==0&&fn<180))return yc(r)}else return L--,ze();let t=(r<<5^(r>1?Me.getUint16(L):r>0?se[L]:0))&4095,e=rf[t],n=L,o=L+r-3,i,a=0;if(e&&e.bytes==r){for(;n<o;){if(i=Me.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=[],rf[t]=e,e.bytes=r;n<o;)i=Me.getUint32(n),e.push(i),n+=4;for(o+=3;n<o;)i=se[n++],e.push(i);let s=r<16?bc(r):sf(r);return s!=null?e.string=s:e.string=yc(r)}var nf=(r,t)=>{var e=ze();let n=r;t!==void 0&&(r=r<32?-((t<<5)+r):(t<<5)+r,e.highByte=t);let o=Oe[r];return o&&o.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[r]=o),Oe[r]=e,e.read=xc(e,n),e.read()},cf=typeof self=="object"?self:global;xt[0]=()=>{};xt[0].noBuffer=!0;xt[101]=()=>{let r=ze();return(cf[r[0]]||Error)(r[1])};xt[105]=r=>{let t=Me.getUint32(L-4);$r||($r=new Map);let e=se[L],n;e>=144&&e<160||e==220||e==221?n=[]:n={};let o={target:n};$r.set(t,o);let i=ze();return o.used?Object.assign(n,i):(o.target=i,i)};xt[112]=r=>{let t=Me.getUint32(L-4),e=$r.get(t);return e.used=!0,e.target};xt[115]=()=>new Set(ze());var Sc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(r=>r+"Array");xt[116]=r=>{let t=r[0],e=Sc[t];if(!e)throw new Error("Could not find typed array for code "+t);return new cf[e](Uint8Array.prototype.slice.call(r,1).buffer)};xt[120]=()=>{let r=ze();return new RegExp(r[0],r[1])};xt[98]=r=>{let t=(r[0]<<24)+(r[1]<<16)+(r[2]<<8)+r[3],e=L;L+=t-4,Dt=[ze(),ze()],Dt.position0=0,Dt.position1=0;let n=L;L=e;try{return ze()}finally{L=n}};xt[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 uf(r){let t=fn,e=L,n=gc,o=zt,i=br,a=pn,s=mc,l=$r,u=Dt,c=new Uint8Array(se.slice(0,fn)),p=Oe,f=Oe.slice(0,Oe.length),d=At,h=vo,m=r();return fn=t,L=e,gc=n,zt=o,br=i,pn=a,mc=s,$r=l,Dt=u,se=c,vo=h,Oe=p,Oe.splice(0,Oe.length,...f),At=d,Me=new DataView(se.buffer,se.byteOffset,se.byteLength),m}function as(){se=null,$r=null,Oe=null}function pf(r){r.unpack?xt[r.type]=r.unpack:xt[r.type]=r}var ls=new Array(147);for(let r=0;r<256;r++)ls[r]=+("1e"+Math.floor(45.15-r*.30103));var cs=new Sr({useRecords:!1}),zv=cs.unpack,jv=cs.unpackMultiple,Hv=cs.unpack,us={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Wv=new Float32Array(1),jM=new Uint8Array(Wv.buffer,0,4);var ps;try{ps=new TextEncoder}catch{}var fs,Tc,ds=typeof Buffer<"u",wc=ds?Buffer.allocUnsafeSlow:Uint8Array,mf=ds?Buffer:Uint8Array,ff=ds?4294967296:2144337920,k,Xe,M=0,wr,Tr=null,qv=/[\u0080-\uFFFF]/,Gi=Symbol("record-id"),Wn=class extends Sr{constructor(t){super(t),this.offset=0;let e,n,o,i,a,s,l=0,u=mf.prototype.utf8Write?function(y,O,A){return k.utf8Write(y,O,A)}:ps&&ps.encodeInto?function(y,O){return ps.encodeInto(y,k.subarray(O)).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=[],b=0,w=0;this.pack=this.encode=function(y,O){if(k||(k=new wc(8192),Xe=new DataView(k.buffer,0,8192),M=0),wr=k.length-10,wr-M<2048?(k=new wc(k.length),Xe=new DataView(k.buffer,0,k.length),wr=k.length-10,M=0):M=M+7&2147483640,n=M,s=c.structuredClone?new Map:null,c.bundleStrings?(Tr=["",""],k[M++]=214,k[M++]=98,Tr.position=M-n,M+=4):Tr=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 I=0;I<A;I++){let C=o[I];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[Gi]=I+64}l=A}p||(o.nextId=A+64)}i&&(i=!1),a=o||[];try{if(S(y),Tr){Xe.setUint32(Tr.position+n,M-Tr.position-n);let A=Tr;Tr=null,S(A[0]),S(A[1])}if(c.offset=M,s&&s.idsToInsert){M+=s.idsToInsert.length*6,M>wr&&T(M),c.offset=M;let A=Yv(k.subarray(n,M),s.idsToInsert);return s=null,A}return O&yf?(k.start=n,k.end=M,k):k.subarray(n,M)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,x.length>0&&(x=[]);else if(x.length>0&&!p){for(let A=0,I=x.length;A<I;A++)x[A][Gi]=0;x=[]}if(i&&c.saveStructures){let A=o.sharedLength||d;o.length>A&&(o=o.slice(0,A));let I=k.subarray(n,M);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(y)):(l=A,I)}}O&tx&&(M=n)}};let S=y=>{M>wr&&(k=T(M));var O=typeof y,A;if(O==="string"){let I=y.length;if(Tr&&I>=8&&I<4096){let P=qv.test(y);Tr[P?0:1]+=y,k[M++]=193,S(P?-I:I);return}let C;I<32?C=1:I<256?C=2:I<65536?C=3:C=5;let N=I*3;if(M+N>wr&&(k=T(M+N)),I<64||!u){let P,G,$,Y=M+C;for(P=0;P<I;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,Xe.setUint32(M,A),M+=4),M+=A}else if(O==="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,Xe.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,Xe.setInt16(M,y),M+=2):(k[M++]=210,Xe.setInt32(M,y),M+=4);else{let I;if((I=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){k[M++]=202,Xe.setFloat32(M,y);let C;if(I<4||(C=y*ls[(k[M]&127)<<1|k[M+1]>>7])>>0===C){M+=4;return}else M--}k[M++]=203,Xe.setFloat64(M,y),M+=8}else if(O==="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,Xe.setUint32(M,C.id),M+=4;return}else s.set(y,{offset:M-n})}let I=y.constructor;if(I===Object)_(y,!0);else if(I===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,Xe.setUint32(M,A),M+=4);for(let C=0;C<A;C++)S(y[C])}else if(I===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,Xe.setUint32(M,A),M+=4);for(let[C,N]of y)S(C),S(N)}else{for(let C=0,N=fs.length;C<N;C++){let P=Tc[C];if(y instanceof P){let G=fs[C];if(G.write){G.type&&(k[M++]=212,k[M++]=G.type,k[M++]=0),S(G.write.call(this,y));return}let $=k,Y=Xe,ie=M;k=null;let j;try{j=G.pack.call(this,y,H=>(k=$,$=null,M+=H,M>wr&&T(M),{target:k,targetView:Xe,position:M-H}),S)}finally{$&&(k=$,Xe=Y,M=ie,wr=k.length-10)}j&&(j.length+M>wr&&T(j.length+M),M=Xv(j,k,M,G.type));return}}_(y,!y.hasOwnProperty)}}else if(O==="boolean")k[M++]=y?195:194;else if(O==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))k[M++]=211,Xe.setBigInt64(M,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)k[M++]=207,Xe.setBigUint64(M,y);else if(this.largeBigIntToFloat)k[M++]=203,Xe.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(O==="undefined")this.encodeUndefinedAsNil?k[M++]=192:(k[M++]=212,k[M++]=0,k[M++]=0);else if(O==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+O)},_=this.useRecords===!1?this.variableMapSize?y=>{let O=Object.keys(y),A=O.length;A<16?k[M++]=128|A:A<65536?(k[M++]=222,k[M++]=A>>8,k[M++]=A&255):(k[M++]=223,Xe.setUint32(M,A),M+=4);let I;for(let C=0;C<A;C++)S(I=O[C]),S(y[I])}:(y,O)=>{k[M++]=222;let A=M-n;M+=2;let I=0;for(let C in y)(O||y.hasOwnProperty(C))&&(S(C),S(y[C]),I++);k[A+++n]=I>>8,k[A+n]=I&255}:y=>{let O=Object.keys(y),A,I=a.transitions||(a.transitions=Object.create(null)),C=0;for(let P=0,G=O.length;P<G;P++){let $=O[P];A=I[$],A||(A=I[$]=Object.create(null),C++),I=A}let N=I[Gi];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(O)?(N=a.nextOwnId,N<v||(N=g),a.nextOwnId=N+1):(N>=v&&(N=g),a.nextId=N+1);let P=O.highByte=N>=96&&m?N-96>>5:-1;I[Gi]=N,a[N-64]=O,N<g?(O.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&&(b+=w*C),x.length>=h&&(x.shift()[Gi]=0),x.push(I),S(O))}for(let P=0,G=O.length;P<G;P++)S(y[O[P]])},T=y=>{let O;if(y>16777216){if(y-n>ff)throw new Error("Packed buffer would be larger than maximum buffer size");O=Math.min(ff,Math.round(Math.max((y-n)*(y>67108864?1.25:2),4194304)/4096)*4096)}else O=(Math.max(y-n<<2,k.length-1)>>12)+1<<12;let A=new wc(O);return Xe=new DataView(A.buffer,0,O),k.copy?k.copy(A,0,n,y):A.set(k.slice(n,y)),M-=n,n=0,wr=A.length-10,k=A}}useBuffer(t){k=t,Xe=new DataView(k.buffer,k.byteOffset,k.byteLength),M=0}};Tc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ki];fs=[{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?df(r,16,t):hf(ds?Buffer.from(r):new Uint8Array(r),t)}},{pack(r,t){let e=r.constructor;e!==mf&&this.structuredClone?df(r,Sc.indexOf(e.name),t):hf(r,t)}},{pack(r,t){let{target:e,position:n}=t(1);e[n]=193}}];function df(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 hf(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 Xv(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 Yv(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 dn(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)");Tc.unshift(r.Class),fs.unshift(r)}pf(r)}var gf=new Wn({useRecords:!1}),$v=gf.pack,Kv=gf.pack;var{NEVER:Zv,ALWAYS:Qv,DECIMAL_ROUND:Jv,DECIMAL_FIT:ex}=us,yf=512,tx=1024;var vf=new Wn({structuredClone:!0});dn({Class:Ge.prototype.constructor,type:1,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,Ge.prototype),r}});dn({Class:Se.prototype.constructor,type:2,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Se.prototype),r}});dn({Class:Ve.prototype.constructor,type:3,write(r){return[...r]},read(r){return Object.setPrototypeOf(r,Ve.prototype),r}});dn({Class:Fi.prototype.constructor,type:4,write(r){return r.id},read(r){return new Fi(r)}});dn({Class:Ri.prototype.constructor,type:5,write(r){return r.data},read(r){return new Ri(r)}});dn({Class:Et.prototype.constructor,type:6,write(r){return{...r}},read(r){return Object.setPrototypeOf(r,Et.prototype),r}});function rx(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 Cc(r){if(zn(r))return r;if(Array.isArray(r))return r.map(Cc);if(typeof r=="object"&&r!==null){let t={};for(let e of Object.keys(r).sort())t[e]=Cc(r[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(r)),t}else return r}var hs;(n=>{function r(o){return vf.pack(o)}n.serialize=r;function t(o){return vf.unpack(o)}n.deserialize=t;function e(o){return rx(r(Cc(o))).toString()}n.checksum=e})(hs||(hs={}));var xf;(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})(xf||(xf={}));var xo;(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})(xo||(xo={}));var bf;(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})(bf||(bf={}));var hn;(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})(hn||(hn={}));var _t;(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})(_t||(_t={}));var Qt;(s=>{s.white={..._t.white,a:1},s.transparent={..._t.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{..._t.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 _t.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})(Qt||(Qt={}));var ms;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ms||(ms={}));var Sf;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Sf||(Sf={}));var wf;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(wf||(wf={}));var bo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(n){return e.all.includes(n)}e.is=t})(bo||(bo={}));var qn;(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})(qn||(qn={}));var gs;(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})(gs||(gs={}));var ys;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(n){return e.all.includes(n)}e.is=t})(ys||(ys={}));var vs;(e=>{function r(n){return t(n)}e.defaultData=r;function t(n){if(n==="PointLight")return{type:n,color:Qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(n==="SpotLight")return{type:n,color:Qt.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:Qt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(vs||(vs={}));var Ac;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(n,o){return n.castShadow===o.castShadow&&n.receiveShadow===o.receiveShadow}e.equals=t})(Ac||(Ac={}));var _c;(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})(_c||(_c={}));var xs;(t=>t.defaultData={..._c.defaultData,...Ac.defaultData,cloner:null,booleanExclude:null})(xs||(xs={}));var Tf=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Cf=["wrapping","image"],mn;(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:_t.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:{..._t.fromHex(6710886),a:1},colorB:{..._t.fromHex(6710886),a:1},colorC:{..._t.fromHex(16777215),a:1},colorD:{..._t.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:Qt.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:Qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Qt.fromHexAndA(0,1),contourColor:Qt.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}}}})(mn||(mn={}));var Bt;(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 Se}}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 Se;return p.push({fi:0,data:mn.defaultData("light",l),id:u}),p.push({fi:1,data:mn.defaultData("color"),id:c}),{layers:p}}s.defaultTwoLayerData=i;function a(l,u="basic",c="layer1",p="layer2"){let f=mn.defaultData("texture");Object.assign(f.texture,{image:l});let d=new Se;return d.push({fi:0,data:f,id:c}),d.push({fi:1,data:mn.defaultData("light",u),id:p}),{layers:d}}s.defaultTwoLayerTextureData=a})(Bt||(Bt={}));var So;(t=>{function r(){return{points:new Se,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=r})(So||(So={}));var bs;(t=>{function r(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=r})(bs||(bs={}));var gn;(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:So.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})(gn||(gn={}));var nx=typeof global=="object"&&global&&global.Object===Object&&global,Ss=nx;var ox=typeof self=="object"&&self&&self.Object===Object&&self,ix=Ss||ox||Function("return this")(),$e=ix;var ax=$e.Symbol,bt=ax;var Af=Object.prototype,sx=Af.hasOwnProperty,lx=Af.toString,Ui=bt?bt.toStringTag:void 0;function cx(r){var t=sx.call(r,Ui),e=r[Ui];try{r[Ui]=void 0;var n=!0}catch{}var o=lx.call(r);return n&&(t?r[Ui]=e:delete r[Ui]),o}var _f=cx;var ux=Object.prototype,px=ux.toString;function fx(r){return px.call(r)}var Of=fx;var dx="[object Null]",hx="[object Undefined]",If=bt?bt.toStringTag:void 0;function mx(r){return r==null?r===void 0?hx:dx:If&&If in Object(r)?_f(r):Of(r)}var Ft=mx;function gx(r){return r!=null&&typeof r=="object"}var mt=gx;var yx="[object Symbol]";function vx(r){return typeof r=="symbol"||mt(r)&&Ft(r)==yx}var wo=vx;function xx(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 ws=xx;var bx=Array.isArray,je=bx;var Sx=1/0,Lf=bt?bt.prototype:void 0,Nf=Lf?Lf.toString:void 0;function Pf(r){if(typeof r=="string")return r;if(je(r))return ws(r,Pf)+"";if(wo(r))return Nf?Nf.call(r):"";var t=r+"";return t=="0"&&1/r==-Sx?"-0":t}var Mf=Pf;function wx(r){var t=typeof r;return r!=null&&(t=="object"||t=="function")}var Ke=wx;function Tx(r){return r}var Ts=Tx;var Cx="[object AsyncFunction]",Ax="[object Function]",_x="[object GeneratorFunction]",Ox="[object Proxy]";function Ix(r){if(!Ke(r))return!1;var t=Ft(r);return t==Ax||t==_x||t==Cx||t==Ox}var To=Ix;var Lx=$e["__core-js_shared__"],Cs=Lx;var Ef=function(){var r=/[^.]+$/.exec(Cs&&Cs.keys&&Cs.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function Nx(r){return!!Ef&&Ef in r}var Df=Nx;var Px=Function.prototype,Mx=Px.toString;function Ex(r){if(r!=null){try{return Mx.call(r)}catch{}try{return r+""}catch{}}return""}var Kr=Ex;var Dx=/[\\^$.*+?()[\]{}|]/g,Bx=/^\[object .+?Constructor\]$/,Fx=Function.prototype,Rx=Object.prototype,kx=Fx.toString,Gx=Rx.hasOwnProperty,Ux=RegExp("^"+kx.call(Gx).replace(Dx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Vx(r){if(!Ke(r)||Df(r))return!1;var t=To(r)?Ux:Bx;return t.test(Kr(r))}var Bf=Vx;function zx(r,t){return r?.[t]}var Ff=zx;function jx(r,t){var e=Ff(r,t);return Bf(e)?e:void 0}var Ot=jx;var Hx=Ot($e,"WeakMap"),As=Hx;var Rf=Object.create,Wx=function(){function r(){}return function(t){if(!Ke(t))return{};if(Rf)return Rf(t);r.prototype=t;var e=new r;return r.prototype=void 0,e}}(),kf=Wx;function qx(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 Gf=qx;function Xx(r,t){var e=-1,n=r.length;for(t||(t=Array(n));++e<n;)t[e]=r[e];return t}var _s=Xx;var Yx=800,$x=16,Kx=Date.now;function Zx(r){var t=0,e=0;return function(){var n=Kx(),o=$x-(n-e);if(e=n,o>0){if(++t>=Yx)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var Uf=Zx;function Qx(r){return function(){return r}}var Vf=Qx;var Jx=function(){try{var r=Ot(Object,"defineProperty");return r({},"",{}),r}catch{}}(),Co=Jx;var eb=Co?function(r,t){return Co(r,"toString",{configurable:!0,enumerable:!1,value:Vf(t),writable:!0})}:Ts,zf=eb;var tb=Uf(zf),Os=tb;function rb(r,t){for(var e=-1,n=r==null?0:r.length;++e<n&&t(r[e],e,r)!==!1;);return r}var jf=rb;var nb=9007199254740991,ob=/^(?:0|[1-9]\d*)$/;function ib(r,t){var e=typeof r;return t=t??nb,!!t&&(e=="number"||e!="symbol"&&ob.test(r))&&r>-1&&r%1==0&&r<t}var yn=ib;function ab(r,t,e){t=="__proto__"&&Co?Co(r,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):r[t]=e}var Ao=ab;function sb(r,t){return r===t||r!==r&&t!==t}var vn=sb;var lb=Object.prototype,cb=lb.hasOwnProperty;function ub(r,t,e){var n=r[t];(!(cb.call(r,t)&&vn(n,e))||e===void 0&&!(t in r))&&Ao(r,t,e)}var _o=ub;function pb(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?Ao(e,s,l):_o(e,s,l)}return e}var jt=pb;var Hf=Math.max;function fb(r,t,e){return t=Hf(t===void 0?r.length-1:t,0),function(){for(var n=arguments,o=-1,i=Hf(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),Gf(r,this,s)}}var Is=fb;function db(r,t){return Os(Is(r,t,Ts),r+"")}var Wf=db;var hb=9007199254740991;function mb(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=hb}var Oo=mb;function gb(r){return r!=null&&Oo(r.length)&&!To(r)}var xn=gb;function yb(r,t,e){if(!Ke(e))return!1;var n=typeof t;return(n=="number"?xn(e)&&yn(t,e.length):n=="string"&&t in e)?vn(e[t],r):!1}var qf=yb;function vb(r){return Wf(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&&qf(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 Xf=vb;var xb=Object.prototype;function bb(r){var t=r&&r.constructor,e=typeof t=="function"&&t.prototype||xb;return r===e}var Io=bb;function Sb(r,t){for(var e=-1,n=Array(r);++e<r;)n[e]=t(e);return n}var Yf=Sb;var wb="[object Arguments]";function Tb(r){return mt(r)&&Ft(r)==wb}var Oc=Tb;var $f=Object.prototype,Cb=$f.hasOwnProperty,Ab=$f.propertyIsEnumerable,_b=Oc(function(){return arguments}())?Oc:function(r){return mt(r)&&Cb.call(r,"callee")&&!Ab.call(r,"callee")},Zr=_b;function Ob(){return!1}var Kf=Ob;var Jf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Zf=Jf&&typeof module=="object"&&module&&!module.nodeType&&module,Ib=Zf&&Zf.exports===Jf,Qf=Ib?$e.Buffer:void 0,Lb=Qf?Qf.isBuffer:void 0,Nb=Lb||Kf,Lo=Nb;var Pb="[object Arguments]",Mb="[object Array]",Eb="[object Boolean]",Db="[object Date]",Bb="[object Error]",Fb="[object Function]",Rb="[object Map]",kb="[object Number]",Gb="[object Object]",Ub="[object RegExp]",Vb="[object Set]",zb="[object String]",jb="[object WeakMap]",Hb="[object ArrayBuffer]",Wb="[object DataView]",qb="[object Float32Array]",Xb="[object Float64Array]",Yb="[object Int8Array]",$b="[object Int16Array]",Kb="[object Int32Array]",Zb="[object Uint8Array]",Qb="[object Uint8ClampedArray]",Jb="[object Uint16Array]",e1="[object Uint32Array]",Ue={};Ue[qb]=Ue[Xb]=Ue[Yb]=Ue[$b]=Ue[Kb]=Ue[Zb]=Ue[Qb]=Ue[Jb]=Ue[e1]=!0;Ue[Pb]=Ue[Mb]=Ue[Hb]=Ue[Eb]=Ue[Wb]=Ue[Db]=Ue[Bb]=Ue[Fb]=Ue[Rb]=Ue[kb]=Ue[Gb]=Ue[Ub]=Ue[Vb]=Ue[zb]=Ue[jb]=!1;function t1(r){return mt(r)&&Oo(r.length)&&!!Ue[Ft(r)]}var ed=t1;function r1(r){return function(t){return r(t)}}var No=r1;var td=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vi=td&&typeof module=="object"&&module&&!module.nodeType&&module,n1=Vi&&Vi.exports===td,Ic=n1&&Ss.process,o1=function(){try{var r=Vi&&Vi.require&&Vi.require("util").types;return r||Ic&&Ic.binding&&Ic.binding("util")}catch{}}(),Qr=o1;var rd=Qr&&Qr.isTypedArray,i1=rd?No(rd):ed,Ls=i1;var a1=Object.prototype,s1=a1.hasOwnProperty;function l1(r,t){var e=je(r),n=!e&&Zr(r),o=!e&&!n&&Lo(r),i=!e&&!n&&!o&&Ls(r),a=e||n||o||i,s=a?Yf(r.length,String):[],l=s.length;for(var u in r)(t||s1.call(r,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||yn(u,l)))&&s.push(u);return s}var Ns=l1;function c1(r,t){return function(e){return r(t(e))}}var Ps=c1;var u1=Ps(Object.keys,Object),nd=u1;var p1=Object.prototype,f1=p1.hasOwnProperty;function d1(r){if(!Io(r))return nd(r);var t=[];for(var e in Object(r))f1.call(r,e)&&e!="constructor"&&t.push(e);return t}var od=d1;function h1(r){return xn(r)?Ns(r):od(r)}var Po=h1;function m1(r){var t=[];if(r!=null)for(var e in Object(r))t.push(e);return t}var id=m1;var g1=Object.prototype,y1=g1.hasOwnProperty;function v1(r){if(!Ke(r))return id(r);var t=Io(r),e=[];for(var n in r)n=="constructor"&&(t||!y1.call(r,n))||e.push(n);return e}var ad=v1;function x1(r){return xn(r)?Ns(r,!0):ad(r)}var Cr=x1;var b1=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,S1=/^\w*$/;function w1(r,t){if(je(r))return!1;var e=typeof r;return e=="number"||e=="symbol"||e=="boolean"||r==null||wo(r)?!0:S1.test(r)||!b1.test(r)||t!=null&&r in Object(t)}var sd=w1;var T1=Ot(Object,"create"),Jr=T1;function C1(){this.__data__=Jr?Jr(null):{},this.size=0}var ld=C1;function A1(r){var t=this.has(r)&&delete this.__data__[r];return this.size-=t?1:0,t}var cd=A1;var _1="__lodash_hash_undefined__",O1=Object.prototype,I1=O1.hasOwnProperty;function L1(r){var t=this.__data__;if(Jr){var e=t[r];return e===_1?void 0:e}return I1.call(t,r)?t[r]:void 0}var ud=L1;var N1=Object.prototype,P1=N1.hasOwnProperty;function M1(r){var t=this.__data__;return Jr?t[r]!==void 0:P1.call(t,r)}var pd=M1;var E1="__lodash_hash_undefined__";function D1(r,t){var e=this.__data__;return this.size+=this.has(r)?0:1,e[r]=Jr&&t===void 0?E1:t,this}var fd=D1;function Mo(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])}}Mo.prototype.clear=ld;Mo.prototype.delete=cd;Mo.prototype.get=ud;Mo.prototype.has=pd;Mo.prototype.set=fd;var Lc=Mo;function B1(){this.__data__=[],this.size=0}var dd=B1;function F1(r,t){for(var e=r.length;e--;)if(vn(r[e][0],t))return e;return-1}var bn=F1;var R1=Array.prototype,k1=R1.splice;function G1(r){var t=this.__data__,e=bn(t,r);if(e<0)return!1;var n=t.length-1;return e==n?t.pop():k1.call(t,e,1),--this.size,!0}var hd=G1;function U1(r){var t=this.__data__,e=bn(t,r);return e<0?void 0:t[e][1]}var md=U1;function V1(r){return bn(this.__data__,r)>-1}var gd=V1;function z1(r,t){var e=this.__data__,n=bn(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}var yd=z1;function Eo(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])}}Eo.prototype.clear=dd;Eo.prototype.delete=hd;Eo.prototype.get=md;Eo.prototype.has=gd;Eo.prototype.set=yd;var Sn=Eo;var j1=Ot($e,"Map"),wn=j1;function H1(){this.size=0,this.__data__={hash:new Lc,map:new(wn||Sn),string:new Lc}}var vd=H1;function W1(r){var t=typeof r;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?r!=="__proto__":r===null}var xd=W1;function q1(r,t){var e=r.__data__;return xd(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Tn=q1;function X1(r){var t=Tn(this,r).delete(r);return this.size-=t?1:0,t}var bd=X1;function Y1(r){return Tn(this,r).get(r)}var Sd=Y1;function $1(r){return Tn(this,r).has(r)}var wd=$1;function K1(r,t){var e=Tn(this,r),n=e.size;return e.set(r,t),this.size+=e.size==n?0:1,this}var Td=K1;function Do(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])}}Do.prototype.clear=vd;Do.prototype.delete=bd;Do.prototype.get=Sd;Do.prototype.has=wd;Do.prototype.set=Td;var zi=Do;var Z1="Expected a function";function Nc(r,t){if(typeof r!="function"||t!=null&&typeof t!="function")throw new TypeError(Z1);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(Nc.Cache||zi),e}Nc.Cache=zi;var Cd=Nc;var Q1=500;function J1(r){var t=Cd(r,function(n){return e.size===Q1&&e.clear(),n}),e=t.cache;return t}var Ad=J1;var eS=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,tS=/\\(\\)?/g,rS=Ad(function(r){var t=[];return r.charCodeAt(0)===46&&t.push(""),r.replace(eS,function(e,n,o,i){t.push(o?i.replace(tS,"$1"):n||e)}),t}),_d=rS;function nS(r){return r==null?"":Mf(r)}var Od=nS;function oS(r,t){return je(r)?r:sd(r,t)?[r]:_d(Od(r))}var Ht=oS;var iS=1/0;function aS(r){if(typeof r=="string"||wo(r))return r;var t=r+"";return t=="0"&&1/r==-iS?"-0":t}var Cn=aS;function sS(r,t){t=Ht(t,r);for(var e=0,n=t.length;r!=null&&e<n;)r=r[Cn(t[e++])];return e&&e==n?r:void 0}var Ms=sS;function lS(r,t){for(var e=-1,n=t.length,o=r.length;++e<n;)r[o+e]=t[e];return r}var Bo=lS;var Id=bt?bt.isConcatSpreadable:void 0;function cS(r){return je(r)||Zr(r)||!!(Id&&r&&r[Id])}var Ld=cS;function Nd(r,t,e,n,o){var i=-1,a=r.length;for(e||(e=Ld),o||(o=[]);++i<a;){var s=r[i];t>0&&e(s)?t>1?Nd(s,t-1,e,n,o):Bo(o,s):n||(o[o.length]=s)}return o}var Pd=Nd;function uS(r){var t=r==null?0:r.length;return t?Pd(r,1):[]}var Md=uS;function pS(r){return Os(Is(r,void 0,Md),r+"")}var Es=pS;var fS=Ps(Object.getPrototypeOf,Object),Fo=fS;var dS="[object Object]",hS=Function.prototype,mS=Object.prototype,Ed=hS.toString,gS=mS.hasOwnProperty,yS=Ed.call(Object);function vS(r){if(!mt(r)||Ft(r)!=dS)return!1;var t=Fo(r);if(t===null)return!0;var e=gS.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ed.call(e)==yS}var Ds=vS;function xS(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 Dd=xS;function bS(){this.__data__=new Sn,this.size=0}var Bd=bS;function SS(r){var t=this.__data__,e=t.delete(r);return this.size=t.size,e}var Fd=SS;function wS(r){return this.__data__.get(r)}var Rd=wS;function TS(r){return this.__data__.has(r)}var kd=TS;var CS=200;function AS(r,t){var e=this.__data__;if(e instanceof Sn){var n=e.__data__;if(!wn||n.length<CS-1)return n.push([r,t]),this.size=++e.size,this;e=this.__data__=new zi(n)}return e.set(r,t),this.size=e.size,this}var Gd=AS;function Ro(r){var t=this.__data__=new Sn(r);this.size=t.size}Ro.prototype.clear=Bd;Ro.prototype.delete=Fd;Ro.prototype.get=Rd;Ro.prototype.has=kd;Ro.prototype.set=Gd;var Bs=Ro;function _S(r,t){return r&&jt(t,Po(t),r)}var Ud=_S;function OS(r,t){return r&&jt(t,Cr(t),r)}var Vd=OS;var Wd=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zd=Wd&&typeof module=="object"&&module&&!module.nodeType&&module,IS=zd&&zd.exports===Wd,jd=IS?$e.Buffer:void 0,Hd=jd?jd.allocUnsafe:void 0;function LS(r,t){if(t)return r.slice();var e=r.length,n=Hd?Hd(e):new r.constructor(e);return r.copy(n),n}var Fs=LS;function NS(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 qd=NS;function PS(){return[]}var Rs=PS;var MS=Object.prototype,ES=MS.propertyIsEnumerable,Xd=Object.getOwnPropertySymbols,DS=Xd?function(r){return r==null?[]:(r=Object(r),qd(Xd(r),function(t){return ES.call(r,t)}))}:Rs,ko=DS;function BS(r,t){return jt(r,ko(r),t)}var Yd=BS;var FS=Object.getOwnPropertySymbols,RS=FS?function(r){for(var t=[];r;)Bo(t,ko(r)),r=Fo(r);return t}:Rs,ks=RS;function kS(r,t){return jt(r,ks(r),t)}var $d=kS;function GS(r,t,e){var n=t(r);return je(r)?n:Bo(n,e(r))}var Gs=GS;function US(r){return Gs(r,Po,ko)}var Kd=US;function VS(r){return Gs(r,Cr,ks)}var Us=VS;var zS=Ot($e,"DataView"),Vs=zS;var jS=Ot($e,"Promise"),zs=jS;var HS=Ot($e,"Set"),js=HS;var Zd="[object Map]",WS="[object Object]",Qd="[object Promise]",Jd="[object Set]",eh="[object WeakMap]",th="[object DataView]",qS=Kr(Vs),XS=Kr(wn),YS=Kr(zs),$S=Kr(js),KS=Kr(As),Xn=Ft;(Vs&&Xn(new Vs(new ArrayBuffer(1)))!=th||wn&&Xn(new wn)!=Zd||zs&&Xn(zs.resolve())!=Qd||js&&Xn(new js)!=Jd||As&&Xn(new As)!=eh)&&(Xn=function(r){var t=Ft(r),e=t==WS?r.constructor:void 0,n=e?Kr(e):"";if(n)switch(n){case qS:return th;case XS:return Zd;case YS:return Qd;case $S:return Jd;case KS:return eh}return t});var Go=Xn;var ZS=Object.prototype,QS=ZS.hasOwnProperty;function JS(r){var t=r.length,e=new r.constructor(t);return t&&typeof r[0]=="string"&&QS.call(r,"index")&&(e.index=r.index,e.input=r.input),e}var rh=JS;var ew=$e.Uint8Array,Pc=ew;function tw(r){var t=new r.constructor(r.byteLength);return new Pc(t).set(new Pc(r)),t}var Uo=tw;function rw(r,t){var e=t?Uo(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.byteLength)}var nh=rw;var nw=/\w*$/;function ow(r){var t=new r.constructor(r.source,nw.exec(r));return t.lastIndex=r.lastIndex,t}var oh=ow;var ih=bt?bt.prototype:void 0,ah=ih?ih.valueOf:void 0;function iw(r){return ah?Object(ah.call(r)):{}}var sh=iw;function aw(r,t){var e=t?Uo(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}var Hs=aw;var sw="[object Boolean]",lw="[object Date]",cw="[object Map]",uw="[object Number]",pw="[object RegExp]",fw="[object Set]",dw="[object String]",hw="[object Symbol]",mw="[object ArrayBuffer]",gw="[object DataView]",yw="[object Float32Array]",vw="[object Float64Array]",xw="[object Int8Array]",bw="[object Int16Array]",Sw="[object Int32Array]",ww="[object Uint8Array]",Tw="[object Uint8ClampedArray]",Cw="[object Uint16Array]",Aw="[object Uint32Array]";function _w(r,t,e){var n=r.constructor;switch(t){case mw:return Uo(r);case sw:case lw:return new n(+r);case gw:return nh(r,e);case yw:case vw:case xw:case bw:case Sw:case ww:case Tw:case Cw:case Aw:return Hs(r,e);case cw:return new n;case uw:case dw:return new n(r);case pw:return oh(r);case fw:return new n;case hw:return sh(r)}}var lh=_w;function Ow(r){return typeof r.constructor=="function"&&!Io(r)?kf(Fo(r)):{}}var Ws=Ow;var Iw="[object Map]";function Lw(r){return mt(r)&&Go(r)==Iw}var ch=Lw;var uh=Qr&&Qr.isMap,Nw=uh?No(uh):ch,ph=Nw;var Pw="[object Set]";function Mw(r){return mt(r)&&Go(r)==Pw}var fh=Mw;var dh=Qr&&Qr.isSet,Ew=dh?No(dh):fh,hh=Ew;var Dw=1,Bw=2,Fw=4,mh="[object Arguments]",Rw="[object Array]",kw="[object Boolean]",Gw="[object Date]",Uw="[object Error]",gh="[object Function]",Vw="[object GeneratorFunction]",zw="[object Map]",jw="[object Number]",yh="[object Object]",Hw="[object RegExp]",Ww="[object Set]",qw="[object String]",Xw="[object Symbol]",Yw="[object WeakMap]",$w="[object ArrayBuffer]",Kw="[object DataView]",Zw="[object Float32Array]",Qw="[object Float64Array]",Jw="[object Int8Array]",eT="[object Int16Array]",tT="[object Int32Array]",rT="[object Uint8Array]",nT="[object Uint8ClampedArray]",oT="[object Uint16Array]",iT="[object Uint32Array]",ke={};ke[mh]=ke[Rw]=ke[$w]=ke[Kw]=ke[kw]=ke[Gw]=ke[Zw]=ke[Qw]=ke[Jw]=ke[eT]=ke[tT]=ke[zw]=ke[jw]=ke[yh]=ke[Hw]=ke[Ww]=ke[qw]=ke[Xw]=ke[rT]=ke[nT]=ke[oT]=ke[iT]=!0;ke[Uw]=ke[gh]=ke[Yw]=!1;function qs(r,t,e,n,o,i){var a,s=t&Dw,l=t&Bw,u=t&Fw;if(e&&(a=o?e(r,n,o,i):e(r)),a!==void 0)return a;if(!Ke(r))return r;var c=je(r);if(c){if(a=rh(r),!s)return _s(r,a)}else{var p=Go(r),f=p==gh||p==Vw;if(Lo(r))return Fs(r,s);if(p==yh||p==mh||f&&!o){if(a=l||f?{}:Ws(r),!s)return l?$d(r,Vd(a,r)):Yd(r,Ud(a,r))}else{if(!ke[p])return o?r:{};a=lh(r,p,s)}}i||(i=new Bs);var d=i.get(r);if(d)return d;i.set(r,a),hh(r)?r.forEach(function(g){a.add(qs(g,t,e,g,r,i))}):ph(r)&&r.forEach(function(g,v){a.set(v,qs(g,t,e,v,r,i))});var h=u?l?Us:Kd:l?Cr:Po,m=c?void 0:h(r);return jf(m||r,function(g,v){m&&(v=g,g=r[v]),_o(a,v,qs(g,t,e,v,r,i))}),a}var Xs=qs;var aT=1,sT=4;function lT(r){return Xs(r,aT|sT)}var ji=lT;function cT(r,t){return r!=null&&t in Object(r)}var vh=cT;function uT(r,t,e){t=Ht(t,r);for(var n=-1,o=t.length,i=!1;++n<o;){var a=Cn(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&&Oo(o)&&yn(a,o)&&(je(r)||Zr(r)))}var xh=uT;function pT(r,t){return r!=null&&xh(r,t,vh)}var bh=pT;function fT(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 Sh=fT;var dT=Sh(),wh=dT;function hT(r,t,e){(e!==void 0&&!vn(r[t],e)||e===void 0&&!(t in r))&&Ao(r,t,e)}var Hi=hT;function mT(r){return mt(r)&&xn(r)}var Th=mT;function gT(r,t){if(!(t==="constructor"&&typeof r[t]=="function")&&t!="__proto__")return r[t]}var Wi=gT;function yT(r){return jt(r,Cr(r))}var Ch=yT;function vT(r,t,e,n,o,i,a){var s=Wi(r,e),l=Wi(t,e),u=a.get(l);if(u){Hi(r,e,u);return}var c=i?i(s,l,e+"",r,t,a):void 0,p=c===void 0;if(p){var f=je(l),d=!f&&Lo(l),h=!f&&!d&&Ls(l);c=l,f||d||h?je(s)?c=s:Th(s)?c=_s(s):d?(p=!1,c=Fs(l,!0)):h?(p=!1,c=Hs(l,!0)):c=[]:Ds(l)||Zr(l)?(c=s,Zr(s)?c=Ch(s):(!Ke(s)||To(s))&&(c=Ws(l))):p=!1}p&&(a.set(l,c),o(c,l,n,i,a),a.delete(l)),Hi(r,e,c)}var Ah=vT;function _h(r,t,e,n,o){r!==t&&wh(t,function(i,a){if(o||(o=new Bs),Ke(i))Ah(r,t,a,e,_h,n,o);else{var s=n?n(Wi(r,a),i,a+"",r,t,o):void 0;s===void 0&&(s=i),Hi(r,a,s)}},Cr)}var Oh=_h;function xT(r){var t=r==null?0:r.length;return t?r[t-1]:void 0}var Ih=xT;function bT(r,t){return t.length<2?r:Ms(r,Dd(t,0,-1))}var Lh=bT;var ST=Xf(function(r,t,e){Oh(r,t,e)}),Yn=ST;function wT(r,t){return t=Ht(t,r),r=Lh(r,t),r==null||delete r[Cn(Ih(t))]}var Nh=wT;function TT(r){return Ds(r)?void 0:r}var Ph=TT;var CT=1,AT=2,_T=4,OT=Es(function(r,t){var e={};if(r==null)return e;var n=!1;t=ws(t,function(i){return i=Ht(i,r),n||(n=i.length>1),i}),jt(r,Us(r),e),n&&(e=Xs(e,CT|AT|_T,Ph));for(var o=t.length;o--;)Nh(e,t[o]);return e}),Vo=OT;function IT(r,t,e,n){if(!Ke(r))return r;t=Ht(t,r);for(var o=-1,i=t.length,a=i-1,s=r;s!=null&&++o<i;){var l=Cn(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=Ke(c)?c:yn(t[o+1])?[]:{})}_o(s,l,u),s=s[l]}return r}var Mh=IT;function LT(r,t,e){for(var n=-1,o=t.length,i={};++n<o;){var a=t[n],s=Ms(r,a);e(s,a)&&Mh(i,Ht(a,r),s)}return i}var Eh=LT;function NT(r,t){return Eh(r,t,function(e,n){return bh(r,n)})}var Dh=NT;var PT=Es(function(r,t){return r==null?{}:Dh(r,t)}),zo=PT;var qi;(o=>{o.identity={...ms.identity,hiddenMatrix:hn.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:xo.isEqual(i.position,a.position)?null:a.position,rotation:xo.isEqual(i.rotation,a.rotation)?null:a.rotation,scale:xo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:hn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?null:a.hiddenMatrix}}o.diff=n})(qi||(qi={}));var Mc;(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]})(Mc||(Mc={}));var Jt;(t=>t.defaultData={states:new Se,events:new Se,visible:!0,raycastLock:!1,physics:null,...qi.identity})(Jt||(Jt={}));var Bh;(t=>t.defaultData={type:"Empty",...Jt.defaultData})(Bh||(Bh={}));var $n;(t=>t.defaultData={type:"Mesh",...Jt.defaultData,...xs.defaultData})($n||($n={}));var Ys;(t=>t.defaultData={...Jt.defaultData,...qi.identity,...qn.defaultData})(Ys||(Ys={}));var Fh;(t=>{function r(e){return{...Jt.defaultData,...vs.defaultData(e)}}t.defaultData=r})(Fh||(Fh={}));var Rh;(o=>(o.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:hn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Mc.defaultData,states:new Se,events:new Se,...qn.defaultData},o.defaultMeshObject={name:"Rectangle",...Jt.defaultData,...$n.defaultData,geometry:gn.defaultData("RectangleGeometry"),material:Bt.defaultTwoLayerData("basic","layer1","layer2")},o.defaultBooleanObject={name:"Boolean",...Jt.defaultData,...$n.defaultData,geometry:gn.defaultData("BooleanGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")},o.defaultTextObject={name:"Text",...Jt.defaultData,...$n.defaultData,geometry:gn.defaultData("TextGeometry"),material:Bt.defaultTwoLayerData("phong","layer1","layer2")}))(Rh||(Rh={}));var kh;(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=fc(i.material,a=>{if(typeof a!="string")for(let[s,l]of Object.entries(o.material.layers)){let u=a.layers.data(s);u&&Yn(u,l)}}).data),i.materials&&o.materials&&(i.materials=fc(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&&Yn(p,c)}}}).data),i}e.patchMaterialState=r;function t(n,o){if(o===void 0)return n;let i={...n};if(Object.assign(i,qi.merge(i,o)),bo.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(ys.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=_t.clone(a.color))}return i}e.patch=t})(kh||(kh={}));var jo;(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})(jo||(jo={}));var $s;(t=>t.defaultData={orbitControls:jo.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})($s||($s={}));function Kn(r,t){return Object.setPrototypeOf(r,t),r}function Gh(r){return Array.isArray(r)?r:[r]}var Ks;(e=>{function r(){let n={};return n["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Kn(n,Ge.prototype)}e.defaultColors=r;function t(){return{materials:new Ge,images:new Ge,colors:new Ge,audios:new Ge,fonts:new Ge,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(Ks||(Ks={}));import{MathUtils as Zs}from"three";function Uh(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={...zo(Ct(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={...Ct(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Ec(r,t){Object.values(r.shared.materials).forEach(e=>t(e))}function Dc(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 MT(r){Object.assign(r.scene.publish,{orbitControls:{...jo.defaultData,...Ct(r.scene.publish.orbitControls)}})}function ET(r){Object.assign(r.scene.publish.settings,{video:{...$s.defaultData.settings.video,...Ct(r.scene.publish.settings.video)}})}function DT(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((Tf.includes(o)||typeof i=="boolean")&&delete n[o],o==="texture")for(let[a,s]of Object.entries(i))(Cf.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 BT(r){r.scene.publish.withBackground=!0}function FT(r){r.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function RT(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 kT(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 GT(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 Vh(r){r.layers===void 0&&Object.assign(r,Bt.defaultTwoLayerData("lambert"))}function Bc(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={...Ct(t),colors:e,steps:n};Object.assign(t,o)}})}function UT(r){r.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function zh(r){r.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(n=>{typeof n!="string"&&Bc(n)}):"material"in e&&typeof e.material!="string"&&Bc(e.material)}),Object.values(r.shared.materials).forEach(t=>Bc(t))}function VT(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 zT(r){r.shared.audios=Kn({},Ge.prototype)}function jT(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 HT(r){Object.entries(Ct(r.shared.images)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.images[n]}),Object.entries(Ct(r.shared.audios)).filter(n=>n[1].asset===!1).map(n=>n[0]).forEach(n=>{delete r.shared.audios[n]})}function WT(r){r.scene.publish.settings.web.preload=!1}function jh(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 qT(r){r.shared.fonts=Kn({},Ge.prototype)}function XT(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 YT(r){let t=[];r.scene.objects.traverse((e,n)=>{let o=n;if(o.type==="TextFrame"){let i=Bt.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=XT(o.font);r.shared.fonts[s]===void 0&&(r.shared.fonts[s]={name:s});let l={name:o.name,...Jt.defaultData,...$n.defaultData,flatShading:!1,wireframe:!1,geometry:{...gn.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:Ct(o.states),events:Ct(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ct(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)})}function $T(r){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};r.scene.objects.traverse((e,n)=>{n.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new Se,move:new Se,jump:new Se}});else{let i=new Se;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Zs.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,zo(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},f={state:a.state,...p,...c},d={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new Se({fi:0,id:Zs.generateUUID(),data:u},{fi:1,id:Zs.generateUUID(),data:f})};i.push({fi:l,id:s,data:d})}),delete o.targets)}})})}function KT(r){r.scene.objects.traverse((t,e)=>{function n(o,i){let a=new Se,s=[];if(e.events.forEach((l,u,c)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(u),l.interaction==="play"?p={...zo(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={...zo(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:c,id:u,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(u=>u.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Zs.generateUUID(),data:{type:o,actions:a}}])}}n("Start","start"),n("MouseDown","mouseDown"),n("MouseUp","mouseUp"),n("KeyDown","keyDown"),n("KeyUp","keyUp")})}var Hh=21;function Wh(r){let t=r.schema??0;t!==Hh&&(console.warn("updating from ",t,"to ",Hh),t<1&&(Dc(r,Uh),Ec(r,Uh),r.schema=1),t<2&&(MT(r),r.schema=2),t<3&&(DT(r),r.schema=3),t<4&&(BT(r),r.schema=4),t<5&&(FT(r),r.schema=5),t<6&&(RT(r),r.schema=6),t<7&&(kT(r),r.schema=7),t<8&&(GT(r),r.schema=8),t<9&&(zh(r),r.schema=9),t<10&&(UT(r),r.schema=10),t<11&&(VT(r),r.schema=11),t<12&&(zh(r),r.schema=12),t<13&&(zT(r),r.schema=13),t<14&&(jT(r),r.schema=14),t<15&&(HT(r),r.schema=15),t<16&&(WT(r),r.schema=16),t<17&&(Dc(r,jh),Ec(r,jh),r.schema=17),t<18&&(Dc(r,Vh),Ec(r,Vh),r.schema=18),t<19&&(ET(r),r.schema=19),t<20&&(qT(r),YT(r),r.schema=20),t<21&&($T(r),KT(r),r.schema=21))}var Qs;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Qs||(Qs={}));import{Object3D as QT,Vector3 as Yi,Euler as qh,MathUtils as An}from"three";import{Object3D as ZT}from"three";var Fc=class extends ZT{},Js=class extends Fc{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 Zn=class extends QT{constructor(e,n={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Yi),i=.1;this.parameters=gs.defaultData(o.toArray(),i),Yn(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 Js(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*An.DEG2RAD,i=n.end*An.DEG2RAD,a=o-i,s=new qh(n.rotation[0]*An.DEG2RAD,n.rotation[1]*An.DEG2RAD,n.rotation[2]*An.DEG2RAD),l;switch(n.axis){case"z":l=new Yi(0,0,1);break;case"y":l=new Yi(0,1,0);break;default:case"x":l=new Yi(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 qh(n.rotation[0]*An.DEG2RAD,n.rotation[1]*An.DEG2RAD,n.rotation[2]*An.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 Yi(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),Yn(this.parameters,e),this.update(),this}};import{HemisphereLight as HN,Scene as WN,Vector3 as qN,Fog as XN,Box3 as YN}from"three";import{Camera as j_,OrthographicCamera as H_,PerspectiveCamera as W_,Vector3 as lr,Object3D as Gg,Quaternion as q_}from"three";import{BoxBufferGeometry as JT}from"three";var Ar=r=>{var t;return t=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new JT(30,30,30),t};import{Camera as oC,LineSegments as iC,BufferGeometry as aC,LineBasicMaterial as sC,Color as kc,Vector3 as lC,Float32BufferAttribute as Yh}from"three";import{Ray as eC,Sphere as tC,Matrix4 as rC,Vector3 as en}from"three";var el=new eC,Rc=new tC,Xh=new rC,_r=(r,t,e,n,o=!1)=>{let i=t,a=r.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Rc.copy(i.boundingSphere),Rc.applyMatrix4(a),e.ray.intersectsSphere(Rc)===!1||(Xh.copy(a).invert(),el.copy(e.ray).applyMatrix4(Xh),i.boundingBox!==null&&el.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,el,f,l,u,c),s){s.faceIndex=Math.floor(h/3),n.push(s);return}}else{let x=i.attributes.position,b=new en,w=new en,S=new en,_=new en,T=2,O=1/((r.scale.x+r.scale.y+r.scale.z)/3),A=O*O,I=Math.max(0,d.start),C=Math.min(x.count,d.start+d.count);for(let N=I,P=C-1;N<P;N+=T){if(b.fromBufferAttribute(x,N),w.fromBufferAttribute(x,N+1),el.distanceSqToSegment(b,w,_,S)>A)continue;_.applyMatrix4(r.matrixWorld);let $=e.ray.origin.distanceTo(_);$<e.near||$>e.far||n.push({distance:$,point:S.clone().applyMatrix4(r.matrixWorld),object:r})}}function g(v,x,b,w,S,_,T){let y=new en,O=new en,A=new en,I=new en,C=new en;if(y.fromBufferAttribute(w,S),O.fromBufferAttribute(w,_),A.fromBufferAttribute(w,T),b.intersectTriangle(y,O,A,!1,I)===null)return null;C.copy(I),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 tl=new lC,Wt=new oC,Gc=class extends iC{constructor(e){let n=new aC,o=new sC({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new kc(15711266),u=new kc(15711266),c=new kc(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 Yh(i,3)),n.setAttribute("color",new Yh(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;Wt.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;er("n1",n,e,Wt,-i,-a,s),er("n2",n,e,Wt,i,-a,s),er("n3",n,e,Wt,-i,a,s),er("n4",n,e,Wt,i,a,s);let l=s;er("f1",n,e,Wt,-i,-a,l),er("f2",n,e,Wt,i,-a,l),er("f3",n,e,Wt,-i,a,l),er("f4",n,e,Wt,i,a,l);let u=l,c=.5;er("u1",n,e,Wt,i*.7*c,a*1.1,u),er("u2",n,e,Wt,-i*.7*c,a*1.1,u),er("u3",n,e,Wt,0,a*(1.1+.9*c),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function er(r,t,e,n,o,i,a){tl.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],tl.x,tl.y,tl.z)}}var rl=class extends Ar(Gc){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){_r(this.object,this.geometry,e,n,!0)}};import{DirectionalLightHelper as cC}from"three";var Ho=class extends Ar(cC){constructor(e,n=15,o=10066329){super(e,n,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,n){_r(this.object,Ho.geometryHelper,e,n)}};import{AxesHelper as uC}from"three";var Wo=class extends Ar(uC){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){_r(this.object,Wo.geometryHelper,e,n)}update(){}};import{PointLightHelper as pC}from"three";var qo=class extends Ar(pC){constructor(e,n=15,o=6710886){super(e,n,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,n){_r(this.object,qo.geometryHelper,e,n)}};import{SpotLightHelper as fC,Vector3 as dC}from"three";var nl=class extends Ar(fC){constructor(e,n=6710886){super(e,n);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,n){_r(this.object,nl.geometryHelper,e,n)}update(){if(this.object!==void 0){let e=nl._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)}}},$i=nl;$i._vector=new dC;import{CubicBezierCurve as ol,EllipseCurve as hC,LineCurve as il,LineCurve3 as mC,MathUtils as gC,QuadraticBezierCurve as Vc,SplineCurve as yC,Vector2 as gt,Vector3 as Zh}from"three";var Ki=1e-12,Xo=class{constructor(t){this.position=new gt;this.startPosition=new gt;this.uuid=gC.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 Xo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Yo=class extends Xo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Yo(this.parent).copy(this)}},tr=class extends Xo{constructor(e,n){super(n);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Yo(this),new Yo(this))}static create(e,n){let o=new tr(e,new gt(...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 tr(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 gt,n=new gt){let[o,i]=this.computeTangents();return o&&i&&($h(o,e),$h(i,n)),[e,n]}computeTangent(e=new gt){let[n,o]=this.computeTangents();return n&&o&&e.copy(n).add(o).normalize(),e}computeNormal(e=new gt){let[n,o]=this.computeNormals();return e.copy(n).add(o).normalize(),e}};function $h(r,t=new gt){let e=r.length();return t.set(-r.y/e,r.x/e)}var zc=r=>r,$o=new gt,al=new gt,vC=new gt,xC=new gt,bC=new gt,SC=new gt,Qh=new Zh,Jh=new Zh;function em(r){let t=new gt;t.addVectors(r.v0,$o.subVectors(r.v1,r.v0).multiplyScalar(2/3));let e=new gt;return e.addVectors(r.v2,al.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new ol(r.v0,t,e,r.v2)}function Zi(r,t,e=Number.EPSILON){return Math.abs(r-t)<e}function wC(r,t,e=Number.EPSILON){return r.distanceTo(t)<e}function TC(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 tm(r,t,e){return Kh(r,t)&&Kh(t,e)&&Uc(r.position,t.position,e.position)}function Uc(r,t,e){return $o.copy(t).sub(r).cross(al.copy(e).sub(r))===0}function rm(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 nm(r,t,e){let n=r.distanceTo(e),o=t.distanceTo(e);return n<o?t:r}function om(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),Zi(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 Hc(r,t){return r.position.equals(r.controls[1].position)&&t.position.equals(t.controls[0].position)}function Kh(r,t){return Uc(r.position,r.controls[1].position,t.position)&&Uc(r.position,t.controls[0].position,t.position)}function im(r,t,e,n,o=.5){let i=$o.subVectors(t,r).multiplyScalar(o).add(r),a=al.subVectors(e,t).multiplyScalar(o).add(t),s=vC.subVectors(n,e).multiplyScalar(o).add(e),l=i,u=xC.subVectors(a,i).multiplyScalar(o).add(i),c=bC.subVectors(s,a).multiplyScalar(o).add(a),p=s,f=SC.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 am(r,t,e=12,n=!0){let o=Jh.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let u=zc(t[l]),c=$o,p=_n(u,e);s.push(p);for(let f=0;f<=p;f++)if(u instanceof ol||u instanceof Vc||u instanceof il){if(u.getPoint(f/p,c),o.set(c.x,c.y,0),i!==void 0&&TC(i,o))continue;i===void 0&&(i=Qh),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 sm(r,t,e,n=12,o=!0){let i=Jh.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let u,c=zc(t[l]),p=$o,f=_n(c,n);s.push(f);for(let d=0;d<=f;d++)if(c instanceof ol||c instanceof Vc||c instanceof il){if(c.getPoint(d/f,p),i.set(p.x,p.y,0),u?.equals(i))continue;u===void 0?u=Qh:(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 Wc(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=_n(a.roundedCurveCorner,t)*.5;o>0&&(n[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=_n(a.curveAfter,t)),n.push(s)}return r.length>0&&e&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=_n(r[0].roundedCurveCorner,t)*.5),n}function _n(r,t=12){return r&&r instanceof hC?t*2:r&&(r instanceof il||r instanceof mC)?1:r&&r instanceof yC?t*r.points.length:t}function lm(r,t,e=12,n=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=zc(t[a]),l=_n(s,e),u=$o;for(let c=0;c<=l;c++)if(s instanceof ol||s instanceof Vc||s instanceof il){if(s.getPoint(c/l,u),o!==void 0&&wC(o,u,Ki))continue;o===void 0&&(o=al),o.copy(u),r.push(u.x,u.y),i++}}return Zi(r[0],r[r.length-2],Ki)&&Zi(r[1],r[r.length-1],Ki)&&(r.pop(),r.pop()),n&&i>1&&!(Zi(r[i-1],r[1],Ki)&&Zi(r[i-2],r[0],Ki))&&(r.push(r[0],r[1]),i++),r}import{EventDispatcher as U_,Matrix3 as V_,Vector3 as Yu}from"three";import{EventDispatcher as CC,Plane as AC,Shape as cm,Vector2 as tn,Vector3 as _C,MathUtils as qc,LineCurve as Xc,QuadraticBezierCurve as um,CubicBezierCurve as sl}from"three";var Yc=new tn,OC=new tn,IC=new tn,LC=new tn,NC=new tn,PC=new tn,_e=class extends cm{constructor(e=100,n=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new CC;this.plane=new AC(new _C(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=qc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=n}static createFromState(e,n,o){let i=new _e;return i.isClosed=e.isClosed,i.points=e.points.map(a=>tr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>_e.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=Yc.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=qc.generateUUID()){let i;e instanceof tn?i=e:i=new tn(e,n);let a=new tr(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 am(e,o?this.roundedCurves:this.curves,n,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Wc(this.points,e,!1),this.roundedCurveDivisions=Wc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,n,o=12){return sm(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),lm(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=_n(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(Hc(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Yc.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){Hc(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&&tm(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),b=Math.min(c,v*.499),w=Math.min(x,b),S=1-w/g,_=w/v,T=f.getPointAt(S,Yc),y=d.getPointAt(_,OC);this._subSplitCurve(f,h,S,T,void 0),this._subSplitCurve(d,m,_,void 0,y);let O;if(this.useCubicForRoundedCorners){let A=jc(T,s.position,y)/2,I=Math.tan(A)*T.distanceTo(s.position),[C,N]=rm(T,y,I,IC,LC),P=nm(C,N,s.position),[G,$]=om(P,T,y,I,NC,PC);O=new sl(T.clone(),G.clone(),$.clone(),y.clone())}else O=new um(T.clone(),s.position.clone(),y.clone());s.roundedCurveCorner=O,this.roundedCurves.splice(i+o,0,O),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,n,o,i,a){if(e instanceof Xc)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=im(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 _e(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 tr(qc.generateUUID(),new tn(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 _e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let n=(i,a)=>{a instanceof sl&&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 um&&(i[s]=em(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 sl?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof Xc&&(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 sl?u.v3.equals(a[0].position)&&(a[0].controls[0].position.copy(u.v2),c=!0):u instanceof Xc&&u.v2.equals(a[0].position)&&(c=!0),this.isClosed=c,a};return this.points=o(e.curves),e instanceof cm&&(this.shapeHoles=e.holes.map(i=>{let a=new _e;return a.fromShape(i),a})),this.update(),this}};import{BufferAttribute as cl,BufferGeometry as FC}from"three";var Be;(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"})(Be||(Be={}));var Ze;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function he(r,t){if(!r)throw t||"Assertion Failed!"}var fe=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){he(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){he(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){he(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){he(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}(),Qi=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}(),ll=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}(),Ko=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}(),pm=function(){function r(){var t=new Ko,e=new Qi,n=new ll(0),o=new ll(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 ll(0),n=new ll(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;he(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;he(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 Ko,e=new Ko,n=new Qi,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 Ko;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!n){var a=new Qi;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 Qi;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 Ko;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 Qi;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&&fe.vertCCW(n.Lprev.Org,n.Org,i.Lnext.Lnext.Org)&&fe.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){he(o.prev===i),l=o.anEdge;do he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l),he(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(he(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){he(a.prev===s),l=a.anEdge;do he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l),he(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(he(a.prev===s&&a.anEdge===null),u=n,u=n;(l=u.next)!==n;u=l)he(l.Sym.next===u.Sym),he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Org!==null),he(l.Dst!==null),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l);he(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}(),fm=function(){function r(){this.handle=null}return r}(),dm=function(){function r(){this.key=null,this.node=0}return r}(),MC=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 fm,this.handles[n]=new dm;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,he(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 fm;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new dm}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;he(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}(),$c=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}(),hm=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),EC=function(){function r(t,e){this.frame=t,this.leq=e,this.head=new hm,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 hm;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}(),DC=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?fe.vertLeq(i.Org,a.Org)?fe.edgeSign(a.Dst,i.Org,a.Org)<=0:fe.edgeSign(i.Dst,a.Org,i.Org)>=0:fe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return fe.edgeSign(i.Dst,o,i.Org)>=0;var s=fe.edgeEval(i.Dst,o,i.Org),l=fe.edgeEval(a.Dst,o,a.Org);return s>=l},r.deleteRegion=function(t,e){e.fixUpperEdge&&he(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},r.fixUpperEdge=function(t,e,n){he(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 $c;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 Be.ODD:return(e&1)!==0;case Be.NONZERO:return e!==0;case Be.POSITIVE:return e>0;case Be.NEGATIVE:return e<0;case Be.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 he(fe.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,he(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=fe.vertL1dist(e,t),i=fe.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(fe.vertLeq(o.Org,i.Org)){if(fe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;fe.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(fe.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(he(!fe.vertEq(o.Dst,i.Dst)),fe.vertLeq(o.Dst,i.Dst)){if(fe.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(fe.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 Ko,d,h;if(he(!fe.vertEq(u,l)),he(fe.edgeSign(l,t.event,a)<=0),he(fe.edgeSign(u,t.event,s)>=0),he(a!==t.event&&s!==t.event),he(!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(fe.vertLeq(a,s)){if(fe.edgeSign(u,a,s)>0)return!1}else if(fe.edgeSign(l,s,a)<0)return!1;return r.debugEvent(t),fe.intersect(l,a,u,s,f),he(Math.min(a.t,l.t)<=f.t),he(f.t<=Math.max(s.t,u.t)),he(Math.min(u.s,l.s)<=f.s),he(f.s<=Math.max(s.s,a.s)),fe.vertLeq(f,t.event)&&(f.s=t.event.s,f.t=t.event.t),d=fe.vertLeq(a,s)?a:s,fe.vertLeq(d,f)&&(f.s=d.s,f.t=d.t),fe.vertEq(f,a)||fe.vertEq(f,s)?(r.checkForRightSplice(t,e),!1):!fe.vertEq(l,t.event)&&fe.edgeSign(l,t.event,f)>=0||!fe.vertEq(u,t.event)&&fe.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):(fe.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),fe.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),fe.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),fe.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}fe.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,fe.vertEq(o.Org,n)){he(!1),r.spliceMergeVertices(t,o,n.anEdge);return}if(!fe.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}he(!1),e=r.topRightRegion(e),l=r.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(he(i!==a),r.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(n.anEdge,a),fe.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 $c;if(u.eUp=e.anEdge.Sym,n=t.dict.search(u).key,o=r.regionBelow(n),!!o){if(a=n.eUp,s=o.eUp,fe.edgeSign(a.Dst,e,a.Org)===0){r.connectLeftDegenerate(t,n,e);return}if(i=fe.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);he(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 $c,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 EC(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||(he(e.fixUpperEdge),he(++n===1)),he(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,fe.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 MC(i,fe.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,he(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||!fe.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}(),BC=function(){function r(){this.mesh=new pm,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=Be.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(;fe.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;fe.vertLeq(n.Org,n.Dst);n=n.Lnext);o=n.Lprev;for(var i=void 0;n.Lnext!==o;)if(fe.vertLeq(n.Dst,o.Org)){for(;o.Lnext!==n&&(fe.edgeGoesLeft(o.Lnext)||fe.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&&(fe.edgeGoesRight(n.Lprev)||fe.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===Ze.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===Ze.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 pm),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=Be.ODD),e===void 0&&(e=Ze.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_(),DC.computeInterior(this,a);var s=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,n,o),!0},r}();function Qn(r){var t=r.windingRule,e=t===void 0?Be.ODD:t,n=r.elementType,o=n===void 0?Ze.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 BC;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 Az=Be.ODD,_z=Be.NONZERO,Oz=Be.POSITIVE,Iz=Be.NEGATIVE,Lz=Be.ABS_GEQ_TWO,Nz=Ze.POLYGONS,Pz=Ze.CONNECTED_POLYGONS,Mz=Ze.BOUNDARY_CONTOURS;var Zo=class extends FC{constructor(e,n=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Be.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=n,this._triangulationOptions=Object.assign({windingRule:Be.ODD,elementType:Ze.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=Qn({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 cl(new Float32Array(f*3),3),this._normalAttribute=new cl(new Float32Array(f*3),3),this._uvAttribute=new cl(new Float32Array(f*2),2),this._indexAttribute=new cl(new Uint32Array(d*3),1),s){let h=1/0,m=-1/0,g=1/0,v=-1/0;for(let w=0,S=f;w<S;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,b=v-g;for(let w=0,S=f;w<S;w++){let _=w*2,T=s.vertices[_+0],y=s.vertices[_+1],O=(T-h)/x,A=(y-g)/b;this._positionAttribute.setXYZ(w,T,y,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,O,A)}for(let w=0,S=d;w<S;w++){let _=w*3,T=s.elements[_+0],y=s.elements[_+1],O=s.elements[_+2];this._indexAttribute.setX(_+0,T),this._indexAttribute.setX(_+1,y),this._indexAttribute.setX(_+2,O)}}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 Zo(this._shape,this._curveSegments);return e.userData=ji(this.userData),e}};import{BufferAttribute as pl,BufferGeometry as RC}from"three";var ul=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*ul.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*ul.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)}},Ji=ul;Ji.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Kc=(r,t)=>([e,n])=>(n<e&&(n+=t),(r>=e?r:r+t)<=n),Qo=class extends RC{constructor(e,n,o=0,i=12,a=3,s=Be.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 O=y.extractShapePointsToFlatArray([],i),A=[];for(let I=O.length-1;I>=1;I-=2){let C=O[I-1],N=O[I-0];A.push(C,N)}return A}),c=Qn({windingRule:s,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),p=Qn({windingRule:Be.ODD,elementType:Ze.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 O=p.elements[y],A=y%2===0?c.vertexCount:0;c.elements.push(O+A)}for(let y=0;y<p.vertexIndices.length;y++){let O=p.vertexIndices[y],A=c.vertexCount;c.vertexIndices.push(O+A)}for(let y=0;y<p.vertices.length;y++){let O=p.vertices[y];c.vertices.push(O)}}let d=1/0,h=-1/0,m=1/0,g=-1/0;for(let y=0,O=c.vertexCount;y<O;y++){let A=y*2,I=c.vertices[A+0],C=c.vertices[A+1];I<d&&(d=I),I>h&&(h=I),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 Ji(v);let x=[],b=[];for(let y=c.elementCount-1;y>=0;y--){let O=y>=f,A=y*2,I=c.elements[A+0],C=c.elements[A+1],N=I+C,P={start:I,count:C,normals:[],continuous:[],concave:[]},G=I,$=N-1,Y=I+1,ie=this._shape.roundedCurves.length;do{let R=G-I,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,pe=Math.sqrt(re*re+ae*ae);re/=pe,ae/=pe,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 be=ee===1?0:1,ge=this._shape.roundedCurves[ne].getTangent(ee),Te=this._shape.roundedCurves[Q].getTangent(be);P.continuous[R]=ge.dot(Te)>.95}}O&&(P.normals[R*2+0]*=-1,P.normals[R*2+1]*=-1),[$,G,Y]=[G,Y,Y+1],Y>=N&&(Y-=C)}while(Y!==I+1);let j=[];j.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(I*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(I*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,pe=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,be=-P.normals[re+1]*F;if(P.concave[W]||!P.concave[W]&&O){let ge=Math.atan2(ee,ne),Te=Math.atan2(be,Q);Te>ge&&(Te-=Math.PI*2);let nt=Te-ge;if(P.continuous[W]||O){let Le=ge+nt/2,Pe=Math.cos(Le)*F,De=Math.sin(Le)*F;B[2*z+0]=pe+Pe*(O?-1:1),B[2*z+1]=oe+De*(O?-1:1),q[z]=W,z++}else{let Le=Math.max(1,Math.floor(i/4*Math.abs(nt)/Math.PI));for(let Pe=0;Pe<=Le;Pe++){let De=ge+nt*(Pe/Le),Vt=Math.cos(De)*F,cn=Math.sin(De)*F;B[2*z+0]=pe+Vt,B[2*z+1]=oe+cn,q[z]=W,z++}}}else B[2*z+0]=pe+ne,B[2*z+1]=oe+ee,q[z]=W,X[W]=z,z++,B[2*z+0]=pe,B[2*z+1]=oe,q[z]=W,z++,B[2*z+0]=pe+Q,B[2*z+1]=oe+be,q[z]=W,K[W]=z,z++}let U=Qn({windingRule:Be.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[B],edgeCreateCallback:W=>{let ae=W.Org.idx,pe=q[ae],oe=q[(ae+1)%q.length];W.idx=[pe,oe],W.Sym.idx=[oe,pe]},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 pe=ae;ae<re&&(pe+=C);for(let oe=re;oe<pe;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=Kc(q,C);for(;!D.boundary.vertexIndices.filter(z).length||!F.boundary.vertexIndices.filter(z).length;)q++,z=Kc(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),pe=this.buildBevelVert(P,F,(W-1+X)%X),oe=ae,ne=pe,ee,Q,be=!1;do{z=Kc(q,C);let ge=H(D,U,z),Te=H(F,W,z),nt=be;if(be=!1,ge&&!Te){for(let Le=0;Le<ge;Le++)ee=this.buildBevelVert(P,D,(U+Le)%B,Le/(ge-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee;be=!0}else if(!ge&&Te)for(let Le=0;Le<Te;Le++)Q=this.buildBevelVert(P,F,(W+Le)%X,Le/(Te-1)),x.push(ne.topN,oe.topP,Q.topP),x.push(oe.bottomP,ne.bottomN,Q.bottomP),ne=Q;else if(ge&&Te)if(ee=this.buildBevelVert(P,D,U,0),Q=this.buildBevelVert(P,F,W,0),nt?(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,ge===Te)for(let Le=1;Le<ge;Le++)ee=this.buildBevelVert(P,D,(U+Le)%B,Le/(ge-1)),Q=this.buildBevelVert(P,F,(W+Le)%X,Le/(Te-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(ge>Te){let Le=ge/Te,Pe=0;for(let De=1;De<ge;De++)ee=this.buildBevelVert(P,D,(U+De)%B,De/(ge-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee,De>(Pe+1)*Le&&(Pe++,Q=this.buildBevelVert(P,F,(W+Pe)%X,Pe/(Te-1)),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,ne.bottomN,Q.bottomP),ne=Q)}else{let Le=Te/ge,Pe=0;for(let De=1;De<Te;De++)Q=this.buildBevelVert(P,F,(W+De)%X,De/(Te-1)),x.push(ne.topN,ee.topP,Q.topP),x.push(ee.bottomP,ne.bottomN,Q.bottomP),ne=Q,De>(Pe+1)*Le&&(Pe++,ee=this.buildBevelVert(P,D,(U+Pe)%B,Pe/(ge-1)),x.push(oe.topN,ee.topP,ne.topN),x.push(ee.bottomP,oe.bottomN,ne.bottomN),oe=ee)}U=(U+ge)%B,W=(W+Te)%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(O){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(O){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)}b.push(R)}if(!O){let R=j[j.length-1],D=Qn({windingRule:j.length>1?Be.POSITIVE:Be.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...b]});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 pl(Uint32Array.from(x),1),S=new pl(this._buffer.positions,3),_=new pl(this._buffer.normals,3),T=new pl(this._buffer.uvs,2);S.needsUpdate=!0,_.needsUpdate=!0,T.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",S),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],b=n.boundary.vertices[m+1],w=(1-h)*this._bevelSize,S=(x-this._minX)/this._width,_=(b-this._minY)/this._height,T=e.normals[g+0],y=e.normals[g+1],O=e.normals[v+0],A=e.normals[v+1];if(f){let G=O-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 I=this._buffer.get(p?2:4),C=I*3,N=I*2,P={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[C+0]=x,this._buffer.positions[C+1]=b,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]=S,this._buffer.uvs[N+1]=_,this._buffer.positions[C+3]=x,this._buffer.positions[C+4]=b,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]=S,p||(I+=2,C+=6,N+=4,P.topP=I+0,P.bottomP=I+1,this._buffer.positions[C+0]=x,this._buffer.positions[C+1]=b,this._buffer.positions[C+2]=this._depth-w,this._buffer.normals[C+0]=O*d,this._buffer.normals[C+1]=A*d,this._buffer.normals[C+2]=h,this._buffer.uvs[N+0]=S,this._buffer.uvs[N+1]=_,this._buffer.positions[C+3]=x,this._buffer.positions[C+4]=b,this._buffer.positions[C+5]=w,this._buffer.normals[C+3]=O*d,this._buffer.normals[C+4]=A*d,this._buffer.normals[C+5]=-h,this._buffer.uvs[N+2]=_,this._buffer.uvs[N+3]=S),this.vertexCache[a]=P,P}clone(){let e=new Qo(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ji(this.userData),e}};var ft=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:Be.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 _e?(a.width!==n||a.height!==o)&&a.applySize(n,o):a=new _e(n,o).fromJSON(a),r.parameters?.roundness!==void 0&&r.parameters?.roundness>0&&a.update(!1));let l=a??new _e(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 Zo(r.shape,o,{windingRule:a}):s=new Qo(r.shape,t,e,o,n,a),Object.assign(s,{userData:{...r,type:"VectorGeometry"}})}};import{Mesh as k_,Matrix4 as G_}from"three";import{ConeBufferGeometry as UC}from"three";import{BufferGeometry as kC,CylinderBufferGeometry as GC,Float32BufferAttribute as Zc,Vector2 as rr,Vector3 as fl}from"three";var gm=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 ea(u,c,n,o,i,a,s,l*Math.PI/180,p,p,f,d):h=new GC(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 On(r,t,e){e.x=r.x*t.x,e.y=r.y,e.z=r.x*t.y}function mm(r){return new rr(r.y,-r.x)}var ea=class extends kC{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,b=n/2,w=new fl,S=new fl;d&&t==0&&(t=u),d&&e==0&&(e=c);let _=new rr(t,b),T=new rr(e,-b),y=null,O=null,A=null,I=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 rr(z,u)),f&&(A=y.clone(),A.x-=N-V*u),_.sub(C.clone().setLength(z))}if(c>0){let z=c/H;O=T.clone().sub(new rr(z,-c)),T.add(C.clone().setLength(z)),f&&(I=O.clone(),I.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 rr(Math.sin(re),Math.cos(re));I&&O?(X(U,W,ae,Y,c,I,-1,!0),X(U,W,ae,ie,c,O,-1,!1)):O?(K(U,ae,O.x,0,-1),X(U,W,ae,ie,c,O,-1,!1)):a||K(U,ae,e,G,-1);let pe=mm(C).normalize();if(On(pe,ae,w),!F)for(let oe=0;oe<=i;oe++){let ne=oe/i,ee=C.clone().multiplyScalar(ne).add(T);On(ee,ae,S),m.push(S.x,S.y,S.z),g.push(w.x,w.y,w.z),v.push(W,.5+S.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=mm(C).multiplyScalar(-1).normalize();On(oe,ae,w);for(let ne=0;ne<=i;ne++){let ee=ne/i,Q=C.clone().multiplyScalar(-ee).add($);On(Q,ae,S),m.push(S.x,S.y,S.z),g.push(w.x,w.y,w.z),v.push(W,.5+S.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],pe=B[z][U+1],oe=m[ae*3+0],ne=m[ae*3+2];h.push(W,re,pe),(oe!=0||ne!=0)&&h.push(re,ae,pe)}l<Math.PI*2&&(q(-1,B[0],s),q(1,B[B.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new Zc(m,3)),this.setAttribute("normal",new Zc(g,3)),this.setAttribute("uv",new Zc(v,2));function X(z,U,W,re,ae,pe,oe,ne){for(let ee=0;ee<p+1;ee++){let Q=ee/p,be=oe<0?Q:1-Q;ne&&(be-=1),be*=re;let ge=new rr(Math.sin(be),Math.cos(be)*oe),Te=ge.clone().multiplyScalar(ae).add(pe);On(Te,W,S),m.push(S.x,S.y,S.z),On(ge,W,w),g.push(w.x,w.y,w.z),v.push(U,.5+S.y/n),z.push(x++)}}function K(z,U,W,re,ae){let pe=new fl,oe=new rr,ne=[W,re];ae<0&&ne.reverse();for(let ee of ne)oe.set(ee,b*ae),On(oe,U,pe),m.push(pe.x,pe.y,pe.z),g.push(0,ae,0),v.push(.5,.5),z.push(x++)}function q(z,U,W){let re=new rr(Math.sin(W),Math.cos(W)),ae=new rr(-Math.cos(W),Math.sin(W)),pe=new fl,oe=z<0?(Q,be,ge)=>h.push(Q,be,ge):(Q,be,ge)=>h.push(Q,ge,be),ne=new rr((t+e+P+G)/4,0);On(ne,re,pe),m.push(pe.x,pe.y,pe.z),g.push(ae.x,0,ae.y),v.push(.5,.5);let ee=x++;for(let Q of U){let be=m.slice(Q*3,Q*3+3);m.push(...be),g.push(ae.x,0,ae.y);let ge=v.slice(Q*2,Q*2+2);v.push(...ge),x++}for(let Q=ee+1;Q<x-1;Q++)oe(ee,Q,Q+1);oe(ee,x-1,ee+1)}}};var ym=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 ea(0,t/2,n,o,i,a,s,l*Math.PI/180,u,c,p,0,!0):f=new UC(t/2,n,o,i,a),f.scale(1,1,e/t),Object.assign(f,{userData:{...r,type:"ConeGeometry"}})}};import{BoxBufferGeometry as VC,BufferGeometry as zC,Float32BufferAttribute as Qc,Vector3 as ta}from"three";var vm=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 VC(t,e,n,o,i,a):u=new eu(t,e,n,o,i,a,s,l),Object.assign(u,{userData:{...r,type:"CubeGeometry"}})}},Jc=Math.PI/2,eu=class extends zC{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 Qc(p,3)),this.setAttribute("normal",new Qc(f,3)),this.setAttribute("uv",new Qc(d,2));function g(b,w,S,_,T,y,O,A,I,C,N){let P=(y-2*s)/I,G=(O-2*s)/C,$=y/2-s,Y=O/2-s,ie=A/2,j=I+1,H=C+1,V=0,R=0,D=new ta;for(let F=0;F<H;F++){let B=F*G-Y;for(let X=0;X<j;X++){let K=X*P-$;D[b]=K*_,D[w]=B*T,D[S]=ie,p.push(D.x,D.y,D.z),D[b]=0,D[w]=0,D[S]=A>0?1:-1,f.push(D.x,D.y,D.z),d.push(X/I),d.push(1-F/C),V+=1}}for(let F=0;F<C;F++)for(let B=0;B<I;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(b,w,S,_,T,y,O,A,I,C,N){let P=(O-2*s)/C,G=O/2-s,$=A/2-s,Y=I/2,ie=C+1,j=0,H=0,V=new ta,R=new ta;for(let D=0;D<l+1;D++){let F=D/l*Jc,B=Math.sin(F)*s,X=(1-Math.cos(F))*s,K=Math.sin(F),q=Math.cos(F);V[w]=($+B)*T,V[S]=(Y-X)*y,R[b]=0,R[w]=K*Math.sign(V[w]),R[S]=q*Math.sign(V[S]);for(let z=0;z<ie;z++){let U=z*P-G;V[b]=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(b,w,S){let _=new ta,T=new ta(t/2,e/2,n/2);T.subScalar(s);let y=[],O=b*w*S>0?(I,C,N)=>c.push(I,C,N):(I,C,N)=>c.push(I,N,C);for(let I=0;I<=l;I++){let C=[],N=Jc*(1-I/l),P=Math.cos(N),G=Math.sin(N),$=0;for(let Y=0;Y<=I;Y++){let ie=Math.cos($),j=Math.sin($);_.x=P*ie,_.y=G,_.z=P*j;let H=T.clone().addScaledVector(_,s);p.push(b*H.x,w*H.y,S*H.z),f.push(b*_.x,w*_.y,S*_.z),d.push(0,0),C.push(h++),$+=Jc/I}y.push(C)}let A=y.length-1;for(let I=0;I<A;I++){let C=y[I],N=y[I+1],P=C.length-1;O(C[0],N[1],N[0]);for(let G=1;G<=P;G++)O(C[G-1],C[G],N[G]),O(C[G],N[G+1],N[G])}}}};import{BufferGeometry as jC,Float32BufferAttribute as tu,Triangle as HC,Vector3 as rn,Vector2 as ru}from"three";var In=class extends jC{constructor(t=[],e=[],n="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],u=[];c(),p(),this.setAttribute("position",new tu(s,3)),this.setAttribute("normal",new tu(u,3)),this.setAttribute("uv",new tu(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 rn,m=h.clone(),g=new HC,v=i*o,x=o-v,b=a+1,w=new rn,S=(j,H)=>w.subVectors(j,H).normalize(),_=(j,H)=>Array(j).fill(void 0).map(H),T=_(t.length/3,(j,H)=>new rn().fromArray(t,H*3).setLength(o)),y=[],O=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*O),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 I=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(),I.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%O,z%O),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(I,Y[j][K])}let V=[],R=[],D=[],F=new rn;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(I),m.copy(W).sub(I);let re=I.angleTo(h),ae=h.angleTo(m),pe=Math.cos(re)*v;a==0?C.copy(F):C.copy(I).setLength(x+pe),R.push(pe);let oe=[C,U,W];for(let ne=0;ne<2;ne++){let ee=oe[ne],Q=oe[ne+1];P.subVectors(ee,I),G.subVectors(Q,I),N.crossVectors(P,G).normalize();for(let be=0;be<b;be++){let ge=[re,ae][ne]*be/b;h.copy(P).applyAxisAngle(N,ge).add(I),V.push(h.clone()),ne&&(S(h,I),q.push([be==0?ee:h.clone(),w.clone()]))}ne&&(S(Q,I),q.push([Q,w.clone()]))}D.push(q)}$.push(D);let B=2*b,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<b;re++){P=V[q+re],G=V[z+re],U.push(P);for(let ae=1,pe=re-X+1;ae<=pe;ae++)h.lerpVectors(P,G,ae/(pe+1)),h.sub(I).setLength(R[K]).add(I),U.push(h.clone());U.push(G)}for(let re=0;re<b;re++)U.push(V[re+b+q]);U.push(V[z+b]);let W=A.map(re=>U[re]);s.push(...W.map(re=>[re.x,re.y,re.z]).flat()),u.push(...W.map(re=>(S(re,I),[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<O){let R=y[V].findIndex(B=>B%O==j),D=$[j][H],F=$[V][R];for(let B=0;B<b;B++){let X=D[B],K=F[b-B],q=D[B+1],z=F[b-(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[b][0],D[b][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 rn;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=S(f)/2/Math.PI+.5,O=_(f)/Math.PI+.5;l.push(y,1-O)}let d=new rn,h=new rn,m=new rn,g=new rn,v=new ru,x=new ru,b=new ru,w=(T,y,O,A)=>{A<0&&T.x===1&&(l[y]=T.x-1),O.x===0&&O.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]),b.set(l[y+4],l[y+5]),g.copy(d).add(h).add(m).divideScalar(3);let O=S(g);w(v,y+0,d,O),w(x,y+2,h,O),w(b,y+4,m,O)}for(let T=0;T<l.length;T+=6){let y=l[T+0],O=l[T+2],A=l[T+4],I=Math.max(y,O,A),C=Math.min(y,O,A);I>.9&&C<.1&&(y<.2&&(l[T+0]+=1),O<.2&&(l[T+2]+=1),A<.2&&(l[T+4]+=1))}function S(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 In(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as WC}from"three";var xm=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 ra(t*.5,i,a):new WC(t*.5,o);return s.scale(1,e/t,n/t),Object.assign(s,{userData:{...r,type:"DodecahedronGeometry"}})}},ra=class extends In{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 ra(t.radius,t.corner,t.cornerSides)}};var ou=Math.PI*2;function nu({x:r,y:t},e,n,o,i){return{x:r*e+o,y:t*n+i}}function qC(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 bm(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 XC(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,b=(a-m)/o,w=(s-g)/i,S=(-a-m)/o,_=(-s-g)/i,T=bm(1,0,b,w),y=bm(b,w,S,_);return!u&&y>0&&(y-=ou),u&&y<0&&(y+=ou),{centerx:v,centery:x,ang1:T,ang2:y}}function Sm({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=XC(r,t,e,n,o,i,u,c,a,s),{ang1:d,ang2:h}=f,{centerx:m,centery:g}=f,v=Math.abs(h)/(ou/4);Math.abs(1-v)<1e-7&&(v=1);let x=Math.max(Math.ceil(v),1);h/=x;for(let b=0;b<x;b++)l.push(qC(d,h)),d+=h;return l.map(b=>{let{x:w,y:S}=nu(b[0],o,i,m,g),{x:_,y:T}=nu(b[1],o,i,m,g),{x:y,y:O}=nu(b[2],o,i,m,g);return{x1:w,y1:S,x2:_,y2:T,x:y,y:O}})}import{MathUtils as Tm,Vector2 as Cm}from"three";var Am=Math.PI*2,_m=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 _e?r.shape:new _e,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=YC(u,c,p,o*Math.PI/180,n,i);u.isClosed=!0,u.update();let d=ft.create({shape:u,parameters:{subdivisions:f,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...r,type:"EllipseGeometry"}})}};function YC(r,t,e,n,o,i){if(n>=Am)return o>30||o%4===0?(KC(r,t,e,i),Math.round(o/4)):wm(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=Sm({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?$C(r,a.x,a.y,u,o,t,e,i):wm(r,n,o,t,e,i)}function $C(r,t,e,n,o,i,a,s){let l=Math.round(o/n.length);r.addPoint(Jo(t,e));for(let u=0,c=n.length;u<c;u++){let p=n[u],f=r.points[u],d=Jo(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?Om(r,i,a,s):r.addPoint(Jo(0,0)),l}function wm(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(Jo(u,c))}return t<Am?i>0?Om(r,n,o,i):r.addPoint(Jo(0,0)):(r.removePoint(r.points[r.points.length-1]),i>0&&Im(r,n,o,i)),1}function KC(r,t,e,n=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;r.addPoint(dl(o-t,i,o-t,i-l,o-t,i+l)),r.addPoint(dl(o,i+e,o-s,i+e,o+s,i+e)),r.addPoint(dl(o+t,i,o+t,i+l,o+t,i-l)),r.addPoint(dl(o,i-e,o+s,i-e,o-s,i-e)),n>0&&Im(r,t,e,n)}function Jo(r,t){return new tr(Tm.generateUUID(),new Cm(r,t))}function dl(r,t,e,n,o,i){let a=Jo(r,t);return a.controls[0].position.set(e,n),a.controls[1].position.set(o,i),a}function Om(r,t,e,n){Lm(r,t,e,n).forEach(i=>r.addPoint(i))}function Im(r,t,e,n){let o=Lm(r,t,e,n),i=new _e;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,r.shapeHoles.push(i)}function Lm(r,t,e,n){let o=n*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new Cm(o/t,i/e),s=r.points.map(l=>{let u=l.clone();return u.uuid=Tm.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}import{BufferGeometry as ZC,Float32BufferAttribute as iu,Vector3 as Nm}from"three";var Pm=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 na(!1,t,e,n,o,i,a,s,l,u,c,p);return Object.assign(f,{userData:{...r,type:"HelixGeometry"}})}},na=class extends ZC{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 Nm,m=new Nm,g=h(),v=h(),x=h(),b,w,S,_,T,y,O,A,I=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,pe=B*ae/re,oe=pe+B*R,ne=B*(R+ae),[ee,Q,be]=[3,3,2].map(qe=>Array(ne*qe).fill(0)),ge=[],Te=i-l;function nt(qe,Mt){let yr=Math.PI/2;y=Mt*D,A=2*Math.PI*(y%H)/H+yr,y+=F,O=Math.sin(A)*Te,T=Math.cos(A)*Te,t?qe.set(T,O,y):qe.set(T,y,O)}nt(m,-1e-10),nt(g,0),I.copy(m),nt(m,1);let Le=m.distanceTo(g),Pe=U+z,De=Le*V+2*Pe,Vt=z,cn=De-Pe;for(let qe=0;qe<=V;qe++){nt(v,qe),ie.subVectors(v,I).normalize(),I.copy(v),$.copy(v).setComponent(+t+1,0).normalize(),Y.crossVectors(ie,$).normalize();let Mt=qe===0,yr=qe===V,xv=Mt?3*Math.PI/2:K,bv=Mt?Vt:cn,Sv=Mt?B:oe,wv=Mt?0:ne-B,Tv=ie.clone().multiplyScalar(Mt?-U:U).add(v),Cv=ie.clone().multiplyScalar(Mt?-1:1).normalize();for(let Yr=0;Yr<B;Yr++){let Rp=Yr*X;if(C.addVectors(m.copy($).multiplyScalar(l*Math.cos(Rp)),g.copy(Y).multiplyScalar(l*Math.sin(Rp))),N.copy(C).normalize(),Mt||yr){d||(W=wv+Yr,[0,1,2].forEach(Tt=>{ee[W*3+Tt]=Tv.getComponent(Tt),Q[W*3+Tt]=Cv.getComponent(Tt)}),be[W*2]=+yr,be[W*2+1]=Yr/c),g.copy(N).multiplyScalar(z),x.addVectors(v,g);for(let Tt=0;Tt<f;Tt++){let ic=Tt*K+xv;P.addVectors(m.copy(ie).multiplyScalar(U*Math.sin(ic)),g.copy(N).multiplyScalar(U*Math.cos(ic))),G.copy(P).normalize(),g.addVectors(x,P),P.normalize(),W=Sv+Tt*B+Yr,[0,1,2].forEach(Qa=>{ee[W*3+Qa]=g.getComponent(Qa),Q[W*3+Qa]=G.getComponent(Qa)});let Av=+Mt+Math.sin(ic);be[W*2]=(bv+U*Av)/De,be[W*2+1]=Yr/c}}g.addVectors(v,C),W=pe+qe*B+Yr,[0,1,2].forEach(Tt=>{ee[W*3+Tt]=g.getComponent(Tt),Q[W*3+Tt]=N.getComponent(Tt)}),be[W*2]=(Pe+qe*Le)/De,be[W*2+1]=Yr/c}}let Pt=R+2*f+re,fo=1,[Ka,Za]=d?[fo,fo+R-1]:[0,Pt-1];for(let qe=Ka;qe<=Za-1;qe++){let Mt=d&&qe===Za-1;for(let yr=0;yr<B-1;yr++)b=qe*B+yr,w=b+1,S=(Mt?yr:b)+B,_=(Mt?yr+1:w)+B,qe===0?ge.push(w,_,S):qe===Pt-2?ge.push(b,w,S):ge.push(b,w,S,w,_,S)}this.setIndex(ge),this.setAttribute("position",new iu(ee,3)),this.setAttribute("normal",new iu(Q,3)),this.setAttribute("uv",new iu(be,2))}};import{IcosahedronBufferGeometry as QC}from"three";var 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 oa(t*.5,i,a):new QC(t*.5,o);return s.scale(1,e/t,n/t),Object.assign(s,{userData:{...r,type:"IcosahedronGeometry"}})}},oa=class extends In{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 oa(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as JC,Shape as eA}from"three";var Em=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 eA;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 JC(o.extractPoints(n).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...r,type:"LatheGeometry"}})}};import{BufferGeometry as Gm,BufferGeometryLoader as uA,Vector3 as pA,BoxBufferGeometry as Um}from"three";import{BufferGeometry as aA,Vector2 as lu,Vector3 as km}from"three";import{Box3 as tA,BufferAttribute as ia,BufferGeometry as Dm,Color as Fm,EventDispatcher as rA,Float32BufferAttribute as ei,Matrix3 as Bm,Matrix4 as Rm,MathUtils as nA,Object3D as oA,Sphere as iA,Vector2 as qt,Vector3 as yt}from"three";var Or=new Rm,au=new oA,hl=new yt,Ln=class extends rA{constructor(){super(),this.uuid=nA.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 Bm().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 Or.makeRotationX(t),this.applyMatrix4(Or),this}rotateY(t){return Or.makeRotationY(t),this.applyMatrix4(Or),this}rotateZ(t){return Or.makeRotationZ(t),this.applyMatrix4(Or),this}translate(t,e,n){return Or.makeTranslation(t,e,n),this.applyMatrix4(Or),this}scale(t,e,n){return Or.makeScale(t,e,n),this.applyMatrix4(Or),this}lookAt(t){return au.lookAt(t),au.updateMatrix(),this.applyMatrix4(au.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 yt().fromBufferAttribute(i,f)),s!==void 0&&e.colors.push(new Fm().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 yt().fromBufferAttribute(a,f),new yt().fromBufferAttribute(a,d),new yt().fromBufferAttribute(a,h)],x=new ti(f,d,h,v,g,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new qt().fromBufferAttribute(l,f),new qt().fromBufferAttribute(l,d),new qt().fromBufferAttribute(l,h)]),u!==void 0&&e.faceVertexUvs[1].push([new qt().fromBufferAttribute(u,f),new qt().fromBufferAttribute(u,d),new qt().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(hl).negate(),this.translate(hl.x,hl.y,hl.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,n=e===0?1:1/e,o=new Rm;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 yt,e=new yt;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 yt;if(t){let n=new yt,o=new yt;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 Ln;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 yt,c={a:new yt,b:new yt,c:new yt};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 tA),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new iA),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 Bm().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,b=new ti(h.a+i,h.b+i,h.c+i);b.normal.copy(h.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=v.length;w<S;w++)m=v[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),b.vertexNormals.push(m);b.color.copy(h.color);for(let w=0,S=x.length;w<S;w++)g=x[w],b.vertexColors.push(g.clone());b.materialIndex=h.materialIndex+n,l.push(b)}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 b=0,w=v.length;b<w;b++)x.push(v[b].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 yt(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,b=m.normal.length()>0,w=m.vertexNormals.length>0,S=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,b),T=c(T,5,w),T=c(T,6,S),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(b&&n.push(p(m.normal)),w){let y=m.vertexNormals;n.push(p(y[0]),p(y[1]),p(y[2]))}if(S&&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 Ln().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 b=0,w=v.length;b<w;b++){let S=v[b];x.push(S.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 su().fromGeometry(this),e=new Dm,n=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new ia(n,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new ia(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new ia(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new ia(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new ia(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 ei(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 ei(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new ei(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 Dm,n=t.geometry;if(t.isPoints||t.isLine){let o=new ei(n.vertices.length*3,3),i=new ei(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 ei(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}};Ln.prototype.isGeometry=!0;var su=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 b=x.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=x.normal;this.normals.push(S,S,S)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=x.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][v];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",v),this.uvs.push(new qt,new qt,new qt))}if(a===!0){let S=o[1][v];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",v),this.uvs2.push(new qt,new qt,new qt))}for(let S=0;S<l;S++){let _=s[S].vertices;u[S].data.push(_[x.a],_[x.b],_[x.c])}for(let S=0;S<p;S++){let _=c[S].vertexNormals[v];f[S].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}},ti=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 yt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Fm,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 sA=["a","b","c"];function lA(r,t){switch(t){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function cu(r,t,e){let n=Math.min(r,t),o=Math.max(r,t),i=n+"_"+o;return e.get(i)}function uu(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 cA(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],uu(a.a,a.b,r,n,a,e),uu(a.b,a.c,r,n,a,e),uu(a.c,a.a,r,n,a,e)}function ml(r,t,e,n,o){r.push(new ti(t,e,n,void 0,void 0,o))}function ri(r,t){return Math.abs(t-r)/2+Math.min(r,t)}function gl(r,t,e,n){r.push([t.clone(),e.clone(),n.clone()])}var yl=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof aA?t=new Ln().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 km,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;cA(l,u,f,d);let h=[],m,g,v,x,b,w,S;for(let q of Array.from(d.keys())){for(g=d.get(q),v=new km,b=3/8,w=1/8,S=g.faces.length,S!=2&&(b=.5,w=0,S!=1),v.addVectors(g.a,g.b).multiplyScalar(b),e.set(0,0,0),a=0;a<S;a++){for(x=g.faces[a],s=0;s<3&&(m=l[lA(x,sA[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,O,A,I,C,N=[];for(o=0,i=l.length;o<i;o++){for(I=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=I.clone().multiplyScalar(T),e.set(0,0,0),a=0;a<n;a++)O=A[a],m=O.a!==I?O.a:O.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 lu,X=new lu,K=new lu;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(cu(x.a,x.b,d).newEdge)+G,Y=Number(cu(x.b,x.c,d).newEdge)+G,ie=Number(cu(x.c,x.a,d).newEdge)+G,ml(j,$,Y,ie,x.materialIndex),ml(j,x.a,$,ie,x.materialIndex),ml(j,x.b,Y,$,x.materialIndex),ml(j,x.c,ie,Y,x.materialIndex),p&&(V=c[o],R=V[0],D=V[1],F=V[2],B.set(ri(R.x,D.x),ri(R.y,D.y)),X.set(ri(D.x,F.x),ri(D.y,F.y)),K.set(ri(R.x,F.x),ri(R.y,F.y)),gl(H,B,X,K),gl(H,R,B,K),gl(H,D,X,B),gl(H,F,K,X));t.vertices=P,t.faces=j,p&&(t.faceVertexUvs[0]=H)}};var Qe=new pA,Vm=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,t){let e=r.geometry??t?.geometry??new Gm().copy(new Um(100,100,100)),n;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Qe),n={width:Qe.x,height:Qe.y,depth:Qe.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 Gm().copy(new Um(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Qe)):Qe.set(a.width,a.height,a.depth),(t!==Qe.x||e!==Qe.y||n!==Qe.z)&&i.scale(Qe.x===0?1:t/Qe.x,Qe.y===0?1:e/Qe.y,Qe.z===0?1:n/Qe.z);let s=i.originalGeometry;return o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new yl(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 uA(e).load(r,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Qe);let a=100/Qe.x;Object.assign(i.parameters,{width:100,height:Qe.y*a,depth:Qe.z*a}),t(this.build(i))})}};var zm=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 _e?r.shape:new _e,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=ft.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...r,type:"PolygonGeometry"}})}};import{BufferGeometry as fA,Float32BufferAttribute as pu,Vector2 as Ir,Vector3 as it}from"three";var jm=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 du(t*.5,e,o,i,a,s,l);return u.scale(1,1,n/t),Object.assign(u,{userData:{...r,type:"PyramidGeometry"}})}};function aa(r,t,e){e.x=r.x*t.x,e.y=r.y,e.z=r.x*t.y}function fu(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 dA(r,t,e){let n=r.clone().sub(t),o=e.clone().sub(t);return n.projectOnVector(o),n.add(t)}var du=class extends fA{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,b=new it(0,-d,0),w=new it(0,d,0),S=new Ir(t,-d),_=new Ir(m,-d),T=new Ir(0,w.y).sub(_),y=new Ir(0,w.y).sub(S),O=new Ir(T.y,-T.x).normalize(),A=new Ir(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 it(O.x,O.y,0),V=new it(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 it;if(!i){u.push(b.x,b.y,b.z),c.push(0,-1,0),p.push(0,0);let H=f++,V=[],R=S.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 Ir(Math.sin(B),Math.cos(B));aa(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 it,V=new it,R=new it,D=new it,F=new it,B=new it;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 Ir(Math.sin(K),Math.cos(K)),W=new Ir(Math.sin(q),Math.cos(q)),re=new Ir(Math.sin(z),Math.cos(z));aa(S,U,V),aa(S,re,R),aa(O,W,H),fu(w,V,R,G,G,D),u.push(D.x,D.y,D.z),fu(V,w,R,G,P,F),u.push(F.x,F.y,F.z),fu(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++,pe=f++,oe=f++;if(l.push(ae,pe,oe),a>0){{let Q=V.clone().add(R).multiplyScalar(.5),be=w.clone().sub(Q).normalize(),Te=b.clone().sub(Q).normalize().add(be).normalize().multiplyScalar(-1),nt=B.clone().sub(F);ie(Q,nt,Te,T.angle())}let ne,ee;{let Q=new it;aa(A,re,Q);let be=B.clone().add(D).multiplyScalar(.5);be=dA(be,R,w);let ge=B.clone().sub(D);[ne,ee]=ie(be,ge,Q,N,D.y)}{let Q=ne,be=Q.clone().setY(0).normalize(),ge=new it(0,-1,0),Te=be.clone().cross(ge);j(Q,be,ge,Te)}Y.concat(ee);{let Q=T.angle(),be=Math.PI-Q,ge=w.clone();ge.y-=a/Math.sin(Q-Math.PI/2);let Te=new it,nt=[];for(let Pe=0;Pe<s;Pe++){let De=[],Vt=Math.PI/2-be*Pe/s,cn=Math.cos(Vt),Pt=Math.sin(Vt),fo=q;for(let Ka=0;Ka<=Pe;Ka++){let Za=Math.cos(fo),qe=Math.sin(fo);H.x=cn*qe,H.y=Pt,H.z=cn*Za,Te.copy(ge).addScaledVector(H,a),u.push(Te.x,Te.y,Te.z),c.push(H.x,H.y,H.z),p.push(0,0),De.push(f++),fo+=Math.PI*2/Pe/n}nt.push(De)}ee.reverse(),nt.push(ee);let Le=nt.length-1;for(let Pe=0;Pe<Le;Pe++){let De=nt[Pe],Vt=nt[Pe+1],cn=De.length-1;l.push(Vt[1],De[0],Vt[0]);for(let Pt=1;Pt<=cn;Pt++)l.push(De[Pt],De[Pt-1],Vt[Pt]),l.push(Vt[Pt+1],De[Pt],Vt[Pt])}}}}}this.setIndex(l),this.setAttribute("position",new pu(u,3)),this.setAttribute("normal",new pu(c,3)),this.setAttribute("uv",new pu(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 it,z=new it,U=1,W=f,re=[];for(let ae=0;ae<=s;ae++){let pe=B+ae/s*D;z.set(0,0,0),z.addScaledVector(K,Math.sin(pe)),z.addScaledVector(R,Math.cos(pe));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 pe=0;pe<U;pe++){let oe=W+pe+(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 it,q=new it;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),be=(F+Q)*re,ge=Math.cos(be),Te=Math.sin(be);K.set(0,0,0),K.addScaledVector(V,Te*ne),K.addScaledVector(R,ge),K.addScaledVector(D,Te*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 pe=1;pe<=ae;pe++)l.push(W[pe-1],W[pe],re[pe]),l.push(W[pe],re[pe+1],re[pe])}}}};var Hm=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 _e?r.shape:new _e,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,S,_){return S>e&&_>n?Math.min(w*e/S,w*n/_):S>e?w*e/S:_>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,S=t.points.length;w<S;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 b=ft.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(b,{userData:{...r,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as hA}from"three";var Wm=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 hA(.5*t,o,i,a,s,l,u);return c.scale(1,e/t,n/t),Object.assign(c,{userData:{...r,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as mA}from"three";var qm=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 mA(t,e,n,o);return i.scale(1,1,1),Object.assign(i,{userData:{...r,type:"PlaneGeometry"}})}};import{BufferGeometry as gA,Float32BufferAttribute as hu,Vector3 as yA}from"three";var Xm=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 gA{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 yA(q,z,U),h=d(),m=d(),[g,v,x]=[e/2,t/2,n/2],b=-v,w=+v,[S,_,T]=[d(b,-g,+x),d(b,-g,-x),d(b,+g,-x)],y=(q,z=!1)=>Math.sin(q-Math.PI/(1+ +z)),O=(q,z=!1)=>Math.cos(q-Math.PI/(1+ +z));T.y=Math.sin(o)*e-g;let A=Math.cos(o)*e-x,I=S.z-c;o<=f?(T.z=Math.min(A,I),T.z==I&&(T.y-=(A-I)/Math.tan(f-o))):_.z=Math.min(_.z-A-x,S.z-c),h.subVectors(S,_),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),O(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),O(z)),p.push([h.clone(),m.clone()])}p.push([S,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(b,R.y,R.z,b,B.y,B.z,w,R.y,R.z,w,R.y,R.z,b,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 hu(s,3)),this.setAttribute("normal",new hu(l,3)),this.setAttribute("uv",new hu(u,2))}};var Ym=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 _e?r.shape:new _e,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 S=m*w,_=d+Math.sin(S)*p,T=h+Math.cos(S)*f;c.addPoint(c.createPoint(_,T))}}else for(let w=0;w<o;w++){let S=d+Math.cos(g)*p,_=h+Math.sin(g)*f;c.addPoint(c.createPoint(S,_)),g+=m,S=d+Math.cos(g)*v,_=h+Math.sin(g)*x,w<=o,c.addPoint(c.createPoint(S,_)),g+=m}c.isClosed=!0;for(let w=0,S=c.points.length;w<S;w++)c.points[w].roundness=i;c.roundness=i,c.update();let b=ft.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...r,type:"StarGeometry"}})}};import{PlaneBufferGeometry as vA}from"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,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 vA(t,e);return Object.assign(n,{userData:{...r,type:"TextFrameGeometry"}})}};var Km=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=xA(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 xA(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 na(!0,r,t,e,n,o,i,a,s,l,u,c)}import{TorusKnotBufferGeometry as bA}from"three";var 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 bA(s,e,n,o,i,a);return Object.assign(l,{userData:{...r,type:"TorusKnotGeometry"}})}};var Qm=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 _e?r.shape:new _e,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=ft.create({shape:l,parameters:{roundness:n,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...r,type:"TriangleGeometry"}})}};import{BufferAttribute as Jm,BufferGeometry as gu}from"three";import{mergeBufferGeometries as SA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function eg(){let r=new gu;return r.setAttribute("position",new Jm(new Float32Array([]),3)),r.setIndex(new Jm(new Uint16Array([]),1)),r}var wA=12;var ni=class extends gu{constructor(e,n){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.vectorShapes=[];let o=eg();Object.entries(o.attributes).forEach(([i,a])=>{this.setAttribute(i,a)}),this.setIndex(o.index),this.updateFont(e.font,n),this.update(e)}async updateFont(e,n){let o=n.getFont(e);o&&(this.font=o,await o.loadingPromise)}async update(e){let n=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!n||!n.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:u,textTransform:c,subdivisions:p}=e;await n.loadingPromise;let f=c===2?u.toUpperCase():c===3?u.toLowerCase():u,d=TA(e,n,f),{shapes:h,charWidths:m,charCoords:g}=await n.generateShapes(d,e),v=o*.5,x=i*.5,b=h.map(_=>new _e().fromShape(_));this.vectorShapes=b;let w=b.map(_=>ft.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Be.NONZERO:Be.ODD,subdivisions:p??wA}})),S=w.length?SA(w):eg();S.translate(-v,x,0),this.dispose(),this.wrappedText=d,this.charCoords=g,this.charWidths=m,Object.entries(S.attributes).forEach(([_,T])=>{this.setAttribute(_,T)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Kn(new gu,ni.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.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function TA(r,t,e){e=e??r.text;let n=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
- `?(n[n.length-1]+=o,o="",i===`
3
- `&&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}import{BufferGeometry as tg,BufferAttribute as rg,Uint32BufferAttribute as yu,Float32BufferAttribute as vu,Matrix4 as OA,Vector3 as Sl}from"three";var CA,vl=new Promise(r=>{CA=r});import{BufferGeometryLoader as AA}from"three";function xl(r,t){return _A(r)}function _A(r){let t={parameters:r,type:r.type};if(r.type==="VectorGeometry"){let n=_e.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 AA().parse(r));let e;try{e=sa(t)}catch(n){console.error(n)}if(!e){let n=_e.createFromState(So.defaultData(),100,100);t.shape=n,e=sa(t)}return e}var me;vl.then(r=>{me=r});var ng=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),og=new Uint32Array([0,1,2,3]),ig=new Uint8Array([4]),Xt=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&&(me.free_bvh(e),me.free_subdivision_surface(e));try{i=Xt.allocate(r,o)}catch(u){console.error(u,r),i=Xt.allocate({positionWASM:ng,indexWASM:og,verticesPerFaceWASM:ig},o)}me.set_destination_refinement_level(i,0),a=Xt.buildLevel(i,!0,l)}else i=e,r.phongAngle!==void 0&&(a=Xt.buildLevel(i,!0,l));return r.subdivisions!==void 0&&(me.set_destination_refinement_level(i,r.subdivisions),r.subdivisions>0?s=Xt.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:xl(r),n,o,i,a;({positions:n,triIndices:a}=wu(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}=Tu(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=ng,n=og,o=ig);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=me._malloc(f),g=new Float32Array(me.HEAPF32.buffer,m,c),v=new Uint32Array(me.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 OA().makeScale(...r.scaleBaked)),t&&(x?x.premultiply(t):x=t);let b=x?me.alloc_subdivision_surface2(m,s,m+d,l,m+d+n.length*Uint32Array.BYTES_PER_ELEMENT,u,x.elements):me.alloc_subdivision_surface(m,s,m+d,l,m+d+n.length*Uint32Array.BYTES_PER_ELEMENT,u);return me._free(m),b}static buildLevel(r,t,e,n,o){let i=o?me.get_mesh_data2(r,t?me.Level.CONTROL:me.Level.REFINED,e,o.elements):me.get_mesh_data(r,t?me.Level.CONTROL:me.Level.REFINED,e),a=8,s=me.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(4,4+4),u=0,c=me.HEAPU32[s[u]>>2],p=me.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let f=me.HEAPU32[s[u]>>2],d=me.HEAPF32.subarray(f>>2,(f>>2)+l[u]);u++;let h=me.HEAPU32[s[u]>>2],m=me.HEAPU32.subarray(h>>2,(h>>2)+l[u]);u++;let g=me.HEAPU32[s[u]>>2],v=me.HEAPU32.subarray(g>>2,(g>>2)+l[u]);if(u++,n===void 0){let x=new tg;if(x.setIndex(new yu(v,1)),x.setAttribute("position",new vu(p,3)),x.setAttribute("normal",new vu(d,3)),t){x.setAttribute("faceMap",new yu(m,1));let b=new Float32Array(d.length/3*4).fill(0);x.setAttribute("color",new rg(b,4))}return me.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,me.free_mesh_data(i)}static buildControlCageWireframe(r,t,e){let n=me.get_wireframe_data_for_base_level(r),o=4,i=me.HEAPU32.subarray(n>>2,(n>>2)+o),a=i.subarray(2,2+2),s=0,l=me.HEAPU32[i[s]>>2],u=me.HEAPF32.subarray(l>>2,(l>>2)+a[s]);s++;let c=me.HEAPU32[i[s]>>2],p=me.HEAPU32.subarray(c>>2,(c>>2)+a[s]);if(t===void 0){let f=new tg;f.setAttribute("position",new vu(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 rg(d,3)),f.setIndex(new yu(p,1)),me.free_wireframe_data_for_base_level(n),f}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(n)}static updateCollabMesh(r,t,e){let n=t===0;n||me.set_destination_refinement_level(r,t);let o=e?me.get_topological_data2(r,n?me.Level.CONTROL:me.Level.REFINED,e.elements):me.get_topological_data(r,n?me.Level.CONTROL:me.Level.REFINED),i=6,a=me.HEAPU32.subarray(o>>2,(o>>2)+i),s=a.subarray(3,3+3),l=0,u=me.HEAPU32[a[l]>>2],c=new Float32Array(me.HEAPF32.subarray(u>>2,(u>>2)+s[l]));l++;let p=me.HEAPU32[a[l]>>2],f=new Uint32Array(me.HEAPU32.subarray(p>>2,(p>>2)+s[l]));l++;let d=me.HEAPU32[a[l]>>2],h=new Uint8Array(me.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return me.free_topological_data(o),{positions:c,indices:f,verticesPerFace:h}}};var ag=["getX","getY","getZ"];function wu(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[ag[f]](c)*s)},`;if(p in e)i.push(e[p]);else{for(let f=0;f<3;f++)a.push(r[ag[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 bl=new Sl,xu=new Sl,bu=new Sl,Su=new Sl;function Tu(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]){bl.set(r[t[a]*3],r[t[a]*3+1],r[t[a]*3+2]),xu.set(r[t[a+1]*3],r[t[a+1]*3+1],r[t[a+1]*3+2]),bu.set(r[t[a+4]*3],r[t[a+4]*3+1],r[t[a+4]*3+2]),Su.set(r[t[a+5]*3],r[t[a+5]*3+1],r[t[a+5]*3+2]),xu.sub(bl).normalize(),bu.sub(bl).normalize(),Su.sub(bl).normalize();let l=xu.cross(bu).dot(Su);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 nr={};Pv(nr,{calcBoolean:()=>MA,calcBooleanTopological:()=>PA,freeMeshSet:()=>BA,getMeshSet:()=>EA,transformMeshSet:()=>DA});var IA,sg=new Promise(r=>{IA=r});import{Float32BufferAttribute as lg,Sphere as LA}from"three";var we,oi;sg.then(r=>we=r);function NA(r,t,e){let n,{positions:o,triIndices:i}=wu(r.getAttribute("position"),r.getIndex()),a;if(t&&e){let{indices:s,verticesPerFace:l}=Tu(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 cg(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=we._malloc(o);return(Number.isInteger(r[0])?new Uint32Array(we.HEAPU32.buffer,i,t):new Float32Array(we.HEAPF32.buffer,i,t)).set(r,0),i}function ug(r){switch(r){case 0:return we.OP.UNION;case 1:return we.OP.INTERSECTION;case 2:return we.OP.A_MINUS_B;case 3:return we.OP.B_MINUS_A;case 4:return we.OP.SYMMETRIC_DIFFERENCE;case 5:return we.OP.ALL;default:throw new Error("Unknown boolean operation "+r)}}function PA(r,t){oi===void 0&&(oi=we.init_csg());let e=cg(r),n=we.csg_calc_topological(oi,e,r.length,ug(t));we._free(e);let o=6,i=we.HEAPU32.subarray(n>>2,(n>>2)+o),a=i.subarray(3,3+3),s=0,l=we.HEAPU32[i[s]>>2],u=new Float32Array(we.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=we.HEAPU32[i[s]>>2],p=new Uint32Array(we.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let f=we.HEAPU32[i[s]>>2],d=new Uint8Array(we.HEAPU32.subarray(f>>2,(f>>2)+a[s]));return we.free_mesh_data(n),{positions:u,indices:p,verticesPerFace:d}}function MA(r,t,e,n){oi===void 0&&(oi=we.init_csg());let o=cg(r),i=we.csg_calc(oi,o,r.length,n,ug(t));we._free(o);let a=5,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),u=0,c=we.HEAPU32[s[u]>>2],p=we.HEAPF32.subarray(c>>2,(c>>2)+l[u]);u++;let f=we.HEAPU32[s[u]>>2],d=we.HEAPF32.subarray(f>>2,(f>>2)+l[u]);u++;let h=l[u];e.setAttribute("position",new lg(p,3)),e.setAttribute("normal",new lg(d,3));let m=we.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new LA),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},we.free_mesh_data(i),h}function EA(r,t,e){if(we===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,b=0;v<g.verticesPerFace.length;v++){o[b++]=g.verticesPerFace[v];for(let w=0;w<g.verticesPerFace[v];w++)o[b++]=g.indices[x++]}}else({positions:n,faceIndices:o,nFaces:i}=NA(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=we._malloc(c),h=new Float32Array(we.HEAPF32.buffer,d,l),m=new Uint32Array(we.HEAPU32.buffer,d+p,u);return h.set(n,0),m.set(o,0),we.get_csg_mesh(d,a,d+p,s,i)}function DA(r,t){we.transform_csg_mesh(r,t.elements)}function BA(r){we.free_csg_mesh(r)}var Cu={ConeGeometry:ym,CubeGeometry:vm,CylinderGeometry:gm,DodecahedronGeometry:xm,EllipseGeometry:_m,HelixGeometry:Pm,IcosahedronGeometry:Mm,LatheGeometry:Em,NonParametricGeometry:Vm,PolygonGeometry:zm,PyramidGeometry:jm,RectangleGeometry:Hm,SphereGeometry:Wm,PlaneGeometry:qm,BackdropGeometry:Xm,StarGeometry:Ym,TextFrameGeometry:$m,TorusGeometry:Km,TorusKnotGeometry:Zm,TriangleGeometry:Qm,VectorGeometry:ft},sa=r=>Cu[r.type].create(r);import{Matrix4 as vg}from"three";import{Object3D as kA,Matrix4 as GA}from"three";import{HemisphereLight as pg}from"three";function at(r,t){return t.color(r)}var Au=r=>"isEntity"in r,Lr=r=>"isAbstractMesh"in r,Nr=r=>r!==null&&r.objectType==="BooleanObject",fg=r=>r.objectType==="CombinedCamera";var wl=r=>"objectHelper"in r;function FA(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??hn.identity)),e&&(r.updateMatrix(),Nr(r.parent)&&Lr(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 RA(r,t){FA(r,t),t.name!==void 0&&(r.name=t.name),t.visible!==void 0&&(r.visible=t.visible)}function dg(r,t,e){RA(r,t),t.color!==void 0&&(r.color=at(t.color,e)),t.intensity!==void 0&&(r.intensity=t.intensity),t.shadows!==void 0&&!(r instanceof pg)&&(r.castShadow=t.shadows),r.shadow&&!(r instanceof pg)&&t.depth!==void 0&&(r.shadow.camera.far=t.depth,r.shadow.needsUpdate=!0)}function hg(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 Tl=r=>class extends r{hasEntityChild(){return this.children.some(e=>Au(e))}isDescendantOf(e){e instanceof kA&&(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 GA().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Au(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}};import{Box3 as gg,Line3 as UA,Matrix4 as _u,Vector3 as Yt}from"three";var ii=new gg,or=new Yt,Pr=new Yt,ai=new _u,yg=[new Yt(-1,1,1),new Yt(-1,-1,1),new Yt(1,-1,1),new Yt(1,1,1),new Yt(-1,1,-1),new Yt(-1,-1,-1),new Yt(1,-1,-1),new Yt(1,1,-1)],VA=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],zA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function jA(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 mg=(r,t,e)=>{if(Lr(r)){let n=r.geometry.userData.parameters,o=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?or.copy(r.originalGeometry.boundingSphere.center):r.geometry.userData.type==="TextGeometry"?or.set(0,0,n.depth*.5):o!==void 0&&(jA(ii,o,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:o.count),ii.getCenter(or)),r.forceComputeSize?ii.getSize(Pr).multiplyScalar(.5):Pr.set(n.width,n.height,n.depth??0).multiplyScalar(.5)}else if(wl(r)&&r.objectHelper.visible){let n=r.geometryHelper.getAttribute("position");ii.setFromArray(n.array),ii.getCenter(or),ii.getSize(Pr).multiplyScalar(.5)}else or.setScalar(0),Pr.setScalar(0);ai.copy(t).multiply(r.matrixWorld),Pr.x===0&&Pr.y===0&&Pr.z===0?e.push(new Yt(or.x,or.y,or.z).applyMatrix4(ai)):yg.forEach(n=>{e.push(n.clone().multiply(Pr).add(or).applyMatrix4(ai))})},la=class extends gg{constructor(){super(...arguments);this.matrix=new _u;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 _u().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&&mg(a,n,i)}):mg(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(ai.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Pr).multiplyScalar(.5),this.getCenter(or),ai.copy(this.matrix).setPosition(or),this.vertices=yg.map(e=>e.clone().multiply(Pr).applyMatrix4(ai))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=VA.map(([e,n])=>new UA(this.vertices[e],this.vertices[n])),this.centerEdges=this.edges.map(e=>e.getCenter(new Yt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=zA.map(([e,n])=>this.vertices[e].clone().add(this.vertices[n]).multiplyScalar(.5))}};var Mr=r=>"isEntity"in r,xg=r=>"isAbstractMesh"in r,$t=r=>class extends Tl(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new vg;this._singleBBox=new la;this._recursiveBBox=new la;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1;this.states={};this.currentState=null;this.currentTransitionAction=null}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=>{Mr(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)Mr(o)&&o.traverseEntity(n)}traverseVisibleEntity(n){n(this);for(let o of this.children)Mr(o)&&o.visible&&o.traverseVisibleEntity(n)}updateMatrix(){super.updateMatrix(),this.dispatchEvent({type:"updateMatrix"})}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)Mr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let n=new vg,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),n.copy(this.matrixWorld).invert(),n.multiply(o);for(let i of this.children)Mr(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 Vo(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 Vo(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}};import{NormalBlending as E_,ShaderMaterial as D_}from"three";import{CubeReflectionMapping as t_,CubeRefractionMapping as r_,CubeUVReflectionMapping as n_,LinearEncoding as Tg,sRGBEncoding as o_}from"three";var ca=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}};import{MathUtils as HA}from"three";var st=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=HA.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 st&&(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 Ou=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}},Je=new Ou;import{Vector2 as bg}from"three";import{MathUtils as WA}from"three";var de=class extends st{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=WA.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 Fe=class extends de{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 lt=class extends Fe{constructor(e=0,n){super("v2");this.nodeType="Vector2";this.value=e instanceof bg?e:new bg(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)}};import{Vector3 as Sg}from"three";var dt=class extends Fe{constructor(e=0,n,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Sg?e:new Sg(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)}};import{Color as qA}from"three";var et=class extends qA{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 Kt=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof et?e:new et(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 XA=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,wg=/[a-z_0-9]+/gi,Z=class extends de{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=wg.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&&Je.containsKeyword(d)){let g=this.keywords[d];if(!g){let v=Je.getKeywordData(d);v.cache&&(g=e.keywords[d]),g=g||Je.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&&Je.contains(m)&&e.include(Je.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=XA.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(wg);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 YA=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Iu=class extends de{constructor(e="",n){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Iu.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=YA.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)}},Ae=Iu;Ae.PI="PI",Ae.PI2="PI2",Ae.RECIPROCAL_PI="RECIPROCAL_PI",Ae.RECIPROCAL_PI2="RECIPROCAL_PI2",Ae.LOG2="LOG2",Ae.EPSILON="EPSILON";var $A=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),KA=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),si=class extends de{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=$A.exec(e);if(n){let o=n[2],i;for(;i=KA.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=n[1]}else this.name="";this.type=this.name}};var li=class extends de{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)}};Je.addKeyword("uv",function(){return new li});Je.addKeyword("uv2",function(){return new li(1)});import{LinearEncoding as ZA,sRGBEncoding as QA}from"three";var Jn=class extends de{constructor(e,n){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=n??Jn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ZA:return["Linear"];case QA:return["sRGB"];default:return[]}}generate(e,n){let o=this.input.build(e,"v4"),i=this.getType(e),a=Jn.Nodes[this.method],s=e.include(a);if(s===Jn.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=Jn.getEncodingComponents(e);this.method="LinearTo"+n[0],this.factor=n[1]}fromDecoding(e){let n=Jn.getEncodingComponents(e);this.method=n[0]+"ToLinear",this.factor=n[1]}},St=Jn;St.Nodes={LinearToLinear:new Z(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
- `)),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(`
6
- `)),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(`
7
- `))},St.LINEAR_TO_LINEAR="LinearToLinear",St.SRGB_TO_LINEAR="sRGBToLinear",St.LINEAR_TO_SRGB="LinearTosRGB";var Ie=class extends Z{constructor(e="",n,o,i,a){super(e,a,i,o,n);this.nodeType="Expression"}};import{Texture as JA}from"three";var It=class extends Fe{constructor(e=new JA,n,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=n??new li,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 St(new Ie("",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 Fe{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 ua=class extends de{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 de{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)}},Lt=Lu;Lt.ADD="+",Lt.SUB="-",Lt.MUL="*",Lt.DIV="/";var Ee=class extends de{constructor(e,n=Ee.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 Ee.MIX:case Ee.CLAMP:case Ee.REFRACT:case Ee.SMOOTHSTEP:case Ee.FACEFORWARD:return 3;case Ee.MIN:case Ee.MAX:case Ee.MOD:case Ee.STEP:case Ee.REFLECT:case Ee.DISTANCE:case Ee.DOT:case Ee.CROSS:case Ee.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 Ee.LENGTH:case Ee.DISTANCE:case Ee.DOT:return"f";case Ee.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 Ee.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,n);case Ee.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,n);case Ee.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ee.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case Ee.MIN:case Ee.MAX:case Ee.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case Ee.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case Ee.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)}},ye=Ee;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var ci=class extends de{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 ua(ci.Nodes.bilinearCubeUV,[n,o,i]);this.colorSpaceTL=this.colorSpaceTL??new St(new Ie("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new St(new Ie("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new St(new Ie("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new St(new Ie("","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 Ie(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ie(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ie(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ie(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ie("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 ua(ci.Nodes.roughnessToMip,[i]),s=new ye(a,ci.Nodes.m0,ci.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(s,ye.FLOOR),u=new ye(s,ye.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Lt(l,new J(1).setReadonly(!0),Lt.ADD)),f=new ye(c,p,u,ye.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)}},ui=ci;ui.Nodes=function(){let e=new si(`struct TextureCubeUVData {
1
+ var Mh=Object.create;var Da=Object.defineProperty;var Eh=Object.getOwnPropertyDescriptor;var Bh=Object.getOwnPropertyNames;var Dh=Object.getPrototypeOf,Gh=Object.prototype.hasOwnProperty;var Cc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Rh=(n,t)=>{for(var e in t)Da(n,e,{get:t[e],enumerable:!0})},Vh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Bh(t))!Gh.call(n,o)&&o!==e&&Da(n,o,{get:()=>t[o],enumerable:!(r=Eh(t,o))||r.enumerable});return n};var Lc=(n,t,e)=>(e=n!=null?Mh(Dh(n)):{},Vh(t||!n||!n.__esModule?Da(e,"default",{value:n,enumerable:!0}):e,n));var Xm=Cc((Ca,$m)=>{(function(n,t){typeof Ca=="object"&&typeof $m<"u"?t(Ca):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ca,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,l,c,p,a,u,d,f,m,h,g,x,v=t[0].length,w=t.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],N=[],T=e==="f"?w:v,y=h=d=0;y<w;y++)b[y]=new Array(T).fill(0);for(y=0;y<v;y++)N[y]=new Array(v).fill(0);var P,A=new Array(v).fill(0);for(y=0;y<w;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<w;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,l=y;l<w;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<w;l++)b[l][s]=b[l][s]+u*b[l][y]}for(A[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<w;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[y][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(g=Math.abs(A[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++)N[s][y]=b[y][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[y][l]*N[l][s];for(l=c;l<v;l++)N[l][s]=N[l][s]+m*N[l][y]}}for(s=c;s<v;s++)N[y][s]=0,N[s][y]=0;N[y][y]=1,d=S[y],c=y}if(e){if(e==="f")for(y=v;y<w;y++){for(s=v;s<w;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=A[y],s=c;s<T;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<T;s++){for(m=0,l=c;l<w;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<w;l++)b[l][s]=b[l][s]+u*b[l][y]}for(s=y;s<w;s++)b[s][y]=b[s][y]/d}else for(s=y;s<w;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,l=v-1;0<=l;l--)for(var O=0;O<50;O++){for(P=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){P=!0;break}if(Math.abs(A[c-1])<=o)break}if(!P){for(a=0,p=c-(m=1),y=c;y<l+1&&(u=m*S[y],S[y]=a*S[y],!(Math.abs(u)<=o));y++)if(d=A[y],A[y]=Math.sqrt(u*u+d*d),a=d/(f=A[y]),m=-u/f,e)for(s=0;s<w;s++)g=b[s][p],x=b[s][y],b[s][p]=g*a+x*m,b[s][y]=-g*m+x*a}if(x=A[l],c===l){if(x<0&&(A[l]=-x,r))for(s=0;s<v;s++)N[s][l]=-N[s][l];break}for(h=A[c],u=(((g=A[l-1])-x)*(g+x)+((d=S[l-1])-(f=S[l]))*(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=a=1);y<l+1;y++){if(d=S[y],g=A[y],f=m*d,d*=a,x=Math.sqrt(u*u+f*f),u=h*(a=u/(S[y-1]=x))+d*(m=f/x),d=-h*m+d*a,f=g*m,g*=a,r)for(s=0;s<v;s++)h=N[s][y-1],x=N[s][y],N[s][y-1]=h*a+x*m,N[s][y]=-h*m+x*a;if(x=Math.sqrt(u*u+f*f),u=(a=u/(A[y-1]=x))*d+(m=f/x)*g,h=-m*d+a*g,e)for(s=0;s<w;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*a+x*m,b[s][y]=-g*m+x*a}S[c]=0,S[l]=u,A[l]=h}for(y=0;y<v;y++)A[y]<o&&(A[y]=0);return{u:b,q:A,v:N}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var uh=Cc(La=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||t;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var u=this||t;if(a=parseFloat(a),u.ctx||p(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,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*a)}return u}return u._volume},mute:function(a){var u=this||t;u.ctx||p(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?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=a?!0:h._muted)}return u},stop:function(){for(var a=this||t,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||t,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,p()),a},codecs:function(a){return(this||t)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||t;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._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 a._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$/,"")},a},_unlockAudio:function(){var a=this||t;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var u=function(d){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),g=0;g<h.length;g++){var x=a._howls[m]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var w=0;w<a._howls.length;w++)a._howls[w]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._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(a){var u=this||t;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var d=0;d<a._howls[u]._sounds.length;d++)if(!a._howls[u]._sounds[d]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!t.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var u=0;u<a._howls.length;u++)a._howls[u]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var t=new n,e=function(a){var u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return t.ctx||p(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.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 a=this,u=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var f,m;if(a._format&&a._format[d])f=a._format[d];else{if(m=a._src[d],typeof m!="string"){a._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=a._src[d];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,u){var d=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__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?a=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!a&&(a=g._sprite||"__default"),d._state!=="loaded"){g._sprite=a,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[a][0]/1e3),w=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-v),S=w*1e3/Math.abs(g._rate),b=d._sprite[a][0]/1e3,N=(d._sprite[a][0]+d._sprite[a][1])/1e3;g._sprite=a,g._ended=!1;var T=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=N,g._loop=!!(g._loop||d._sprite[a][2])};if(v>=N){d._ended(g);return}var y=g._node;if(d._webAudio){var P=function(){d._playLock=!1,T(),d._refreshBuffer(g);var L=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(L,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,w):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,w),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"?P():(d._playLock=!0,d.once("resume",P),d._clearTimer(g._id))}else{var A=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 L=y.play();if(L&&typeof Promise<"u"&&(L instanceof Promise||typeof L.then=="function")?(d._playLock=!0,T(),L.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,T(),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}a!=="__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(D){d._emit("playerror",g._id,D)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var O=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||O)A();else{d._playLock=!0,d._state="loading";var _=function(){d._state="loaded",A(),y.removeEventListener(t._canPlayEvent,_,!1)};y.addEventListener(t._canPlayEvent,_,!1),d._clearTimer(g._id)}}return g._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var d=u._getSoundIds(a),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(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var f=d._getSoundIds(a),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(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,u)}}),d;if(typeof u>"u")if(typeof a=="boolean")d._muted=a;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=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,u=arguments,d,f;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=a._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(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,u)}}),a;typeof f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)g=a._soundById(f[x]),g&&(g._volume=d,u[2]||a._stopFade(f[x]),a._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),a._emit("volume",g._id))}else return g=f?a._soundById(f):a._sounds[0],g?g._volume:0;return a},fade:function(a,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,d,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(a,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,w=v+d/1e3;x._volume=a,x._node.gain.setValueAtTime(a,v),x._node.gain.linearRampToValueAtTime(u,w)}m._startFadeInterval(x,a,u,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(a,u,d,f,m,h){var g=this,x=u,v=d-u,w=Math.abs(v/.01),S=Math.max(4,w>0?f/w:f),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var N=(Date.now()-b)/f;b=Date.now(),x+=v*N,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?a._volume=x:g.volume(x,a._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,g.volume(d,a._id),g._emit("fade",a._id))},S)},_stopFade:function(a){var u=this,d=u._soundById(a);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,a),d._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,d,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=a._getSoundIds(f),g=0;g<h.length;g++)m=a._soundById(h[g]),m&&(m._loop=d,a._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,a.playing(h[g])&&(a.pause(h[g],!0),a.play(h[g],!0)))));return a},rate:function(){var a=this,u=arguments,d,f;if(u.length===0)f=a._sounds[0]._id;else if(u.length===1){var m=a._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(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,u)}}),a;typeof f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)if(g=a._soundById(f[x]),g){a.playing(f[x])&&(g._rateSeek=a.seek(f[x]),g._playStart=a._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,a._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=a.seek(f[x]),w=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-v,S=w*1e3/Math.abs(g._rate);(a._endTimers[f[x]]||!g._paused)&&(a._clearTimer(f[x]),a._endTimers[f[x]]=setTimeout(a._ended.bind(a,g),S)),a._emit("rate",g._id)}}else return g=a._soundById(f),g?g._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,f;if(u.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):a._sounds.length&&(f=a._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"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var g=a._soundById(f);if(g)if(typeof d=="number"&&d>=0){var x=a.playing(f);x&&a.pause(f,!0),g._seek=d,g._ended=!1,a._clearTimer(f),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&a.play(f,!0),a._emit("seek",f)};if(x&&!a._webAudio){var w=function(){a._playLock?setTimeout(w,0):v()};setTimeout(w,0)}else v()}else if(a._webAudio){var S=a.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 a},playing:function(a){var u=this;if(typeof a=="number"){var d=u._soundById(a);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(a){var u=this,d=u._duration,f=u._soundById(a);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,d=0;d<u.length;d++)u[d]._paused||a.stop(u[d]._id),a._webAudio||(a._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,a._clearTimer(u[d]._id);var f=t._howls.indexOf(a);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(a,u,d){var f=this,m=f["_on"+a],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(a)f["_on"+a]=[];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(a,u,d){var f=this;return f.on(a,u,d,1),f},_emit:function(a,u,d){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===a&&(u._queue.shift(),u._loadQueue()),a||d.action()}return u},_ended:function(a){var u=this,d=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var f=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&f&&u.stop(a._id,!0).play(a._id),u._webAudio&&f){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),m)}return u._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var d=u._soundById(a);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,d=0;d<u._sounds.length;d++)if(a===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new r(a)},_drain:function(){var a=this,u=a._pool,d=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&d++;for(f=a._sounds.length-1;f>=0;f--){if(d<=u)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,t.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),d))try{a.bufferSource.buffer=t._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),a._node.gain.setValueAtTime(d,t.ctx.currentTime),a._node.paused=!0,a._node.connect(t.masterGain)):t.noAudio||(a._node=t._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(t._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,u=a._parent;u._duration=Math.ceil(a._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()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);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);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(g){h.setRequestHeader(g,a._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,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(a).then(f).catch(d):t.ctx.decodeAudioData(a,f,d)},c=function(a,u){u&&!a._duration&&(a._duration=u.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._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 a=/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(a&&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 La<"u"&&(La.Howler=t,La.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 l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._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")l._orientation=[t,e,r,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(t,e,r,o,i,s);else return c;return l},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 l=r._soundById(i[s]);if(l)if(typeof t=="number")l._stereo=t,l._pos=[t,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(t,0,0):l._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",l._id);else return l._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),l=0;l<s.length;l++){var c=i._soundById(s[l]);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),l=0;l<s.length;l++){var c=i._soundById(s[l]);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),l=0;l<s.length;l++)if(i=t._soundById(s[l]),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)}})()});import{FileLoader as J_,Loader as eT}from"three";var Le=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,Le.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,l={...e,[i]:s};return Object.setPrototypeOf(l,Le.prototype),{data:l,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,Le.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Dn(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"&&Dn(r)}return Object.freeze(n)}function Mc(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 _o=class extends Error{};function $t(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 to(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 Ec(){return typeof process<"u"}function Bc(n,t){for(let e of n)t(e.id,e.data),Bc(e.children,t)}function Dc(n,t){t(n.id,n.data);for(let e of n.children)Dc(e,t)}var Ee=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ee.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Dn(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&&Dc(o,r)}}traverse(e){Bc(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),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(a=>a.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:l}}Object.setPrototypeOf(i,Ee.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:l}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return p=[...p,a],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(a),{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 l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,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 _o("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:l,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)=>Mc(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 $t(0,o,o);{let s=i[0].fi;return $t(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return $t(c,c+o,o)}else return $t(s.fi,l.fi,o)}}};var To;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],l=!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],l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},l=!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,l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(To||(To={}));var me=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,me.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Dn(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 l=i[s];return i=[...i],i[s]={...l,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,me.prototype);let r=e;return Ec()||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,l={fi:r,id:o,data:i};return s=[...s,l],s.sort((p,a)=>p.fi-a.fi),e.localIndex=s.indexOf(l),{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(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((a,u)=>a.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,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 $t(0,r,r);{let i=o[0].fi;return $t(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return $t(l,l+r,r)}else return $t(i.fi,s.fi,r)}}};var vt=class{unusedFun(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r instanceof Ee||r instanceof me)return null;o+=1}r={...r};for(let[c,p]of Object.entries(t.props)){let a=r[c];i[c]=a,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,vt.prototype),l={...t,props:i};return{data:s,actual:t,reverse:l}}},Gc;(e=>{function n(r,o){return Gn(r,o)??r}e.apply=n;function t(r,o){if(o.type===0){let i=0,s=o.path,l=r;for(;i<s.length&&l!==void 0;){if(l=Xt.zoomOnce(l,s[i]),l instanceof Ee||l instanceof me)return;i+=1}if(l===void 0)return o;if(typeof l=="string"||typeof l=="number"||to(l))return;if(l&&typeof l=="object"){let c={...o.props};for(let p of Object.keys(l))delete c[p];return{...o,props:c}}else return}else if(o.type===1||o.type===4||o.type===7){let i=Xt.zoom(r,[...o.path,o.id]);if(i===void 0)return o;if(typeof i=="string"||typeof i=="number"||to(i))return;if(i&&typeof i=="object"){let s={...o.data,...i};return{...o,data:s}}else return}else return o}e.filterOp=t})(Gc||(Gc={}));function Rc(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Gn(o.data,t[i]);e=e||s!==void 0,s===void 0&&(s=o.data);let l=Rc(o.children,t);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}});if(e)return r}function Fh(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Gn(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 Gn(n,t){if(t!==void 0){if(t instanceof me||t instanceof Ee||typeof t=="string"||typeof t=="number"||t===null)return t;if(n instanceof Ee){let e=Rc(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof me)return Fh(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let s=Gn(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=Gn(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}}}function Vc(n,t){let e={cur:[],result:[],len:0};return n=Rn(n,t,e)??n,[n,e.result]}function Hi(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function Wi(n){n&&(n.len-=1)}function zh(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Fc(n,t,e){let r=!1,o=n.map(i=>{let s=i.id,l=t[s];if(l!==void 0&&typeof l=="string"&&(r=!0,s=l,e!==null))throw new Error("not supported");let c=Rn(i.data,t,Hi(e,s));Wi(e),r=r||c!==void 0,c===void 0&&(c=i.data);let p=Fc(i.children,t,e);return p!==void 0?r=!0:p=i.children,{...i,id:s,data:c,children:p}});if(r)return o}function Uh(n,t,e){let r=!1,o=n.map(i=>{let s=i.id,l=t[s];if(l!==void 0&&typeof l=="string"&&(r=!0,s=l,e!==null))throw new Error("not supported");let c=Rn(i.data,t,Hi(e,s));return Wi(e),r=r||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Rn(n,t,e){if(n instanceof Ee){let r=Fc(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof me)return Uh(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,s)=>{let l=Rn(i,t,Hi(e,s));return Wi(e),r=r||l!==void 0,l===void 0&&(l=i),l});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"){let r={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=t[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Rn(s,t,Hi(e,i));Wi(e),o=o||c!==void 0,c===void 0&&(c=s),r[i]=c}else r[i]=s;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];if(r!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");zh(e)}return r}else return}}var zc;(t=>{function n(e,r){let o=Xt.zoom(r,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=n})(zc||(zc={}));var Cr;(l=>{function n(c,p){return{...c,path:c.path.slice(p)}}l.drop=n;function t(c,p){return e(c,p)?.data??c}l.applySimple=t;function e(c,p){let a=p.path;for(var u=[];;){let d;if(c instanceof vt&&p.type===0&&(d=c.runOp({...p,path:a.slice(u.length)}),d===null&&(d=void 0)),u.length===a.length&&(c instanceof Ee||c instanceof me||c instanceof Le?d=c.runOp(p):d=To.runOp(c,p)),d!==void 0)if(d!==null){let h=d.data;for(let g=u.length-1;g>=0;g--){let x=a[g],v=u[g];if(v instanceof Ee){if(typeof x=="number")throw new Error("illegal arg");h=v.modifyById(x,h)}else if(v instanceof me){if(typeof x=="number")throw new Error("illegal arg");h=v.modifyById(x,h)}else if(v instanceof Le){if(typeof x=="number")throw new Error("illegal arg");h=v.modifyById(x,h)}else if(v instanceof vt){let w={...v,[x]:h};h=Object.setPrototypeOf(w,vt.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof x=="string"&&(x=parseInt(x),isNaN(x)))throw new Error("Invalid path");let w=h;h=[...v],h[x]=w}else h={...v,[x]:h};else return null}return{data:h,actual:{...d.actual,path:a},reverse:{...d.reverse,path:a}}}else return null;let f=a[u.length],m;if(c instanceof Ee){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof me){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)u.push(c),c=m;else return null}}l.apply=e;function r(c,p){for(let a=0;a<c.length&&a<p.length;a++)if(c[a]!==p[a])return!0;return!1}l.pathDisjoint=r;function o(c,p){if(c.length!==p.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==p[a])return!1;return!0}l.pathEq=o;function i(c,p){return r(c.path,p.path)}l.commutative=i;function s(c,p){return c.type===0&&p.type===0&&o(c.path,p.path)?Object.keys(c.props).every(a=>p.props[a]!==void 0):!1}l.subsumed=s})(Cr||(Cr={}));var Uc;(c=>{function n(){return[]}c.empty=n;function t(p,a){let u=[];for(let d of p){let[f,...m]=d.path;f===a&&u.push({...d,path:m})}return u}c.removePrefix=t;function e(p,a){return p.map(u=>({...u,path:[a,...u.path]}))}c.addPrefix=e;function r(p,a){return[...p,...a]}c.concat=r;function o(p,a){return[...p.filter(d=>!a.some(f=>Cr.subsumed(d,f))),...a]}c.compress=o;function i(p,a){return p.every(u=>a.every(d=>Cr.commutative(u,d)))}c.commutative=i;function s(p,a){for(let u of a){let d=l(p,u);d!==null&&(p=d.data)}return p}c.applyAll=s;function l(p,a){var u=p;let d=[],f=[];for(let m of a)try{if(m.type===3){let h=Xt.zoom(u,[...m.path,m.id]),g=Cr.apply(u,{...m,type:2});if(g!==null){u=g.data;let[x,v]=Vc(u,{[m.id]:h});u=x;for(let w of v){let S=w[w.length-1];w.splice(w.length-1,1),d.push({type:0,path:w,props:{[S]:h}}),f.push({type:0,path:w,props:{[S]:m.id}})}f.push(g.reverse),d.push(g.actual)}}else{let h=Cr.apply(u,m);h!==null&&(d.push(h.actual),u=h.data,f.push(h.reverse))}}catch(h){if(h instanceof _o)return null;throw h}return{data:u,actual:d,reverse:f.reverse()}}c.apply=l})(Uc||(Uc={}));var jc=Symbol(),Vn=Symbol(),ro=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof $i);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Vn];r&&r(),delete this._children[t]}}}},Ra=class extends ro{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,To.runOp(this._current,t),t.path)}},Va=class extends ro{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,Le.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},kc={get(n,t){if(t===Vn)return()=>{n._parent=null};if(t===jc)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=Xi(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]}}},jh={...kc,set(n,t,e){let r={type:0,props:{[t]:ut(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}},kh={...kc,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}},Ao=class extends ro{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Vn]=()=>{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=Xi(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)}},qi=class extends ro{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r,this[Vn]=()=>{this._parent=null}}feedOp(t){let{path:e,...r}=t;this.reportOp(r,Cr.apply(this._current,t),e)}},No=class extends ro{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Vn]=()=>{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,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(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=Xi(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 Ga(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Xt.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var $i=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){Ga(this.ts,e,t),Ga(this.actual,r,t),Ga(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Xi(n,t,e){return e instanceof Ee?new Ao(n,t,e):e instanceof me?new No(n,t,e):e instanceof vt?new qi(n,t,e):e instanceof Le?new Proxy(new Va(n,t,e),kh):e!==null&&typeof e=="object"?to(e)?e:new Proxy(new Ra(n,t,e),jh):e}function Fa(n){let t=new $i(n);return[Xi(t,"",n),t]}function za(n,t){let[e,r]=Fa(n);return t(e),r.result()}function ut(n){return n instanceof Ao||n instanceof No||n instanceof qi?n._current:n!==null&&typeof n=="object"?n[jc]:n}var Xt;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function t(i,s,l){let c=r(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let p={...s};return Object.keys(c).forEach(a=>{delete p[a]}),p}else return s}o.removeOverridden=t;function e(i,s){if((i instanceof Ee||i instanceof Ao)&&typeof s=="string")return i.data(s);if((i instanceof me||i instanceof No)&&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,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=r})(Xt||(Xt={}));var Yi=class{},Fn=class extends Yi{constructor(e){super();this.id=e}},zn=class extends Yi{constructor(e){super();this.data=e}};var ja;try{ja=new TextDecoder}catch{}var ne,Mr,I=0;var Qc=[],ka=Qc,Ha=0,pt={},be,Lr,At=0,Yt=0,bt,vr,st=[],Ae,Hc={useRecords:!1,mapsAsObjects:!0},Un=class{},qa=new Un;qa.name="MessagePack 0xC1";var Io=!1,Kt=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(ne)return ru(()=>(Qi(),this?this.unpack(t,e):Kt.prototype.unpack.call(Hc,t,e)));Mr=e>-1?e:t.length,I=0,Ha=0,Yt=0,Lr=null,ka=Qc,bt=null,ne=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ne=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 Kt){if(pt=this,this.structures)return be=this.structures,Ki();(!be||be.length>0)&&(be=[])}else pt=Hc,(!be||be.length>0)&&(be=[]);return Ki()}unpackMultiple(t,e){let r,o=0;try{Io=!0;let i=t.length,s=this?this.unpack(t,i):es.unpack(t,i);if(e){for(e(s);I<i;)if(o=I,e(Ki())===!1)return}else{for(r=[s];I<i;)o=I,r.push(Ki());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Io=!1,Qi()}}_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 Ki(){try{if(!pt.trusted&&!Io){let t=be.sharedLength||0;t<be.length&&(be.length=t)}let n=Be();if(I==Mr)be.restoreStructures&&Wc(),be=null,ne=null,vr&&(vr=null);else if(I>Mr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Io)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw be.restoreStructures&&Wc(),Qi(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Wc(){for(let n in be.restoreStructures)be[n]=be.restoreStructures[n];be.restoreStructures=null}function Be(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let t=be[n&63]||pt.getStructures&&Zc()[n&63];return t?(t.read||(t.read=$a(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[eu()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}else if(n<192){let t=n-160;if(Yt>=I)return Lr.slice(I-At,(I+=t)-At);if(Yt==0&&Mr<140){let e=t<16?Xa(t):Jc(t);if(e!=null)return e}return Wa(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=Be(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):qa;case 194:return!1;case 195:return!0;case 196:return Ua(ne[I++]);case 197:return t=Ae.getUint16(I),I+=2,Ua(t);case 198:return t=Ae.getUint32(I),I+=4,Ua(t);case 199:return oo(ne[I++]);case 200:return t=Ae.getUint16(I),I+=2,oo(t);case 201:return t=Ae.getUint32(I),I+=4,oo(t);case 202:if(t=Ae.getFloat32(I),pt.useFloat32>2){let e=Ji[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*t+(t>0?.5:-.5)>>0)/e}return I+=4,t;case 203:return t=Ae.getFloat64(I),I+=8,t;case 204:return ne[I++];case 205:return t=Ae.getUint16(I),I+=2,t;case 206:return t=Ae.getUint32(I),I+=4,t;case 207:return pt.int64AsNumber?(t=Ae.getUint32(I)*4294967296,t+=Ae.getUint32(I+4)):t=Ae.getBigUint64(I),I+=8,t;case 208:return Ae.getInt8(I++);case 209:return t=Ae.getInt16(I),I+=2,t;case 210:return t=Ae.getInt32(I),I+=4,t;case 211:return pt.int64AsNumber?(t=Ae.getInt32(I)*4294967296,t+=Ae.getUint32(I+4)):t=Ae.getBigInt64(I),I+=8,t;case 212:if(t=ne[I++],t==114)return Kc(ne[I++]&63);{let e=st[t];if(e)return e.read?(I++,e.read(Be())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+t)}case 213:return t=ne[I],t==114?(I++,Kc(ne[I++]&63,ne[I++])):oo(2);case 214:return oo(4);case 215:return oo(8);case 216:return oo(16);case 217:return t=ne[I++],Yt>=I?Lr.slice(I-At,(I+=t)-At):Wh(t);case 218:return t=Ae.getUint16(I),I+=2,Yt>=I?Lr.slice(I-At,(I+=t)-At):qh(t);case 219:return t=Ae.getUint32(I),I+=4,Yt>=I?Lr.slice(I-At,(I+=t)-At):$h(t);case 220:return t=Ae.getUint16(I),I+=2,$c(t);case 221:return t=Ae.getUint32(I),I+=4,$c(t);case 222:return t=Ae.getUint16(I),I+=2,Xc(t);case 223:return t=Ae.getUint32(I),I+=4,Xc(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 Hh=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function $a(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Hh.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Be);return n.highByte===0&&(n.read=qc(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Be()}return r}return e.count=0,n.highByte===0?qc(t,e):e}var qc=(n,t)=>function(){let e=ne[I++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=be[r]||Zc()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=$a(o,n)),o.read()};function Zc(){let n=ru(()=>(ne=null,pt.getStructures()));return be=pt._mergeStructures(n,be)}var Wa=Zi,Wh=Zi,qh=Zi,$h=Zi;function Zi(n){let t;if(n<16&&(t=Xa(n)))return t;if(n>64&&ja)return ja.decode(ne.subarray(I,I+=n));let e=I+n,r=[];for(t="";I<e;){let o=ne[I++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=ne[I++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,l=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|l;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+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function $c(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}function Xc(n){if(pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[eu()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}}var qe=String.fromCharCode;function Jc(n){let t=I,e=new Array(n);for(let r=0;r<n;r++){let o=ne[I++];if((o&128)>0){I=t;return}e[r]=o}return qe.apply(String,e)}function Xa(n){if(n<4)if(n<2){if(n===0)return"";{let t=ne[I++];if((t&128)>1){I-=1;return}return qe(t)}}else{let t=ne[I++],e=ne[I++];if((t&128)>0||(e&128)>0){I-=2;return}if(n<3)return qe(t,e);let r=ne[I++];if((r&128)>0){I-=3;return}return qe(t,e,r)}else{let t=ne[I++],e=ne[I++],r=ne[I++],o=ne[I++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return qe(t,e,r,o,i,s);let l=ne[I++];if((l&128)>0){I-=7;return}return qe(t,e,r,o,i,s,l)}else{let i=ne[I++],s=ne[I++],l=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,l,c);{let p=ne[I++];if((p&128)>0){I-=9;return}return qe(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=ne[I++],a=ne[I++];if((p&128)>0||(a&128)>0){I-=10;return}if(n<11)return qe(t,e,r,o,i,s,l,c,p,a);let u=ne[I++];if((u&128)>0){I-=11;return}return qe(t,e,r,o,i,s,l,c,p,a,u)}else{let p=ne[I++],a=ne[I++],u=ne[I++],d=ne[I++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){I-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,l,c,p,a,u,d);{let f=ne[I++];if((f&128)>0){I-=13;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m,h)}}}}}function Ua(n){return pt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function oo(n){let t=ne[I++];if(st[t])return st[t](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+t)}var Yc=new Array(4096);function eu(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,Yt>=I)return Lr.slice(I-At,(I+=n)-At);if(!(Yt==0&&Mr<180))return Wa(n)}else return I--,Be();let t=(n<<5^(n>1?Ae.getUint16(I):n>0?ne[I]:0))&4095,e=Yc[t],r=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ae.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=ne[r++],i!=e[s++]){r=1879048192;break}if(r===o)return I=r,e.string;o-=3,r=I}for(e=[],Yc[t]=e,e.bytes=n;r<o;)i=Ae.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=ne[r++],e.push(i);let l=n<16?Xa(n):Jc(n);return l!=null?e.string=l:e.string=Wa(n)}var Kc=(n,t)=>{var e=Be();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=be[n];return o&&o.isShared&&((be.restoreStructures||(be.restoreStructures=[]))[n]=o),be[n]=e,e.read=$a(e,r),e.read()},tu=typeof self=="object"?self:global;st[0]=()=>{};st[0].noBuffer=!0;st[101]=()=>{let n=Be();return(tu[n[0]]||Error)(n[1])};st[105]=n=>{let t=Ae.getUint32(I-4);vr||(vr=new Map);let e=ne[I],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};vr.set(t,o);let i=Be();return o.used?Object.assign(r,i):(o.target=i,i)};st[112]=n=>{let t=Ae.getUint32(I-4),e=vr.get(t);return e.used=!0,e.target};st[115]=()=>new Set(Be());var Ya=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");st[116]=n=>{let t=n[0],e=Ya[t];if(!e)throw new Error("Could not find typed array for code "+t);return new tu[e](Uint8Array.prototype.slice.call(n,1).buffer)};st[120]=()=>{let n=Be();return new RegExp(n[0],n[1])};st[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=t-4,bt=[Be(),Be()],bt.position0=0,bt.position1=0;let r=I;I=e;try{return Be()}finally{I=r}};st[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 ru(n){let t=Mr,e=I,r=Ha,o=At,i=Yt,s=Lr,l=ka,c=vr,p=bt,a=new Uint8Array(ne.slice(0,Mr)),u=be,d=be.slice(0,be.length),f=pt,m=Io,h=n();return Mr=t,I=e,Ha=r,At=o,Yt=i,Lr=s,ka=l,vr=c,bt=p,ne=a,Io=m,be=u,be.splice(0,be.length,...d),pt=f,Ae=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function Qi(){ne=null,vr=null,be=null}function ou(n){n.unpack?st[n.type]=n.unpack:st[n.type]=n}var Ji=new Array(147);for(let n=0;n<256;n++)Ji[n]=+("1e"+Math.floor(45.15-n*.30103));var es=new Kt({useRecords:!1}),Xh=es.unpack,Yh=es.unpackMultiple,Kh=es.unpack,ts={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Qh=new Float32Array(1),oA=new Uint8Array(Qh.buffer,0,4);var rs;try{rs=new TextEncoder}catch{}var os,Qa,ns=typeof Buffer<"u",Ka=ns?Buffer.allocUnsafeSlow:Uint8Array,au=ns?Buffer:Uint8Array,nu=ns?4294967296:2144337920,G,Re,C=0,Qt,Zt=null,Zh=/[\u0080-\uFFFF]/,jn=Symbol("record-id"),no=class extends Kt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=au.prototype.utf8Write?function(y,P,A){return G.utf8Write(y,P,A)}:rs&&rs.encodeInto?function(y,P){return rs.encodeInto(y,G.subarray(P)).written}:!1,a=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=[],w=0,S=0;this.pack=this.encode=function(y,P){if(G||(G=new Ka(8192),Re=new DataView(G.buffer,0,8192),C=0),Qt=G.length-10,Qt-C<2048?(G=new Ka(G.length),Re=new DataView(G.buffer,0,G.length),Qt=G.length-10,C=0):C=C+7&2147483640,r=C,l=a.structuredClone?new Map:null,a.bundleStrings?(Zt=["",""],G[C++]=214,G[C++]=98,Zt.position=C-r,C+=4):Zt=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let A=o.sharedLength||0;if(A>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 O=0;O<A;O++){let _=o[O];if(!_)continue;let L,D=o.transitions;for(let U=0,re=_.length;U<re;U++){let Q=_[U];L=D[Q],L||(L=D[Q]=Object.create(null)),D=L}D[jn]=O+64}c=A}u||(o.nextId=A+64)}i&&(i=!1),s=o||[];try{if(b(y),Zt){Re.setUint32(Zt.position+r,C-Zt.position-r);let A=Zt;Zt=null,b(A[0]),b(A[1])}if(a.offset=C,l&&l.idsToInsert){C+=l.idsToInsert.length*6,C>Qt&&T(C),a.offset=C;let A=eg(G.subarray(r,C),l.idsToInsert);return l=null,A}return P&cu?(G.start=r,G.end=C,G):G.subarray(r,C)}finally{if(o){if(S<10&&S++,w>1e4)o.transitions=null,S=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let A=0,O=v.length;A<O;A++)v[A][jn]=0;v=[]}if(i&&a.saveStructures){let A=o.sharedLength||f;o.length>A&&(o=o.slice(0,A));let O=G.subarray(r,C);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=A,O)}}P&ag&&(C=r)}};let b=y=>{C>Qt&&(G=T(C));var P=typeof y,A;if(P==="string"){let O=y.length;if(Zt&&O>=8&&O<4096){let D=Zh.test(y);Zt[D?0:1]+=y,G[C++]=193,b(D?-O:O);return}let _;O<32?_=1:O<256?_=2:O<65536?_=3:_=5;let L=O*3;if(C+L>Qt&&(G=T(C+L)),O<64||!p){let D,U,re,Q=C+_;for(D=0;D<O;D++)U=y.charCodeAt(D),U<128?G[Q++]=U:U<2048?(G[Q++]=U>>6|192,G[Q++]=U&63|128):(U&64512)===55296&&((re=y.charCodeAt(D+1))&64512)===56320?(U=65536+((U&1023)<<10)+(re&1023),D++,G[Q++]=U>>18|240,G[Q++]=U>>12&63|128,G[Q++]=U>>6&63|128,G[Q++]=U&63|128):(G[Q++]=U>>12|224,G[Q++]=U>>6&63|128,G[Q++]=U&63|128);A=Q-C-_}else A=p(y,C+_,L);A<32?G[C++]=160|A:A<256?(_<2&&G.copyWithin(C+2,C+1,C+1+A),G[C++]=217,G[C++]=A):A<65536?(_<3&&G.copyWithin(C+3,C+2,C+2+A),G[C++]=218,G[C++]=A>>8,G[C++]=A&255):(_<5&&G.copyWithin(C+5,C+3,C+3+A),G[C++]=219,Re.setUint32(C,A),C+=4),C+=A}else if(P==="number")if(y>>>0===y)y<64?G[C++]=y:y<256?(G[C++]=204,G[C++]=y):y<65536?(G[C++]=205,G[C++]=y>>8,G[C++]=y&255):(G[C++]=206,Re.setUint32(C,y),C+=4);else if(y>>0===y)y>=-32?G[C++]=256+y:y>=-128?(G[C++]=208,G[C++]=y+256):y>=-32768?(G[C++]=209,Re.setInt16(C,y),C+=2):(G[C++]=210,Re.setInt32(C,y),C+=4);else{let O;if((O=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){G[C++]=202,Re.setFloat32(C,y);let _;if(O<4||(_=y*Ji[(G[C]&127)<<1|G[C+1]>>7])>>0===_){C+=4;return}else C--}G[C++]=203,Re.setFloat64(C,y),C+=8}else if(P==="object")if(!y)G[C++]=192;else{if(l){let _=l.get(y);if(_){if(!_.id){let L=l.idsToInsert||(l.idsToInsert=[]);_.id=L.push(_)}G[C++]=214,G[C++]=112,Re.setUint32(C,_.id),C+=4;return}else l.set(y,{offset:C-r})}let O=y.constructor;if(O===Object)N(y,!0);else if(O===Array){A=y.length,A<16?G[C++]=144|A:A<65536?(G[C++]=220,G[C++]=A>>8,G[C++]=A&255):(G[C++]=221,Re.setUint32(C,A),C+=4);for(let _=0;_<A;_++)b(y[_])}else if(O===Map){A=y.size,A<16?G[C++]=128|A:A<65536?(G[C++]=222,G[C++]=A>>8,G[C++]=A&255):(G[C++]=223,Re.setUint32(C,A),C+=4);for(let[_,L]of y)b(_),b(L)}else{for(let _=0,L=os.length;_<L;_++){let D=Qa[_];if(y instanceof D){let U=os[_];if(U.write){U.type&&(G[C++]=212,G[C++]=U.type,G[C++]=0),b(U.write.call(this,y));return}let re=G,Q=Re,le=C;G=null;let H;try{H=U.pack.call(this,y,W=>(G=re,re=null,C+=W,C>Qt&&T(C),{target:G,targetView:Re,position:C-W}),b)}finally{re&&(G=re,Re=Q,C=le,Qt=G.length-10)}H&&(H.length+C>Qt&&T(H.length+C),C=Jh(H,G,C,U.type));return}}N(y,!y.hasOwnProperty)}}else if(P==="boolean")G[C++]=y?195:194;else if(P==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))G[C++]=211,Re.setBigInt64(C,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)G[C++]=207,Re.setBigUint64(C,y);else if(this.largeBigIntToFloat)G[C++]=203,Re.setFloat64(C,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");C+=8}else if(P==="undefined")this.encodeUndefinedAsNil?G[C++]=192:(G[C++]=212,G[C++]=0,G[C++]=0);else if(P==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+P)},N=this.useRecords===!1?this.variableMapSize?y=>{let P=Object.keys(y),A=P.length;A<16?G[C++]=128|A:A<65536?(G[C++]=222,G[C++]=A>>8,G[C++]=A&255):(G[C++]=223,Re.setUint32(C,A),C+=4);let O;for(let _=0;_<A;_++)b(O=P[_]),b(y[O])}:(y,P)=>{G[C++]=222;let A=C-r;C+=2;let O=0;for(let _ in y)(P||y.hasOwnProperty(_))&&(b(_),b(y[_]),O++);G[A+++r]=O>>8,G[A+r]=O&255}:y=>{let P=Object.keys(y),A,O=s.transitions||(s.transitions=Object.create(null)),_=0;for(let D=0,U=P.length;D<U;D++){let re=P[D];A=O[re],A||(A=O[re]=Object.create(null),_++),O=A}let L=O[jn];if(L)L>=96&&h?(G[C++]=((L-=96)&31)+96,G[C++]=L>>5):G[C++]=L;else{L=s.nextId,L||(L=64),L<g&&this.shouldShareStructure&&!this.shouldShareStructure(P)?(L=s.nextOwnId,L<x||(L=g),s.nextOwnId=L+1):(L>=x&&(L=g),s.nextId=L+1);let D=P.highByte=L>=96&&h?L-96>>5:-1;O[jn]=L,s[L-64]=P,L<g?(P.isShared=!0,s.sharedLength=L-63,i=!0,D>=0?(G[C++]=(L&31)+96,G[C++]=D):G[C++]=L):(D>=0?(G[C++]=213,G[C++]=114,G[C++]=(L&31)+96,G[C++]=D):(G[C++]=212,G[C++]=114,G[C++]=L),_&&(w+=S*_),v.length>=m&&(v.shift()[jn]=0),v.push(O),b(P))}for(let D=0,U=P.length;D<U;D++)b(y[P[D]])},T=y=>{let P;if(y>16777216){if(y-r>nu)throw new Error("Packed buffer would be larger than maximum buffer size");P=Math.min(nu,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else P=(Math.max(y-r<<2,G.length-1)>>12)+1<<12;let A=new Ka(P);return Re=new DataView(A.buffer,0,P),G.copy?G.copy(A,0,r,y):A.set(G.slice(r,y)),C-=r,r=0,Qt=A.length-10,G=A}}useBuffer(t){G=t,Re=new DataView(G.buffer,G.byteOffset,G.byteLength),C=0}};Qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Un];os=[{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?iu(n,16,t):su(ns?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==au&&this.structuredClone?iu(n,Ya.indexOf(e.name),t):su(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function iu(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:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function su(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 Jh(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 eg(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 l=i+r;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function Er(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)");Qa.unshift(n.Class),os.unshift(n)}ou(n)}var lu=new no({useRecords:!1}),tg=lu.pack,rg=lu.pack;var{NEVER:og,ALWAYS:ng,DECIMAL_ROUND:ig,DECIMAL_FIT:sg}=ts,cu=512,ag=1024;var uu=new no({structuredClone:!0});Er({Class:Le.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});Er({Class:me.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,me.prototype),n}});Er({Class:Ee.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ee.prototype),n}});Er({Class:Fn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Fn(n)}});Er({Class:zn.prototype.constructor,type:5,write(n){return n.data},read(n){return new zn(n)}});Er({Class:vt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,vt.prototype),n}});function lg(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 Za(n){if(to(n))return n;if(Array.isArray(n))return n.map(Za);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Za(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var is;(r=>{function n(o){return uu.pack(o)}r.serialize=n;function t(o){return uu.unpack(o)}r.deserialize=t;function e(o){return lg(n(Za(o))).toString()}r.checksum=e})(is||(is={}));var pu;(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})(pu||(pu={}));var Po;(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,l){return[i[0]+(s[0]-i[0])*l,i[1]+(s[1]-i[1])*l,i[2]+(s[2]-i[2])*l]}o.lerp=r})(Po||(Po={}));var du;(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})(du||(du={}));var Br;(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 l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let l=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=r})(Br||(Br={}));var dt;(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,a){return p.r===a.r&&p.g===a.g&&p.b===a.b}c.equals=s;function l(p,a,u){return{r:p.r+(a.r-p.r)*u,g:p.g+(a.g-p.g)*u,b:p.b+(a.b-p.b)*u}}c.lerp=l})(dt||(dt={}));var Bt;(l=>{l.white={...dt.white,a:1},l.transparent={...dt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function r(c,p){return{...dt.fromHex(c),a:p}}l.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}}l.toRgb255a1=o;function i(c,p){return dt.equals(c,p)&&c.a===p.a}l.equals=i;function s(c,p,a){return{r:c.r+(p.r-c.r)*a,g:c.g+(p.g-c.g)*a,b:c.b+(p.b-c.b)*a,a:c.a+(p.a-c.a)*a}}l.lerp=s})(Bt||(Bt={}));var ss;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ss||(ss={}));var fu;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(fu||(fu={}));var mu;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(mu||(mu={}));var Oo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Oo||(Oo={}));var io;(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})(io||(io={}));var as;(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})(as||(as={}));var ls;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(ls||(ls={}));var cs;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Bt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Bt.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:Bt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(cs||(cs={}));var Ja;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Ja||(Ja={}));var el;(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})(el||(el={}));var us;(t=>t.defaultData={...el.defaultData,...Ja.defaultData,cloner:null,booleanExclude:null})(us||(us={}));var hu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],gu=["wrapping","image"],Dr;(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:dt.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:{...dt.fromHex(6710886),a:1},colorB:{...dt.fromHex(6710886),a:1},colorC:{...dt.fromHex(16777215),a:1},colorD:{...dt.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:Bt.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:Bt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Bt.fromHexAndA(0,1),contourColor:Bt.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}}}})(Dr||(Dr={}));var St;(l=>{function n(c){return!c.layers.some(a=>{if(a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")return!0})&&!e(c)}l.isMergable=n;function t(c){let p="";return c.layers.forEach(a=>{Object.entries(a.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}l.getHash=t;function e(c){let p=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(p+=(1-p)*a.data.alpha);return p<1}l.isTransparent=e;function r(){return{layers:new me}}l.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}l.defaultData=o;function i(c,p="layer1",a="layer2"){let u=new me;return u.push({fi:0,data:Dr.defaultData("light",c),id:p}),u.push({fi:1,data:Dr.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="basic",a="layer1",u="layer2"){let d=Dr.defaultData("texture");Object.assign(d.texture,{image:c});let f=new me;return f.push({fi:0,data:d,id:a}),f.push({fi:1,data:Dr.defaultData("light",p),id:u}),{layers:f}}l.defaultTwoLayerTextureData=s})(St||(St={}));var Co;(t=>{function n(){return{points:new me,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Co||(Co={}));var ps;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(ps||(ps={}));var Gr;(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:Co.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=n})(Gr||(Gr={}));var cg=typeof global=="object"&&global&&global.Object===Object&&global,ds=cg;var ug=typeof self=="object"&&self&&self.Object===Object&&self,pg=ds||ug||Function("return this")(),Ve=pg;var dg=Ve.Symbol,at=dg;var yu=Object.prototype,fg=yu.hasOwnProperty,mg=yu.toString,kn=at?at.toStringTag:void 0;function hg(n){var t=fg.call(n,kn),e=n[kn];try{n[kn]=void 0;var r=!0}catch{}var o=mg.call(n);return r&&(t?n[kn]=e:delete n[kn]),o}var xu=hg;var gg=Object.prototype,yg=gg.toString;function xg(n){return yg.call(n)}var vu=xg;var vg="[object Null]",bg="[object Undefined]",bu=at?at.toStringTag:void 0;function Sg(n){return n==null?n===void 0?bg:vg:bu&&bu in Object(n)?xu(n):vu(n)}var wt=Sg;function wg(n){return n!=null&&typeof n=="object"}var rt=wg;var _g="[object Symbol]";function Tg(n){return typeof n=="symbol"||rt(n)&&wt(n)==_g}var Lo=Tg;function Ag(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 fs=Ag;var Ng=Array.isArray,De=Ng;var Ig=1/0,Su=at?at.prototype:void 0,wu=Su?Su.toString:void 0;function _u(n){if(typeof n=="string")return n;if(De(n))return fs(n,_u)+"";if(Lo(n))return wu?wu.call(n):"";var t=n+"";return t=="0"&&1/n==-Ig?"-0":t}var Tu=_u;function Pg(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Fe=Pg;function Og(n){return n}var ms=Og;var Cg="[object AsyncFunction]",Lg="[object Function]",Mg="[object GeneratorFunction]",Eg="[object Proxy]";function Bg(n){if(!Fe(n))return!1;var t=wt(n);return t==Lg||t==Mg||t==Cg||t==Eg}var Mo=Bg;var Dg=Ve["__core-js_shared__"],hs=Dg;var Au=function(){var n=/[^.]+$/.exec(hs&&hs.keys&&hs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Gg(n){return!!Au&&Au in n}var Nu=Gg;var Rg=Function.prototype,Vg=Rg.toString;function Fg(n){if(n!=null){try{return Vg.call(n)}catch{}try{return n+""}catch{}}return""}var br=Fg;var zg=/[\\^$.*+?()[\]{}|]/g,Ug=/^\[object .+?Constructor\]$/,jg=Function.prototype,kg=Object.prototype,Hg=jg.toString,Wg=kg.hasOwnProperty,qg=RegExp("^"+Hg.call(Wg).replace(zg,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $g(n){if(!Fe(n)||Nu(n))return!1;var t=Mo(n)?qg:Ug;return t.test(br(n))}var Iu=$g;function Xg(n,t){return n?.[t]}var Pu=Xg;function Yg(n,t){var e=Pu(n,t);return Iu(e)?e:void 0}var ft=Yg;var Kg=ft(Ve,"WeakMap"),gs=Kg;var Ou=Object.create,Qg=function(){function n(){}return function(t){if(!Fe(t))return{};if(Ou)return Ou(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Cu=Qg;function Zg(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 Lu=Zg;function Jg(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var ys=Jg;var ey=800,ty=16,ry=Date.now;function oy(n){var t=0,e=0;return function(){var r=ry(),o=ty-(r-e);if(e=r,o>0){if(++t>=ey)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Mu=oy;function ny(n){return function(){return n}}var Eu=ny;var iy=function(){try{var n=ft(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Eo=iy;var sy=Eo?function(n,t){return Eo(n,"toString",{configurable:!0,enumerable:!1,value:Eu(t),writable:!0})}:ms,Bu=sy;var ay=Mu(Bu),xs=ay;function ly(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Du=ly;var cy=9007199254740991,uy=/^(?:0|[1-9]\d*)$/;function py(n,t){var e=typeof n;return t=t??cy,!!t&&(e=="number"||e!="symbol"&&uy.test(n))&&n>-1&&n%1==0&&n<t}var Rr=py;function dy(n,t,e){t=="__proto__"&&Eo?Eo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Bo=dy;function fy(n,t){return n===t||n!==n&&t!==t}var Vr=fy;var my=Object.prototype,hy=my.hasOwnProperty;function gy(n,t,e){var r=n[t];(!(hy.call(n,t)&&Vr(r,e))||e===void 0&&!(t in n))&&Bo(n,t,e)}var Do=gy;function yy(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var l=t[i],c=r?r(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?Bo(e,l,c):Do(e,l,c)}return e}var Nt=yy;var Gu=Math.max;function xy(n,t,e){return t=Gu(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Gu(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=r[o];return l[t]=e(s),Lu(n,this,l)}}var vs=xy;function vy(n,t){return xs(vs(n,t,ms),n+"")}var Ru=vy;var by=9007199254740991;function Sy(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=by}var Go=Sy;function wy(n){return n!=null&&Go(n.length)&&!Mo(n)}var Fr=wy;function _y(n,t,e){if(!Fe(e))return!1;var r=typeof t;return(r=="number"?Fr(e)&&Rr(t,e.length):r=="string"&&t in e)?Vr(e[t],n):!1}var Vu=_y;function Ty(n){return Ru(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&&Vu(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var l=e[r];l&&n(t,l,r,i)}return t})}var Fu=Ty;var Ay=Object.prototype;function Ny(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Ay;return n===e}var Ro=Ny;function Iy(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var zu=Iy;var Py="[object Arguments]";function Oy(n){return rt(n)&&wt(n)==Py}var tl=Oy;var Uu=Object.prototype,Cy=Uu.hasOwnProperty,Ly=Uu.propertyIsEnumerable,My=tl(function(){return arguments}())?tl:function(n){return rt(n)&&Cy.call(n,"callee")&&!Ly.call(n,"callee")},Sr=My;function Ey(){return!1}var ju=Ey;var Wu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ku=Wu&&typeof module=="object"&&module&&!module.nodeType&&module,By=ku&&ku.exports===Wu,Hu=By?Ve.Buffer:void 0,Dy=Hu?Hu.isBuffer:void 0,Gy=Dy||ju,Vo=Gy;var Ry="[object Arguments]",Vy="[object Array]",Fy="[object Boolean]",zy="[object Date]",Uy="[object Error]",jy="[object Function]",ky="[object Map]",Hy="[object Number]",Wy="[object Object]",qy="[object RegExp]",$y="[object Set]",Xy="[object String]",Yy="[object WeakMap]",Ky="[object ArrayBuffer]",Qy="[object DataView]",Zy="[object Float32Array]",Jy="[object Float64Array]",ex="[object Int8Array]",tx="[object Int16Array]",rx="[object Int32Array]",ox="[object Uint8Array]",nx="[object Uint8ClampedArray]",ix="[object Uint16Array]",sx="[object Uint32Array]",Me={};Me[Zy]=Me[Jy]=Me[ex]=Me[tx]=Me[rx]=Me[ox]=Me[nx]=Me[ix]=Me[sx]=!0;Me[Ry]=Me[Vy]=Me[Ky]=Me[Fy]=Me[Qy]=Me[zy]=Me[Uy]=Me[jy]=Me[ky]=Me[Hy]=Me[Wy]=Me[qy]=Me[$y]=Me[Xy]=Me[Yy]=!1;function ax(n){return rt(n)&&Go(n.length)&&!!Me[wt(n)]}var qu=ax;function lx(n){return function(t){return n(t)}}var Fo=lx;var $u=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Hn=$u&&typeof module=="object"&&module&&!module.nodeType&&module,cx=Hn&&Hn.exports===$u,rl=cx&&ds.process,ux=function(){try{var n=Hn&&Hn.require&&Hn.require("util").types;return n||rl&&rl.binding&&rl.binding("util")}catch{}}(),wr=ux;var Xu=wr&&wr.isTypedArray,px=Xu?Fo(Xu):qu,bs=px;var dx=Object.prototype,fx=dx.hasOwnProperty;function mx(n,t){var e=De(n),r=!e&&Sr(n),o=!e&&!r&&Vo(n),i=!e&&!r&&!o&&bs(n),s=e||r||o||i,l=s?zu(n.length,String):[],c=l.length;for(var p in n)(t||fx.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Rr(p,c)))&&l.push(p);return l}var Ss=mx;function hx(n,t){return function(e){return n(t(e))}}var ws=hx;var gx=ws(Object.keys,Object),Yu=gx;var yx=Object.prototype,xx=yx.hasOwnProperty;function vx(n){if(!Ro(n))return Yu(n);var t=[];for(var e in Object(n))xx.call(n,e)&&e!="constructor"&&t.push(e);return t}var Ku=vx;function bx(n){return Fr(n)?Ss(n):Ku(n)}var zo=bx;function Sx(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Qu=Sx;var wx=Object.prototype,_x=wx.hasOwnProperty;function Tx(n){if(!Fe(n))return Qu(n);var t=Ro(n),e=[];for(var r in n)r=="constructor"&&(t||!_x.call(n,r))||e.push(r);return e}var Zu=Tx;function Ax(n){return Fr(n)?Ss(n,!0):Zu(n)}var Jt=Ax;var Nx=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ix=/^\w*$/;function Px(n,t){if(De(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Lo(n)?!0:Ix.test(n)||!Nx.test(n)||t!=null&&n in Object(t)}var Ju=Px;var Ox=ft(Object,"create"),_r=Ox;function Cx(){this.__data__=_r?_r(null):{},this.size=0}var ep=Cx;function Lx(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var tp=Lx;var Mx="__lodash_hash_undefined__",Ex=Object.prototype,Bx=Ex.hasOwnProperty;function Dx(n){var t=this.__data__;if(_r){var e=t[n];return e===Mx?void 0:e}return Bx.call(t,n)?t[n]:void 0}var rp=Dx;var Gx=Object.prototype,Rx=Gx.hasOwnProperty;function Vx(n){var t=this.__data__;return _r?t[n]!==void 0:Rx.call(t,n)}var op=Vx;var Fx="__lodash_hash_undefined__";function zx(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=_r&&t===void 0?Fx:t,this}var np=zx;function Uo(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])}}Uo.prototype.clear=ep;Uo.prototype.delete=tp;Uo.prototype.get=rp;Uo.prototype.has=op;Uo.prototype.set=np;var ol=Uo;function Ux(){this.__data__=[],this.size=0}var ip=Ux;function jx(n,t){for(var e=n.length;e--;)if(Vr(n[e][0],t))return e;return-1}var zr=jx;var kx=Array.prototype,Hx=kx.splice;function Wx(n){var t=this.__data__,e=zr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Hx.call(t,e,1),--this.size,!0}var sp=Wx;function qx(n){var t=this.__data__,e=zr(t,n);return e<0?void 0:t[e][1]}var ap=qx;function $x(n){return zr(this.__data__,n)>-1}var lp=$x;function Xx(n,t){var e=this.__data__,r=zr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var cp=Xx;function jo(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])}}jo.prototype.clear=ip;jo.prototype.delete=sp;jo.prototype.get=ap;jo.prototype.has=lp;jo.prototype.set=cp;var Ur=jo;var Yx=ft(Ve,"Map"),jr=Yx;function Kx(){this.size=0,this.__data__={hash:new ol,map:new(jr||Ur),string:new ol}}var up=Kx;function Qx(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var pp=Qx;function Zx(n,t){var e=n.__data__;return pp(t)?e[typeof t=="string"?"string":"hash"]:e.map}var kr=Zx;function Jx(n){var t=kr(this,n).delete(n);return this.size-=t?1:0,t}var dp=Jx;function e0(n){return kr(this,n).get(n)}var fp=e0;function t0(n){return kr(this,n).has(n)}var mp=t0;function r0(n,t){var e=kr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var hp=r0;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=up;ko.prototype.delete=dp;ko.prototype.get=fp;ko.prototype.has=mp;ko.prototype.set=hp;var Wn=ko;var o0="Expected a function";function nl(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(o0);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(nl.Cache||Wn),e}nl.Cache=Wn;var gp=nl;var n0=500;function i0(n){var t=gp(n,function(r){return e.size===n0&&e.clear(),r}),e=t.cache;return t}var yp=i0;var s0=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a0=/\\(\\)?/g,l0=yp(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(s0,function(e,r,o,i){t.push(o?i.replace(a0,"$1"):r||e)}),t}),xp=l0;function c0(n){return n==null?"":Tu(n)}var vp=c0;function u0(n,t){return De(n)?n:Ju(n,t)?[n]:xp(vp(n))}var It=u0;var p0=1/0;function d0(n){if(typeof n=="string"||Lo(n))return n;var t=n+"";return t=="0"&&1/n==-p0?"-0":t}var Hr=d0;function f0(n,t){t=It(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Hr(t[e++])];return e&&e==r?n:void 0}var _s=f0;function m0(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Ho=m0;var bp=at?at.isConcatSpreadable:void 0;function h0(n){return De(n)||Sr(n)||!!(bp&&n&&n[bp])}var Sp=h0;function wp(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Sp),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?wp(l,t-1,e,r,o):Ho(o,l):r||(o[o.length]=l)}return o}var _p=wp;function g0(n){var t=n==null?0:n.length;return t?_p(n,1):[]}var Tp=g0;function y0(n){return xs(vs(n,void 0,Tp),n+"")}var Ts=y0;var x0=ws(Object.getPrototypeOf,Object),Wo=x0;var v0="[object Object]",b0=Function.prototype,S0=Object.prototype,Ap=b0.toString,w0=S0.hasOwnProperty,_0=Ap.call(Object);function T0(n){if(!rt(n)||wt(n)!=v0)return!1;var t=Wo(n);if(t===null)return!0;var e=w0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ap.call(e)==_0}var As=T0;function A0(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 Np=A0;function N0(){this.__data__=new Ur,this.size=0}var Ip=N0;function I0(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Pp=I0;function P0(n){return this.__data__.get(n)}var Op=P0;function O0(n){return this.__data__.has(n)}var Cp=O0;var C0=200;function L0(n,t){var e=this.__data__;if(e instanceof Ur){var r=e.__data__;if(!jr||r.length<C0-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Wn(r)}return e.set(n,t),this.size=e.size,this}var Lp=L0;function qo(n){var t=this.__data__=new Ur(n);this.size=t.size}qo.prototype.clear=Ip;qo.prototype.delete=Pp;qo.prototype.get=Op;qo.prototype.has=Cp;qo.prototype.set=Lp;var Ns=qo;function M0(n,t){return n&&Nt(t,zo(t),n)}var Mp=M0;function E0(n,t){return n&&Nt(t,Jt(t),n)}var Ep=E0;var Rp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Bp=Rp&&typeof module=="object"&&module&&!module.nodeType&&module,B0=Bp&&Bp.exports===Rp,Dp=B0?Ve.Buffer:void 0,Gp=Dp?Dp.allocUnsafe:void 0;function D0(n,t){if(t)return n.slice();var e=n.length,r=Gp?Gp(e):new n.constructor(e);return n.copy(r),r}var Is=D0;function G0(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 Vp=G0;function R0(){return[]}var Ps=R0;var V0=Object.prototype,F0=V0.propertyIsEnumerable,Fp=Object.getOwnPropertySymbols,z0=Fp?function(n){return n==null?[]:(n=Object(n),Vp(Fp(n),function(t){return F0.call(n,t)}))}:Ps,$o=z0;function U0(n,t){return Nt(n,$o(n),t)}var zp=U0;var j0=Object.getOwnPropertySymbols,k0=j0?function(n){for(var t=[];n;)Ho(t,$o(n)),n=Wo(n);return t}:Ps,Os=k0;function H0(n,t){return Nt(n,Os(n),t)}var Up=H0;function W0(n,t,e){var r=t(n);return De(n)?r:Ho(r,e(n))}var Cs=W0;function q0(n){return Cs(n,zo,$o)}var jp=q0;function $0(n){return Cs(n,Jt,Os)}var Ls=$0;var X0=ft(Ve,"DataView"),Ms=X0;var Y0=ft(Ve,"Promise"),Es=Y0;var K0=ft(Ve,"Set"),Bs=K0;var kp="[object Map]",Q0="[object Object]",Hp="[object Promise]",Wp="[object Set]",qp="[object WeakMap]",$p="[object DataView]",Z0=br(Ms),J0=br(jr),ev=br(Es),tv=br(Bs),rv=br(gs),so=wt;(Ms&&so(new Ms(new ArrayBuffer(1)))!=$p||jr&&so(new jr)!=kp||Es&&so(Es.resolve())!=Hp||Bs&&so(new Bs)!=Wp||gs&&so(new gs)!=qp)&&(so=function(n){var t=wt(n),e=t==Q0?n.constructor:void 0,r=e?br(e):"";if(r)switch(r){case Z0:return $p;case J0:return kp;case ev:return Hp;case tv:return Wp;case rv:return qp}return t});var Xo=so;var ov=Object.prototype,nv=ov.hasOwnProperty;function iv(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&nv.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Xp=iv;var sv=Ve.Uint8Array,il=sv;function av(n){var t=new n.constructor(n.byteLength);return new il(t).set(new il(n)),t}var Yo=av;function lv(n,t){var e=t?Yo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Yp=lv;var cv=/\w*$/;function uv(n){var t=new n.constructor(n.source,cv.exec(n));return t.lastIndex=n.lastIndex,t}var Kp=uv;var Qp=at?at.prototype:void 0,Zp=Qp?Qp.valueOf:void 0;function pv(n){return Zp?Object(Zp.call(n)):{}}var Jp=pv;function dv(n,t){var e=t?Yo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ds=dv;var fv="[object Boolean]",mv="[object Date]",hv="[object Map]",gv="[object Number]",yv="[object RegExp]",xv="[object Set]",vv="[object String]",bv="[object Symbol]",Sv="[object ArrayBuffer]",wv="[object DataView]",_v="[object Float32Array]",Tv="[object Float64Array]",Av="[object Int8Array]",Nv="[object Int16Array]",Iv="[object Int32Array]",Pv="[object Uint8Array]",Ov="[object Uint8ClampedArray]",Cv="[object Uint16Array]",Lv="[object Uint32Array]";function Mv(n,t,e){var r=n.constructor;switch(t){case Sv:return Yo(n);case fv:case mv:return new r(+n);case wv:return Yp(n,e);case _v:case Tv:case Av:case Nv:case Iv:case Pv:case Ov:case Cv:case Lv:return Ds(n,e);case hv:return new r;case gv:case vv:return new r(n);case yv:return Kp(n);case xv:return new r;case bv:return Jp(n)}}var ed=Mv;function Ev(n){return typeof n.constructor=="function"&&!Ro(n)?Cu(Wo(n)):{}}var Gs=Ev;var Bv="[object Map]";function Dv(n){return rt(n)&&Xo(n)==Bv}var td=Dv;var rd=wr&&wr.isMap,Gv=rd?Fo(rd):td,od=Gv;var Rv="[object Set]";function Vv(n){return rt(n)&&Xo(n)==Rv}var nd=Vv;var id=wr&&wr.isSet,Fv=id?Fo(id):nd,sd=Fv;var zv=1,Uv=2,jv=4,ad="[object Arguments]",kv="[object Array]",Hv="[object Boolean]",Wv="[object Date]",qv="[object Error]",ld="[object Function]",$v="[object GeneratorFunction]",Xv="[object Map]",Yv="[object Number]",cd="[object Object]",Kv="[object RegExp]",Qv="[object Set]",Zv="[object String]",Jv="[object Symbol]",eb="[object WeakMap]",tb="[object ArrayBuffer]",rb="[object DataView]",ob="[object Float32Array]",nb="[object Float64Array]",ib="[object Int8Array]",sb="[object Int16Array]",ab="[object Int32Array]",lb="[object Uint8Array]",cb="[object Uint8ClampedArray]",ub="[object Uint16Array]",pb="[object Uint32Array]",Ce={};Ce[ad]=Ce[kv]=Ce[tb]=Ce[rb]=Ce[Hv]=Ce[Wv]=Ce[ob]=Ce[nb]=Ce[ib]=Ce[sb]=Ce[ab]=Ce[Xv]=Ce[Yv]=Ce[cd]=Ce[Kv]=Ce[Qv]=Ce[Zv]=Ce[Jv]=Ce[lb]=Ce[cb]=Ce[ub]=Ce[pb]=!0;Ce[qv]=Ce[ld]=Ce[eb]=!1;function Rs(n,t,e,r,o,i){var s,l=t&zv,c=t&Uv,p=t&jv;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Fe(n))return n;var a=De(n);if(a){if(s=Xp(n),!l)return ys(n,s)}else{var u=Xo(n),d=u==ld||u==$v;if(Vo(n))return Is(n,l);if(u==cd||u==ad||d&&!o){if(s=c||d?{}:Gs(n),!l)return c?Up(n,Ep(s,n)):zp(n,Mp(s,n))}else{if(!Ce[u])return o?n:{};s=ed(n,u,l)}}i||(i=new Ns);var f=i.get(n);if(f)return f;i.set(n,s),sd(n)?n.forEach(function(g){s.add(Rs(g,t,e,g,n,i))}):od(n)&&n.forEach(function(g,x){s.set(x,Rs(g,t,e,x,n,i))});var m=p?c?Ls:jp:c?Jt:zo,h=a?void 0:m(n);return Du(h||n,function(g,x){h&&(x=g,g=n[x]),Do(s,x,Rs(g,t,e,x,n,i))}),s}var Vs=Rs;var db=1,fb=4;function mb(n){return Vs(n,db|fb)}var qn=mb;function hb(n,t){return n!=null&&t in Object(n)}var ud=hb;function gb(n,t,e){t=It(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Hr(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&&Go(o)&&Rr(s,o)&&(De(n)||Sr(n)))}var pd=gb;function yb(n,t){return n!=null&&pd(n,t,ud)}var dd=yb;function xb(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),l=s.length;l--;){var c=s[n?l:++o];if(e(i[c],c,i)===!1)break}return t}}var fd=xb;var vb=fd(),md=vb;function bb(n,t,e){(e!==void 0&&!Vr(n[t],e)||e===void 0&&!(t in n))&&Bo(n,t,e)}var $n=bb;function Sb(n){return rt(n)&&Fr(n)}var hd=Sb;function wb(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Xn=wb;function _b(n){return Nt(n,Jt(n))}var gd=_b;function Tb(n,t,e,r,o,i,s){var l=Xn(n,e),c=Xn(t,e),p=s.get(c);if(p){$n(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=De(c),f=!d&&Vo(c),m=!d&&!f&&bs(c);a=c,d||f||m?De(l)?a=l:hd(l)?a=ys(l):f?(u=!1,a=Is(c,!0)):m?(u=!1,a=Ds(c,!0)):a=[]:As(c)||Sr(c)?(a=l,Sr(l)?a=gd(l):(!Fe(l)||Mo(l))&&(a=Gs(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),$n(n,e,a)}var yd=Tb;function xd(n,t,e,r,o){n!==t&&md(t,function(i,s){if(o||(o=new Ns),Fe(i))yd(n,t,s,e,xd,r,o);else{var l=r?r(Xn(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),$n(n,s,l)}},Jt)}var vd=xd;function Ab(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var bd=Ab;function Nb(n,t){return t.length<2?n:_s(n,Np(t,0,-1))}var Sd=Nb;var Ib=Fu(function(n,t,e){vd(n,t,e)}),ao=Ib;function Pb(n,t){return t=It(t,n),n=Sd(n,t),n==null||delete n[Hr(bd(t))]}var wd=Pb;function Ob(n){return As(n)?void 0:n}var _d=Ob;var Cb=1,Lb=2,Mb=4,Eb=Ts(function(n,t){var e={};if(n==null)return e;var r=!1;t=fs(t,function(i){return i=It(i,n),r||(r=i.length>1),i}),Nt(n,Ls(n),e),r&&(e=Vs(e,Cb|Lb|Mb,_d));for(var o=t.length;o--;)wd(e,t[o]);return e}),Ko=Eb;function Bb(n,t,e,r){if(!Fe(n))return n;t=It(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=Hr(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];p=r?r(a,c,l):void 0,p===void 0&&(p=Fe(a)?a:Rr(t[o+1])?[]:{})}Do(l,c,p),l=l[c]}return n}var Td=Bb;function Db(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=_s(n,s);e(l,s)&&Td(i,It(s,n),l)}return i}var Ad=Db;function Gb(n,t){return Ad(n,t,function(e,r){return dd(n,r)})}var Nd=Gb;var Rb=Ts(function(n,t){return n==null?{}:Nd(n,t)}),Qo=Rb;var Yn;(o=>{o.identity={...ss.identity,hiddenMatrix:Br.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:Po.isEqual(i.position,s.position)?null:s.position,rotation:Po.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Po.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Br.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Yn||(Yn={}));var sl;(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]})(sl||(sl={}));var Dt;(t=>t.defaultData={states:new me,events:new me,visible:!0,raycastLock:!1,physics:null,...Yn.identity})(Dt||(Dt={}));var Id;(t=>t.defaultData={type:"Empty",...Dt.defaultData})(Id||(Id={}));var lo;(t=>t.defaultData={type:"Mesh",...Dt.defaultData,...us.defaultData})(lo||(lo={}));var Fs;(t=>t.defaultData={...Dt.defaultData,...Yn.identity,...io.defaultData})(Fs||(Fs={}));var Pd;(t=>{function n(e){return{...Dt.defaultData,...cs.defaultData(e)}}t.defaultData=n})(Pd||(Pd={}));var Od;(o=>(o.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Br.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:sl.defaultData,states:new me,events:new me,...io.defaultData},o.defaultMeshObject={name:"Rectangle",...Dt.defaultData,...lo.defaultData,geometry:Gr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("basic","layer1","layer2")},o.defaultBooleanObject={name:"Boolean",...Dt.defaultData,...lo.defaultData,geometry:Gr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},o.defaultTextObject={name:"Text",...Dt.defaultData,...lo.defaultData,geometry:Gr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(Od||(Od={}));var Cd;(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=za(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&ao(p,c)}}).data),i.materials&&o.materials&&(i.materials=za(i.materials,s=>{for(let l=0;l<i.materials.length;l++){let c=o.materials[l];if(typeof c!="string")for(let[p,a]of Object.entries(c.layers)){let u=s[l]?.layers?.data(p);u&&ao(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Yn.merge(i,o)),Oo.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(ls.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=dt.clone(s.color))}return i}e.patch=t})(Cd||(Cd={}));var Zo;(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})(Zo||(Zo={}));var zs;(t=>t.defaultData={orbitControls:Zo.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})(zs||(zs={}));function co(n,t){return Object.setPrototypeOf(n,t),n}function Ld(n){return Array.isArray(n)?n:[n]}var Us;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},co(r,Le.prototype)}e.defaultColors=n;function t(){return{materials:new Le,images:new Le,colors:new Le,audios:new Le,fonts:new Le,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(Us||(Us={}));import{MathUtils as js}from"three";function Md(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 l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...Qo(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,s)}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 al(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function ll(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 Vb(n){Object.assign(n.scene.publish,{orbitControls:{...Zo.defaultData,...ut(n.scene.publish.orbitControls)}})}function Fb(n){Object.assign(n.scene.publish.settings,{video:{...zs.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function zb(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((hu.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(gu.includes(s)||typeof l=="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 Ub(n){n.scene.publish.withBackground=!0}function jb(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function kb(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 Hb(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 Wb(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 Ed(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function cl(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={...ut(t),colors:e,steps:r};Object.assign(t,o)}})}function qb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Bd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&cl(r)}):"material"in e&&typeof e.material!="string"&&cl(e.material)}),Object.values(n.shared.materials).forEach(t=>cl(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 Xb(n){n.shared.audios=co({},Le.prototype)}function Yb(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 Kb(n){Object.entries(ut(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(ut(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function Qb(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)})}function Zb(n){n.shared.fonts=co({},Le.prototype)}function Jb(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function eS(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=St.defaultTwoLayerData("basic"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=Jb(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Dt.defaultData,...lo.defaultData,flatShading:!1,wireframe:!1,geometry:{...Gr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,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},p=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(p??null,e,[{id:e+"new",data:c,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function tS(n){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new me,move:new me,jump:new me}});else{let i=new me;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:js.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let p={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,Qo(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let u={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},d={state:s.state,...u,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new me({fi:0,id:js.generateUUID(),data:p},{fi:1,id:js.generateUUID(),data:d})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function rS(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let s=new me,l=[];if(e.events.forEach((c,p,a)=>{if(c.type==="Audio"&&c.trigger===i){let u;l.push(p),c.interaction==="play"?u={...Qo(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(u={...Qo(c,"interaction","delay","object","playAudio"),type:"Audio"}),u&&s.push({fi:a,id:p,data:u})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(p=>p.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:js.generateUUID(),data:{type:o,actions:s}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}var Gd=21;function Rd(n){let t=n.schema??0;t!==Gd&&(console.warn("updating from ",t,"to ",Gd),t<1&&(ll(n,Md),al(n,Md),n.schema=1),t<2&&(Vb(n),n.schema=2),t<3&&(zb(n),n.schema=3),t<4&&(Ub(n),n.schema=4),t<5&&(jb(n),n.schema=5),t<6&&(kb(n),n.schema=6),t<7&&(Hb(n),n.schema=7),t<8&&(Wb(n),n.schema=8),t<9&&(Bd(n),n.schema=9),t<10&&(qb(n),n.schema=10),t<11&&($b(n),n.schema=11),t<12&&(Bd(n),n.schema=12),t<13&&(Xb(n),n.schema=13),t<14&&(Yb(n),n.schema=14),t<15&&(Kb(n),n.schema=15),t<16&&(Qb(n),n.schema=16),t<17&&(ll(n,Dd),al(n,Dd),n.schema=17),t<18&&(ll(n,Ed),al(n,Ed),n.schema=18),t<19&&(Fb(n),n.schema=19),t<20&&(Zb(n),eS(n),n.schema=20),t<21&&(tS(n),rS(n),n.schema=21))}var ks;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(ks||(ks={}));import{Object3D as nS,Vector3 as Qn,Euler as Vd,MathUtils as Wr}from"three";import{Object3D as oS}from"three";var ul=class extends oS{},Hs=class extends ul{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 uo=class extends nS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Qn),i=.1;this.parameters=as.defaultData(o.toArray(),i),ao(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 Hs(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*Wr.DEG2RAD,i=r.end*Wr.DEG2RAD,s=o-i,l=new Vd(r.rotation[0]*Wr.DEG2RAD,r.rotation[1]*Wr.DEG2RAD,r.rotation[2]*Wr.DEG2RAD),c;switch(r.axis){case"z":c=new Qn(0,0,1);break;case"y":c=new Qn(0,1,0);break;default:case"x":c=new Qn(1,0,0);break}for(let[p,a]of this.children.entries()){a.scale.x=r.scale[0],a.scale.y=r.scale[1],a.scale.z=r.scale[2],a.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":a.rotation.set(0,u,0);break;case"y":a.rotation.set(0,0,u);break;case"z":a.rotation.set(u,0,0);break}a.translateOnAxis(c,r.radius),a.position.x+=r.position[0],a.position.y+=r.position[1],a.position.z+=r.position[2],r.alignment===!0?(a.rotation.x+=l.x,a.rotation.y+=l.y,a.rotation.z+=l.z):a.rotation.copy(l)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Vd(r.rotation[0]*Wr.DEG2RAD,r.rotation[1]*Wr.DEG2RAD,r.rotation[2]*Wr.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 Qn(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 l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let a=this.children[r++];a.scale.setScalar(1),a.rotation.set(0,0,0),a.position.x=o.size[0]*l-s.x,a.position.y=o.size[1]*c-s.y,a.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 l=0;l<o.count[2];l++){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]*l}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),ao(this.parameters,e),this.update(),this}};import{HemisphereLight as M_,Scene as E_,Vector3 as B_,Fog as D_,Box3 as G_}from"three";import{Camera as Y1,OrthographicCamera as K1,PerspectiveCamera as Q1,Vector3 as Ht,Object3D as Mm,Quaternion as Z1}from"three";import{BoxBufferGeometry as iS}from"three";var er=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new iS(30,30,30),t};import{Camera as uS,LineSegments as pS,BufferGeometry as dS,LineBasicMaterial as fS,Color as dl,Vector3 as mS,Float32BufferAttribute as zd}from"three";import{Ray as sS,Sphere as aS,Matrix4 as lS,Vector3 as Tr}from"three";var Ws=new sS,pl=new aS,Fd=new lS,tr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),pl.copy(i.boundingSphere),pl.applyMatrix4(s),e.ray.intersectsSphere(pl)===!1||(Fd.copy(s).invert(),Ws.copy(e.ray).applyMatrix4(Fd),i.boundingBox!==null&&Ws.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,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),a=u.getX(m+2),l=g(n,e,Ws,d,c,p,a),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let v=i.attributes.position,w=new Tr,S=new Tr,b=new Tr,N=new Tr,T=2,P=1/((n.scale.x+n.scale.y+n.scale.z)/3),A=P*P,O=Math.max(0,f.start),_=Math.min(v.count,f.start+f.count);for(let L=O,D=_-1;L<D;L+=T){if(w.fromBufferAttribute(v,L),S.fromBufferAttribute(v,L+1),Ws.distanceSqToSegment(w,S,N,b)>A)continue;N.applyMatrix4(n.matrixWorld);let re=e.ray.origin.distanceTo(N);re<e.near||re>e.far||r.push({distance:re,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,w,S,b,N,T){let y=new Tr,P=new Tr,A=new Tr,O=new Tr,_=new Tr;if(y.fromBufferAttribute(S,b),P.fromBufferAttribute(S,N),A.fromBufferAttribute(S,T),w.intersectTriangle(y,P,A,!1,O)===null)return null;_.copy(O),_.applyMatrix4(x.matrixWorld);let D=v.ray.origin.distanceTo(_);return D<v.near||D>v.far?null:{faceIndex:1,distance:D,point:_.clone(),object:x}}};var qs=new mS,Pt=new uS,fl=class extends pS{constructor(e){let r=new dS,o=new fS({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new dl(15711266),p=new dl(15711266),a=new dl(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",a),u("u2","u3",a),u("u3","u1",a);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),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}r.setAttribute("position",new zd(i,3)),r.setAttribute("color",new zd(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=l,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Pt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;Gt("n1",r,e,Pt,-i,-s,l),Gt("n2",r,e,Pt,i,-s,l),Gt("n3",r,e,Pt,-i,s,l),Gt("n4",r,e,Pt,i,s,l);let c=l;Gt("f1",r,e,Pt,-i,-s,c),Gt("f2",r,e,Pt,i,-s,c),Gt("f3",r,e,Pt,-i,s,c),Gt("f4",r,e,Pt,i,s,c);let p=c,a=.5;Gt("u1",r,e,Pt,i*.7*a,s*1.1,p),Gt("u2",r,e,Pt,-i*.7*a,s*1.1,p),Gt("u3",r,e,Pt,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Gt(n,t,e,r,o,i,s){qs.set(o,i,s).unproject(r);let l=t[n];if(l!==void 0){let c=e.getAttribute("position");for(let p=0,a=l.length;p<a;p++)c.setXYZ(l[p],qs.x,qs.y,qs.z)}}var $s=class extends er(fl){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){tr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as hS}from"three";var Jo=class extends er(hS){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){tr(this.object,Jo.geometryHelper,e,r)}};import{AxesHelper as gS}from"three";var en=class extends er(gS){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){tr(this.object,en.geometryHelper,e,r)}update(){}};import{PointLightHelper as yS}from"three";var tn=class extends er(yS){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){tr(this.object,tn.geometryHelper,e,r)}};import{SpotLightHelper as xS,Vector3 as vS}from"three";var Xs=class extends er(xS){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){tr(this.object,Xs.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Xs._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,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Zn=Xs;Zn._vector=new vS;import{CubicBezierCurve as Ys,EllipseCurve as bS,LineCurve as Ks,LineCurve3 as SS,MathUtils as wS,QuadraticBezierCurve as hl,SplineCurve as _S,Vector2 as ot,Vector3 as kd}from"three";var Jn=1e-12,rn=class{constructor(t){this.position=new ot;this.startPosition=new ot;this.uuid=wS.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 rn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},on=class extends rn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new on(this.parent).copy(this)}},Rt=class extends rn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new on(this),new on(this))}static create(e,r){let o=new Rt(e,new ot(...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 Rt(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 ot,r=new ot){let[o,i]=this.computeTangents();return o&&i&&(Ud(o,e),Ud(i,r)),[e,r]}computeTangent(e=new ot){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new ot){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ud(n,t=new ot){let e=n.length();return t.set(-n.y/e,n.x/e)}var gl=n=>n,nn=new ot,Qs=new ot,TS=new ot,AS=new ot,NS=new ot,IS=new ot,Hd=new kd,Wd=new kd;function qd(n){let t=new ot;t.addVectors(n.v0,nn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ot;return e.addVectors(n.v2,Qs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ys(n.v0,t,e,n.v2)}function ei(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function PS(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function OS(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function yl(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 jd(n,t)&&jd(t,e)&&ml(n.position,t.position,e.position)}function ml(n,t,e){return nn.copy(t).sub(n).cross(Qs.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,l=(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(l+c,s+p),o.set(l-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,l=t.y-n.y,c=e.x-n.x,p=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+p)*(l+p)),u;return yl(t,n,e)>Math.PI&&(a*=-1),ei(p,l)?u=(l+p)*(r/a-.5)*8/3/(s-c):u=(s+c)*(r/a-.5)*8/3/(p-l),o.set(t.x-u*l,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function xl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function jd(n,t){return ml(n.position,n.controls[1].position,t.position)&&ml(n.position,t.controls[0].position,t.position)}function Qd(n,t,e,r,o=.5){let i=nn.subVectors(t,n).multiplyScalar(o).add(n),s=Qs.subVectors(e,t).multiplyScalar(o).add(t),l=TS.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=AS.subVectors(s,i).multiplyScalar(o).add(i),a=NS.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=IS.subVectors(a,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,a.x,a.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,l=[];for(let c=0;c<t.length;c++){let p=gl(t[c]),a=nn,u=qr(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Ys||p instanceof hl||p instanceof Ks){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&OS(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,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=gl(t[c]),u=nn,d=qr(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof Ys||a instanceof hl||a instanceof Ks){if(a.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++),l}function vl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=qr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=qr(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=qr(n[0].roundedCurveCorner,t)*.5),r}function qr(n,t=12){return n&&n instanceof bS?t*2:n&&(n instanceof Ks||n instanceof SS)?1:n&&n instanceof _S?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 l=gl(t[s]),c=qr(l,e),p=nn;for(let a=0;a<=c;a++)if(l instanceof Ys||l instanceof hl||l instanceof Ks){if(l.getPoint(a/c,p),o!==void 0&&PS(o,p,Jn))continue;o===void 0&&(o=Qs),o.copy(p),n.push(p.x,p.y),i++}}return ei(n[0],n[n.length-2],Jn)&&ei(n[1],n[n.length-1],Jn)&&(n.pop(),n.pop()),r&&i>1&&!(ei(n[i-1],n[1],Jn)&&ei(n[i-2],n[0],Jn))&&(n.push(n[0],n[1]),i++),n}import{EventDispatcher as q1,Matrix3 as $1,Vector3 as wc}from"three";import{EventDispatcher as CS,Plane as LS,Shape as tf,Vector2 as Ar,Vector3 as MS,MathUtils as bl,LineCurve as Sl,QuadraticBezierCurve as rf,CubicBezierCurve as Zs}from"three";var wl=new Ar,ES=new Ar,BS=new Ar,DS=new Ar,GS=new Ar,RS=new Ar,ve=class extends tf{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new CS;this.plane=new LS(new MS(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=bl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new ve;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Rt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>ve.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,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],p=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=p;else return a+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],l=e-r;if(l<=s.points.length-1)return s.points[l];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],l=s.points.indexOf(e);if(l>=0)return r+l;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=wl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.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=bl.generateUUID()){let i;e instanceof Ar?i=e:i=new Ar(e,r);let s=new Rt(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,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=vl(this.points,e,!1),this.roundedCurveDivisions=vl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Jd(e,this.curves,r,o,this.autoClose).reduce((s,l)=>s+l,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=qr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(xl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(wl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=l[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){xl(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 l=this.points[o-1];this._applyCurveForPoint(s,l)}}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 l=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],a=l.roundness,u=c&&p&&$d(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,f=l.curveAfter;if(d===void 0||f===void 0)continue;let m=l.roundedCurveBefore,h=l.roundedCurveAfter,g=d.getLength(),x=f.getLength(),v=Math.min(a,g*.499),w=Math.min(a,x*.499),S=Math.min(v,w),b=1-S/g,N=S/x,T=d.getPointAt(b,wl),y=f.getPointAt(N,ES);this._subSplitCurve(d,m,b,T,void 0),this._subSplitCurve(f,h,N,void 0,y);let P;if(this.useCubicForRoundedCorners){let A=yl(T,l.position,y)/2,O=Math.tan(A)*T.distanceTo(l.position),[_,L]=Xd(T,y,O,BS,DS),D=Yd(_,L,l.position),[U,re]=Kd(D,T,y,O,GS,RS);P=new Zs(T.clone(),U.clone(),re.clone(),y.clone())}else P=new rf(T.clone(),l.position.clone(),y.clone());l.roundedCurveCorner=P,this.roundedCurves.splice(i+o,0,P),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof Sl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let l=e,c=r,p=l.getUtoTmapping(o,0),a=Qd(l.v0,l.v1,l.v2,l.v3,p);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return r}clone(){let e=new ve(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],l=e.points[i+1],c=e.points[i+2],p=e.points[i+3],a=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Rt(bl.generateUUID(),new Ar(s,l));f.controls[0].position.set(c,p),f.controls[1].position.set(a,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new ve;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Zs&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof rf&&(i[l]=qd(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,f;u instanceof Zs?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof Sl&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],a=!1;return p instanceof Zs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof Sl&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof tf&&(this.shapeHoles=e.holes.map(i=>{let s=new ve;return s.fromShape(i),s})),this.update(),this}};import{BufferAttribute as ea,BufferGeometry as jS}from"three";var Pe;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Pe||(Pe={}));var ze;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ze||(ze={}));function ce(n,t){if(!n)throw t||"Assertion Failed!"}var se=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){ce(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){ce(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){ce(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){ce(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,l,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),l=n.edgeEval(r,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,e.s)):(s=n.edgeSign(t,r,e),l=-n.edgeSign(t,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,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),l=n.transEval(r,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,e.t)):(s=n.transSign(t,r,e),l=-n.transSign(t,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,o.t)):i.t=(r.t+e.t)/2},n}(),ti=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}(),Js=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}(),sn=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}(),of=function(){function n(){var t=new sn,e=new ti,r=new Js(0),o=new Js(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 Js(0),r=new Js(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;ce(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;ce(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 sn,e=new sn,r=new ti,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 sn;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ti;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 ti;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 sn;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 ti;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,l;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,l=t.next,l.prev=s,s.next=l},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,l,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&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.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,l,c,p;for(i=t,i=t;(o=i.next)!==t;i=o){ce(o.prev===i),c=o.anEdge;do ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c),ce(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ce(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ce(s.prev===l),c=s.anEdge;do ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c),ce(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ce(s.prev===l&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)ce(c.Sym.next===p.Sym),ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Org!==null),ce(c.Dst!==null),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c);ce(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}(),nf=function(){function n(){this.handle=null}return n}(),sf=function(){function n(){this.key=null,this.node=0}return n}(),VS=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 nf,this.handles[r]=new sf;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,ce(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 nf;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new sf}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;ce(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}(),_l=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}(),af=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),FS=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new af,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 af;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}(),zS=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?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var l=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ce(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ce(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 _l;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 Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(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,l=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}l.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(l,o)),n.finishRegion(t,s),l=i.eUp,s=i}return l},n.addRightEdges=function(t,e,r,o,i,s){var l,c,p,a,u=!0;p=r;do ce(se.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,a=i;l=n.regionBelow(c),p=l.eUp.Sym,p.Org===a.Org;)p.Onext!==a&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(a.Oprev,p)),l.windingNumber=c.windingNumber-p.winding,l.inside=n.isWindingInside(t,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,a),n.deleteRegion(t,c),t.mesh.delete(a)),u=!1,c=l,a=p;c.dirty=!0,ce(c.windingNumber-p.winding===l.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=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),l=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+l*r.coords[0],t.coords[1]+=s*e.coords[1]+l*r.coords[1],t.coords[2]+=s*e.coords[2]+l*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(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.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(se.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(ce(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.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(se.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,l=i.Org,c=o.Dst,p=i.Dst,a,u,d=new sn,f,m;if(ce(!se.vertEq(p,c)),ce(se.edgeSign(c,t.event,s)<=0),ce(se.edgeSign(p,t.event,l)>=0),ce(s!==t.event&&l!==t.event),ce(!e.fixUpperEdge&&!r.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),u=Math.max(l.t,p.t),a>u))return!1;if(se.vertLeq(s,l)){if(se.edgeSign(p,s,l)>0)return!1}else if(se.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,l,d),ce(Math.min(s.t,c.t)<=d.t),ce(d.t<=Math.max(l.t,p.t)),ce(Math.min(p.s,c.s)<=d.s),ce(d.s<=Math.max(l.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=se.vertLeq(s,l)?s:l,se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),se.vertEq(d,s)||se.vertEq(d,l)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.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):(se.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),se.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,l,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),l=e.eUp,c=s.eUp,p=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(l.Org,t.event)&&(t.mesh.splice(i.Oprev,l),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.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}se.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,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,l,c;if(o=e.eUp,se.vertEq(o.Org,r)){ce(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.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}ce(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ce(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,l,c,p=new _l;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,l=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(l.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=t.mesh.connect(l.Dnext,e.anEdge);c=a.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);ce(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(t,i,null);l.Onext===s?n.connectRightVertex(t,o,l):n.addRightEdges(t,o,l.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new _l,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 FS(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,l=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,l)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ce(e.fixUpperEdge),ce(++r===1)),ce(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,se.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 VS(i,se.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,ce(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||!se.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}(),US=function(){function n(){this.mesh=new of,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Pe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(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,l,c=[0,0,0],p=[0,0,0],a=[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(l=0,r=m[v],o=f[v],a[0]=r.coords[0]-o.coords[0],a[1]=r.coords[1]-o.coords[1],a[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]=a[1]*u[2]-a[2]*u[1],d[1]=a[2]*u[0]-a[0]*u[2],d[2]=a[0]*u[1]-a[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>l&&(l=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);l<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(a)]=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 l=t.next;l!==t;l=l.next)l.s=this.dot_(l.coords,r),l.t=this.dot_(l.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(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.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&&(se.edgeGoesRight(r.Lprev)||se.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,l=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>r)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===ze.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;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,a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===ze.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.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 l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.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,a=0;i=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){s=0,o=r=l.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[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new of),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=Pe.ODD),e===void 0&&(e=ze.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_(),zS.computeInterior(this,s);var l=this.mesh;return e===ze.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===ze.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function po(n){var t=n.windingRule,e=t===void 0?Pe.ODD:t,r=n.elementType,o=r===void 0?ze.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,p=n.normal,a=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 US;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,a,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var FB=Pe.ODD,zB=Pe.NONZERO,UB=Pe.POSITIVE,jB=Pe.NEGATIVE,kB=Pe.ABS_GEQ_TWO,HB=ze.POLYGONS,WB=ze.CONNECTED_POLYGONS,qB=ze.BOUNDARY_CONTOURS;var an=class extends jS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:ze.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)),l,c=!0,p=!0,a,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(a!==void 0&&x!==a&&(c=!1),u!==void 0&&v!==u&&(p=!1),a=x,u=v,!c&&!p)break}!c&&!p&&(l=po({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=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new ea(new Float32Array(d*3),3),this._normalAttribute=new ea(new Float32Array(d*3),3),this._uvAttribute=new ea(new Float32Array(d*2),2),this._indexAttribute=new ea(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,g=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let N=S*2,T=l.vertices[N+0],y=l.vertices[N+1];T<m&&(m=T),T>h&&(h=T),y<g&&(g=y),y>x&&(x=y)}let v=h-m,w=x-g;for(let S=0,b=d;S<b;S++){let N=S*2,T=l.vertices[N+0],y=l.vertices[N+1],P=(T-m)/v,A=(y-g)/w;this._positionAttribute.setXYZ(S,T,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,P,A)}for(let S=0,b=f;S<b;S++){let N=S*3,T=l.elements[N+0],y=l.elements[N+1],P=l.elements[N+2];this._indexAttribute.setX(N+0,T),this._indexAttribute.setX(N+1,y),this._indexAttribute.setX(N+2,P)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new an(this._shape,this._curveSegments);return e.userData=qn(this.userData),e}};import{BufferAttribute as ra,BufferGeometry as kS}from"three";var ta=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*ta.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*ta.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=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);l.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=l,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)}},ri=ta;ri.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Tl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),ln=class extends kS{constructor(e,r,o=0,i=12,s=3,l=Pe.ODD){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 c=this._shape.extractShapePointsToFlatArray([],i),p=this._shape.shapeHoles.map(y=>{let P=y.extractShapePointsToFlatArray([],i),A=[];for(let O=P.length-1;O>=1;O-=2){let _=P[O-1],L=P[O-0];A.push(_,L)}return A}),a=po({windingRule:l,elementType:ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),u=po({windingRule:Pe.ODD,elementType:ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...p]});if(!a)throw new Error("error generating geometry");let d=a.elementCount;if(u){a.elementCount+=u.elementCount;for(let y=0;y<u.elements.length;y++){let P=u.elements[y],A=y%2===0?a.vertexCount:0;a.elements.push(P+A)}for(let y=0;y<u.vertexIndices.length;y++){let P=u.vertexIndices[y],A=a.vertexCount;a.vertexIndices.push(P+A)}for(let y=0;y<u.vertices.length;y++){let P=u.vertices[y];a.vertices.push(P)}}let f=1/0,m=-1/0,h=1/0,g=-1/0;for(let y=0,P=a.vertexCount;y<P;y++){let A=y*2,O=a.vertices[A+0],_=a.vertices[A+1];O<f&&(f=O),O>m&&(m=O),_<h&&(h=_),_>g&&(g=_)}this._minX=f,this._minY=h,this._width=m-f,this._height=g-h;let x=a.vertexCount*2*(2+this._bevelSegments);this._buffer=new ri(x);let v=[],w=[];for(let y=a.elementCount-1;y>=0;y--){let P=y>=d,A=y*2,O=a.elements[A+0],_=a.elements[A+1],L=O+_,D={start:O,count:_,normals:[],continuous:[],concave:[]},U=O,re=L-1,Q=O+1,le=this._shape.roundedCurves.length;do{let F=U-O,M=a.vertices[re*2+0],B=a.vertices[re*2+1],E=a.vertices[U*2+0],j=a.vertices[U*2+1],Z=a.vertices[Q*2+0],k=a.vertices[Q*2+1],V=E-M,R=j-B,z=Math.sqrt(V*V+R*R);V/=z,R/=z;let J=E-Z,oe=j-k,ie=Math.sqrt(J*J+oe*oe);J/=ie,oe/=ie,D.normals[F*2+0]=-oe,D.normals[F*2+1]=J,D.concave[F]=V*oe-R*J>0;let te=a.vertexIndices[U];if(Array.isArray(te))D.continuous[F]=!1;else{let[ee,K]=this._shape.getCurveIndexFromVertexId(te-1,!0);if(K>0&&K<1)D.continuous[F]=!0;else{let X=K===1?ee+1:ee-1;X=(X+le)%le;let fe=K===1?0:1,pe=this._shape.roundedCurves[ee].getTangent(K),ge=this._shape.roundedCurves[X].getTangent(fe);D.continuous[F]=pe.dot(ge)>.95}}P&&(D.normals[F*2+0]*=-1,D.normals[F*2+1]*=-1),[re,U,Q]=[U,Q,Q+1],Q>=L&&(Q-=_)}while(Q!==O+1);let H=[];H.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(O*2,L*2),vertexCount:_,vertexIndices:new Array(_).fill(!0).map((F,M)=>[M,M]),elements:[0,_],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(O*2,L*2)});for(let F=1;F<=this._bevelSegments;F++){let M=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(M))*this._bevelSize,E=[],j=[],Z=[],k=[],V=0;for(let z=0;z<_;z++){let J=z*2,oe=(z-1+_)%_*2,ie=a.vertices[D.start*2+J+0],te=a.vertices[D.start*2+J+1],ee=-D.normals[oe+0]*B,K=-D.normals[oe+1]*B,X=-D.normals[J+0]*B,fe=-D.normals[J+1]*B;if(D.concave[z]||!D.concave[z]&&P){let pe=Math.atan2(K,ee),ge=Math.atan2(fe,X);ge>pe&&(ge-=Math.PI*2);let We=ge-pe;if(D.continuous[z]||P){let we=pe+We/2,Te=Math.cos(we)*B,Ie=Math.sin(we)*B;E[2*V+0]=ie+Te*(P?-1:1),E[2*V+1]=te+Ie*(P?-1:1),k[V]=z,V++}else{let we=Math.max(1,Math.floor(i/4*Math.abs(We)/Math.PI));for(let Te=0;Te<=we;Te++){let Ie=pe+We*(Te/we),Tt=Math.cos(Ie)*B,Or=Math.sin(Ie)*B;E[2*V+0]=ie+Tt,E[2*V+1]=te+Or,k[V]=z,V++}}}else E[2*V+0]=ie+ee,E[2*V+1]=te+K,k[V]=z,j[z]=V,V++,E[2*V+0]=ie,E[2*V+1]=te,k[V]=z,V++,E[2*V+0]=ie+X,E[2*V+1]=te+fe,k[V]=z,Z[z]=V,V++}let R=po({windingRule:Pe.POSITIVE,elementType:ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[E],edgeCreateCallback:z=>{let oe=z.Org.idx,ie=k[oe],te=k[(oe+1)%k.length];z.idx=[ie,te],z.Sym.idx=[te,ie]},vertexIdCallback:z=>{let J=z.Lprev.idx;return[J?J[1]:0,z.idx[0]]}});if(!R)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!R.vertexCount)break;for(let z=0;z<R.vertexIndices.length;z++){let[J,oe]=R.vertexIndices[z];if(J===oe)continue;let ie=oe;oe<J&&(ie+=_);for(let te=J;te<ie;te++){let ee=te%_,K=(te+1)%_;if(!D.continuous[ee]||!D.continuous[K]){R.vertexIndices[z]=[J,ee],R.vertexIndices.splice(z+1,0,[K,oe]),R.vertices.splice((z+1)*2,0,R.vertices[z*2],R.vertices[z*2+1]);break}}}H.push({bevelI:F,angle:M,size:B,boundary:R,reverseMap:k,insetPoints:E})}let W=(F,M,B)=>{let E=0,j=F.boundary.vertexIndices.length;for(;E<j&&B(F.boundary.vertexIndices[M]);)M=(M+1)%j,E++;return E},q=v.length;for(let F=1;F<H.length;F++){let M=H[F-1],B=H[F],E=M.boundary.vertexIndices.length,j=B.boundary.vertexIndices.length;if(!E||!j)break;let Z=D.concave.length,k=0,V=Tl(k,_);for(;!M.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=Tl(k,_);let R=M.boundary.vertexIndices.findIndex(V),z=B.boundary.vertexIndices.findIndex(V);do R=(R+1)%E;while(V(M.boundary.vertexIndices[R]));do z=(z+1)%j;while(V(B.boundary.vertexIndices[z]));k=(k+1)%_;let J=k,oe=this.buildBevelVert(D,M,(R-1+E)%E),ie=this.buildBevelVert(D,B,(z-1+j)%j),te=oe,ee=ie,K,X,fe=!1;do{V=Tl(k,_);let pe=W(M,R,V),ge=W(B,z,V),We=fe;if(fe=!1,pe&&!ge){for(let we=0;we<pe;we++)K=this.buildBevelVert(D,M,(R+we)%E,we/(pe-1)),v.push(te.topN,K.topP,ee.topN),v.push(K.bottomP,te.bottomN,ee.bottomN),te=K;fe=!0}else if(!pe&&ge)for(let we=0;we<ge;we++)X=this.buildBevelVert(D,B,(z+we)%j,we/(ge-1)),v.push(ee.topN,te.topP,X.topP),v.push(te.bottomP,ee.bottomN,X.bottomP),ee=X;else if(pe&&ge)if(K=this.buildBevelVert(D,M,R,0),X=this.buildBevelVert(D,B,z,0),We?(v.push(te.topN,X.topP,ee.topN),v.push(te.topN,K.topP,X.topP),v.push(X.bottomP,te.bottomN,ee.bottomN),v.push(X.bottomP,K.bottomP,te.bottomN)):(v.push(ee.topN,te.topN,K.topP),v.push(ee.topN,K.topP,X.topP),v.push(K.bottomP,te.bottomN,ee.bottomN),v.push(K.bottomP,ee.bottomN,X.bottomP)),te=K,ee=X,pe===ge)for(let we=1;we<pe;we++)K=this.buildBevelVert(D,M,(R+we)%E,we/(pe-1)),X=this.buildBevelVert(D,B,(z+we)%j,we/(ge-1)),v.push(te.topN,K.topP,ee.topN),v.push(ee.topN,K.topP,X.topP),v.push(K.bottomP,te.bottomN,ee.bottomN),v.push(K.bottomP,ee.bottomN,X.bottomP),te=K,ee=X;else if(pe>ge){let we=pe/ge,Te=0;for(let Ie=1;Ie<pe;Ie++)K=this.buildBevelVert(D,M,(R+Ie)%E,Ie/(pe-1)),v.push(te.topN,K.topP,ee.topN),v.push(K.bottomP,te.bottomN,ee.bottomN),te=K,Ie>(Te+1)*we&&(Te++,X=this.buildBevelVert(D,B,(z+Te)%j,Te/(ge-1)),v.push(ee.topN,K.topP,X.topP),v.push(K.bottomP,ee.bottomN,X.bottomP),ee=X)}else{let we=ge/pe,Te=0;for(let Ie=1;Ie<ge;Ie++)X=this.buildBevelVert(D,B,(z+Ie)%j,Ie/(ge-1)),v.push(ee.topN,K.topP,X.topP),v.push(K.bottomP,ee.bottomN,X.bottomP),ee=X,Ie>(Te+1)*we&&(Te++,K=this.buildBevelVert(D,M,(R+Te)%E,Te/(pe-1)),v.push(te.topN,K.topP,ee.topN),v.push(K.bottomP,te.bottomN,ee.bottomN),te=K)}R=(R+pe)%E,z=(z+ge)%j,k=(k+1)%Z}while(k!==J)}{let F=H[0];for(let M=0,B=F.boundary.vertexCount;M<B;M++){let E=this.buildBevelVert(D,F,M),j=this.buildBevelVert(D,F,(M+1)%B);v.push(j.topP,E.topN,E.bottomN),v.push(j.topP,E.bottomN,j.bottomP)}}if(P){let F=[];for(let M=v.length-1;M>=q+2;M-=3){let B=v[M-2],E=v[M-1],j=v[M-0];F.push(j,E,B)}v.splice(q,v.length-q,...F)}if(P){let F=[];for(let M=H[H.length-1].boundary.vertices.length-1;M>=1;M-=2){let B=H[H.length-1].boundary.vertices[M-1],E=H[H.length-1].boundary.vertices[M-0];F.push(B,E)}w.push(F)}if(!P){let F=H[H.length-1],M=po({windingRule:H.length>1?Pe.POSITIVE:Pe.ODD,elementType:ze.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...w]});if(!M)throw new Error("Error generating geometry for surface");p.length===0&&Object.assign(this,{capStartIndex:v.length});for(let B=0;B<M.elementCount*3;B+=3){let E=this.buildSurfaceVert(M,M.elements[B+0]),j=this.buildSurfaceVert(M,M.elements[B+1]),Z=this.buildSurfaceVert(M,M.elements[B+2]);v.push(E.top,j.top,Z.top),v.push(Z.bottom,j.bottom,E.bottom)}}this.vertexCache={}}this._buffer.shrink();let S=new ra(Uint32Array.from(v),1),b=new ra(this._buffer.positions,3),N=new ra(this._buffer.normals,3),T=new ra(this._buffer.uvs,2);b.needsUpdate=!0,N.needsUpdate=!0,T.needsUpdate=!0,S.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",N),this.setAttribute("uv",T),this.setIndex(S)}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],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),a=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[u+0]=l,this._buffer.uvs[u+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[u+2]=l,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[l,c]=r.boundary.vertexIndices[o],p,a,u,d;l!==c?(a=l,p=c,d=!1,u=e.continuous[a]&&e.continuous[p]):(p=l,a=(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=a*2,v=r.boundary.vertices[h+0],w=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,N=(w-this._minY)/this._height,T=e.normals[g+0],y=e.normals[g+1],P=e.normals[x+0],A=e.normals[x+1];if(d){let U=P-T,re=A-y;T=T+U*(1-i),y=y+re*(1-i);let Q=Math.sqrt(T*T+y*y);T/=Q,y/=Q}let O=this._buffer.get(u?2:4),_=O*3,L=O*2,D={i:o,fi:p,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1};return this._buffer.positions[_+0]=v,this._buffer.positions[_+1]=w,this._buffer.positions[_+2]=this._depth-S,this._buffer.normals[_+0]=T*f,this._buffer.normals[_+1]=y*f,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=b,this._buffer.uvs[L+1]=N,this._buffer.positions[_+3]=v,this._buffer.positions[_+4]=w,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=T*f,this._buffer.normals[_+4]=y*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=N,this._buffer.uvs[L+3]=b,u||(O+=2,_+=6,L+=4,D.topP=O+0,D.bottomP=O+1,this._buffer.positions[_+0]=v,this._buffer.positions[_+1]=w,this._buffer.positions[_+2]=this._depth-S,this._buffer.normals[_+0]=P*f,this._buffer.normals[_+1]=A*f,this._buffer.normals[_+2]=m,this._buffer.uvs[L+0]=b,this._buffer.uvs[L+1]=N,this._buffer.positions[_+3]=v,this._buffer.positions[_+4]=w,this._buffer.positions[_+5]=S,this._buffer.normals[_+3]=P*f,this._buffer.normals[_+4]=A*f,this._buffer.normals[_+5]=-m,this._buffer.uvs[L+2]=N,this._buffer.uvs[L+3]=b),this.vertexCache[s]=D,D}clone(){let e=new ln(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qn(this.userData),e}};var Je=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,windingRule:Pe.ODD},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,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof ve?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new ve(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new ve(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return t<=0?l=new an(n.shape,o,{windingRule:s}):l=new ln(n.shape,t,e,o,r,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{Mesh as H1,Matrix4 as W1}from"three";import{ConeBufferGeometry as qS}from"three";import{BufferGeometry as HS,CylinderBufferGeometry as WS,Float32BufferAttribute as Al,Vector2 as Vt,Vector3 as oa}from"three";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: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:l,thetaLength:c,radiusTop:p,radiusBottom:a,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new oi(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,f):m=new WS(p,a,r,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function $r(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function lf(n){return new Vt(n.y,-n.x)}var oi=class extends HS{constructor(t,e,r,o,i,s,l,c,p,a,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,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,a=0);let m=[],h=[],g=[],x=[],v=0,w=r/2,S=new oa,b=new oa;f&&t==0&&(t=p),f&&e==0&&(e=a);let N=new Vt(t,w),T=new Vt(e,-w),y=null,P=null,A=null,O=null,_=N.clone().sub(T),L=0,D=0,U=0;d>0&&(L=Math.min(t,e)*(1-d),D=t-L,U=e-L);let re=N.clone();re.x-=L;let Q=Math.PI-_.angle(),le=_.angle(),H=Math.tan(le/2),W=Math.tan(Q/2),q=H+W,F=d?q:W,M=d?q:H;if(p=Math.min(p,(t-D)/F,_.length()/q),a=Math.min(a,(e-U)/M,_.length()/q),p>0){let V=p/H;y=N.clone().sub(new Vt(V,p)),d&&(A=y.clone(),A.x-=L-q*p),N.sub(_.clone().setLength(V))}if(a>0){let V=a/W;P=T.clone().sub(new Vt(V,-a)),T.add(_.clone().setLength(V)),d&&(O=P.clone(),O.x-=L-q*a,re.sub(_.clone().setLength(V)))}_=N.clone().sub(T);let B=_.length()<.5,E=[];for(let V=0;V<=o;V++){let R=[],z=V/o,J=z*c+l,oe=new Vt(Math.sin(J),Math.cos(J));O&&P?(j(R,z,oe,Q,a,O,-1,!0),j(R,z,oe,le,a,P,-1,!1)):P?(Z(R,oe,P.x,0,-1),j(R,z,oe,le,a,P,-1,!1)):s||Z(R,oe,e,U,-1);let ie=lf(_).normalize();if($r(ie,oe,S),!B)for(let te=0;te<=i;te++){let ee=te/i,K=_.clone().multiplyScalar(ee).add(T);$r(K,oe,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(z,.5+b.y/r),R.push(v++)}if(A&&y?(j(R,z,oe,Q,p,y,1,!1),j(R,z,oe,le,p,A,1,!0)):y?(j(R,z,oe,Q,p,y,1,!1),Z(R,oe,y.x,0,1)):s||Z(R,oe,t,D,1),d&&!B){let te=lf(_).multiplyScalar(-1).normalize();$r(te,oe,S);for(let ee=0;ee<=i;ee++){let K=ee/i,X=_.clone().multiplyScalar(-K).add(re);$r(X,oe,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(z,.5+b.y/r),R.push(v++)}}d&&!s&&R.push(R[0]),E.push(R)}for(let V=0;V<E.length-1;V++)for(let R=0;R<E[0].length-1;R++){if(s&&d&&R==i)continue;let z=E[V][R],J=E[V+1][R],oe=E[V+1][R+1],ie=E[V][R+1],te=h[oe*3+0],ee=h[oe*3+2];m.push(z,J,ie),(te!=0||ee!=0)&&m.push(J,oe,ie)}c<Math.PI*2&&(k(-1,E[0],l),k(1,E[E.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Al(h,3)),this.setAttribute("normal",new Al(g,3)),this.setAttribute("uv",new Al(x,2));function j(V,R,z,J,oe,ie,te,ee){for(let K=0;K<u+1;K++){let X=K/u,fe=te<0?X:1-X;ee&&(fe-=1),fe*=J;let pe=new Vt(Math.sin(fe),Math.cos(fe)*te),ge=pe.clone().multiplyScalar(oe).add(ie);$r(ge,z,b),h.push(b.x,b.y,b.z),$r(pe,z,S),g.push(S.x,S.y,S.z),x.push(R,.5+b.y/r),V.push(v++)}}function Z(V,R,z,J,oe){let ie=new oa,te=new Vt,ee=[z,J];oe<0&&ee.reverse();for(let K of ee)te.set(K,w*oe),$r(te,R,ie),h.push(ie.x,ie.y,ie.z),g.push(0,oe,0),x.push(.5,.5),V.push(v++)}function k(V,R,z){let J=new Vt(Math.sin(z),Math.cos(z)),oe=new Vt(-Math.cos(z),Math.sin(z)),ie=new oa,te=V<0?(X,fe,pe)=>m.push(X,fe,pe):(X,fe,pe)=>m.push(X,pe,fe),ee=new Vt((t+e+D+U)/4,0);$r(ee,J,ie),h.push(ie.x,ie.y,ie.z),g.push(oe.x,0,oe.y),x.push(.5,.5);let K=v++;for(let X of R){let fe=h.slice(X*3,X*3+3);h.push(...fe),g.push(oe.x,0,oe.y);let pe=x.slice(X*2,X*2+2);x.push(...pe),v++}for(let X=K+1;X<v-1;X++)te(K,X,X+1);te(K,v-1,K+1)}}};var uf=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:l,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,d;return p>0||a>0||c<360?d=new oi(0,t/2,r,o,i,s,l,c*Math.PI/180,p,a,u,0,!0):d=new qS(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as $S,BufferGeometry as XS,Float32BufferAttribute as Nl,Vector3 as ni}from"three";var pf=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:l,cornerSegments:c}=n.parameters,p;return l==0?p=new $S(t,e,r,o,i,s):p=new Pl(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},Il=Math.PI/2,Pl=class extends XS{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=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),l=Math.min(l,t/2,e/2,r/2);let a=[],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),l>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(a),this.setAttribute("position",new Nl(u,3)),this.setAttribute("normal",new Nl(d,3)),this.setAttribute("uv",new Nl(f,2));function g(w,S,b,N,T,y,P,A,O,_,L){let D=(y-2*l)/O,U=(P-2*l)/_,re=y/2-l,Q=P/2-l,le=A/2,H=O+1,W=_+1,q=0,F=0,M=new ni;for(let B=0;B<W;B++){let E=B*U-Q;for(let j=0;j<H;j++){let Z=j*D-re;M[w]=Z*N,M[S]=E*T,M[b]=le,u.push(M.x,M.y,M.z),M[w]=0,M[S]=0,M[b]=A>0?1:-1,d.push(M.x,M.y,M.z),f.push(j/O),f.push(1-B/_),q+=1}}for(let B=0;B<_;B++)for(let E=0;E<O;E++){let j=m+E+H*B,Z=m+E+H*(B+1),k=m+(E+1)+H*(B+1),V=m+(E+1)+H*B;a.push(j,Z,V),a.push(Z,k,V),F+=6}p.addGroup(h,F,L),h+=F,m+=q}function x(w,S,b,N,T,y,P,A,O,_,L){let D=(P-2*l)/_,U=P/2-l,re=A/2-l,Q=O/2,le=_+1,H=0,W=0,q=new ni,F=new ni;for(let M=0;M<c+1;M++){let B=M/c*Il,E=Math.sin(B)*l,j=(1-Math.cos(B))*l,Z=Math.sin(B),k=Math.cos(B);q[S]=(re+E)*T,q[b]=(Q-j)*y,F[w]=0,F[S]=Z*Math.sign(q[S]),F[b]=k*Math.sign(q[b]);for(let V=0;V<le;V++){let R=V*D-U;q[w]=R*N,u.push(q.x,q.y,q.z),d.push(F.x,F.y,F.z),f.push(V/_),f.push(0),H+=1}}for(let M=0;M<c;M++)for(let B=0;B<_;B++){let E=m+B+le*M,j=m+B+le*(M+1),Z=m+(B+1)+le*(M+1),k=m+(B+1)+le*M;a.push(E,j,k),a.push(j,Z,k),W+=6}p.addGroup(h,W,L),h+=W,m+=H}function v(w,S,b){let N=new ni,T=new ni(t/2,e/2,r/2);T.subScalar(l);let y=[],P=w*S*b>0?(O,_,L)=>a.push(O,_,L):(O,_,L)=>a.push(O,L,_);for(let O=0;O<=c;O++){let _=[],L=Il*(1-O/c),D=Math.cos(L),U=Math.sin(L),re=0;for(let Q=0;Q<=O;Q++){let le=Math.cos(re),H=Math.sin(re);N.x=D*le,N.y=U,N.z=D*H;let W=T.clone().addScaledVector(N,l);u.push(w*W.x,S*W.y,b*W.z),d.push(w*N.x,S*N.y,b*N.z),f.push(0,0),_.push(m++),re+=Il/O}y.push(_)}let A=y.length-1;for(let O=0;O<A;O++){let _=y[O],L=y[O+1],D=_.length-1;P(_[0],L[1],L[0]);for(let U=1;U<=D;U++)P(_[U-1],_[U],L[U]),P(_[U],L[U+1],L[U])}}}};import{BufferGeometry as YS,Float32BufferAttribute as Ol,Triangle as KS,Vector3 as Nr,Vector2 as Cl}from"three";var Xr=class extends YS{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new Ol(l,3)),this.setAttribute("normal",new Ol(p,3)),this.setAttribute("uv",new Ol(c,2));return;function a(){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 Nr,h=m.clone(),g=new KS,x=i*o,v=o-x,w=s+1,S=new Nr,b=(H,W)=>S.subVectors(H,W).normalize(),N=(H,W)=>Array(H).fill(void 0).map(W),T=N(t.length/3,(H,W)=>new Nr().fromArray(t,W*3).setLength(o)),y=[],P=1e6;for(let H=0;H<T.length;H++){let W=T[H],q=[],F,M,B,E=1e10,j=-1;for(;(j=e.indexOf(H,j+1))!=-1;){let R=j-j%3;F=e[R+(j+1)%3],M=e[R+(j+2)%3],B=W.distanceToSquared(T[F]),E=Math.min(E,B),q.push([F,M,B])}E+=1e-6;let Z=[],k=0,V=q.length;for(let R=0;R<V;R++){[F,M,B]=q[k];let z=y[F]?.includes(H)==!0;B<=E&&Z.push(F+ +z*P),k=q.findIndex(J=>J[0]==M)}y.push(Z)}let A=[];{let H=0,W=0,q,F,M=f==3;for(let B=0;B<=s;B++){q=B*(B+1)/2,F=(B+1)*(B+2)/2;for(let E=0;E<s-B;E++)[H,W]=[q+E+B+2,F+E+B+3],A.push(q,F,...M?[W,q]:[H,F],W,H),[q,F]=[H,W];A.push(q,F,q+s+2)}}let O=m.clone(),_=m.clone(),L=m.clone(),D=m.clone(),U=m.clone(),re=[],Q=N(T.length,()=>N(f,()=>m.clone()));for(let H=0;H<T.length;H++){m.copy(T[H]).normalize(),O.copy(m).multiplyScalar(v);let W=y[H];for(let Z=0;Z<W.length;Z++){let k=W[Z],V=W[(Z+1)%f];g.setFromPointsAndIndices(T,H,k%P,V%P),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(O,Q[H][Z])}let q=[],F=[],M=[],B=new Nr;s==0&&[...Q[H]].reduce((Z,k)=>Z.add(k),B).multiplyScalar(1/f);for(let Z=0;Z<f;Z++){let k=[],V=(Z-1+f)%f,R=Q[H][V],z=Q[H][Z];m.copy(R).sub(O),h.copy(z).sub(O);let J=O.angleTo(m),oe=m.angleTo(h),ie=Math.cos(J)*x;s==0?_.copy(B):_.copy(O).setLength(v+ie),F.push(ie);let te=[_,R,z];for(let ee=0;ee<2;ee++){let K=te[ee],X=te[ee+1];D.subVectors(K,O),U.subVectors(X,O),L.crossVectors(D,U).normalize();for(let fe=0;fe<w;fe++){let pe=[J,oe][ee]*fe/w;m.copy(D).applyAxisAngle(L,pe).add(O),q.push(m.clone()),ee&&(b(m,O),k.push([fe==0?K:m.clone(),S.clone()]))}ee&&(b(X,O),k.push([X,S.clone()]))}M.push(k)}re.push(M);let E=2*w,j=2;for(let Z=0;Z<f;Z++){let k=E*Z,V=E*((Z+1)%f),R=[q[k]];for(let J=1;J<w;J++){D=q[k+J],U=q[V+J],R.push(D);for(let oe=1,ie=J-j+1;oe<=ie;oe++)m.lerpVectors(D,U,oe/(ie+1)),m.sub(O).setLength(F[Z]).add(O),R.push(m.clone());R.push(U)}for(let J=0;J<w;J++)R.push(q[J+w+k]);R.push(q[V+w]);let z=A.map(J=>R[J]);l.push(...z.map(J=>[J.x,J.y,J.z]).flat()),p.push(...z.map(J=>(b(J,O),[S.x,S.y,S.z])).flat())}}let le=[];for(let H=0;H<y.length;H++)for(let W=0;W<f;W++){let q=y[H][W];if(q<P){let F=y[q].findIndex(E=>E%P==H),M=re[H][W],B=re[q][F];for(let E=0;E<w;E++){let j=M[E],Z=B[w-E],k=M[E+1],V=B[w-(E+1)];[j,Z,k,k,Z,V].forEach(R=>{l.push(R[0].x,R[0].y,R[0].z),p.push(R[1].x,R[1].y,R[1].z)})}le.push(M[0][0],B[w][0],M[w][0],B[0][0])}}for(;le.length;){let H,W,q,F;[H,W]=le.splice(0,2);let M=[H];for(;H!=W;)M.push(W),q=le.indexOf(W),F=q%2,W=le.splice(q-F,2)[1-F];S.subVectors(M[0],M[1]).cross(m.subVectors(M[0],M[2])).normalize();let B=S.dot(M[0])<0;B&&S.negate();for(let E=1;E<=M.length-2;E++)[M[E+ +B],M[E+1-+B],M[0]].forEach(j=>{l.push(j.x,j.y,j.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new Nr;for(let T=0;T<l.length;T+=3){d.x=l[T+0],d.y=l[T+1],d.z=l[T+2];let y=b(d)/2/Math.PI+.5,P=N(d)/Math.PI+.5;c.push(y,1-P)}let f=new Nr,m=new Nr,h=new Nr,g=new Nr,x=new Cl,v=new Cl,w=new Cl,S=(T,y,P,A)=>{A<0&&T.x===1&&(c[y]=T.x-1),P.x===0&&P.z===0&&(c[y]=A/2/Math.PI+.5)};for(let T=0,y=0;T<l.length;T+=9,y+=6){f.set(l[T+0],l[T+1],l[T+2]),m.set(l[T+3],l[T+4],l[T+5]),h.set(l[T+6],l[T+7],l[T+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),w.set(c[y+4],c[y+5]),g.copy(f).add(m).add(h).divideScalar(3);let P=b(g);S(x,y+0,f,P),S(v,y+2,m,P),S(w,y+4,h,P)}for(let T=0;T<c.length;T+=6){let y=c[T+0],P=c[T+2],A=c[T+4],O=Math.max(y,P,A),_=Math.min(y,P,A);O>.9&&_<.1&&(y<.2&&(c[T+0]+=1),P<.2&&(c[T+2]+=1),A<.2&&(c[T+4]+=1))}function b(T){return Math.atan2(T.z,-T.x)}function N(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as QS}from"three";var 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,l=o===0&&i!==0?new ii(t*.5,i,s):new QS(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},ii=class extends Xr{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],l=[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,l,c,t,e,r),this.type=c}static fromJSON(t){return new ii(t.radius,t.corner,t.cornerSides)}};var Ml=Math.PI*2;function Ll({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function ZS(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 JS(n,t,e,r,o,i,s,l,c,p){let a=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*d;m<0&&(m=0),m/=a*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*l,g=m*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,w=(s-h)/o,S=(l-g)/i,b=(-s-h)/o,N=(-l-g)/i,T=ff(1,0,w,S),y=ff(w,S,b,N);return!p&&y>0&&(y-=Ml),p&&y<0&&(y+=Ml),{centerx:x,centery:v,ang1:T,ang2:y}}function mf({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,a=(t-r)/2;if(p===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=JS(n,t,e,r,o,i,p,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,x=Math.abs(m)/(Ml/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);m/=v;for(let w=0;w<v;w++)c.push(ZS(f,m)),f+=m;return c.map(w=>{let{x:S,y:b}=Ll(w[0],o,i,h,g),{x:N,y:T}=Ll(w[1],o,i,h,g),{x:y,y:P}=Ll(w[2],o,i,h,g);return{x1:S,y1:b,x2:N,y2:T,x:y,y:P}})}import{MathUtils as gf,Vector2 as yf}from"three";var xf=Math.PI*2,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:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof ve?n.shape:new ve,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:l,extrudeBevelSegments:c}=n.parameters,p=n.shape,a=t*.5,u=e*.5,d=ew(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=Je.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function ew(n,t,e,r,o,i){if(r>=xf)return o>30||o%4===0?(rw(n,t,e,i),Math.round(o/4)):hf(n,r,o,t,e,i);let s={x:0,y:e},l=r+Math.PI*.5,c={x:Math.cos(l)*t,y:Math.sin(l)*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?tw(n,s.x,s.y,p,o,t,e,i):hf(n,r,o,t,e,i)}function tw(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(cn(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],f=cn(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 l>0?bf(n,i,s,l):n.addPoint(cn(0,0)),c}function hf(n,t,e,r,o,i){let s=-t/e;for(let l=0;l<=e;l++){let c=s*l,p=Math.sin(c)*r,a=Math.cos(c)*o;n.addPoint(cn(p,a))}return t<xf?i>0?bf(n,r,o,i):n.addPoint(cn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Sf(n,r,o,i)),1}function rw(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(na(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(na(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(na(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(na(o,i-e,o+l,i-e,o-l,i-e)),r>0&&Sf(n,t,e,r)}function cn(n,t){return new Rt(gf.generateUUID(),new yf(n,t))}function na(n,t,e,r,o,i){let s=cn(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function bf(n,t,e,r){wf(n,t,e,r).forEach(i=>n.addPoint(i))}function Sf(n,t,e,r){let o=wf(n,t,e,r),i=new ve;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function wf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new yf(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=gf.generateUUID(),p}).reverse();return l.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(p)}),l}import{BufferGeometry as ow,Float32BufferAttribute as El,Vector3 as _f}from"three";var Tf=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:l,pathType:c,pathSegments:p,cornerRadius:a,cornerSegments:u}=n.parameters,d=new si(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},si=class extends ow{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,p=1,a=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new _f,h=new _f,g=m(),x=m(),v=m(),w,S,b,N,T,y,P,A,O=m(),_=m(),L=m(),D=m(),U=m(),re=m(),Q=m(),le=m(),H=r-2*c+.001,W=H/s,q=Math.ceil(l*s),F=q+1,M=H/q,B=-H/2,E=a+1,j=2*Math.PI/a,Z=Math.PI/2/d,k=.01,V=Math.min((1-u/100)*c,c-k),R=c-V,z=0,J=2,oe=d*J+J,ie=E*oe/J,te=ie+E*F,ee=E*(F+oe),[K,X,fe]=[3,3,2].map(Ge=>Array(ee*Ge).fill(0)),pe=[],ge=i-c;function We(Ge,xt){let qt=Math.PI/2;y=xt*M,A=2*Math.PI*(y%W)/W+qt,y+=B,P=Math.sin(A)*ge,T=Math.cos(A)*ge,t?Ge.set(T,P,y):Ge.set(T,y,P)}We(h,-1e-10),We(g,0),O.copy(h),We(h,1);let we=h.distanceTo(g),Te=R+V,Ie=we*q+2*Te,Tt=V,Or=Ie-Te;for(let Ge=0;Ge<=q;Ge++){We(x,Ge),le.subVectors(x,O).normalize(),O.copy(x),re.copy(x).setComponent(+t+1,0).normalize(),Q.crossVectors(le,re).normalize();let xt=Ge===0,qt=Ge===q,Ah=xt?3*Math.PI/2:Z,Nh=xt?Tt:Or,Ih=xt?E:te,Ph=xt?0:ee-E,Oh=le.clone().multiplyScalar(xt?-R:R).add(x),Ch=le.clone().multiplyScalar(xt?-1:1).normalize();for(let xr=0;xr<E;xr++){let Oc=xr*j;if(_.addVectors(h.copy(re).multiplyScalar(c*Math.cos(Oc)),g.copy(Q).multiplyScalar(c*Math.sin(Oc))),L.copy(_).normalize(),xt||qt){f||(z=Ph+xr,[0,1,2].forEach(ct=>{K[z*3+ct]=Oh.getComponent(ct),X[z*3+ct]=Ch.getComponent(ct)}),fe[z*2]=+qt,fe[z*2+1]=xr/a),g.copy(L).multiplyScalar(V),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let Ba=ct*Z+Ah;D.addVectors(h.copy(le).multiplyScalar(R*Math.sin(Ba)),g.copy(L).multiplyScalar(R*Math.cos(Ba))),U.copy(D).normalize(),g.addVectors(v,D),D.normalize(),z=Ih+ct*E+xr,[0,1,2].forEach(ki=>{K[z*3+ki]=g.getComponent(ki),X[z*3+ki]=U.getComponent(ki)});let Lh=+xt+Math.sin(Ba);fe[z*2]=(Nh+R*Lh)/Ie,fe[z*2+1]=xr/a}}g.addVectors(x,_),z=ie+Ge*E+xr,[0,1,2].forEach(ct=>{K[z*3+ct]=g.getComponent(ct),X[z*3+ct]=L.getComponent(ct)}),fe[z*2]=(Te+Ge*we)/Ie,fe[z*2+1]=xr/a}}let yt=F+2*d+J,wo=1,[Ui,ji]=f?[wo,wo+F-1]:[0,yt-1];for(let Ge=Ui;Ge<=ji-1;Ge++){let xt=f&&Ge===ji-1;for(let qt=0;qt<E-1;qt++)w=Ge*E+qt,S=w+1,b=(xt?qt:w)+E,N=(xt?qt+1:S)+E,Ge===0?pe.push(S,N,b):Ge===yt-2?pe.push(w,S,b):pe.push(w,S,b,S,N,b)}this.setIndex(pe),this.setAttribute("position",new El(K,3)),this.setAttribute("normal",new El(X,3)),this.setAttribute("uv",new El(fe,2))}};import{IcosahedronBufferGeometry as nw}from"three";var Af=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,l=o===0&&i!==0?new ai(t*.5,i,s):new nw(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},ai=class extends Xr{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],l="IcosahedronGeometry";super(i,s,l,t,e,r),this.type=l}static fromJSON(t){return new ai(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as iw,Shape as sw}from"three";var Nf=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 sw;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 iw(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Mf,BufferGeometryLoader as gw,Vector3 as yw,BoxBufferGeometry as Ef}from"three";import{BufferGeometry as dw,Vector2 as Gl,Vector3 as Lf}from"three";import{Box3 as aw,BufferAttribute as li,BufferGeometry as If,Color as Of,EventDispatcher as lw,Float32BufferAttribute as un,Matrix3 as Pf,Matrix4 as Cf,MathUtils as cw,Object3D as uw,Sphere as pw,Vector2 as Ot,Vector3 as nt}from"three";var rr=new Cf,Bl=new uw,ia=new nt,Yr=class extends lw{constructor(){super(),this.uuid=cw.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 Pf().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,l=i.vertexNormals.length;s<l;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 rr.makeRotationX(t),this.applyMatrix4(rr),this}rotateY(t){return rr.makeRotationY(t),this.applyMatrix4(rr),this}rotateZ(t){return rr.makeRotationZ(t),this.applyMatrix4(rr),this}translate(t,e,r){return rr.makeTranslation(t,e,r),this.applyMatrix4(rr),this}scale(t,e,r){return rr.makeScale(t,e,r),this.applyMatrix4(rr),this}lookAt(t){return Bl.lookAt(t),Bl.updateMatrix(),this.applyMatrix4(Bl.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,l=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 nt().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new Of().fromBufferAttribute(l,d));function a(d,f,m,h){let g=l===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],x=s===void 0?[]:[new nt().fromBufferAttribute(s,d),new nt().fromBufferAttribute(s,f),new nt().fromBufferAttribute(s,m)],v=new pn(d,f,m,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ot().fromBufferAttribute(c,d),new Ot().fromBufferAttribute(c,f),new Ot().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new Ot().fromBufferAttribute(p,d),new Ot().fromBufferAttribute(p,f),new Ot().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?a(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):a(g,g+1,g+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(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(ia).negate(),this.translate(ia.x,ia.y,ia.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Cf;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 nt,e=new nt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,l),e.subVectors(s,l),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 nt;if(t){let r=new nt,o=new nt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],p=this.vertices[l.b],a=this.vertices[l.c];r.subVectors(a,p),o.subVectors(c,p),r.cross(o),e[l.a].add(r),e[l.b].add(r),e[l.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 Yr;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 l=0,c=this.faces.length;l<c;l++){let p=new nt,a={a:new nt,b:new nt,c:new nt};i.push(p),s.push(a)}}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 l=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(l.normal),p.a.copy(l.vertexNormals[0]),p.b.copy(l.vertexNormals[1]),p.c.copy(l.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 aw),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pw),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,l=t.vertices,c=this.faces,p=t.faces,a=this.colors,u=t.colors;e!==void 0&&(o=new Pf().getNormalMatrix(e));for(let d=0,f=l.length;d<f;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)a.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,w=new pn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.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(),w.vertexNormals.push(h);w.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)g=v[S],w.vertexColors.push(g.clone());w.materialIndex=m.materialIndex+r,c.push(w)}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 w=0,S=x.length;w<S;w++)v.push(x[w].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 a=this.vertices[c],u=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.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 a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let u=[a.a,a.b,a.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 a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(p,1)}let l=this.vertices.length-r.length;return this.vertices=r,l}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new nt(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,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),l&&l.push(i[p])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}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=[],l={},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,w=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,N=h.vertexColors.length>0,T=0;if(T=a(T,0,0),T=a(T,1,g),T=a(T,2,x),T=a(T,3,v),T=a(T,4,w),T=a(T,5,S),T=a(T,6,b),T=a(T,7,N),r.push(T),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(w&&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)),N){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function a(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 l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[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 Yr().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 w=0,S=x.length;w<S;w++){let b=x[w];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 l=t.skinWeights;for(let d=0,f=l.length;d<f;d++)this.skinWeights.push(l[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 a=t.boundingBox;a!==null&&(this.boundingBox=a.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 Dl().fromGeometry(this),e=new If,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new li(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new li(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new li(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new li(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new li(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let p=s[l],a=new un(p.data.length*3,3);a.name=p.name,i.push(a.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new un(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new un(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 If,r=t.geometry;if(t.isPoints||t.isLine){let o=new un(r.vertices.length*3,3),i=new un(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 un(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}};Yr.prototype.isGeometry=!0;var Dl=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 l=s[o];l.materialIndex!==i&&(i=l.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,l=t.morphTargets,c=l.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:l[x].name,data:[]};this.morphTargets.position=p}let a=t.morphNormals,u=a.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:a[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 w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[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 Ot,new Ot,new Ot))}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 Ot,new Ot,new Ot))}for(let b=0;b<c;b++){let N=l[b].vertices;p[b].data.push(N[v.a],N[v.b],N[v.c])}for(let b=0;b<u;b++){let N=a[b].vertexNormals[x];d[b].data.push(N.a,N.b,N.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}},pn=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 nt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Of,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 fw=["a","b","c"];function mw(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Rl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Vl(n,t,e,r,o,i){let s=Math.min(n,t),l=Math.max(n,t),c=s+"_"+l,p;if(r.has(c))p=r.get(c);else{let a=e[s],u=e[l];p={a,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function hw(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],Vl(s.a,s.b,n,r,s,e),Vl(s.b,s.c,n,r,s,e),Vl(s.c,s.a,n,r,s,e)}function sa(n,t,e,r,o){n.push(new pn(t,e,r,void 0,void 0,o))}function dn(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function aa(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var la=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof dw?t=new Yr().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 Lf,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],f=new Map;hw(c,p,d,f);let m=[],h,g,x,v,w,S,b;for(let k of Array.from(f.keys())){for(g=f.get(k),x=new Lf,w=3/8,S=1/8,b=g.faces.length,b!=2&&(w=.5,S=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(w),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],l=0;l<3&&(h=c[mw(v,fw[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),g.newEdge=m.length,m.push(x)}let N,T,y,P,A,O,_,L=[];for(o=0,i=c.length;o<i;o++){for(O=c[o],A=d[o].edges,r=A.length,r==3?N=3/16:r>3&&(N=3/(8*r)),T=1-r*Number(N),y=N,r<=2&&(r==2?(T=3/4,y=1/8):r==1||r==0),_=O.clone().multiplyScalar(T),e.set(0,0,0),s=0;s<r;s++)P=A[s],h=P.a!==O?P.a:P.b,e.add(h);e.multiplyScalar(Number(y)),_.add(e),L.push(_)}let D=L.concat(m),U=L.length,re,Q,le,H=[],W=[],q,F,M,B,E=new Gl,j=new Gl,Z=new Gl;for(o=0,i=p.length;o<i;o++)v=p[o],re=Number(Rl(v.a,v.b,f).newEdge)+U,Q=Number(Rl(v.b,v.c,f).newEdge)+U,le=Number(Rl(v.c,v.a,f).newEdge)+U,sa(H,re,Q,le,v.materialIndex),sa(H,v.a,re,le,v.materialIndex),sa(H,v.b,Q,re,v.materialIndex),sa(H,v.c,le,Q,v.materialIndex),u&&(q=a[o],F=q[0],M=q[1],B=q[2],E.set(dn(F.x,M.x),dn(F.y,M.y)),j.set(dn(M.x,B.x),dn(M.y,B.y)),Z.set(dn(F.x,B.x),dn(F.y,B.y)),aa(W,E,j,Z),aa(W,F,E,Z),aa(W,M,j,E),aa(W,B,Z,j));t.vertices=D,t.faces=H,u&&(t.faceVertexUvs[0]=W)}};var Ue=new yw,Bf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Mf().copy(new Ef(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Ue),r={width:Ue.x,height:Ue.y,depth:Ue.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 Mf().copy(new Ef(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Ue)):Ue.set(s.width,s.height,s.depth),(t!==Ue.x||e!==Ue.y||r!==Ue.z)&&i.scale(Ue.x===0?1:t/Ue.x,Ue.y===0?1:e/Ue.y,Ue.z===0?1:r/Ue.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new la(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new gw(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Ue);let s=100/Ue.x;Object.assign(i.parameters,{width:100,height:Ue.y*s,depth:Ue.z*s}),t(this.build(i))})}};var Df=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 ve?n.shape:new ve,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:l}=n.parameters,c=n.shape,p=t*.5,a=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)*a;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=Je.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as xw,Float32BufferAttribute as Fl,Vector2 as or,Vector3 as $e}from"three";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: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:l,cornerSegments:c}=n.parameters,p=new Ul(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function ci(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function zl(n,t,e,r,o,i){let s=t.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),r===o){let p=s.add(l).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(l,r/Math.sin(p))}}function vw(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Ul=class extends xw{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,l=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),l=Math.floor(l);let c=[],p=[],a=[],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,w=new $e(0,-f,0),S=new $e(0,f,0),b=new or(t,-f),N=new or(h,-f),T=new or(0,S.y).sub(N),y=new or(0,S.y).sub(b),P=new or(T.y,-T.x).normalize(),A=new or(y.y,-y.x).normalize(),_=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-T.angle())/2)-1e-8;s=Math.min(s,_);let L;{let W=new $e(P.x,P.y,0),q=new $e(Math.cos(g)*W.x,W.y,Math.sin(g)*W.x);L=W.angleTo(q)}let D=s/Math.tan((Math.PI-T.angle())/2),U=s/Math.tan((Math.PI-L)/2),re=new $e;if(!i){p.push(w.x,w.y,w.z),a.push(0,-1,0),u.push(0,0);let W=d++,q=[],F=b.clone(),M=D/Math.cos(Math.PI/r);F.x-=M;for(let B=0;B<r;B++){let E=B/r*Math.PI*2+m,j=new or(Math.sin(E),Math.cos(E));ci(F,j,re),p.push(re.x,re.y,re.z),a.push(0,-1,0),u.push(0,0),q.push(d++)}for(let B=0;B<q.length;B++)c.push(q[B],W,q[(B+1)%q.length])}let Q=[];{let W=new $e,q=new $e,F=new $e,M=new $e,B=new $e,E=new $e;for(let j=0;j<r;j++){let Z=j/r*Math.PI*2+m,k=(j+.5)/r*Math.PI*2+m,V=(j+1)/r*Math.PI*2+m,R=new or(Math.sin(Z),Math.cos(Z)),z=new or(Math.sin(k),Math.cos(k)),J=new or(Math.sin(V),Math.cos(V));ci(b,R,q),ci(b,J,F),ci(P,z,W),zl(S,q,F,U,U,M),p.push(M.x,M.y,M.z),zl(q,S,F,U,D,B),p.push(B.x,B.y,B.z),zl(F,q,S,D,U,E),p.push(E.x,E.y,E.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),u.push(0,0),u.push(0,0),u.push(0,0);let oe=d++,ie=d++,te=d++;if(c.push(oe,ie,te),s>0){{let X=q.clone().add(F).multiplyScalar(.5),fe=S.clone().sub(X).normalize(),ge=w.clone().sub(X).normalize().add(fe).normalize().multiplyScalar(-1),We=E.clone().sub(B);le(X,We,ge,T.angle())}let ee,K;{let X=new $e;ci(A,J,X);let fe=E.clone().add(M).multiplyScalar(.5);fe=vw(fe,F,S);let pe=E.clone().sub(M);[ee,K]=le(fe,pe,X,L,M.y)}{let X=ee,fe=X.clone().setY(0).normalize(),pe=new $e(0,-1,0),ge=fe.clone().cross(pe);H(X,fe,pe,ge)}Q.concat(K);{let X=T.angle(),fe=Math.PI-X,pe=S.clone();pe.y-=s/Math.sin(X-Math.PI/2);let ge=new $e,We=[];for(let Te=0;Te<l;Te++){let Ie=[],Tt=Math.PI/2-fe*Te/l,Or=Math.cos(Tt),yt=Math.sin(Tt),wo=k;for(let Ui=0;Ui<=Te;Ui++){let ji=Math.cos(wo),Ge=Math.sin(wo);W.x=Or*Ge,W.y=yt,W.z=Or*ji,ge.copy(pe).addScaledVector(W,s),p.push(ge.x,ge.y,ge.z),a.push(W.x,W.y,W.z),u.push(0,0),Ie.push(d++),wo+=Math.PI*2/Te/r}We.push(Ie)}K.reverse(),We.push(K);let we=We.length-1;for(let Te=0;Te<we;Te++){let Ie=We[Te],Tt=We[Te+1],Or=Ie.length-1;c.push(Tt[1],Ie[0],Tt[0]);for(let yt=1;yt<=Or;yt++)c.push(Ie[yt],Ie[yt-1],Tt[yt]),c.push(Tt[yt+1],Ie[yt],Tt[yt])}}}}}this.setIndex(c),this.setAttribute("position",new Fl(p,3)),this.setAttribute("normal",new Fl(a,3)),this.setAttribute("uv",new Fl(u,2));function le(W,q,F,M,B){let E=-M/2,j=(Math.PI-M)/2,Z=q.clone().normalize().cross(F);W.addScaledVector(F,-s/Math.sin(j));let k=new $e,V=new $e,R=1,z=d,J=[];for(let oe=0;oe<=l;oe++){let ie=E+oe/l*M;V.set(0,0,0),V.addScaledVector(Z,Math.sin(ie)),V.addScaledVector(F,Math.cos(ie));for(let te=0;te<=R;te++){let ee=te/R-.5;if(k.copy(W),k.addScaledVector(q,ee),k.addScaledVector(V,s),B!=null){let K=Math.max(0,k.y-B);k.addScaledVector(q,-K/q.y)}p.push(k.x,k.y,k.z),a.push(V.x,V.y,V.z),u.push(0,0),te===0&&J.push(d),d++}}for(let oe=0;oe<l;oe++)for(let ie=0;ie<R;ie++){let te=z+ie+(R+1)*oe,ee=te+(R+1),K=ee+1,X=te+1;c.push(te,ee,X),c.push(ee,K,X)}return[W.clone().addScaledVector(q,.5),J]}function H(W,q,F,M){let B=Math.PI/2,E=y.angle()-B,j=[],Z=new $e,k=new $e;for(let R=0;R<=l;R++){let z=[],J=R/l;for(let oe=0;oe<=R;oe++){let te=((R?oe/R:0)-.5)*v,ee=Math.cos(te),K=Math.sin(te),X=Math.atan(Math.tan(E)*ee),fe=(B+X)*J,pe=Math.cos(fe),ge=Math.sin(fe);Z.set(0,0,0),Z.addScaledVector(q,ge*ee),Z.addScaledVector(F,pe),Z.addScaledVector(M,ge*K),k.copy(W).addScaledVector(Z,s),p.push(k.x,k.y,k.z),a.push(Z.x,Z.y,Z.z),u.push(0,0),z.push(d++)}j.push(z)}let V=j.length-1;for(let R=0;R<V;R++){let z=j[R],J=j[R+1],oe=z.length-1;c.push(z[0],J[1],J[0]);for(let ie=1;ie<=oe;ie++)c.push(z[ie-1],z[ie],J[ie]),c.push(z[ie],J[ie+1],J[ie])}}}};var Rf=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 ve?n.shape:new ve,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:l,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},a={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(S,b,N){return b>e&&N>r?Math.min(S*e/b,S*r/N):b>e?S*e/b:N>r?S*r/N: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=a.x,h=u.x,g=u.y,x=a.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 w=Je.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as bw}from"three";var Vf=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:l,thetaStart:c,thetaLength:p}=n.parameters,a=new bw(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as Sw}from"three";var Ff=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 Sw(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as ww,Float32BufferAttribute as jl,Vector3 as _w}from"three";var zf=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,l=new kl(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},kl=class extends ww{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],p=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let u=[],d=Math.PI/2,f=(k=0,V=0,R=0)=>new _w(k,V,R),m=f(),h=f(),[g,x,v]=[e/2,t/2,r/2],w=-x,S=+x,[b,N,T]=[f(w,-g,+v),f(w,-g,-v),f(w,+g,-v)],y=(k,V=!1)=>Math.sin(k-Math.PI/(1+ +V)),P=(k,V=!1)=>Math.cos(k-Math.PI/(1+ +V));T.y=Math.sin(o)*e-g;let A=Math.cos(o)*e-v,O=b.z-a;o<=d?(T.z=Math.min(A,O),T.z==O&&(T.y-=(A-O)/Math.tan(d-o))):N.z=Math.min(N.z-A-v,b.z-a),m.subVectors(b,N),h.subVectors(T,N);let _=Math.min(m.length(),h.length())*i/100,L=_*Math.tan(o/2),D=_/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(D).add(N);m.set(0,y(o,!0),P(o,!0)),u.push([T,m.clone()]);let re=(Math.PI-o)/s;for(let k=0;k<=s;k++){let V=d+o+k*re;m.set(0,Math.sin(V)*L,Math.cos(V)*L),m.add(U),h.set(0,y(V),P(V)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let Q=Math.sin(re/2)*L*2,le=u.length-1,H=u[0][0].distanceTo(u[1][0]),W=u[le-1][0].distanceTo(u[le][0]),q=H+Q*s+W;u[0].push(1);for(let k=0;k<=s;k++)u[k+1].push(1-(H+k*Q)/q);u[le].push(0);let[F,M,B]=u[0],E,j,Z;for(let k=1;k<u.length;k++)[E,j,Z]=u[k],l.push(w,F.y,F.z,w,E.y,E.z,S,F.y,F.z,S,F.y,F.z,w,E.y,E.z,S,E.y,E.z),c.push(0,M.y,M.z,0,j.y,j.z,0,M.y,M.z,0,M.y,M.z,0,j.y,j.z,0,j.y,j.z),p.push(0,B,0,Z,1,B,1,B,0,Z,1,Z),[F,M,B]=[E,j,Z];this.setAttribute("position",new jl(l,3)),this.setAttribute("normal",new jl(c,3)),this.setAttribute("uv",new jl(p,2))}};var Uf=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 ve?n.shape:new ve,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:l,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,a=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,N=f+Math.sin(b)*u,T=m+Math.cos(b)*d;a.addPoint(a.createPoint(N,T))}}else for(let S=0;S<o;S++){let b=f+Math.cos(g)*u,N=m+Math.sin(g)*d;a.addPoint(a.createPoint(b,N)),g+=h,b=f+Math.cos(g)*x,N=m+Math.sin(g)*v,S<=o,a.addPoint(a.createPoint(b,N)),g+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let w=Je.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as Tw}from"three";var jf=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 Tw(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var kf=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:l,cornerSegments:c}=n.parameters,p=Aw(t,e,r,t*.5,s,i,0,0,o,l,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function Aw(n,t,e,r,o,i,s,l,c,p,a){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new si(!0,n,t,e,r,o,i,s,l,c,p,a)}import{TorusKnotBufferGeometry as Nw}from"three";var Hf=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,l=t*.5;l!==e&&(l-=e);let c=new Nw(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Wf=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 ve?n.shape:new ve,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:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-p,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))),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=Je.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferAttribute as qf,BufferGeometry as Hl}from"three";import{mergeBufferGeometries as Iw}from"three/examples/jsm/utils/BufferGeometryUtils.js";function $f(){let n=new Hl;return n.setAttribute("position",new qf(new Float32Array([]),3)),n.setIndex(new qf(new Uint16Array([]),1)),n}var Pw=12;var fn=class extends Hl{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.vectorShapes=[];let o=$f();Object.entries(o.attributes).forEach(([i,s])=>{this.setAttribute(i,s)}),this.setIndex(o.index),this.updateFont(e.font,r),this.update(e)}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}async update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r||!r.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:p,textTransform:a,subdivisions:u}=e;await r.loadingPromise;let d=a===2?p.toUpperCase():a===3?p.toLowerCase():p,f=Ow(e,r,d),{shapes:m,charWidths:h,charCoords:g}=await r.generateShapes(f,e),x=o*.5,v=i*.5,w=m.map(N=>new ve().fromShape(N));this.vectorShapes=w;let S=w.map(N=>Je.create({shape:N,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Pe.NONZERO:Pe.ODD,subdivisions:u??Pw}})),b=S.length?Iw(S):$f();b.translate(-x,v,0),this.dispose(),this.wrappedText=f,this.charCoords=g,this.charWidths=h,Object.entries(b.attributes).forEach(([N,T])=>{this.setAttribute(N,T)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=co(new Hl,fn.prototype);return e.copy(this),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function Ow(n,t,e){e=e??n.text;let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
+ `?(r[r.length-1]+=o,o="",i===`
3
+ `&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as Xf,BufferAttribute as Yf,Uint32BufferAttribute as Wl,Float32BufferAttribute as ql,Matrix4 as Ew,Vector3 as da}from"three";var Cw,ca=new Promise(n=>{Cw=n});import{BufferGeometryLoader as Lw}from"three";function ua(n,t){return Mw(n)}function Mw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=ve.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 Lw().parse(n));let e;try{e=ui(t)}catch(r){console.error(r)}if(!e){let r=ve.createFromState(Co.defaultData(),100,100);t.shape=r,e=ui(t)}return e}var ue;ca.then(n=>{ue=n});var Kf=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Qf=new Uint32Array([0,1,2,3]),Zf=new Uint8Array([4]),Ct=class{static build(n,t,e,r,o){let i,s,l,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(ue.free_bvh(e),ue.free_subdivision_surface(e));try{i=Ct.allocate(n,o)}catch(p){console.error(p,n),i=Ct.allocate({positionWASM:Kf,indexWASM:Qf,verticesPerFaceWASM:Zf},o)}ue.set_destination_refinement_level(i,0),s=Ct.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ct.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(ue.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Ct.buildLevel(i,!1,c):l=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}}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:ua(n),r,o,i,s;({positions:r,triIndices:s}=Kl(e.getAttribute("position"),e.getIndex()));let l;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;l=[c,p]}return{indices:o,verticesPerFace:i}=Ql(r,s,e,l),{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=Kf,r=Qf,o=Zf);let l=e.length,c=r.length,p=o.length,a=e.length+i.length+s.length,u=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=a*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=ue._malloc(d),g=new Float32Array(ue.HEAPF32.buffer,h,a),x=new Uint32Array(ue.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 Ew().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let w=v?ue.alloc_subdivision_surface2(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):ue.alloc_subdivision_surface(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return ue._free(h),w}static buildLevel(n,t,e,r,o){let i=o?ue.get_mesh_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e,o.elements):ue.get_mesh_data(n,t?ue.Level.CONTROL:ue.Level.REFINED,e),s=8,l=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=ue.HEAPU32[l[p]>>2],u=ue.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=ue.HEAPU32[l[p]>>2],f=ue.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=ue.HEAPU32[l[p]>>2],h=ue.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let g=ue.HEAPU32[l[p]>>2],x=ue.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new Xf;if(v.setIndex(new Wl(x,1)),v.setAttribute("position",new ql(u,3)),v.setAttribute("normal",new ql(f,3)),t){v.setAttribute("faceMap",new Wl(h,1));let w=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new Yf(w,4))}return ue.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,ue.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=ue.get_wireframe_data_for_base_level(n),o=4,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=ue.HEAPU32[i[l]>>2],p=ue.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=ue.HEAPU32[i[l]>>2],u=ue.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new Xf;d.setAttribute("position",new ql(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 Yf(f,3)),d.setIndex(new Wl(u,1)),ue.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||ue.set_destination_refinement_level(n,t);let o=e?ue.get_topological_data2(n,r?ue.Level.CONTROL:ue.Level.REFINED,e.elements):ue.get_topological_data(n,r?ue.Level.CONTROL:ue.Level.REFINED),i=6,s=ue.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=ue.HEAPU32[s[c]>>2],a=new Float32Array(ue.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=ue.HEAPU32[s[c]>>2],d=new Uint32Array(ue.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let f=ue.HEAPU32[s[c]>>2],m=new Uint8Array(ue.HEAPU32.subarray(f>>2,(f>>2)+l[c]));return ue.free_topological_data(o),{positions:a,indices:d,verticesPerFace:m}}};var Jf=["getX","getY","getZ"];function Kl(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],l=1e4;for(let p=0;p<r;p++){let a=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[Jf[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[Jf[d]](a));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 pa=new da,$l=new da,Xl=new da,Yl=new da;function Ql(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([]),l=0;for(let p=0;p<s.length;p+=2)l+=(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(l<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,l=e.capStartIndex??t.length;s<l;)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]){pa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),$l.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Xl.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Yl.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),$l.sub(pa).normalize(),Xl.sub(pa).normalize(),Yl.sub(pa).normalize();let c=$l.cross(Xl).dot(Yl);Math.abs(c)>.005||r&&r.some((p,a)=>a%2===1?!1:s>=r[a]&&s<r[a+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=[],l=[],c=0,p=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,u=0;a<n.length;a+=3,u++)n[a+2]===0&&(s.push(u),c++),n[a+2]===p&&l.push(u);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Ft={};Rh(Ft,{calcBoolean:()=>Vw,calcBooleanTopological:()=>Rw,freeMeshSet:()=>Uw,getMeshSet:()=>Fw,transformMeshSet:()=>zw});var Bw,em=new Promise(n=>{Bw=n});import{Float32BufferAttribute as tm,Sphere as Dw}from"three";var he,mn;em.then(n=>he=n);function Gw(n,t,e){let r,{positions:o,triIndices:i}=Kl(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:l,verticesPerFace:c}=Ql(o,i,n);s=c.length,r=[];for(let p=0,a=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(l[a++])}}else{let l=i.length;r=Array(l+l/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 rm(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=he._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(he.HEAPU32.buffer,i,t):new Float32Array(he.HEAPF32.buffer,i,t)).set(n,0),i}function om(n){switch(n){case 0:return he.OP.UNION;case 1:return he.OP.INTERSECTION;case 2:return he.OP.A_MINUS_B;case 3:return he.OP.B_MINUS_A;case 4:return he.OP.SYMMETRIC_DIFFERENCE;case 5:return he.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function Rw(n,t){mn===void 0&&(mn=he.init_csg());let e=rm(n),r=he.csg_calc_topological(mn,e,n.length,om(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=he.HEAPU32[i[l]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=he.HEAPU32[i[l]>>2],u=new Uint32Array(he.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=he.HEAPU32[i[l]>>2],f=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function Vw(n,t,e,r){mn===void 0&&(mn=he.init_csg());let o=rm(n),i=he.csg_calc(mn,o,n.length,r,om(t));he._free(o);let s=5,l=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=he.HEAPU32[l[p]>>2],u=he.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=he.HEAPU32[l[p]>>2],f=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new tm(u,3)),e.setAttribute("normal",new tm(f,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Dw),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},he.free_mesh_data(i),m}function Fw(n,t,e){if(he===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,w=0;x<g.verticesPerFace.length;x++){o[w++]=g.verticesPerFace[x];for(let S=0;S<g.verticesPerFace[x];S++)o[w++]=g.indices[v++]}}else({positions:r,faceIndices:o,nFaces:i}=Gw(n,t,e));let s=r.length,l=o.length,c=r.length,p=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=he._malloc(a),m=new Float32Array(he.HEAPF32.buffer,f,c),h=new Uint32Array(he.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),he.get_csg_mesh(f,s,f+u,l,i)}function zw(n,t){he.transform_csg_mesh(n,t.elements)}function Uw(n){he.free_csg_mesh(n)}var Zl={ConeGeometry:uf,CubeGeometry:pf,CylinderGeometry:cf,DodecahedronGeometry:df,EllipseGeometry:vf,HelixGeometry:Tf,IcosahedronGeometry:Af,LatheGeometry:Nf,NonParametricGeometry:Bf,PolygonGeometry:Df,PyramidGeometry:Gf,RectangleGeometry:Rf,SphereGeometry:Vf,PlaneGeometry:Ff,BackdropGeometry:zf,StarGeometry:Uf,TextFrameGeometry:jf,TorusGeometry:kf,TorusKnotGeometry:Hf,TriangleGeometry:Wf,VectorGeometry:Je},ui=n=>Zl[n.type].create(n);import{Matrix4 as pm}from"three";import{Object3D as Hw,Matrix4 as Ww}from"three";import{HemisphereLight as nm}from"three";function Xe(n,t){return t.color(n)}var Jl=n=>"isEntity"in n,nr=n=>"isAbstractMesh"in n,ir=n=>n!==null&&n.objectType==="BooleanObject",im=n=>n.objectType==="CombinedCamera";var fa=n=>"objectHelper"in n;function jw(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??Br.identity)),e&&(n.updateMatrix(),ir(n.parent)&&nr(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 kw(n,t){jw(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function sm(n,t,e){kw(n,t),t.color!==void 0&&(n.color=Xe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof nm)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof nm)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function am(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 ma=n=>class extends n{hasEntityChild(){return this.children.some(e=>Jl(e))}isDescendantOf(e){e instanceof Hw&&(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 Ww().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}};import{Box3 as cm,Line3 as qw,Matrix4 as ec,Vector3 as Lt}from"three";var hn=new cm,zt=new Lt,sr=new Lt,gn=new ec,um=[new Lt(-1,1,1),new Lt(-1,-1,1),new Lt(1,-1,1),new Lt(1,1,1),new Lt(-1,1,-1),new Lt(-1,-1,-1),new Lt(1,-1,-1),new Lt(1,1,-1)],$w=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],Xw=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function Yw(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,p=-1/0;for(let a=e;a<r;a++){let u=t.getX(a),d=t.getY(a),f=t.getZ(a);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>l&&(l=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var lm=(n,t,e)=>{if(nr(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?zt.copy(n.originalGeometry.boundingSphere.center):n.geometry.userData.type==="TextGeometry"?zt.set(0,0,r.depth*.5):o!==void 0&&(Yw(hn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),hn.getCenter(zt)),n.forceComputeSize?hn.getSize(sr).multiplyScalar(.5):sr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(fa(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");hn.setFromArray(r.array),hn.getCenter(zt),hn.getSize(sr).multiplyScalar(.5)}else zt.setScalar(0),sr.setScalar(0);gn.copy(t).multiply(n.matrixWorld),sr.x===0&&sr.y===0&&sr.z===0?e.push(new Lt(zt.x,zt.y,zt.z).applyMatrix4(gn)):um.forEach(r=>{e.push(r.clone().multiply(sr).add(zt).applyMatrix4(gn))})},pi=class extends cm{constructor(){super(...arguments);this.matrix=new ec;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 ec().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&&lm(s,r,i)}):lm(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(gn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(sr).multiplyScalar(.5),this.getCenter(zt),gn.copy(this.matrix).setPosition(zt),this.vertices=um.map(e=>e.clone().multiply(sr).applyMatrix4(gn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=$w.map(([e,r])=>new qw(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Lt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=Xw.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var ar=n=>"isEntity"in n,dm=n=>"isAbstractMesh"in n,Mt=n=>class extends ma(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new pm;this._singleBBox=new pi;this._recursiveBBox=new pi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1;this.states={};this.currentState=null;this.currentTransitionAction=null}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=>{ar(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)ar(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)ar(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.dispatchEvent({type:"updateMatrix"})}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)ar(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new pm,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)ar(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 Ko(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 Ko(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}};import{NormalBlending as F1,ShaderMaterial as z1}from"three";import{CubeReflectionMapping as a1,CubeRefractionMapping as l1,CubeUVReflectionMapping as c1,LinearEncoding as gm,sRGBEncoding as u1}from"three";var di=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}};import{MathUtils as Kw}from"three";var Ye=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Kw.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 Ye&&(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}},je=new tc;import{Vector2 as fm}from"three";import{MathUtils as Qw}from"three";var ae=class extends Ye{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=Qw.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return l.name=l.name||super.build(e,r,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.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,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(p+" = "+a+";"),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 Oe=class extends ae{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,l){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,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}};var Ke=class extends Oe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof fm?e:new fm(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,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as mm}from"three";var et=class extends Oe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof mm?e:new mm(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,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};import{Color as Zw}from"three";var ke=class extends Zw{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 Et=class extends Oe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ke?e:new ke(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var Jw=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,hm=/[a-z_0-9]+/gi,$=class extends ae{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 l,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 a=[];for(;l=hm.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&je.containsKeyword(f)){let g=this.keywords[f];if(!g){let x=je.getKeywordData(f);x.cache&&(g=e.keywords[f]),g=g||je.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&&je.contains(h)&&e.include(je.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=Jw.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(hm);if(l){let c=0;for(;c<l.length;){let p=l[c++],a;p==="in"||p==="out"||p==="inout"?a=l[c++]:(a=p,p="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var e1=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,rc=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||rc.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 l,c,p="",a=e1.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],p=a[3]):(l=this.src,c="f"),this.name=l,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)}},xe=rc;xe.PI="PI",xe.PI2="PI2",xe.RECIPROCAL_PI="RECIPROCAL_PI",xe.RECIPROCAL_PI2="RECIPROCAL_PI2",xe.LOG2="LOG2",xe.EPSILON="EPSILON";var t1=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),r1=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),yn=class extends ae{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=t1.exec(e);if(r){let o=r[2],i;for(;i=r1.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var xn=class extends ae{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)}};je.addKeyword("uv",function(){return new xn});je.addKeyword("uv2",function(){return new xn(1)});import{LinearEncoding as o1,sRGBEncoding as n1}from"three";var fo=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??fo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case o1:return["Linear"];case n1:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=fo.Nodes[this.method],l=e.include(s);if(l===fo.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,r)}else return e.format(l+"( "+o+" )",i,r)}fromEncoding(e){let r=fo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=fo.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},lt=fo;lt.Nodes={LinearToLinear:new $(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
+ `)),sRGBToLinear:new $(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
6
+ `)),LinearTosRGB:new $(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
7
+ `))},lt.LINEAR_TO_LINEAR="LinearToLinear",lt.SRGB_TO_LINEAR="sRGBToLinear",lt.LINEAR_TO_SRGB="LinearTosRGB";var Se=class extends ${constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as i1}from"three";var mt=class extends Oe{constructor(e=new i1,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new xn,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 l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let p={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new lt(new Se("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,r)}};var Y=class extends Oe{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var fi=class extends ae{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 l=this.value,c=l.build(e,r)+"( ",p=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let u=l.inputs[a],d=this.inputs[a]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,i,r)}};var oc=class extends ae{constructor(e,r,o=oc.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)}},ht=oc;ht.ADD="+",ht.SUB="-",ht.MUL="*",ht.DIV="/";var Ne=class extends ae{constructor(e,r=Ne.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 Ne.MIX:case Ne.CLAMP:case Ne.REFRACT:case Ne.SMOOTHSTEP:case Ne.FACEFORWARD:return 3;case Ne.MIN:case Ne.MAX:case Ne.MOD:case Ne.STEP:case Ne.REFLECT:case Ne.DISTANCE:case Ne.DOT:case Ne.CROSS:case Ne.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 Ne.LENGTH:case Ne.DISTANCE:case Ne.DOT:return"f";case Ne.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,l=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,a=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Ne.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,r);case Ne.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,r);case Ne.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ne.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ne.MIN:case Ne.MAX:case Ne.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ne.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ne.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,p===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));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)}},de=Ne;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var vn=class extends ae{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 fi(vn.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new lt(new Se("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new lt(new Se("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new lt(new Se("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new lt(new Se("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new Se(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Se(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Se(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Se(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Se("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 fi(vn.Nodes.roughnessToMip,[i]),l=new de(s,vn.Nodes.m0,vn.Nodes.cubeUV_maxMipLevel,de.CLAMP),c=new de(l,de.FLOOR),p=new de(l,de.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new ht(c,new Y(1).setReadonly(!0),ht.ADD)),d=new de(a,u,p,de.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)}},bn=vn;bn.Nodes=function(){let e=new yn(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
11
11
  vec4 bl;
12
12
  vec2 f;
13
- }`),n=new Ae("float cubeUV_maxMipLevel 8.0",!0),o=new Ae("float cubeUV_minMipLevel 4.0",!0),i=new Ae("float cubeUV_maxTileSize 256.0",!0),a=new Ae("float cubeUV_minTileSize 16.0",!0),s=new Z(`float getFace(vec3 direction) {
13
+ }`),r=new xe("float cubeUV_maxMipLevel 8.0",!0),o=new xe("float cubeUV_minMipLevel 4.0",!0),i=new xe("float cubeUV_maxTileSize 256.0",!0),s=new xe("float cubeUV_minTileSize 16.0",!0),l=new $(`float getFace(vec3 direction) {
14
14
  vec3 absDirection = abs(direction);
15
15
  float face = -1.0;
16
16
  if (absDirection.x > absDirection.z) {
@@ -25,7 +25,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
25
25
  face = direction.y > 0.0 ? 1.0 : 4.0;
26
26
  }
27
27
  return face;
28
- }`);s.useKeywords=!1;let l=new Z(`vec2 getUV(vec3 direction, float face) {
28
+ }`);l.useKeywords=!1;let c=new $(`vec2 getUV(vec3 direction, float face) {
29
29
  vec2 uv;
30
30
  if (face == 0.0) {
31
31
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -41,7 +41,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
41
41
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
42
42
  }
43
43
  return 0.5 * (uv + 1.0);
44
- }`);l.useKeywords=!1;let u=new Z(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
44
+ }`);c.useKeywords=!1;let p=new $(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
45
45
  float face = getFace(direction);
46
46
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
47
47
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -69,7 +69,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
69
69
  uv.x -= texelSize;
70
70
  vec4 bl = texture2D(envMap, uv);
71
71
  return TextureCubeUVData( tl, tr, br, bl, f );
72
- }`,[e,s,l,n,o,i,a]);u.useKeywords=!1;let c=new Ae("float r0 1.0",!0),p=new Ae("float v0 0.339",!0),f=new Ae("float m0 -2.0",!0),d=new Ae("float r1 0.8",!0),h=new Ae("float v1 0.276",!0),m=new Ae("float m1 -1.0",!0),g=new Ae("float r4 0.4",!0),v=new Ae("float v4 0.046",!0),x=new Ae("float m4 2.0",!0),b=new Ae("float r5 0.305",!0),w=new Ae("float v5 0.016",!0),S=new Ae("float m5 3.0",!0),_=new Ae("float r6 0.21",!0),T=new Ae("float v6 0.0038",!0),y=new Ae("float m6 4.0",!0),O=[c,p,f,d,h,m,g,v,x,b,w,S,_,T,y],A=new Z(`float roughnessToMip(float roughness) {
72
+ }`,[e,l,c,r,o,i,s]);p.useKeywords=!1;let a=new xe("float r0 1.0",!0),u=new xe("float v0 0.339",!0),d=new xe("float m0 -2.0",!0),f=new xe("float r1 0.8",!0),m=new xe("float v1 0.276",!0),h=new xe("float m1 -1.0",!0),g=new xe("float r4 0.4",!0),x=new xe("float v4 0.046",!0),v=new xe("float m4 2.0",!0),w=new xe("float r5 0.305",!0),S=new xe("float v5 0.016",!0),b=new xe("float m5 3.0",!0),N=new xe("float r6 0.21",!0),T=new xe("float v6 0.0038",!0),y=new xe("float m6 4.0",!0),P=[a,u,d,f,m,h,g,x,v,w,S,b,N,T,y],A=new $(`float roughnessToMip(float roughness) {
73
73
  float mip = 0.0;
74
74
  if (roughness >= r1) {
75
75
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -83,8 +83,8 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,O);return{bilinearCubeUV:u,roughnessToMip:A,m0:f,cubeUV_maxMipLevel:n}}();var eo=class extends de{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??eo.VIEW}getShared(){return this.scope===eo.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 eo.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case eo.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case eo.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),n)}},ct=eo;ct.LOCAL="local",ct.WORLD="world",ct.VIEW="view",ct.NORMAL="normal";Je.addKeyword("viewNormal",function(){return new ct(ct.VIEW)});Je.addKeyword("localNormal",function(){return new ct(ct.NORMAL)});Je.addKeyword("worldNormal",function(){return new ct(ct.WORLD)});var Er=class extends de{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Er.LOCAL}getType(){switch(this.scope){case Er.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Er.LOCAL:case Er.WORLD:return!1}return!0}generate(e,n,o,i,a){let s;switch(this.scope){case Er.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Er.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Er.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Er.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),n)}},Nt=Er;Nt.LOCAL="local",Nt.WORLD="world",Nt.VIEW="view",Nt.PROJECTION="projection";Je.addKeyword("position",function(){return new Nt});Je.addKeyword("worldPosition",function(){return new Nt(Nt.WORLD)});Je.addKeyword("viewPosition",function(){return new Nt(Nt.VIEW)});var ir=class extends de{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??ir.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case ir.SPHERE:return"v2"}return this.type}generate(e,n){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case ir.VECTOR:{let a=new ct(ct.VIEW),s=e.context.roughness,l=a.build(e,"v3"),u=new Nt(Nt.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 ir.CUBE:{let a=new ir(ir.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case ir.SPHERE:{let a=new ir(ir.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)}},Dr=ir;Dr.CUBE="cube",Dr.SPHERE="sphere",Dr.VECTOR="vector";var Cl=class extends de{constructor(e=new It,n,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ui(this.value,n??new Dr(Dr.VECTOR),o),this.irradianceNode=new ui(this.value,new ct(ct.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))}};import{CubeTexture as e_}from"three";var Al=class extends Fe{constructor(e=new e_,n,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=n??new Dr,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 St(new Ie("",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 Cg=["x","y","z","w"],i_=["float","vec2","vec3","vec4"],a_={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},s_={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[]"},_l=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+`
87
- `);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
+ }`,P);return{bilinearCubeUV:p,roughnessToMip:A,m0:d,cubeUV_maxMipLevel:r}}();var mo=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??mo.VIEW}getShared(){return this.scope===mo.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 l;switch(this.scope){case mo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case mo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case mo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),r)}},Qe=mo;Qe.LOCAL="local",Qe.WORLD="world",Qe.VIEW="view",Qe.NORMAL="normal";je.addKeyword("viewNormal",function(){return new Qe(Qe.VIEW)});je.addKeyword("localNormal",function(){return new Qe(Qe.NORMAL)});je.addKeyword("worldNormal",function(){return new Qe(Qe.WORLD)});var lr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??lr.LOCAL}getType(){switch(this.scope){case lr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case lr.LOCAL:case lr.WORLD:return!1}return!0}generate(e,r,o,i,s){let l;switch(this.scope){case lr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case lr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case lr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case lr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),r)}},gt=lr;gt.LOCAL="local",gt.WORLD="world",gt.VIEW="view",gt.PROJECTION="projection";je.addKeyword("position",function(){return new gt});je.addKeyword("worldPosition",function(){return new gt(gt.WORLD)});je.addKeyword("viewPosition",function(){return new gt(gt.VIEW)});var Ut=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Ut.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Ut.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Ut.VECTOR:{let s=new Qe(Qe.VIEW),l=e.context.roughness,c=s.build(e,"v3"),p=new gt(gt.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;a&&(u=`normalize( mix( ${u}, ${c}, ${a} * ${a} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Ut.CUBE:{let s=new Ut(Ut.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Ut.SPHERE:{let s=new Ut(Ut.VECTOR).build(e,"v3"),l="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${l};`),i="reflectSphereVec"):i=l;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)}},cr=Ut;cr.CUBE="cube",cr.SPHERE="sphere",cr.VECTOR="vector";var ha=class extends ae{constructor(e=new mt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new bn(this.value,r??new cr(cr.VECTOR),o),this.irradianceNode=new bn(this.value,new Qe(Qe.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))}};import{CubeTexture as s1}from"three";var ga=class extends Oe{constructor(e=new s1,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new cr,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 l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new lt(new Se("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,p),e.removeContext(),e.format(l,p,r)}};var ym=["x","y","z","w"],p1=["float","vec2","vec3","vec4"],d1={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},f1={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[]"},ya=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 l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
87
+ `);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",`
88
88
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
89
89
  #define SPE_BLENDING_NORMAL 0
90
90
  #define SPE_BLENDING_MULTIPLY 1
@@ -121,14 +121,14 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
121
121
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
122
122
  accumAlpha += (1.0 - accumAlpha) * alpha;
123
123
  }`,""].join(`
124
- `)},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+`
124
+ `)},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+`
125
125
  `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
126
126
  `}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+`
127
127
  `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
128
- `}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(`
129
- `)}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}];
130
- `:n+=e+" "+c+" "+l+`;
131
- `}return n}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof st?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 ca({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 ca({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"?Je.get(t):t,this.context.include===!1)return t.name;t instanceof Z?o=this.includes.functions:t instanceof Ae?o=this.includes.consts:t instanceof si&&(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 i_[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 t_:case r_:return new Al(n);case n_:return new Cl(new It(n));default:return new It(n)}else{if(n.isVector2)return new lt(n);if(n.isVector3)return new dt(n);if(n.isVector4)return new Kt(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 a_[t]||t}getFormatByType(t){return s_[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Cg[t]}getIndexByElement(t){return Cg.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=Tg,e===Tg&&this.context.gamma&&(e=o_),e}};import{Vector2 as no,Vector3 as Rr,Vector4 as mi}from"three";var Ne=class extends Fe{constructor(e=0,n,o,i){super("c");this.nodeType="Color";this.value=e instanceof et?e:new et(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 Ce=class extends Fe{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)}};import{UniformsLib as l_,UniformsUtils as c_}from"three";var to=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ne(5855577),this.shadingAlpha=new J(1),this.shadingBlend=new Ce(0)}generate(e){let n;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(c_.merge([l_.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
128
+ `}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 l=this.getVars(o),c=l[t];if(!c){let p=l.length;c={name:r||"node"+i+p+(s?"_"+s:""),type:e},l.push(c),l[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(`
129
+ `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],l=s.type,c=s.name,p=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?r+=e+" "+a.substring(0,a.length-2)+" "+c+`[${p}];
130
+ `:r+=e+" "+a+" "+c+`;
131
+ `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Ye?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,p=new di({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}else{let l=this.inputs.uniforms,c=l.list.length,p=new di({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[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"?je.get(t):t,this.context.include===!1)return t.name;t instanceof $?o=this.includes.functions:t instanceof xe?o=this.includes.consts:t instanceof yn&&(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 $&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let l=0;do this.include(t.includes[l++],e);while(l<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 p1[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 a1:case l1:return new ga(r);case c1:return new ha(new mt(r));default:return new mt(r)}else{if(r.isVector2)return new Ke(r);if(r.isVector3)return new et(r);if(r.isVector4)return new Et(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 d1[t]||t}getFormatByType(t){return f1[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return ym[t]}getIndexByElement(t){return ym.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=gm,e===gm&&this.context.gamma&&(e=u1),e}};import{Vector2 as yo,Vector3 as dr,Vector4 as An}from"three";var _e=class extends Oe{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof ke?e:new ke(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,l){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 a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return p?this.generateReadonly(e,r,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var ye=class extends Oe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,l){return e.format(this.value.toString(),i,r)}};import{UniformsLib as m1,UniformsUtils as h1}from"three";var ho=class extends Ye{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(h1.merge([m1.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
132
132
  `));let i=["#include <beginnormal_vertex>",`
133
133
  #if !defined( USE_LAYER_DISPLACE )
134
134
  #include <defaultnormal_vertex>
@@ -145,10 +145,10 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
145
145
  #if !defined( USE_LAYER_DISPLACE )
146
146
  #include <begin_vertex>
147
147
  #endif /* !USE_LAYER_DISPLACE */
148
- `];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(`
149
- `)}else{this.color===void 0&&(this.color=new Ne(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(`
150
- `));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(`
151
- `)}return n}};import{UniformsLib as Og,UniformsUtils as f_}from"three";var Nn=class extends Fe{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)}};import{Matrix3 as u_}from"three";var pi=class extends Fe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new u_}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 ar=class extends Fe{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)}};import{Vector4 as Ag}from"three";var sr=class extends Fe{constructor(e=1,n){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(n)?n:n instanceof Ag?new Array(e).fill(n):new Array(e).fill(new Ag(0))}};var pa=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(pa||{}),vt=function(){let t=new Z(`vec3 random3(vec3 c) {
148
+ `];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(`
149
+ `)}else{this.color===void 0&&(this.color=new _e(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(`
150
+ `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
151
+ `)}return r}};import{UniformsLib as bm,UniformsUtils as x1}from"three";var Kr=class extends Oe{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)}};import{Matrix3 as g1}from"three";var Sn=class extends Oe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new g1}generateReadonly(e,r,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var jt=class extends Oe{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)}};import{Vector4 as xm}from"three";var kt=class extends Oe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof xm?new Array(e).fill(r):new Array(e).fill(new xm(0))}};var mi=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(mi||{}),it=function(){let t=new $(`vec3 random3(vec3 c) {
152
152
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
153
153
  vec3 r;
154
154
  r.z = fract(512.0*j);
@@ -157,7 +157,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
157
157
  j *= .125;
158
158
  r.y = fract(512.0*j);
159
159
  return r-0.5;
160
- }`),e=new Z(`float simplex3d(vec3 p) {
160
+ }`),e=new $(`float simplex3d(vec3 p) {
161
161
  vec3 s = floor(p + dot(p, vec3(F3)));
162
162
  vec3 x = p - s + dot(s, vec3(G3));
163
163
 
@@ -188,7 +188,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
188
188
  d *= w;
189
189
 
190
190
  return dot(d, vec4(52.0));
191
- }`,[t]);e.keywords.F3=new Ae("float F3 0.3333333"),e.keywords.G3=new Ae("float G3 0.1666667");let n=new Z(`float simplex3dFractal(vec3 m) {
191
+ }`,[t]);e.keywords.F3=new xe("float F3 0.3333333"),e.keywords.G3=new xe("float G3 0.1666667");let r=new $(`float simplex3dFractal(vec3 m) {
192
192
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
193
193
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
194
194
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -196,7 +196,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
196
196
  + 0.2666667 * simplex3d(2.0 * m * rot2)
197
197
  + 0.1333333 * simplex3d(4.0 * m * rot3)
198
198
  + 0.0666667 * simplex3d(8.0 * m);
199
- }`,[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) {
199
+ }`,[e]),o=new $("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new $("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new $(`float simplexAshima(vec3 v) {
200
200
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
201
201
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
202
202
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -241,7 +241,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
241
241
  m = m * m;
242
242
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
243
243
  dot(p2,x2), dot(p3,x3) ) );
244
- }`,[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){
244
+ }`,[o,i]),l=new $("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new $("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),p=new $(`float noise(vec3 p){
245
245
  vec3 a = floor(p);
246
246
  vec3 d = p - a;
247
247
  d = d * d * (3.0 - 2.0 * d);
@@ -256,7 +256,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
256
256
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
257
257
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
258
258
  return o4.y * d.y + o4.x * (1.0 - d.y);
259
- }`,[l]),c=new Z(`float fbm(vec3 x) {
259
+ }`,[c]),a=new $(`float fbm(vec3 x) {
260
260
  float v = 0.0;
261
261
  float a = 0.5;
262
262
  vec3 shift = vec3(100);
@@ -266,7 +266,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
266
266
  a *= 0.5;
267
267
  }
268
268
  return v;
269
- }`,[u]);c.keywords.NUM_OCTAVES=new Ae(`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){
269
+ }`,[p]);a.keywords.NUM_OCTAVES=new xe(`int NUM_OCTAVES ${5}`);let u=new $("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new $(`float perlin(vec3 P){
270
270
  vec3 Pi0 = floor(P);
271
271
  vec3 Pi1 = Pi0 + vec3(1.0);
272
272
  Pi0 = mod(Pi0, 289.0);
@@ -325,16 +325,16 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
325
325
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
326
326
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
327
327
  return 2.2 * n_xyz;
328
- }`,[o,i,p]);return{simplex:e,simplexFractal:n,simplexAshima:a,fbm:c,perlin:f}}();var fa=class extends de{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(pa)[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) {
328
+ }`,[o,i,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:a,perlin:d}}();var hi=class extends ae{constructor(e,r,o,i,s,l,c,p,a,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=l,this.colorA=c,this.colorB=p,this.colorC=a,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 l=Object.values(mi)[this.noiseType.value],c=new $(`vec3 ${l}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) {
329
329
  vec3 st = position / size;
330
330
  st /= scale;
331
- vec3 q = vec3(${s}(st),
332
- ${s}(st + vec3(1.0)),
333
- ${s}(st + vec3(1.0)));
334
- vec3 r = vec3(${s}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
335
- ${s}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
336
- ${s}(st * q));
337
- float f = ${s}(st + r);
331
+ vec3 q = vec3(${l}(st),
332
+ ${l}(st + vec3(1.0)),
333
+ ${l}(st + vec3(1.0)));
334
+ vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
335
+ ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
336
+ ${l}(st * q));
337
+ float f = ${l}(st + r);
338
338
  vec4 color;
339
339
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
340
340
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
@@ -345,7 +345,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
345
345
 
346
346
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
347
347
  return clamp(color, 0.0, 1.0).rgb;
348
- }`,[vt.simplex,vt.simplexFractal,vt.simplexAshima,vt.fbm,vt.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)}};fa.numOctaves=5;import{UniformsLib as _g,UniformsUtils as p_}from"three";var Ol=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new Ce(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(p_.merge([_g.fog,_g.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(`
348
+ }`,[it.simplex,it.simplexFractal,it.simplexAshima,it.fbm,it.perlin]),p=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(p+"("+a.join(",")+")",this.getType(e),r)}};hi.numOctaves=5;import{UniformsLib as vm,UniformsUtils as y1}from"three";var xa=class extends Ye{constructor(){super("phong");this.nodeType="Phong";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(y1.merge([vm.fog,vm.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(`
349
349
  `));let i=["#include <beginnormal_vertex>",`
350
350
  #ifndef USE_LAYER_DISPLACE
351
351
  #include <defaultnormal_vertex>
@@ -363,9 +363,9 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
363
363
  #ifndef USE_LAYER_DISPLACE
364
364
  #include <begin_vertex>
365
365
  #endif
366
- `];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(`
367
- `)}else{e.mergeUniform({penumbraSize:ht.penumbraSize}),this.color===void 0&&(this.color=new Ne(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(`
368
- `));let p=["#include <normal_fragment_begin>",`
366
+ `];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(`
367
+ `)}else{e.mergeUniform({penumbraSize:tt.penumbraSize}),this.color===void 0&&(this.color=new _e(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"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==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(`
368
+ `));let u=["#include <normal_fragment_begin>",`
369
369
  // NOTE: gl_FrontFacing alternative using face normal estimation.
370
370
  vec3 viewdx = dFdx(vViewPosition);
371
371
  vec3 viewdy = dFdy(vViewPosition);
@@ -373,21 +373,21 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
373
373
  if (dot(normal, faceNormal) < 0.0) {
374
374
  normal *= -1.0;
375
375
  }
376
- `," 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(`
376
+ `," 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;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.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(`
377
377
  if (outgoingLight != diffuseColor) {
378
378
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
379
- accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
380
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
379
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
380
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
381
381
  }
382
- `),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(`
383
- `)}return n}};var Nu=class extends de{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(Nu.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)}},da=Nu;da.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
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
383
+ `)}return r}};var nc=class extends ae{constructor(e,r,o,i,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=l,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(nc.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)}},gi=nc;gi.Nodes=function(){return{fresnel:new $(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
384
384
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
385
385
 
386
386
  float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
387
387
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
388
388
  accumAlpha += (1.0 - accumAlpha) * lalpha;
389
389
  return color;
390
- }`)}}();var Pu=class extends de{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(Pu.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)}},ha=Pu;ha.Nodes=function(){let e=new Z(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
390
+ }`)}}();var ic=class extends ae{constructor(e,r,o,i,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,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(ic.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)}},yi=ic;yi.Nodes=function(){let e=new $(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
391
391
  vec3 st = position / noiseScale;
392
392
  vec3 q = vec3(simplex3d(st),
393
393
  simplex3d(st + vec3(1.0)),
@@ -400,7 +400,7 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
400
400
  float noise = simplex3d(st + r);
401
401
 
402
402
  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);
403
- }`,[vt.simplex]);return{rainbow:new Z(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
403
+ }`,[it.simplex]);return{rainbow:new $(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
404
404
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
405
405
 
406
406
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -409,21 +409,21 @@ var _v=Object.create;var ac=Object.defineProperty;var Ov=Object.getOwnPropertyDe
409
409
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
410
410
 
411
411
  return res;
412
- }`,[e])}}();var Mu=class extends de{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(`
412
+ }`,[e])}}();var sc=class extends ae{constructor(e,r,o,i,s,l,c,p,a,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=l,this.contourFrequency=c,this.outlineSmoothing=p,this.contourDirection=a,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"),l=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(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
413
413
  vID = randomColor.r;
414
- if (${a}) {
415
- vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
414
+ if (${s}) {
415
+ vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
416
416
  // NOTE: For certain shapes, like spheres, we get incorrect extrusion when the
417
417
  // normals face the camera directly. So we hackily fix this by offsetting the normal
418
418
  // by a tiny amount.
419
- vec3 ${l}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
420
- vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${s};
421
- ${l}_clipPosition.xy += ${l}_offset;
419
+ vec3 ${c}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
420
+ vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${c}_clipPosition.w * 2.0 * ${l};
421
+ ${c}_clipPosition.xy += ${c}_offset;
422
422
  // TODO(MAX): To handle multiple outline layers, we only want to extrude
423
423
  // if this offset is the biggest of all the potential offsets
424
- gl_Position = ${l}_clipPosition;
424
+ gl_Position = ${c}_clipPosition;
425
425
  }
426
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Mu.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."),""}},ma=Mu;ma.Nodes=function(){let e=new Z(`
426
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(sc.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."),""}},xi=sc;xi.Nodes=function(){let e=new $(`
427
427
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
428
428
  {
429
429
  vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
@@ -524,7 +524,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
524
524
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
525
525
  return edgeNormal;
526
526
  }
527
- `);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) {
527
+ `);return{outline:new $(`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) {
528
528
  vec3 result = outlineColor;
529
529
  float resultAlpha = 0.0;
530
530
 
@@ -563,11 +563,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
563
563
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
564
564
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
565
565
  return result;
566
- }`,[e])}}();var Eu=class extends de{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(Eu.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)}},ga=Eu;ga.Nodes=function(){let e=new Z(`
566
+ }`,[e])}}();var ac=class extends ae{constructor(e,r,o,i,s,l,c,p){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,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(ac.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)}},vi=ac;vi.Nodes=function(){let e=new $(`
567
567
  float gaussian(vec2 i) {
568
568
  const float sigma = float(NUM_SAMPLES) * .25;
569
569
  return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
570
- }`),n=new Z(`
570
+ }`),r=new $(`
571
571
  vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
572
572
  // Slightly modified version of this:
573
573
  // https://www.shadertoy.com/view/ltScRG
@@ -597,7 +597,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
597
597
  a += gaussian;
598
598
  }
599
599
  return O / a;
600
- }`,[e]),o=new Z(`
600
+ }`,[e]),o=new $(`
601
601
  vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
602
602
  // Direction of refracted light.
603
603
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
@@ -608,18 +608,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
608
608
  modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
609
609
  // The thickness is specified in local space.
610
610
  return normalize( refractionVector ) * thickness * modelScale;
611
- }`),i=new Z(`
611
+ }`),i=new $(`
612
612
  float applyIorToRoughness( float roughness, float ior ) {
613
613
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
614
614
  // an IOR of 1.5 results in the default amount of microfacet refraction.
615
615
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
616
- } `),a=new Z(`
616
+ } `),s=new $(`
617
617
  vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
618
618
  float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
619
619
  float lod = applyIorToRoughness(roughness, ior);
620
620
 
621
621
  return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
622
- }`,[i,n]),s=new Z(`
622
+ }`,[i,r]),l=new $(`
623
623
  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 ) {
624
624
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
625
625
  vec3 refractedRayExit = position + transmissionRay;
@@ -637,7 +637,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
637
637
 
638
638
  // Sample framebuffer to get pixel the refracted ray hits.
639
639
  return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
640
- }`,[a,o]);return{transmission:new Z(`
640
+ }`,[s,o]);return{transmission:new $(`
641
641
  vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
642
642
  vec3 v = vec3(0.);
643
643
  if (isOrthographic) {
@@ -651,7 +651,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
651
651
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
652
652
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
653
653
  return transmission;
654
- }`,[s])}}();var fi=class extends de{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) {
654
+ }`,[l])}}();var wn=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=p,this.colors=a,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 $(`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) {
655
655
  vec4 color = colors[0];
656
656
  #ifdef ${o}_IS_VECTOR
657
657
  #ifdef ${o}_LINEAR
@@ -691,25 +691,25 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
691
691
 
692
692
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
693
693
  return color.rgb;
694
- }`,[fi.Nodes.vectorLinearWorldSpaceDepth,fi.Nodes.vectorLinearObjectSpaceDepth,fi.Nodes.vectorSphericalObjectSpaceDepth,fi.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)}},ya=fi;ya.Nodes=function(){let e=new Z(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
694
+ }`,[wn.Nodes.vectorLinearWorldSpaceDepth,wn.Nodes.vectorLinearObjectSpaceDepth,wn.Nodes.vectorSphericalObjectSpaceDepth,wn.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),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.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)}},bi=wn;bi.Nodes=function(){let e=new $(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
695
695
  vec3 n = normalize(direction);
696
696
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
697
697
  return ( dist - near ) / ( far - near );
698
- }`),n=new Z(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
698
+ }`),r=new $(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
699
699
  vec3 n = normalize(direction);
700
700
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
701
701
  return ( dist - near ) / ( far - near );
702
- }`),o=new Z(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
702
+ }`),o=new $(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
703
703
  float dist = length(vWPosition - origin);
704
704
  return ( dist - near ) / ( far - near );
705
- }`),i=new Z(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
705
+ }`),i=new $(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
706
706
  float dist = length(position - origin);
707
707
  return ( dist - near ) / ( far - near );
708
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:n,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var va=class extends de{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 Du=(e=>(e.NOISE="noise",e.MAP="map",e))(Du||{}),Bu=class extends de{constructor(e,n,o,i,a){super("v3");this.displacementTypeIndex=new Ce(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=n,Object.values(Du)[this.displacementTypeIndex.value]==="map"&&(this.mat=new pi(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(Du)[this.displacementTypeIndex.value]){case"map":{o=e.include(Bu.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(pa)[this.noiseFunctionIndex.value],l=new Z(`vec3 orthogonal(vec3 v) {
708
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Si=class extends ae{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 lc=(e=>(e.NOISE="noise",e.MAP="map",e))(lc||{}),cc=class extends ae{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new ye(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(lc)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Sn(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(lc)[this.displacementTypeIndex.value]){case"map":{o=e.include(cc.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 l=Object.values(mi)[this.noiseFunctionIndex.value],c=new $(`vec3 orthogonal(vec3 v) {
709
709
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
710
- }`),u=new Z(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
711
- return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
712
- }`,[vt.simplex,vt.simplexFractal,vt.simplexAshima,vt.fbm,vt.perlin]),c=new Z(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
710
+ }`),p=new $(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
711
+ return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
712
+ }`,[it.simplex,it.simplexFractal,it.simplexAshima,it.fbm,it.perlin]),a=new $(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
713
713
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
714
714
  vec3 tangent1 = orthogonal(normal);
715
715
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -725,9 +725,9 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
725
725
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
726
726
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
727
727
  return displaced_position;
728
- }`,[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)}},xa=Bu;xa.Nodes=function(){let e=new Z(`vec3 orthogonal(vec3 v) {
728
+ }`,[p,c]);o=e.include(a),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)}},wi=cc;wi.Nodes=function(){let e=new $(`vec3 orthogonal(vec3 v) {
729
729
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
730
- }`),n=new Z(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
730
+ }`),r=new $(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
731
731
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
732
732
  vec4 tmp = texture2D(tex, uvs);
733
733
  vec3 col = tmp.rgb;
@@ -737,7 +737,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
737
737
  }
738
738
  }
739
739
  return col.r;
740
- }`);return{map:new Z(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
740
+ }`);return{map:new $(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
741
741
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
742
742
  vec3 tangent1 = normalize(orthogonal(normal));
743
743
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -747,7 +747,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
747
747
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
748
748
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
749
749
  return displaced_position;
750
- }`,[e,n])}}();var Fu=class extends de{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(Fu.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)}},ba=Fu;ba.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) {
750
+ }`,[e,r])}}();var uc=class extends ae{constructor(e,r,o,i,s,l,c,p){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=s,this.morph=l,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(uc.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)}},_i=uc;_i.Nodes=function(){return{gradient:new $(`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) {
751
751
  vec4 color = colors[0];
752
752
  vec2 m = morph / vUv.xy;
753
753
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -789,7 +789,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
789
789
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
790
790
 
791
791
  return color.xyz;
792
- }`)}}();var wa=class extends de{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(wa.Nodes.cylindrical);break;case 2:i=e.include(wa.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(`
792
+ }`)}}();var Ai=class extends ae{constructor(e,r,o,i,s,l,c,p,a,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=l,this.size=c,this.mat=p,this.alpha=a,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(Ai.Nodes.cylindrical);break;case 2:i=e.include(Ai.Nodes.spherical);break;case 1:let l=["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 $(`
793
793
  vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
794
794
 
795
795
  vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -798,7 +798,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
798
798
 
799
799
  vec3 col = tmp.rgb;
800
800
  float lalpha = alpha * tmp.a;
801
- ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${s}));`}
801
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
802
802
 
803
803
  if ( crop > 0.5 ) {
804
804
  if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
@@ -808,7 +808,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
808
808
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
809
809
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
810
810
  return col;
811
- }`);i=e.include(l);break;default:i=e.include(wa.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)}},Sa=wa;Sa.Nodes=function(){let e=new Z(`
811
+ }`);i=e.include(c);break;default:i=e.include(Ai.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 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)}},Ti=Ai;Ti.Nodes=function(){let e=new $(`
812
812
  vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
813
813
  vec3 posN = normalize(position);
814
814
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -838,7 +838,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
838
838
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
839
839
  return col;
840
840
  }
841
- `),n=new Z(`
841
+ `),r=new $(`
842
842
  vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
843
843
  vec3 posN = normalize(vPosition);
844
844
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -866,7 +866,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
866
866
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
867
867
  return col;
868
868
  }
869
- `),o=new Z(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
869
+ `),o=new $(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
870
870
 
871
871
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
872
872
  vec4 tmp = texture2D( tex, uvs );
@@ -882,14 +882,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
882
882
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
883
883
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
884
884
  return col;
885
- }`);return{cylindrical:e,spherical:n,uv:o}}();var Ru=class extends de{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(Ru.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)}},Ta=Ru;Ta.Nodes=function(){return{customNormal:new Z(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
885
+ }`);return{cylindrical:e,spherical:r,uv:o}}();var pc=class extends ae{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(pc.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)}},Ni=pc;Ni.Nodes=function(){return{customNormal:new $(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
886
886
  vec3 normal = packNormalToRGB( norm ).rgb;
887
887
  normal *= step( vec3(0.5), cnormal );
888
888
 
889
889
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
890
890
 
891
891
  return normal;
892
- }`)}}();var ht={normalRenderTarget:new It,normalRenderTargetDepth:new It,transmissionRenderTarget:new It,transmissionSize:new lt(2048,2048),transmissionRenderTargetDepth:new It,pixelRatioNode:new J(1),resolution:new lt,penumbraSize:new ar(5,.5)};for(let r of Object.values(ht))r.isRenderGlobal=!0;var Ca=class extends st{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ne(5855577),this.emissive=new Ne(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new Ce(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(f_.merge([Og.fog,Og.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(`
892
+ }`)}}();var tt={normalRenderTarget:new mt,normalRenderTargetDepth:new mt,transmissionRenderTarget:new mt,transmissionSize:new Ke(2048,2048),transmissionRenderTargetDepth:new mt,pixelRatioNode:new Y(1),resolution:new Ke,penumbraSize:new jt(5,.5)};for(let n of Object.values(tt))n.isRenderGlobal=!0;var Ii=class extends Ye{constructor(){super("lambert");this.nodeType="Lambert";this.color=new _e(5855577),this.emissive=new _e(0),this.emissiveIntensity=new Y(1),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(x1.merge([bm.fog,bm.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(`
893
893
  `));let i=["#include <beginnormal_vertex>",`
894
894
  #ifndef USE_LAYER_DISPLACE
895
895
  #include <defaultnormal_vertex>
@@ -980,22 +980,22 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
980
980
  }
981
981
  #pragma unroll_loop_end
982
982
  #endif
983
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),n=i.join(`
984
- `)}else{e.mergeUniform({penumbraSize:ht.penumbraSize}),this.color===void 0&&(this.color=new Ne(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(`
985
- `));let p=["#include <normal_fragment_begin>",`
983
+ `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
984
+ `)}else{e.mergeUniform({penumbraSize:tt.penumbraSize}),this.color===void 0&&(this.color=new _e(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"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==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(`
985
+ `));let u=["#include <normal_fragment_begin>",`
986
986
  // NOTE: gl_FrontFacing alternative using face normal estimation.
987
987
  vec3 viewdx = dFdx(vViewPosition);
988
988
  vec3 viewdy = dFdy(vViewPosition);
989
989
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
990
990
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
991
- `,"#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(`
991
+ `,"#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 ) );"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.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(`
992
992
  if (outgoingLight != diffuseColor) {
993
993
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
994
- accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
995
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
994
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
995
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
996
996
  }
997
- `),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(`
998
- `)}return n}};import{UniformsLib as ku,UniformsUtils as d_}from"three";var Aa=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ne(5855577),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new Ce(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(d_.merge([ku.fog,ku.lights])),ku.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
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
998
+ `)}return r}};import{UniformsLib as dc,UniformsUtils as v1}from"three";var Pi=class extends Ye{constructor(){super("standard");this.nodeType="Standard";this.color=new _e(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(v1.merge([dc.fog,dc.lights])),dc.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(`
999
999
  `));let i=["#include <beginnormal_vertex>",`
1000
1000
  #if !defined( USE_LAYER_DISPLACE )
1001
1001
  #include <defaultnormal_vertex>
@@ -1012,9 +1012,9 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1012
1012
  #if !defined( USE_LAYER_DISPLACE )
1013
1013
  #include <begin_vertex>
1014
1014
  #endif /* !USE_LAYER_DISPLACE */
1015
- `];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(`
1016
- `)}else{e.mergeUniform({penumbraSize:ht.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ne(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(`
1017
- `));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1015
+ `];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(`
1016
+ `)}else{e.mergeUniform({penumbraSize:tt.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new _e(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"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),p=this.shadingBlend.flow(e,"i"),a=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(`
1017
+ `));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1018
1018
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1019
1019
  vec3 viewdx = dFdx(vViewPosition);
1020
1020
  vec3 viewdy = dFdy(vViewPosition);
@@ -1022,14 +1022,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1022
1022
  if (dot(normal, faceNormal) < 0.0) {
1023
1023
  normal *= -1.0;
1024
1024
  }
1025
- `," 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(`
1025
+ `," 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+";",l.code," float metalnessFactor = "+l.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(`
1026
1026
  if (outgoingLight != diffuseColor) {
1027
1027
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1028
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
1029
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${u.result} );
1028
+ accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
1029
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
1030
1030
  }
1031
- `),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(`
1032
- `)}return n}};import{UniformsLib as Ig,UniformsUtils as h_}from"three";var _a=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new Ce(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(h_.merge([Ig.fog,Ig.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
+ `),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.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(`
1032
+ `)}return r}};import{UniformsLib as Sm,UniformsUtils as b1}from"three";var Oi=class extends Ye{constructor(){super("toon");this.nodeType="Toon";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(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(b1.merge([Sm.fog,Sm.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(`
1033
1033
  `));let i=["#include <beginnormal_vertex>",`
1034
1034
  #ifndef USE_LAYER_DISPLACE
1035
1035
  #include <defaultnormal_vertex>
@@ -1046,8 +1046,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1046
1046
  #ifndef USE_LAYER_DISPLACE
1047
1047
  #include <begin_vertex>
1048
1048
  #endif
1049
- `];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(`
1050
- `)}else{e.mergeUniform({penumbraSize:ht.penumbraSize}),this.color===void 0&&(this.color=new Ne(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
+ `];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(`
1050
+ `)}else{e.mergeUniform({penumbraSize:tt.penumbraSize}),this.color===void 0&&(this.color=new _e(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"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==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>",`
1051
1051
  varying vec3 vViewPosition;
1052
1052
  struct ToonMaterial {
1053
1053
  vec3 diffuseColor;
@@ -1068,7 +1068,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1068
1068
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
1069
1069
  #define Material_LightProbeLOD( material ) (0)
1070
1070
  `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
1071
- `));let p=["#include <normal_fragment_begin>",`
1071
+ `));let u=["#include <normal_fragment_begin>",`
1072
1072
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1073
1073
  vec3 viewdx = dFdx(vViewPosition);
1074
1074
  vec3 viewdy = dFdy(vViewPosition);
@@ -1076,14 +1076,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1076
1076
  if (dot(normal, faceNormal) < 0.0) {
1077
1077
  normal *= -1.0;
1078
1078
  }
1079
- `," 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(`
1079
+ `," 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;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.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(`
1080
1080
  if (outgoingLight != diffuseColor) {
1081
1081
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1082
- accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * lightAccu;
1083
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result}, ${l.result} );
1082
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
1083
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
1084
1084
  }
1085
- `),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(`
1086
- `)}return n}};import{Vector2 as Oa,Vector3 as nn,Vector4 as Il}from"three";function Lg(r,t){switch(r.type){case"fresnel":return y_(r,t);case"gradient":return v_(r);case"depth":return x_(r);case"normal":return b_(r);case"noise":return S_(r,t);case"rainbow":return w_(r);case"toon":return T_(r,t);case"outline":return C_(r,t);case"transmission":return A_(r,t);case"color":return g_(r,t)}}function m_(r){return{type:r.type}}function Fr(r){let{alpha:t,mode:e}=r;return{...m_(r),alpha:t,mode:e}}function g_(r,t){return{...Fr(r),color:at(r.color,t)}}function y_(r,t){let{bias:e,scale:n,intensity:o,factor:i,color:a}=r;return{...Fr(r),color:at(a,t),bias:e,scale:n,intensity:o,factor:i}}function v_(r){let{gradientType:t,smooth:e,colors:n,steps:o,angle:i,offset:a,morph:s}=r;return{...Fr(r),gradientType:t,smooth:e,colors:n.map(l=>new Il(l[0],l[1],l[2],l[3])),num:n.length,steps:o,offset:new Oa(...a),morph:new Oa(...s),angle:i}}function x_(r){let{gradientType:t,near:e,far:n,isVector:o,isWorldSpace:i,origin:a,direction:s,colors:l,steps:u,smooth:c}=r;return{...Fr(r),gradientType:t,near:e,far:n,isVector:o,isWorldSpace:i,origin:new nn(...a),direction:s?new nn(...s):new nn(1,0,0),colors:l.map(p=>p!==void 0?new Il(p[0],p[1],p[2],p[3]):new Il(0,0,0,0)),steps:u.slice(0,l.length),smooth:c}}function b_(r){let{cnormal:t}=r;return{...Fr(r),cnormal:new nn(t[0],t[1],t[2])}}function S_(r,t){return{...Fr(r),scale:r.scale,move:r.move,fA:new Oa(...r.fA),fB:new Oa(...r.fB),size:new nn(...r.size),distortion:new Oa(...r.distortion),colorA:at(r.colorA,t),colorB:at(r.colorB,t),colorC:at(r.colorC,t),colorD:at(r.colorD,t),noiseType:r.noiseType}}function w_(r){return{...Fr(r),filmThickness:r.filmThickness,movement:r.movement,wavelengths:new nn(...r.wavelengths),noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,offset:new nn(...r.offset)}}function T_(r,t){return{...Fr(r),positioning:r.positioning,colors:r.colors.map(e=>new Il(e[0],e[1],e[2],e[3])),num:r.colors.length,steps:r.steps,source:new nn(...r.source),isWorldSpace:r.isWorldSpace,noiseStrength:r.noiseStrength,noiseScale:r.noiseScale,shadowColor:at(r.shadowColor,t),offset:new nn(...r.offset)}}function C_(r,t){return{...Fr(r),outlineColor:at(r.outlineColor,t),contourColor:at(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 A_(r,t){return{...Fr(r),thickness:r.thickness,ior:r.ior,roughness:r.roughness}}var Pn=class extends et{};import{Vector4 as O_}from"three";import{Texture as __}from"three";var Gu=new Map,Ia={url:"head",time:0,data:null,next:null,prev:null},di={url:"tail",time:1/0,data:null,next:null,prev:null};Ia.next=di;di.prev=Ia;var Ng=0;function Pg(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=di.prev,e.next=di,di.prev.next=e,di.prev=e,t-Ng>1e3*10&&(Ng=t+1e3,setTimeout(()=>{let n=Date.now(),o=Ia.next;for(;o.time<n-1e3*10;)URL.revokeObjectURL(o.url),Gu.delete(o.data),o=o.next,o.prev=Ia,Ia.next=o},900)),e.url}var hi=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=Pg(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 __(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 ro=class extends hi{};var Mn=class extends Fe{};var Uu={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Vu={depth:["colors"]};function I_(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 ro||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 Mg(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 Mn))switch(o=o||I_(e,i,a),s.constructor){case Ne:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Pn?s.value=new et(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Kt:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Pn?s.value=new et(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case lt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case dt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case It:{zu(a,t,e);break}case sr:{s.value=a.map(l=>new O_(...l));break}default:{s.value=a;break}}}return o}var Hu=class extends de{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)}},La=Hu;La.Nodes=function(){return{matcap:new Z(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1085
+ `),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
1086
+ `)}return r}};import{Vector2 as Ci,Vector3 as Ir,Vector4 as va}from"three";function wm(n,t){switch(n.type){case"fresnel":return _1(n,t);case"gradient":return T1(n);case"depth":return A1(n);case"normal":return N1(n);case"noise":return I1(n,t);case"rainbow":return P1(n);case"toon":return O1(n,t);case"outline":return C1(n,t);case"transmission":return L1(n,t);case"color":return w1(n,t)}}function S1(n){return{type:n.type}}function pr(n){let{alpha:t,mode:e}=n;return{...S1(n),alpha:t,mode:e}}function w1(n,t){return{...pr(n),color:Xe(n.color,t)}}function _1(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...pr(n),color:Xe(s,t),bias:e,scale:r,intensity:o,factor:i}}function T1(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:l}=n;return{...pr(n),gradientType:t,smooth:e,colors:r.map(c=>new va(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new Ci(...s),morph:new Ci(...l),angle:i}}function A1(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:p,smooth:a}=n;return{...pr(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Ir(...s),direction:l?new Ir(...l):new Ir(1,0,0),colors:c.map(u=>u!==void 0?new va(u[0],u[1],u[2],u[3]):new va(0,0,0,0)),steps:p.slice(0,c.length),smooth:a}}function N1(n){let{cnormal:t}=n;return{...pr(n),cnormal:new Ir(t[0],t[1],t[2])}}function I1(n,t){return{...pr(n),scale:n.scale,move:n.move,fA:new Ci(...n.fA),fB:new Ci(...n.fB),size:new Ir(...n.size),distortion:new Ci(...n.distortion),colorA:Xe(n.colorA,t),colorB:Xe(n.colorB,t),colorC:Xe(n.colorC,t),colorD:Xe(n.colorD,t),noiseType:n.noiseType}}function P1(n){return{...pr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ir(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ir(...n.offset)}}function O1(n,t){return{...pr(n),positioning:n.positioning,colors:n.colors.map(e=>new va(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ir(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Xe(n.shadowColor,t),offset:new Ir(...n.offset)}}function C1(n,t){return{...pr(n),outlineColor:Xe(n.outlineColor,t),contourColor:Xe(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 L1(n,t){return{...pr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var Qr=class extends ke{};import{Vector4 as E1}from"three";import{Texture as M1}from"three";var fc=new Map,Li={url:"head",time:0,data:null,next:null,prev:null},_n={url:"tail",time:1/0,data:null,next:null,prev:null};Li.next=_n;_n.prev=Li;var _m=0;function Tm(n){if(typeof n=="string")return n;let t=Date.now(),e=fc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},fc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=_n.prev,e.next=_n,_n.prev.next=e,_n.prev=e,t-_m>1e3*10&&(_m=t+1e3,setTimeout(()=>{let r=Date.now(),o=Li.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),fc.delete(o.data),o=o.next,o.prev=Li,Li.next=o},900)),e.url}var Tn=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=Tm(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 M1(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 go=class extends Tn{};var Zr=class extends Oe{};var mc={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},hc={depth:["colors"]};function B1(n,t,e){let r=mc[n.type],o=hc[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 gc(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,l=t.image(s),c=r;c instanceof go||c.image.dispose(),c.image=l}if("wrapping"in i){let s=r;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",l=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(l.repeat=i.repeat),"offset"in i&&(l.offset=i.offset),l.updateMatrix()}return o}function Am(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||yc(i,e,r))continue;e.visible=r.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof Zr))switch(o=o||B1(e,i,s),l.constructor){case _e:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Qr?l.value=new ke(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Et:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Qr?l.value=new ke(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Ke:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case et:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case mt:{gc(s,t,e);break}case kt:{l.value=s.map(c=>new E1(...c));break}default:{l.value=s;break}}}return o}var xc=class extends ae{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(xc.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)}},Mi=xc;Mi.Nodes=function(){return{matcap:new $(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1087
1087
  vec3 viewDir = normalize( vViewPosition );
1088
1088
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
1089
1089
  vec3 y = cross( viewDir, x );
@@ -1095,14 +1095,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1095
1095
 
1096
1096
  return matcapColor.rgb;
1097
1097
  }
1098
- `)}}();var Na=class extends Mn{constructor(e,n){super("t");this.image=e;this.wrap=n}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as L_}from"three";var Ll=class extends Mn{constructor(e){super("v3");this.image=e;this._value=new L_}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Wu=class extends de{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)}},Pa=Wu;Pa.Nodes=function(){let e=new Z(`float rand(float n) {
1098
+ `)}}();var Ei=class extends Zr{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as D1}from"three";var ba=class extends Zr{constructor(e){super("v3");this.image=e;this._value=new D1}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var vc=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=p,this.offset=a,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(vc.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)}},Bi=vc;Bi.Nodes=function(){let e=new $(`float rand(float n) {
1099
1099
  return fract(sin(n) * 43758.5453123);
1100
- }`),n=new Z(`float hash1(float p) {
1100
+ }`),r=new $(`float hash1(float p) {
1101
1101
  p = fract(p * 0.011);
1102
1102
  p *= p + 7.5;
1103
1103
  p *= p + p;
1104
1104
  return fract(p);
1105
- }`),o=new Z(`float valueNoise(vec3 x) {
1105
+ }`),o=new $(`float valueNoise(vec3 x) {
1106
1106
  const vec3 step = vec3(110, 241, 171);
1107
1107
 
1108
1108
  vec3 i = floor(x);
@@ -1117,13 +1117,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1117
1117
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1118
1118
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1119
1119
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1120
- }`,[n]),i=new Z(`vec3 hash3(vec3 x) {
1120
+ }`,[r]),i=new $(`vec3 hash3(vec3 x) {
1121
1121
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1122
1122
  dot(x,vec3(269.5, 183.3, 246.1)),
1123
1123
  dot(x,vec3(113.5, 271.9, 124.6)));
1124
1124
 
1125
1125
  return fract(sin(x)*43758.5453123);
1126
- }`),a=new Z(`vec3 voronoiNoise(in vec3 x)
1126
+ }`),s=new $(`vec3 voronoiNoise(in vec3 x)
1127
1127
  {
1128
1128
  vec3 p = floor(x);
1129
1129
  vec3 f = fract(x);
@@ -1154,7 +1154,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1154
1154
 
1155
1155
  return vec3(sqrt(res), abs(id));
1156
1156
  }
1157
- `,[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) {
1157
+ `,[i]);return{toon:new $(`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) {
1158
1158
  float t = 0.0;
1159
1159
  float shadow = 1.0;
1160
1160
 
@@ -1331,7 +1331,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1331
1331
 
1332
1332
  return color.xyz;
1333
1333
 
1334
- }`,[vt.simplex,e,o,a])}}();import{Matrix3 as N_}from"three";function Eg(r,t,e){r.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Nl=class extends pi{constructor(e,n){super(new N_);this.repeat=e;this.offset=n;Eg(this.value,e,n)}updateMatrix(){Eg(this.value,this.repeat,this.offset)}};var kr=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 Gr.createLigherLayer(t,e,n,o);if(n.type==="texture"){let i=o.image(n.texture.image),a=new Na(i,n.texture.wrapping),s=new Ll(i),l=new Nl(n.texture.repeat,n.texture.offset),u=new J(n.crop?1:0),c=new Ce(n.projection??0),p=new Ce(["x","y","z"].indexOf(n.axis)??0),f=new Ce(n.side??0),d=new lt(n.size?new no(n.size[0],n.size[1]):new no(100,100)),h=new J(n.alpha??1),m=new Ce(n.mode??0),g=new Sa(a,s,u,c,p,f,d,l,h,m),v=new Ie(g.calpha,"f");return new tt(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 Na(i,n.texture.wrapping),s=new J(n.alpha??1),l=new Ce(n.mode??0),u=new La(a,s,l),c=new Ie(u.calpha,"f");return new tt(t,e,n,{texture:a,alpha:s,mode:l},u,l,c)}else if(n.type==="displace")if(n.displacementType==="noise"){let i=new dt(new Rr(...n.offset)),a=new J(n.scale??10),s=new J(n.intensity??8),l=new J(n.movement??1),u=new Ce(n.noiseType??0),c=new xa(s,l,i,a,u);return new Ma(t,e,n,{offset:i,scale:a,intensity:s,movement:l,noiseType:u},c)}else throw new Error;else return M_(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:Mg(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}},tt=class extends kr{constructor(e,n,o,i,a,s,l){super(e,n,o,i);this.color=a;this.mode=s;this.alpha=l}},Ma=class extends kr{constructor(e,n,o,i,a){super(e,n,o,i);this.position=a}},Gr=class extends kr{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 Ce(o.mode),u;if(o.category==="lambert"){a=new Ca;let c=new Ne(i.color(o.emissive)??0);u={emissive:c},a.emissive=c}else if(o.category==="phong"){a=new Ol;let c=new J(o.shininess??30),p=new Ne(i.color(o.specular)??1118481);u={shininess:c,specular:p},a.shininess=c,a.specular=p}else if(o.category==="toon"){a=new _a;let c=new J(o.shininess??30),p=new Ne(i.color(o.specular)??1118481);u={shininess:c,specular:p},a.shininess=c,a.specular=p}else if(o.category==="physical"){a=new Aa;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 to,u={};return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,new Gr(e,n,o,a,u)}};function Dg(r){let t=r instanceof kr?r.type:r;return t==="texture"||t==="displace_map"||t==="matcap"}function P_(r,t,e,n){switch(r.type){case"color":{let o=new Ne(n.color??5855577),i=new J(n.alpha??1),a=new Ie("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");a.keywords.alpha=i;let s=new Ce(n.mode??0);return o.alpha=i,new tt(t,e,r,{color:o,alpha:i,mode:s},o,s,a)}case"fresnel":{let o=new Ne(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 Ce(n.mode??0),p=new da(o,i,a,s,l,u,c),f=new Ie(p.calpha,"f");return new tt(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 dt(n.wavelengths??new Rr(0,0,0)),s=new J(n.noiseStrength??0),l=new J(n.noiseScale??1),u=new dt(n.offset??new Rr(0,0,0)),c=new J(n.alpha??1),p=new ha(o,i,a,s,l,u,c),f=new Ie(p.calpha,"f"),d=new Ce(n.mode??0);return new tt(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=ht.transmissionSize,l=ht.transmissionRenderTarget,u=ht.transmissionRenderTargetDepth,c=window.innerWidth,p=window.innerHeight,f=c>=p?new lt(p/c,1):new lt(1,c/p),d=new J(n.alpha??1),h=new ga(o,i,a,s,l,u,f,d),m=new Ie(h.calpha,"f"),g=new Ce(n.mode??0);return new tt(t,e,r,{thickness:o,ior:i,roughness:a,aspectRatio:f,alpha:d,mode:g},h,g,m)}case"toon":{let o=new Ce(n.positioning??0),i;n.colors?i=new sr(n.colors.length,n.colors):(i=new sr(10,new mi(0,0,0,1)),i.value[1]=new mi(1,1,1,1));let a;n.steps?a=new ar(n.steps.length,n.steps):(a=new ar(10,1),a.value[0]=0);let s=new dt(n.source??new Rr(0,0,0)),l=new Nn(n.isWorldSpace??!0),u=new J(n.noiseStrength??0),c=new J(n.noiseScale??1),p=new Kt(n.shadowColor),f=new dt(n.offset??new Rr(0,0,0)),d=new J(n.alpha??1),h=new Pa(o,i,a,s,l,u,c,p,f,d),m=new Ie(h.calpha,"f"),g=new Ce(n.mode??0);return new tt(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 Ne(n.outlineColor??16777215),i=new Ne(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 dt(n.contourDirections??new Rr(0,1,0)),d=new Nn(n.positionalLines??!1),h=new Nn(n.compensation??!0),m=ht.normalRenderTarget,g=ht.normalRenderTargetDepth,v=ht.pixelRatioNode,x=ht.resolution,b=new J(n.alpha??1),w=new ma(o,i,a,s,l,u,c,p,f,d,h,x,m,g,v,b),S=new Ie(w.calpha,"f"),_=new Ce(n.mode??0);return new tt(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:b,mode:_},w,_,S)}case"depth":{let o=new Ce(n.gradientType??0),i=new Nn(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 dt(n.origin??new Rr),p=new dt(n.direction??new Rr),f;n.colors?f=new sr(n.colors.length,n.colors):(f=new sr(2,new mi(0,0,0,1)),f.value[1]=new mi(1,1,1,1));let d;n.steps?d=new ar(n.steps.length,n.steps):(d=new ar(2,1),d.value[0]=0);let h=new J(n.alpha??1),m=new Ce(n.mode??0),g=new ya(o,i,a,s,l,u,c,p,f,d,h),v=new Ie(g.calpha,"f");return new tt(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 dt(n.size??new Rr(100,100,100)),a=new J(n.move??1),s=new lt(n.fA??new no(1.7,9.2)),l=new lt(n.fB??new no(8.3,2.8)),u=new lt(n.distortion??new no(1,1)),c=new Kt(n.colorA),p=new Kt(n.colorB),f=new Kt(n.colorC),d=new Kt(n.colorD),h=new J(n.alpha??1),m=new Ce(n.mode??0),g=new Ce(n.noiseType??0),v=new fa(o,i,a,s,l,u,c,p,f,d,h,g),x=new Ie(v.calpha,"f");return new tt(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 dt(n.cnormal??new Rr(1,1,1)),i=new J(n.alpha??1),a=new Ce(n.mode??0),s=new Ta(o,i),l=new Ie("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return l.keywords.alpha=i,new tt(t,e,r,{cnormal:o,alpha:i,mode:a},s,a,l)}case"gradient":{let o=new Ce(n.gradientType??0),i=new Nn(n.smooth??!1),a;n.colors?a=new sr(n.colors.length,n.colors):(a=new sr(10,new mi(0,0,0,1)),a.value[1]=new mi(1,1,1,1));let s;n.steps?s=new ar(n.steps.length,n.steps):(s=new ar(10,1),s.value[0]=0);let l=new lt(n.offset??new no(0,0)),u=new lt(n.morph??new no(0,0)),c=new J(n.angle??0),p=new J(n.alpha??1),f=new Ce(n.mode??0),d=new ba(o,i,a,s,l,u,c,p),h=new Ie(d.calpha,"f");return new tt(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 Ne(1,0,0,1),i=new J(1),a=new Ie("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");a.keywords.alpha=i;let s=new Ce(0);return o.alpha=i,new tt(t,e,r,{color:o,alpha:i,mode:s},o,s,a)}}}function M_(r,t,e,n){let o=Lg(e,n);return P_(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 Rt=class extends D_{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??Bt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>kr.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 Gr),this.lightLayer===void 0&&(this.lightLayer=new Gr(0,"",mn.defaultData("light","basic"),new to,{})),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=kr.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=kr.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 tt),n=this.layers.findIndex(o=>o instanceof Gr);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 tt&&(o=new va(o,a.color,a.alpha,a.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ie("outgoingLight","f"),n=this.layers.findIndex(o=>o instanceof Gr);if(this.layers.length>n+1){for(let o=n+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof tt&&(e=new va(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 Ma);if(e.length>0){let n=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(n=new Lt(n,e[o].position,Lt.ADD),n=new Lt(n,new J(.5).setReadonly(!0),Lt.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 _l;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>E_,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(r){r===!0&&this.version++,this.needsCompile=r},get:function(){return this.needsCompile}}});import{MathUtils as qu,BufferAttribute as B_,Vector3 as Xu,Float32BufferAttribute as Bg}from"three";function F_(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 Xu(n[i],n[i+1],n[i+2]);t.has(a)?t.get(a)?.normals.push(s):t.set(a,{normals:[s],result:new Xu})}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 Bg(o,3))}function R_(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 Xu;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 Bg(e,3))}function Ur(r){if(Array.isArray(r.material)){for(let t of r.material)if(t.getLayersOfType("outline").length===0)return}else if(!(r.material instanceof Rt)||r.material.getLayersOfType("outline").length===0)return;r.objectType==="Mesh2D"||r.objectType==="TextFrame"&&r.data?.geometry?.depth===0?R_(r):F_(r)}function Vr(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=[qu.seededRandom(n),qu.seededRandom(n+1e4),qu.seededRandom(n+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];r.geometry.setAttribute("randomColor",new B_(e,3))}var ut=class extends $t(k_){constructor(e,n){super(e,n);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new G_;this.booleanExclude=null;Array.isArray(n)&&e.groups.length===0&&e.addGroup(0,Math.max(e.getIndex()?.count??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=Cu[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(),Ur(this),o.getAttribute("randomColor")&&Vr(this)}clone(e){let n=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=sa(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 Zn(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Zn(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&&(nr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Nr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Lr(e)&&(e.freeBooleanPointer(),Nr(e)&&e.invalidateUpstreamBooleanData())}};var z_=new Yu(0,0,1),Fg=new Yu,Rg=new Yu,kg=new V_,gi=class extends ut{constructor(e=ft.create({}),n){super(e,n);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new U_;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),kg.getNormalMatrix(this.matrixWorld),Fg.copy(z_).applyMatrix3(kg).normalize(),Rg.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Fg,Rg)}clone(e){let n=this.shape.clone(),o=this.material,i=this.geometry.userData,a=ft.create(Object.assign({},i,{shape:n})),s=new gi(a,o).copy(this,e);return s.shape=n,n.update(),s}raycast(e,n){ut.prototype.raycast.call(this,e,n)}};var zr=(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=at(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 yi=new lr,$u=new lr,on=class extends zr($t(j_),rl){constructor(e=window.innerWidth,n=window.innerHeight,o=45,i,a=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=qn.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=n,this.orthoCamera=new H_(e*-.5,e*.5,n*.5,n*-.5,i??-5e4,a),this.perspCamera=new W_(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 on().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(yi),this.targetOffset=yi.distanceTo(e)}getTarget(e=new lr){return this.getWorldDirection($u),this.getWorldPosition(yi),$u.multiplyScalar(this.targetOffset),e.copy(yi).add($u),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(yi),yi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new q_),n=new lr(0,0,1).applyQuaternion(e),o=new lr().copy(Gg.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new lr().copy(Gg.DefaultUp).projectOnPlane(n),a=new lr().crossVectors(i,o).dot(n)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*a}getViewFrontToObject(e){let n=e.getWorldPosition(new lr),i=e.getWorldDirection(new lr).multiplyScalar(this.targetOffset);return{position:n.clone().add(i),target:n}}getViewToObject(e){let n=e.getWorldPosition(new lr),i=this.getWorldDirection(new lr).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 Vo(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}};import{BufferGeometry as Ug,Matrix4 as X_}from"three";var Vg=new X_;var Pl=class extends ut{constructor(e=new Ug,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];Nr(a)&&a.recomputeBoolean(e===!0,n)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(xg(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=nr.getMeshSet(a.geometry,e===!0,n)),a.booleanMeshSetAddress===-1)return;nr.transformMeshSet(a.booleanMeshSetAddress,a.matrix),a.booleanMatrixInvOld.copy(a.matrix).invert(),a.booleanWasTransformed=!1}else Nr(a)&&a.needsTransformForDownstream===!0?(nr.transformMeshSet(a.booleanMeshSetAddress,a.matrix),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Vg.multiplyMatrices(a.matrix,a.booleanMatrixInvOld),nr.transformMeshSet(a.booleanMeshSetAddress,Vg),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 nr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Ug,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=nr.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,Ur(this),Vr(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()}};import{Group as Y_}from"three";var oo=class extends zr($t(Y_),Wo){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,n){let o=new oo().fromState(n);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as $_,CameraHelper as Ml}from"three";var vi=class extends zr($t($_),Ho){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 Ml(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,n,o){let i=new vi().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 Ml&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Ml&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Ml&&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&&hg(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}};import{PointLight as K_,Vector3 as El,Box3 as Z_,Box3Helper as Dl,Color as Q_}from"three";var xi=class extends zr($t(K_),qo){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 El(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),a=new El(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),s=new Z_(i,a),l=new Dl(s,new Q_(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,n,o){let i=new xi().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 Dl&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Dl&&(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 Dl){let o=this.shadow.camera,i=new El(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),a=new El(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}};import{SpotLight as J_,CameraHelper as Bl,MathUtils as eO,Vector3 as Wg,Quaternion as tO}from"three";var zg=new Wg,jg=new Wg,Hg=new tO,bi=class extends zr($t(J_),$i){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=eO.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Bl(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,n,o){let i=new bi().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 Bl&&(n.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Bl&&(n.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let n=this._gizmos[e];n instanceof Bl&&n.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),jg.setFromMatrixPosition(this.matrixWorld),Hg.setFromRotationMatrix(this.matrixWorld),zg.copy(this.up).applyQuaternion(Hg).negate().multiplyScalar(this.distance),this.target.position.copy(jg).add(zg),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 qg=r=>r.tagName==="VIDEO",Si=class{static resize(t,e,n){let o=t/e,i;if(!n.image)return;let a=n.image;qg(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];Dg(a)&&Si.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value)}}static resizeComplex(t,e,n,o){let i=t/e,a,s=n.image;qg(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 Fl=class extends ut{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&&Si.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var wi=class extends ut{constructor(e,n){super(e,n);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Rl=class extends wi{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 mp=0,My=-3;function Fa(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function rO(r,t){this.source=r,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new Fa,this.dtree=new Fa}var Ey=new Fa,Dy=new Fa,gp=new Uint8Array(30),yp=new Uint16Array(30),By=new Uint8Array(30),Fy=new Uint16Array(30),nO=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Xg=new Fa,jr=new Uint8Array(288+32);function Ry(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 oO(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 Yg=new Uint16Array(16);function Zu(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)Yg[o]=i,i+=r.table[o];for(o=0;o<n;++o)t[e+o]&&(r.trans[Yg[t[e+o]]++]=o)}function iO(r){r.bitcount--||(r.tag=r.source[r.sourceIndex++],r.bitcount=7);var t=r.tag&1;return r.tag>>>=1,t}function Hr(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 ap(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 aO(r,t,e){var n,o,i,a,s,l;for(n=Hr(r,5,257),o=Hr(r,5,1),i=Hr(r,4,4),a=0;a<19;++a)jr[a]=0;for(a=0;a<i;++a){var u=Hr(r,3,0);jr[nO[a]]=u}for(Zu(Xg,jr,0,19),s=0;s<n+o;){var c=ap(r,Xg);switch(c){case 16:var p=jr[s-1];for(l=Hr(r,2,3);l;--l)jr[s++]=p;break;case 17:for(l=Hr(r,3,3);l;--l)jr[s++]=0;break;case 18:for(l=Hr(r,7,11);l;--l)jr[s++]=0;break;default:jr[s++]=c;break}}Zu(t,jr,0,n),Zu(e,jr,n,o)}function $g(r,t,e){for(;;){var n=ap(r,t);if(n===256)return mp;if(n<256)r.dest[r.destLen++]=n;else{var o,i,a,s;for(n-=257,o=Hr(r,gp[n],yp[n]),i=ap(r,e),a=r.destLen-Hr(r,By[i],Fy[i]),s=a;s<a+o;++s)r.dest[r.destLen++]=r.dest[s]}}}function sO(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 My;for(r.sourceIndex+=4,n=t;n;--n)r.dest[r.destLen++]=r.source[r.sourceIndex++];return r.bitcount=0,mp}function lO(r,t){var e=new rO(r,t),n,o,i;do{switch(n=iO(e),o=Hr(e,2,0),o){case 0:i=sO(e);break;case 1:i=$g(e,Ey,Dy);break;case 2:aO(e,e.ltree,e.dtree),i=$g(e,e.ltree,e.dtree);break;default:i=My}if(i!==mp)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}oO(Ey,Dy);Ry(gp,yp,4,3);Ry(By,Fy,2,1);gp[28]=0;yp[28]=258;var cO=lO;function Ti(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 Gn(){this.x1=Number.NaN,this.y1=Number.NaN,this.x2=Number.NaN,this.y2=Number.NaN}Gn.prototype.isEmpty=function(){return isNaN(this.x1)||isNaN(this.y1)||isNaN(this.x2)||isNaN(this.y2)};Gn.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))};Gn.prototype.addX=function(r){this.addPoint(r,null)};Gn.prototype.addY=function(r){this.addPoint(null,r)};Gn.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(Ti(l[f],u[f],c[f],p[f],g)),f===1&&this.addY(Ti(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(Ti(l[f],u[f],c[f],p[f],x)),f===1&&this.addY(Ti(l[f],u[f],c[f],p[f],x)));var b=(-d-Math.sqrt(v))/(2*h);0<b&&b<1&&(f===0&&this.addX(Ti(l[f],u[f],c[f],p[f],b)),f===1&&this.addY(Ti(l[f],u[f],c[f],p[f],b)))}}};Gn.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 rt(){this.commands=[],this.fill="black",this.stroke=null,this.strokeWidth=1}rt.prototype.moveTo=function(r,t){this.commands.push({type:"M",x:r,y:t})};rt.prototype.lineTo=function(r,t){this.commands.push({type:"L",x:r,y:t})};rt.prototype.curveTo=rt.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})};rt.prototype.quadTo=rt.prototype.quadraticCurveTo=function(r,t,e,n){this.commands.push({type:"Q",x1:r,y1:t,x:e,y:n})};rt.prototype.close=rt.prototype.closePath=function(){this.commands.push({type:"Z"})};rt.prototype.extend=function(r){if(r.commands)r=r.commands;else if(r instanceof Gn){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)};rt.prototype.getBoundingBox=function(){for(var r=new Gn,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};rt.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())};rt.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};rt.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};rt.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 ky(r){throw new Error(r)}function Kg(r,t){r||ky(t)}var ve={fail:ky,argument:Kg,assert:Kg},Zg=32768,Qg=2147483648,Ai={},te={},xe={};function fr(r){return function(){return r}}te.BYTE=function(r){return ve.argument(r>=0&&r<=255,"Byte value should be between 0 and 255."),[r]};xe.BYTE=fr(1);te.CHAR=function(r){return[r.charCodeAt(0)]};xe.CHAR=fr(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};xe.CHARARRAY=function(r){return typeof r>"u"?0:r.length};te.USHORT=function(r){return[r>>8&255,r&255]};xe.USHORT=fr(2);te.SHORT=function(r){return r>=Zg&&(r=-(2*Zg-r)),[r>>8&255,r&255]};xe.SHORT=fr(2);te.UINT24=function(r){return[r>>16&255,r>>8&255,r&255]};xe.UINT24=fr(3);te.ULONG=function(r){return[r>>24&255,r>>16&255,r>>8&255,r&255]};xe.ULONG=fr(4);te.LONG=function(r){return r>=Qg&&(r=-(2*Qg-r)),[r>>24&255,r>>16&255,r>>8&255,r&255]};xe.LONG=fr(4);te.FIXED=te.ULONG;xe.FIXED=xe.ULONG;te.FWORD=te.SHORT;xe.FWORD=xe.SHORT;te.UFWORD=te.USHORT;xe.UFWORD=xe.USHORT;te.LONGDATETIME=function(r){return[0,0,0,0,r>>24&255,r>>16&255,r>>8&255,r&255]};xe.LONGDATETIME=fr(8);te.TAG=function(r){return ve.argument(r.length===4,"Tag should be exactly 4 ASCII characters."),[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3)]};xe.TAG=fr(4);te.Card8=te.BYTE;xe.Card8=xe.BYTE;te.Card16=te.USHORT;xe.Card16=xe.USHORT;te.OffSize=te.BYTE;xe.OffSize=xe.BYTE;te.SID=te.USHORT;xe.SID=xe.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)};xe.NUMBER=function(r){return te.NUMBER(r).length};te.NUMBER16=function(r){return[28,r>>8&255,r&255]};xe.NUMBER16=fr(3);te.NUMBER32=function(r){return[29,r>>24&255,r>>16&255,r>>8&255,r&255]};xe.NUMBER32=fr(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};xe.REAL=function(r){return te.REAL(r).length};te.NAME=te.CHARARRAY;xe.NAME=xe.CHARARRAY;te.STRING=te.CHARARRAY;xe.STRING=xe.CHARARRAY;Ai.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)};Ai.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};xe.UTF16=function(r){return r.length*2};var sp={"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"};Ai.MACSTRING=function(r,t,e,n){var o=sp[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 kl=typeof WeakMap=="function"&&new WeakMap,Gl,uO=function(r){if(!Gl){Gl={};for(var t in sp)Gl[t]=new String(t)}var e=Gl[r];if(e!==void 0){if(kl){var n=kl.get(e);if(n!==void 0)return n}var o=sp[r];if(o!==void 0){for(var i={},a=0;a<o.length;a++)i[o.charCodeAt(a)]=a+128;return kl&&kl.set(e,i),i}}};te.MACSTRING=function(r,t){var e=uO(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}};xe.MACSTRING=function(r,t){var e=te.MACSTRING(r,t);return e!==void 0?e.length:0};function lp(r){return r>=-128&&r<=127}function pO(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 fO(r,t,e){for(var n=0,o=r.length,i=t;i<o&&n<64;){var a=r[i];if(!lp(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 dO(r,t,e){for(var n=0,o=r.length,i=t;i<o&&n<64;){var a=r[i];if(a===0||lp(a)&&i+1<o&&lp(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=pO(r,t,e):n>=-128&&n<=127?t=fO(r,t,e):t=dO(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)};xe.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};xe.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)ve.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;xe.OP=xe.BYTE;var Ul=typeof WeakMap=="function"&&new WeakMap;te.CHARSTRING=function(r){if(Ul){var t=Ul.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 Ul&&Ul.set(r,e),e};xe.CHARSTRING=function(r){return te.CHARSTRING(r).length};te.OBJECT=function(r){var t=te[r.type];return ve.argument(t!==void 0,"No encoding function for type "+r.type),t(r.value)};xe.OBJECT=function(r){var t=xe[r.type];return ve.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];ve.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;ve.argument(f<65536,"Table "+r.tableName+" too big."),t[p]=f>>8,t[p+1]=f&255,t=t.concat(n[c])}return t};xe.TABLE=function(r){for(var t=0,e=r.fields.length,n=0;n<e;n+=1){var o=r.fields[n],i=xe[o.type];ve.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;xe.RECORD=xe.TABLE;te.LITERAL=function(r){return r};xe.LITERAL=function(r){return r.length};function pt(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)}}pt.prototype.encode=function(){return te.TABLE(this)};pt.prototype.sizeOf=function(){return xe.TABLE(this)};function Ra(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 cp(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 ka(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 Wl(r){r.format===1?pt.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:1}].concat(Ra("glyph",r.glyphs))):r.format===2?pt.call(this,"coverageTable",[{name:"coverageFormat",type:"USHORT",value:2}].concat(ka("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}]}))):ve.assert(!1,"Coverage format must be 1 or 2.")}Wl.prototype=Object.create(pt.prototype);Wl.prototype.constructor=Wl;function ql(r){pt.call(this,"scriptListTable",ka("scriptRecord",r,function(t,e){var n=t.script,o=n.defaultLangSys;return ve.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 pt("scriptTable",[{name:"defaultLangSys",type:"TABLE",value:new pt("defaultLangSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:o.reqFeatureIndex}].concat(Ra("featureIndex",o.featureIndexes)))}].concat(ka("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 pt("langSys",[{name:"lookupOrder",type:"USHORT",value:0},{name:"reqFeatureIndex",type:"USHORT",value:s.reqFeatureIndex}].concat(Ra("featureIndex",s.featureIndexes)))}]})))}]}))}ql.prototype=Object.create(pt.prototype);ql.prototype.constructor=ql;function Xl(r){pt.call(this,"featureListTable",ka("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 pt("featureTable",[{name:"featureParams",type:"USHORT",value:n.featureParams}].concat(Ra("lookupListIndex",n.lookupListIndexes)))}]}))}Xl.prototype=Object.create(pt.prototype);Xl.prototype.constructor=Xl;function Yl(r,t){pt.call(this,"lookupListTable",cp("lookup",r,function(e){var n=t[e.lookupType];return ve.assert(!!n,"Unable to write GSUB lookup type "+e.lookupType+" tables."),new pt("lookupTable",[{name:"lookupType",type:"USHORT",value:e.lookupType},{name:"lookupFlag",type:"USHORT",value:e.lookupFlag}].concat(cp("subtable",e.subtables,n)))}))}Yl.prototype=Object.create(pt.prototype);Yl.prototype.constructor=Yl;var le={Table:pt,Record:pt,Coverage:Wl,ScriptList:ql,FeatureList:Xl,LookupList:Yl,ushortList:Ra,tableList:cp,recordList:ka};function Jg(r,t){return r.getUint8(t)}function $l(r,t){return r.getUint16(t,!1)}function hO(r,t){return r.getInt16(t,!1)}function vp(r,t){return r.getUint32(t,!1)}function Gy(r,t){var e=r.getInt16(t,!1),n=r.getUint16(t+2,!1);return e+n/65535}function mO(r,t){for(var e="",n=t;n<t+4;n+=1)e+=String.fromCharCode(r.getInt8(n));return e}function gO(r,t,e){for(var n=0,o=0;o<e;o+=1)n<<=8,n+=r.getUint8(t+o);return n}function yO(r,t,e){for(var n=[],o=t;o<e;o+=1)n.push(r.getUint8(o));return n}function vO(r){for(var t="",e=0;e<r.length;e+=1)t+=String.fromCharCode(r[e]);return t}var xO={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=vp(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,r};E.prototype.parseOffset32=E.prototype.parseULong;E.prototype.parseFixed=function(){var r=Gy(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=vp(this.data,this.offset+this.relativeOffset+4);return r-=2082844800,this.relativeOffset+=8,r};E.prototype.parseVersion=function(r){var t=$l(this.data,this.offset+this.relativeOffset),e=$l(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+=xO[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 ey={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(ey),langSysRecords:E.recordList({tag:E.tag,langSys:E.pointer(ey)})})}))||[]};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();ve.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();ve.argument(r===1&&t<1,"GPOS/GSUB feature variations table unknown.");var e=this.parseRecordList32({conditionSetOffset:E.offset32,featureTableSubstitutionOffset:E.offset32});return e})||[]};var ue={getByte:Jg,getCard8:Jg,getUShort:$l,getCard16:$l,getShort:hO,getULong:vp,getFixed:Gy,getTag:mO,getOffset:gO,getBytes:yO,bytesToString:vO,Parser:E};function bO(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 SO(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 ue.Parser(e,n+o+14),s=new ue.Parser(e,n+o+16+i*2),l=new ue.Parser(e,n+o+16+i*4),u=new ue.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=ue.getUShort(e,c),f!==0&&(f=f+m&65535)):f=v+m&65535,r.glyphIndexMap[v]=f}function wO(r,t){var e={};e.version=ue.getUShort(r,t),ve.argument(e.version===0,"cmap table version should be 0."),e.numTables=ue.getUShort(r,t+2);for(var n=-1,o=e.numTables-1;o>=0;o-=1){var i=ue.getUShort(r,t+4+o*8),a=ue.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=ue.getULong(r,t+4+o*8+4);break}}if(n===-1)throw new Error("No valid cmap sub-tables found.");var s=new ue.Parser(r,t+n);if(e.format=s.parseUShort(),e.format===12)bO(e,s);else if(e.format===4)SO(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 TO(r,t,e){r.segments.push({end:t,start:t,delta:-(t-e),offset:0,glyphIndex:e})}function CO(r){r.segments.push({end:65535,start:65535,delta:1,offset:0})}function AO(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)TO(i,a.unicodes[s],e);i.segments=i.segments.sort(function(x,b){return x.start-b.start})}CO(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 Uy={parse:wO,make:AO},jl=[".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"],_O=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],OO=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],ao=[".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 Vy(r){this.font=r}Vy.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 zy(r){this.cmap=r}zy.prototype.charToGlyphIndex=function(r){return this.cmap.glyphIndexMap[r.codePointAt(0)]||0};function Kl(r,t){this.encoding=r,this.charset=t}Kl.prototype.charToGlyphIndex=function(r){var t=r.codePointAt(0),e=this.encoding[t];return this.charset.indexOf(e)};function xp(r){switch(r.version){case 1:this.names=ao.slice();break;case 2:this.names=new Array(r.numberOfGlyphs);for(var t=0;t<r.numberOfGlyphs;t++)r.glyphNameIndex[t]<ao.length?this.names[t]=ao[r.glyphNameIndex[t]]:this.names[t]=r.names[r.glyphNameIndex[t]-ao.length];break;case 2.5:this.names=new Array(r.numberOfGlyphs);for(var e=0;e<r.numberOfGlyphs;e++)this.names[e]=ao[e+r.glyphNameIndex[e]];break;case 3:this.names=[];break;default:this.names=[];break}}xp.prototype.nameToGlyphIndex=function(r){return this.names.indexOf(r)};xp.prototype.glyphIndexToName=function(r){return this.names[r]};function IO(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 LO(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 NO(r,t){t.lowMemory?LO(r):IO(r)}function PO(r,t,e,n,o){r.beginPath(),r.moveTo(t,e),r.lineTo(n,o),r.stroke()}var io={line:PO};function MO(r,t){var e=t||new rt;return{configurable:!0,get:function(){return typeof e=="function"&&(e=e()),e},set:function(n){e=n}}}function Zt(r){this.bindConstructorValues(r)}Zt.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",MO(this,r.path))};Zt.prototype.addUnicode=function(r){this.unicodes.length===0&&(this.unicode=r),this.unicodes.push(r)};Zt.prototype.getBoundingBox=function(){return this.path.getBoundingBox()};Zt.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 rt,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};Zt.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 ve.argument(t.length===0,"There are still points left in the current contour."),r};Zt.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};Zt.prototype.draw=function(r,t,e,n,o){this.getPath(t,e,n,o).draw(r)};Zt.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)};Zt.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",io.line(r,t,-1e4,t,1e4),io.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",io.line(r,t+i*o,-1e4,t+i*o,1e4),io.line(r,t+s*o,-1e4,t+s*o,1e4),io.line(r,-1e4,e+-a*o,1e4,e+-a*o),io.line(r,-1e4,e+-l*o,1e4,e+-l*o),r.strokeStyle="green",io.line(r,t+u*o,-1e4,t+u*o,1e4)};function Vl(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 bp(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}bp.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]};bp.prototype.push=function(r,t){this.glyphs[r]=t,this.length++};function EO(r,t){return new Zt({index:t,font:r})}function DO(r,t,e,n,o,i){return function(){var a=new Zt({index:t,font:r});return a.path=function(){e(a,n,o);var s=i(r.glyphs,a);return s.unitsPerEm=r.unitsPerEm,s},Vl(a,"xMin","_xMin"),Vl(a,"xMax","_xMax"),Vl(a,"yMin","_yMin"),Vl(a,"yMax","_yMax"),a}}function BO(r,t,e,n){return function(){var o=new Zt({index:t,font:r});return o.path=function(){var i=e(r,o,n);return i.unitsPerEm=r.unitsPerEm,i},o}}var qr={GlyphSet:bp,glyphLoader:EO,ttfGlyphLoader:DO,cffGlyphLoader:BO};function jy(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(!jy(r[e],t[e]))return!1;return!0}else return!1}function up(r){var t;return r.length<1240?t=107:r.length<33900?t=1131:t=32768,t}function Bn(r,t,e){var n=[],o=[],i=ue.getCard16(r,t),a,s;if(i!==0){var l=ue.getByte(r,t+2);a=t+(i+1)*l+2;for(var u=t+3,c=0;c<i+1;c+=1)n.push(ue.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=ue.getBytes(r,a+n[p],a+n[p+1]);e&&(f=e(f)),o.push(f)}return{objects:o,startOffset:t,endOffset:s}}function FO(r,t){var e=[],n=ue.getCard16(r,t),o,i;if(n!==0){var a=ue.getByte(r,t+2);o=t+(n+1)*a+2;for(var s=t+3,l=0;l<n+1;l+=1)e.push(ue.getOffset(r,s,a)),s+=a;i=o+e[n]}else i=t+2;return{offsets:e,startOffset:t,endOffset:i}}function RO(r,t,e,n,o){var i=ue.getCard16(e,n),a=0;if(i!==0){var s=ue.getByte(e,n+2);a=n+(i+1)*s+2}var l=ue.getBytes(e,a+t[r],a+t[r+1]);return o&&(l=o(l)),l}function kO(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 GO(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 kO(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 UO(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 Hy(r,t,e){t=t!==void 0?t:0;var n=new ue.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(GO(n,a))}return UO(o)}function Ba(r,t){return t<=390?t=jl[t]:t=r[t-391],t}function Wy(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=Ba(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=Ba(e,o)),n[a.name]=o}return n}function VO(r,t){var e={};return e.formatMajor=ue.getCard8(r,t),e.formatMinor=ue.getCard8(r,t+1),e.size=ue.getCard8(r,t+2),e.offsetSize=ue.getCard8(r,t+3),e.startOffset=t,e.endOffset=t+4,e}var qy=[{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"}],Xy=[{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 zO(r,t){var e=Hy(r,0,r.byteLength);return Wy(e,qy,t)}function Yy(r,t,e,n){var o=Hy(r,t,e);return Wy(o,Xy,n)}function ty(r,t,e,n){for(var o=[],i=0;i<e.length;i+=1){var a=new DataView(new Uint8Array(e[i]).buffer),s=zO(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=Yy(r,u+t,l,n);if(s._defaultWidthX=c.defaultWidthX,s._nominalWidthX=c.nominalWidthX,c.subrs!==0){var p=u+c.subrs,f=Bn(r,p+t);s._subrs=f.objects,s._subrsBias=up(s._subrs)}s._privateDict=c}o.push(s)}return o}function jO(r,t,e,n){var o,i,a=new ue.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(Ba(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(Ba(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(Ba(n,o)),o+=1}else throw new Error("Unknown charset format "+l);return s}function HO(r,t,e){var n,o={},i=new ue.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 Kl(o,e)}function ry(r,t,e){var n,o,i,a,s=new rt,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],b=r.tables.cff.topDict._fdArray[x];h=b._subrs,m=b._subrsBias,g=b._defaultWidthX,v=b._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 S(y,O){p&&s.closePath(),s.moveTo(y,O),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 O,A,I,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(),S(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(),S(f,d);break;case 22:l.length>1&&!c&&(w=l.shift()+v,c=!0),f+=l.pop(),S(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:O=y[V],A=y[V+1],l.push((O<<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?(O=y[V],V+=1,l.push((R-247)*256+O+108)):R<255?(O=y[V],V+=1,l.push(-(R-251)*256-O-108)):(O=y[V],A=y[V+1],I=y[V+2],C=y[V+3],V+=4,l.push((O<<24|A<<16|I<<8|C)/65536))}}}return T(e),t.advanceWidth=w,s}function WO(r,t,e,n){var o=[],i,a=new ue.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 qO(r,t,e,n){e.tables.cff={};var o=VO(r,t),i=Bn(r,o.endOffset,ue.bytesToString),a=Bn(r,i.endOffset),s=Bn(r,a.endOffset,ue.bytesToString),l=Bn(r,s.endOffset);e.gsubrs=l.objects,e.gsubrsBias=up(e.gsubrs);var u=ty(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=Bn(r,p),h=ty(r,t,d.objects,s.objects);c._fdArray=h,f+=t,c._fdSelect=WO(r,f,e.numGlyphs,h.length)}var m=t+c.private[1],g=Yy(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=Bn(r,v);e.subrs=x.objects,e.subrsBias=up(e.subrs)}else e.subrs=[],e.subrsBias=0;var b;n.lowMemory?(b=FO(r,t+c.charStrings),e.nGlyphs=b.offsets.length):(b=Bn(r,t+c.charStrings),e.nGlyphs=b.objects.length);var w=jO(r,t+c.charset,e.nGlyphs,s.objects);if(c.encoding===0?e.cffEncoding=new Kl(_O,w):c.encoding===1?e.cffEncoding=new Kl(OO,w):e.cffEncoding=HO(r,t+c.encoding,w),e.encoding=e.encoding||e.cffEncoding,e.glyphs=new qr.GlyphSet(e),n.lowMemory)e._push=function(T){var y=RO(T,b.offsets,r,t+c.charStrings);e.glyphs.push(T,qr.cffGlyphLoader(e,T,ry,y))};else for(var S=0;S<e.nGlyphs;S+=1){var _=b.objects[S];e.glyphs.push(S,qr.cffGlyphLoader(e,S,ry,_))}}function $y(r,t){var e,n=jl.indexOf(r);return n>=0&&(e=n),n=t.indexOf(r),n>=0?e=n+jl.length:(e=jl.length+t.length,t.push(r)),e}function XO(){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 YO(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 Ky(r,t,e){for(var n={},o=0;o<r.length;o+=1){var i=r[o],a=t[i.name];a!==void 0&&!jy(a,i.value)&&(i.type==="SID"&&(a=$y(a,e)),n[i.op]={name:i.name,type:i.type,value:a})}return n}function ny(r,t){var e=new le.Record("Top DICT",[{name:"dict",type:"DICT",value:{}}]);return e.dict=Ky(qy,r,t),e}function oy(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 $O(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 KO(){return new le.Record("Global Subr INDEX",[{name:"subrs",type:"INDEX",value:[]}])}function ZO(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=$y(o,t);e.fields.push({name:"glyph_"+n,type:"SID",value:i})}return e}function QO(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 JO(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=QO(n);t.charStrings.push({name:n.name,type:"CHARSTRING",value:o})}return t}function e2(r,t){var e=new le.Record("Private DICT",[{name:"dict",type:"DICT",value:{}}]);return e.dict=Ky(Xy,r,t),e}function t2(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=XO(),e.nameIndex=YO([t.postScriptName]);var c=ny(o,u);e.topDictIndex=oy(c),e.globalSubrIndex=KO(),e.charsets=ZO(a,u),e.charStringsIndex=JO(r),e.privateDict=e2(i,u),e.stringIndex=$O(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=ny(o,u),e.topDictIndex=oy(c),e}var Zy={parse:qO,make:t2};function r2(r,t){var e={},n=new ue.Parser(r,t);return e.version=n.parseVersion(),e.fontRevision=Math.round(n.parseFixed()*1e3)/1e3,e.checkSumAdjustment=n.parseULong(),e.magicNumber=n.parseULong(),ve.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 n2(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 Qy={parse:r2,make:n2};function o2(r,t){var e={},n=new ue.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 i2(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 Jy={parse:o2,make:i2};function a2(r,t,e,n,o){for(var i,a,s=new ue.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 s2(r,t,e,n,o){r._hmtxTableData={};for(var i,a,s=new ue.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 l2(r,t,e,n,o,i,a){a.lowMemory?s2(r,t,e,n,o):a2(t,e,n,o,i)}function c2(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 e0={parse:l2,make:c2};function u2(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 p2(r,t){var e=new ue.Parser(r,t),n=e.parseULong();ve.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 t0={make:u2,parse:p2};function f2(r,t){var e={},n=new ue.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 d2(r){return new le.Table("maxp",[{name:"version",type:"FIXED",value:20480},{name:"numGlyphs",type:"USHORT",value:r}])}var r0={parse:f2,make:d2},n0=["copyright","fontFamily","fontSubfamily","uniqueID","fullName","version","postScriptName","trademark","manufacturer","designer","description","manufacturerURL","designerURL","license","licenseURL","reserved","preferredFamily","preferredSubfamily","compatibleFullName","sampleText","postScriptFindFontName","wwsFamily","wwsSubfamily"],o0={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"},h2={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},i0={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 m2(r,t,e){switch(r){case 0:if(t===65535)return"und";if(e)return e[t];break;case 1:return o0[t];case 3:return i0[t]}}var pp="utf-16",g2={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"},y2={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 a0(r,t,e){switch(r){case 0:return pp;case 1:return y2[e]||g2[t];case 3:if(t===1||t===10)return pp;break}}function v2(r,t,e){for(var n={},o=new ue.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=n0[f]||f,h=o.parseUShort(),m=o.parseUShort(),g=m2(u,p,e),v=a0(u,c,p);if(v!==void 0&&g!==void 0){var x=void 0;if(v===pp?x=Ai.UTF16(r,s+m,h):x=Ai.MACSTRING(r,s+m,h,v),x){var b=n[d];b===void 0&&(b=n[d]={}),b[g]=x}}}var w=0;return i===1&&(w=o.parseUShort()),n}function Qu(r){var t={};for(var e in r)t[r[e]]=parseInt(e);return t}function iy(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 x2(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 ay(r,t){var e=x2(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 b2(r,t){var e,n=[],o={},i=Qu(n0);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=Qu(o0),u=Qu(i0),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=h2[v],b=a0(g,x,v),w=te.MACSTRING(m,b);w===void 0&&(g=0,v=t.indexOf(h),v<0&&(v=t.length,t.push(h)),x=4,w=te.UTF16(m));var S=ay(w,p);c.push(iy(g,x,v,e,w.length,S));var _=u[h];if(_!==void 0){var T=te.UTF16(m),y=ay(T,p);c.push(iy(3,1,_,e,T.length,y))}}}c.sort(function(I,C){return I.platformID-C.platformID||I.encodingID-C.encodingID||I.languageID-C.languageID||I.nameID-C.nameID});for(var O=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++)O.fields.push({name:"record_"+A,type:"RECORD",value:c[A]});return O.fields.push({name:"strings",type:"LITERAL",value:p}),O}var s0={parse:v2,make:b2},fp=[{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 S2(r){for(var t=0;t<fp.length;t+=1){var e=fp[t];if(r>=e.begin&&r<e.end)return t}return-1}function w2(r,t){var e={},n=new ue.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 T2(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 dp={parse:w2,make:T2,unicodeRanges:fp,getUnicodeRange:S2};function C2(r,t){var e={},n=new ue.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=ao.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]>=ao.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 A2(){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 l0={parse:C2,make:A2},cr=new Array(9);cr[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()};ve.assert(!1,"0x"+t.toString(16)+": lookup type 1 format must be 1 or 2.")};cr[2]=function(){var t=this.parseUShort();return ve.argument(t===1,"GSUB Multiple Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),sequences:this.parseListOfLists()}};cr[3]=function(){var t=this.parseUShort();return ve.argument(t===1,"GSUB Alternate Substitution Subtable identifier-format must be 1"),{substFormat:t,coverage:this.parsePointer(E.coverage),alternateSets:this.parseListOfLists()}};cr[4]=function(){var t=this.parseUShort();return ve.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 Ci={sequenceIndex:E.uShort,lookupListIndex:E.uShort};cr[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,Ci)}})};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,Ci)}})};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,Ci)}}ve.assert(!1,"0x"+t.toString(16)+": lookup type 5 format must be 1, 2 or 3.")};cr[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(Ci)}})};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(Ci)}})};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(Ci)};ve.assert(!1,"0x"+t.toString(16)+": lookup type 6 format must be 1, 2 or 3.")};cr[7]=function(){var t=this.parseUShort();ve.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:cr[e].call(n)}};cr[8]=function(){var t=this.parseUShort();return ve.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 _2(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);return ve.argument(n===1||n===1.1,"Unsupported GSUB table version."),n===1?{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(cr)}:{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(cr),variations:e.parseFeatureVariationsList()}}var _i=new Array(9);_i[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)))};_i[2]=function(t){return ve.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))})))};_i[3]=function(t){return ve.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))})))};_i[4]=function(t){return ve.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)))}))})))};_i[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)ve.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}ve.assert(!1,"lookup type 6 format must be 1, 2 or 3.")};function O2(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,_i)}])}var c0={parse:_2,make:O2};function I2(r,t){var e=new ue.Parser(r,t),n=e.parseULong();ve.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=Ai.UTF8(r,t+l,u);i[s]=c}return i}function L2(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 u0={parse:I2,make:L2};function sy(r){return Math.log(r)/Math.log(2)|0}function Sp(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 ly(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 p0(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,sy(t.numTables));t.searchRange=16*e,t.entrySelector=sy(e),t.rangeShift=t.numTables*16-t.searchRange;for(var n=[],o=[],i=t.sizeOf()+ly().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];ve.argument(s.tableName.length===4,"Table name"+s.tableName+" is invalid.");var l=s.sizeOf(),u=ly(s.tableName,Sp(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,ve.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 cy(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 N2(r){for(var t=0,e=0;e<r.length;e+=1)t+=r[e];return t/r.length}function P2(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=dp.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 b={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:N2(i),minLeftSideBearing:Math.min.apply(null,a),maxLeftSideBearing:Math.max.apply(null,a),minRightSideBearing:Math.min.apply(null,s)};b.ascender=r.ascender,b.descender=r.descender;var w=Qy.make({flags:3,unitsPerEm:r.unitsPerEm,xMin:b.xMin,yMin:b.yMin,xMax:b.xMax,yMax:b.yMax,lowestRecPPEM:3,createdTimestamp:r.createdTimestamp}),S=Jy.make({ascender:b.ascender,descender:b.descender,advanceWidthMax:b.advanceWidthMax,minLeftSideBearing:b.minLeftSideBearing,minRightSideBearing:b.minRightSideBearing,xMaxExtent:b.maxLeftSideBearing+(b.xMax-b.xMin),numberOfHMetrics:r.glyphs.length}),_=r0.make(r.glyphs.length),T=dp.make(Object.assign({xAvgCharWidth:Math.round(b.advanceWidthAvg),usFirstCharIndex:l,usLastCharIndex:u,ulUnicodeRange1:c,ulUnicodeRange2:p,ulUnicodeRange3:f,ulUnicodeRange4:d,sTypoAscender:b.ascender,sTypoDescender:b.descender,sTypoLineGap:0,usWinAscent:b.yMax,usWinDescent:Math.abs(b.yMin),ulCodePageRange1:1,sxHeight:cy(r,"xyvw",{yMax:Math.round(b.ascender/2)}).yMax,sCapHeight:cy(r,"HIKLEFJMNTZBDPRAGOQSUVWXY",b).yMax,usDefaultChar:r.hasChar(" ")?32:0,usBreakChar:r.hasChar(" ")?32:0},r.tables.os2)),y=e0.make(r.glyphs),O=Uy.make(r.glyphs),A=r.getEnglishName("fontFamily"),I=r.getEnglishName("fontSubfamily"),C=A+" "+I,N=r.getEnglishName("postScriptName");N||(N=A.replace(/\s/g,"")+"-"+I);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=s0.make(P,$),ie=$.length>0?t0.make($):void 0,j=l0.make(),H=Zy.make(r.glyphs,{version:r.getEnglishName("version"),fullName:C,familyName:A,weightName:I,postScriptName:N,unitsPerEm:r.unitsPerEm,fontBBox:[0,b.yMin,b.ascender,b.advanceWidthMax]}),V=r.metas&&Object.keys(r.metas).length>0?u0.make(r.metas):void 0,R=[w,S,_,T,Y,O,j,H,y];ie&&R.push(ie),r.tables.gsub&&R.push(c0.make(r.tables.gsub)),V&&R.push(V);for(var D=p0(R),F=D.encode(),B=Sp(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 M2={make:p0,fontToTable:P2,computeCheckSum:Sp};function Ju(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 uy(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 py(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 Ua(r,t){this.font=r,this.tableName=t}Ua.prototype={searchTag:Ju,binSearch:uy,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=Ju(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=Ju(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 ve.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=py(r.ranges,t);return e?e.classId:0}},getCoverageIndex:function(r,t){switch(r.format){case 1:var e=uy(r.glyphs,t);return e>=0?e:-1;case 2:var n=py(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 Va(r){Ua.call(this,r,"gpos")}Va.prototype=Ua.prototype;Va.prototype.init=function(){var r=this.getDefaultScriptName();this.defaultKerningTables=this.getKerningTables(r)};Va.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};Va.prototype.getKerningTables=function(r,t){if(this.font.tables.gpos)return this.getLookupTables(r,t,"kern",2)};function kt(r){Ua.call(this,r,"gsub")}function E2(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 wp(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}kt.prototype=Ua.prototype;kt.prototype.createDefaultTable=function(){return{version:1,scripts:[{tag:"DFLT",script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}}],features:[],lookups:[]}};kt.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};kt.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};kt.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};kt.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};kt.prototype.addSingle=function(r,t,e,n){var o=this.getLookupTables(e,n,r,1,!0)[0],i=wp(o,2,{substFormat:2,coverage:{format:1,glyphs:[]},substitute:[]});ve.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};kt.prototype.addMultiple=function(r,t,e,n){ve.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=wp(o,1,{substFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});ve.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};kt.prototype.addAlternate=function(r,t,e,n){var o=this.getLookupTables(e,n,r,3,!0)[0],i=wp(o,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});ve.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};kt.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),ve.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(E2(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])};kt.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)}};kt.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 D2(){return typeof window<"u"}function B2(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 F2(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 Da(r,t){if(!r)throw t}function fy(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 f0(r,t,e){var n=new ue.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(ve.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=fy(n,i,g,2,16),g=h.x;for(var x=0,b=0;b<u;b+=1)i=o[b],h=d[b],h.y=fy(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 S={glyphIndex:n.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(S.dx=n.parseShort(),S.dy=n.parseShort()):S.matchedPoints=[n.parseUShort(),n.parseUShort()]:(o&2)>0?(S.dx=n.parseChar(),S.dy=n.parseChar()):S.matchedPoints=[n.parseByte(),n.parseByte()],(o&8)>0?S.xScale=S.yScale=n.parseF2Dot14():(o&64)>0?(S.xScale=n.parseF2Dot14(),S.yScale=n.parseF2Dot14()):(o&128)>0&&(S.xScale=n.parseF2Dot14(),S.scale01=n.parseF2Dot14(),S.scale10=n.parseF2Dot14(),S.yScale=n.parseF2Dot14()),r.components.push(S),w=!!(o&32)}if(o&256){r.instructionLength=n.parseUShort(),r.instructions=[];for(var _=0;_<r.instructionLength;_+=1)r.instructions.push(n.parseByte())}}}function ep(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 R2(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 ve.argument(e.length===0,"There are still points left in the current contour."),t}function d0(r){var t=new rt;if(!r)return t;for(var e=R2(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 h0(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=ep(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=ep([s],l)[0],l.dx=a.x-s.x,l.dy=a.y-s.y,i=ep(o.points,l)}t.points=t.points.concat(i)}}return d0(t.points)}function k2(r,t,e,n){for(var o=new qr.GlyphSet(n),i=0;i<e.length-1;i+=1){var a=e[i],s=e[i+1];a!==s?o.push(i,qr.ttfGlyphLoader(n,i,f0,r,t+a,h0)):o.push(i,qr.glyphLoader(n,i))}return o}function G2(r,t,e,n){var o=new qr.GlyphSet(n);return n._push=function(i){var a=e[i],s=e[i+1];a!==s?o.push(i,qr.ttfGlyphLoader(n,i,f0,r,t+a,h0)):o.push(i,qr.glyphLoader(n,i))},o}function U2(r,t,e,n,o){return o.lowMemory?G2(r,t,e,n):k2(r,t,e,n)}var m0={getPath:d0,parse:U2},g0,lo,y0,hp;function v0(r){this.font=r,this.getCommands=function(t){return m0.getPath(t).commands},this._fpgmState=this._prepState=void 0,this._errorState=0}function V2(r){return r}function x0(r){return Math.sign(r)*Math.round(Math.abs(r))}function z2(r){return Math.sign(r)*Math.round(Math.abs(r*2))/2}function j2(r){return Math.sign(r)*(Math.round(Math.abs(r)+.5)-.5)}function H2(r){return Math.sign(r)*Math.ceil(Math.abs(r))}function W2(r){return Math.sign(r)*Math.floor(Math.abs(r))}var b0=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},Wr={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){Wr.setRelative(r,r,(l+u)/2,n,!0);return}Wr.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}},an={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){an.setRelative(r,r,(l+u)/2,n,!0);return}an.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(Wr);Object.freeze(an);function za(r,t){this.x=r,this.y=t,this.axis=void 0,this.slope=t/r,this.normalSlope=-r/t,Object.freeze(this)}za.prototype.distance=function(r,t,e,n){return this.x*Wr.distance(r,t,e,n)+this.y*an.distance(r,t,e,n)};za.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)};za.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};za.prototype.touch=function(r){r.xTouched=!0,r.yTouched=!0};function ja(r,t){var e=Math.sqrt(r*r+t*t);return r/=e,t/=e,r===1&&t===0?Wr:r===0&&t===1?an:new za(r,t)}function sn(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)}sn.prototype.nextTouched=function(r){for(var t=this.nextPointOnContour;!r.touched(t)&&t!==this;)t=t.nextPointOnContour;return t};sn.prototype.prevTouched=function(r){for(var t=this.prevPointOnContour;!r.touched(t)&&t!==this;)t=t.prevPointOnContour;return t};var Ga=Object.freeze(new sn(0,0)),q2={cvCutIn:17/16,deltaBase:9,deltaShift:.125,loop:1,minDis:1,autoFlip:!0};function Fn(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=Wr,this.round=x0}}v0.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){Fn.prototype=q2,o=this._fpgmState=new Fn("fpgm",e.tables.fpgm),o.funcs=[],o.font=e,exports.DEBUG&&(console.log("---EXEC FPGM---"),o.step=-1);try{lo(o)}catch(u){console.log("Hinting error in FPGM:"+u),this._errorState=3;return}}Fn.prototype=o,n=this._prepState=new Fn("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{lo(n)}catch(u){this._errorState<2&&console.log("Hinting error in PREP:"+u),this._errorState=2}}if(!(this._errorState>1))try{return y0(r,n)}catch(u){this._errorState<1&&(console.log("Hinting error:"+u),console.log("Note: further hinting errors are silenced")),this._errorState=1;return}}};y0=function(r,t){var e=t.ppem/t.font.unitsPerEm,n=e,o=r.components,i,a,s;if(Fn.prototype=t,!o)s=new Fn("glyf",r.instructions),exports.DEBUG&&(console.log("---EXEC GLYPH---"),s.step=-1),hp(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 Fn("glyf",p.instructions),exports.DEBUG&&(console.log("---EXEC COMP "+u+"---"),s.step=-1),hp(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 b=0;b<m.length;b++)i.push(m[b]+x)}r.instructions&&!s.inhibitGridFit&&(s=new Fn("glyf",r.instructions),s.gZone=s.z0=s.z1=s.z2=a,s.contours=i,a.push(new sn(0,0),new sn(Math.round(r.advanceWidth*e),0)),exports.DEBUG&&(console.log("---EXEC COMPOSITE---"),s.step=-1),lo(s),a.length-=2)}return a};hp=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 sn(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 sn(0,0),new sn(Math.round(r.advanceWidth*e),0)),lo(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)}}};lo=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=g0[t[r.ip]],!n)throw new Error("unknown instruction: 0x"+Number(t[r.ip]).toString(16));n(r)}}};function Zl(r){for(var t=r.tZone=new Array(r.gZone.length),e=0;e<t.length;e++)t[e]=new sn(0,0)}function S0(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 dy(r,t){exports.DEBUG&&console.log(t.step,"SVTCA["+r.axis+"]"),t.fv=t.pv=t.dpv=r}function hy(r,t){exports.DEBUG&&console.log(t.step,"SPVTCA["+r.axis+"]"),t.pv=t.dpv=r}function my(r,t){exports.DEBUG&&console.log(t.step,"SFVTCA["+r.axis+"]"),t.fv=r}function gy(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=ja(s,l)}function yy(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=ja(s,l)}function X2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SPVFS[]",e,n),r.pv=r.dpv=ja(n,e)}function Y2(r){var t=r.stack,e=t.pop(),n=t.pop();exports.DEBUG&&console.log(r.step,"SPVFS[]",e,n),r.fv=ja(n,e)}function $2(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 K2(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 Z2(r){r.fv=r.pv,exports.DEBUG&&console.log(r.step,"SFVTPV[]")}function Q2(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,b=p.y,w=f.x,S=f.y,_=(h-g)*(b-S)-(m-v)*(x-w),T=h*v-m*g,y=x*S-b*w;d.x=(T*(x-w)-y*(h-g))/_,d.y=(T*(b-S)-y*(m-v))/_}function J2(r){r.rp0=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP0[]",r.rp0)}function eI(r){r.rp1=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP1[]",r.rp1)}function tI(r){r.rp2=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SRP2[]",r.rp2)}function rI(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP0[]",t),r.zp0=t,t){case 0:r.tZone||Zl(r),r.z0=r.tZone;break;case 1:r.z0=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function nI(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP1[]",t),r.zp1=t,t){case 0:r.tZone||Zl(r),r.z1=r.tZone;break;case 1:r.z1=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function oI(r){var t=r.stack.pop();switch(exports.DEBUG&&console.log(r.step,"SZP2[]",t),r.zp2=t,t){case 0:r.tZone||Zl(r),r.z2=r.tZone;break;case 1:r.z2=r.gZone;break;default:throw new Error("Invalid zone pointer")}}function iI(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||Zl(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 aI(r){r.loop=r.stack.pop(),exports.DEBUG&&console.log(r.step,"SLOOP[]",r.loop)}function sI(r){exports.DEBUG&&console.log(r.step,"RTG[]"),r.round=x0}function lI(r){exports.DEBUG&&console.log(r.step,"RTHG[]"),r.round=j2}function cI(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SMD[]",t),r.minDis=t/64}function uI(r){exports.DEBUG&&console.log(r.step,"ELSE[]"),S0(r,!1)}function pI(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"JMPR[]",t),r.ip+=t-1}function fI(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCVTCI[]",t),r.cvCutIn=t/64}function dI(r){var t=r.stack;exports.DEBUG&&console.log(r.step,"DUP[]"),t.push(t[t.length-1])}function tp(r){exports.DEBUG&&console.log(r.step,"POP[]"),r.stack.pop()}function hI(r){exports.DEBUG&&console.log(r.step,"CLEAR[]"),r.stack.length=0}function mI(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 gI(r){var t=r.stack;exports.DEBUG&&console.log(r.step,"DEPTH[]"),t.push(t.length)}function yI(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++)lo(r),exports.DEBUG&&console.log(++r.step,a+1<n?"next loopcall":"done loopcall",a);r.ip=o,r.prog=i}function vI(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],lo(r),r.ip=e,r.prog=n,exports.DEBUG&&console.log(++r.step,"returning from",t)}function xI(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"CINDEX[]",e),t.push(t[t.length-e])}function bI(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 SI(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 vy(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,Ga);r&&(a=t.round(a)),o.setRelative(n,Ga,a,i),o.touch(n),t.rp0=t.rp1=e}function xy(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 by(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 Sy(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 wy(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 wI(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 TI(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 Ty(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 CI(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 AI(r){exports.DEBUG&&console.log(r.step,"RTDG[]"),r.round=z2}function Cy(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,Ga);r&&(Math.abs(u-l)<t.cvCutIn&&(u=l),u=t.round(u)),a.setRelative(i,Ga,u,s),t.zp0===0&&(i.xo=i.x,i.yo=i.y),a.touch(i),t.rp0=t.rp1=o}function _I(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 OI(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 II(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 LI(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 NI(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 PI(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"RCVT",e),t.push(r.cvt[e]*64)}function Ay(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,Ga,r,!1)*64)}function _y(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 MI(r){exports.DEBUG&&console.log(r.step,"MPPEM[]"),r.stack.push(r.ppem)}function EI(r){exports.DEBUG&&console.log(r.step,"FLIPON[]"),r.autoFlip=!0}function DI(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 BI(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 FI(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 RI(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 kI(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 GI(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 UI(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 VI(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 zI(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"IF[]",t),t||(S0(r,!0),exports.DEBUG&&console.log(r.step,"EIF[]"))}function jI(r){exports.DEBUG&&console.log(r.step,"EIF[]")}function HI(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 WI(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 qI(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"NOT[]",e),t.push(e?0:1)}function rp(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 XI(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"SDB[]",e),r.deltaBase=e}function YI(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"SDS[]",e),r.deltaShift=Math.pow(.5,e)}function $I(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 KI(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 ZI(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 QI(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 JI(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"ABS[]",e),t.push(Math.abs(e))}function eL(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"NEG[]",e),t.push(-e)}function tL(r){var t=r.stack,e=t.pop();exports.DEBUG&&console.log(r.step,"FLOOR[]",e),t.push(Math.floor(e/64)*64)}function rL(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 nL(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 np(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 oL(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SROUND[]",t),r.round=b0;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 iL(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"S45ROUND[]",t),r.round=b0;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 aL(r){exports.DEBUG&&console.log(r.step,"ROFF[]"),r.round=V2}function sL(r){exports.DEBUG&&console.log(r.step,"RUTG[]"),r.round=H2}function lL(r){exports.DEBUG&&console.log(r.step,"RDTG[]"),r.round=W2}function cL(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCANCTRL[]",t)}function Oy(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=ja(s,l)}function uL(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 pL(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 fL(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 dL(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 hL(r){var t=r.stack.pop();exports.DEBUG&&console.log(r.step,"SCANTYPE[]",t)}function mL(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 En(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 Dn(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 ce(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)}g0=[dy.bind(void 0,an),dy.bind(void 0,Wr),hy.bind(void 0,an),hy.bind(void 0,Wr),my.bind(void 0,an),my.bind(void 0,Wr),gy.bind(void 0,0),gy.bind(void 0,1),yy.bind(void 0,0),yy.bind(void 0,1),X2,Y2,$2,K2,Z2,Q2,J2,eI,tI,rI,nI,oI,iI,aI,sI,lI,cI,uI,pI,fI,void 0,void 0,dI,tp,hI,mI,gI,xI,bI,void 0,void 0,void 0,yI,vI,SI,void 0,vy.bind(void 0,0),vy.bind(void 0,1),xy.bind(void 0,an),xy.bind(void 0,Wr),by.bind(void 0,0),by.bind(void 0,1),Sy.bind(void 0,0),Sy.bind(void 0,1),wy.bind(void 0,0),wy.bind(void 0,1),wI,TI,Ty.bind(void 0,0),Ty.bind(void 0,1),CI,AI,Cy.bind(void 0,0),Cy.bind(void 0,1),_I,OI,II,LI,NI,PI,Ay.bind(void 0,0),Ay.bind(void 0,1),void 0,_y.bind(void 0,0),_y.bind(void 0,1),MI,void 0,EI,void 0,void 0,DI,BI,FI,RI,kI,GI,UI,VI,zI,jI,HI,WI,qI,rp.bind(void 0,1),XI,YI,$I,KI,ZI,QI,JI,eL,tL,rL,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,nL,rp.bind(void 0,2),rp.bind(void 0,3),np.bind(void 0,1),np.bind(void 0,2),np.bind(void 0,3),oL,iL,void 0,void 0,aL,void 0,sL,lL,tp,tp,void 0,void 0,void 0,void 0,void 0,cL,Oy.bind(void 0,0),Oy.bind(void 0,1),uL,void 0,pL,fL,dL,hL,mL,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,En.bind(void 0,1),En.bind(void 0,2),En.bind(void 0,3),En.bind(void 0,4),En.bind(void 0,5),En.bind(void 0,6),En.bind(void 0,7),En.bind(void 0,8),Dn.bind(void 0,1),Dn.bind(void 0,2),Dn.bind(void 0,3),Dn.bind(void 0,4),Dn.bind(void 0,5),Dn.bind(void 0,6),Dn.bind(void 0,7),Dn.bind(void 0,8),ce.bind(void 0,0,0,0,0,0),ce.bind(void 0,0,0,0,0,1),ce.bind(void 0,0,0,0,0,2),ce.bind(void 0,0,0,0,0,3),ce.bind(void 0,0,0,0,1,0),ce.bind(void 0,0,0,0,1,1),ce.bind(void 0,0,0,0,1,2),ce.bind(void 0,0,0,0,1,3),ce.bind(void 0,0,0,1,0,0),ce.bind(void 0,0,0,1,0,1),ce.bind(void 0,0,0,1,0,2),ce.bind(void 0,0,0,1,0,3),ce.bind(void 0,0,0,1,1,0),ce.bind(void 0,0,0,1,1,1),ce.bind(void 0,0,0,1,1,2),ce.bind(void 0,0,0,1,1,3),ce.bind(void 0,0,1,0,0,0),ce.bind(void 0,0,1,0,0,1),ce.bind(void 0,0,1,0,0,2),ce.bind(void 0,0,1,0,0,3),ce.bind(void 0,0,1,0,1,0),ce.bind(void 0,0,1,0,1,1),ce.bind(void 0,0,1,0,1,2),ce.bind(void 0,0,1,0,1,3),ce.bind(void 0,0,1,1,0,0),ce.bind(void 0,0,1,1,0,1),ce.bind(void 0,0,1,1,0,2),ce.bind(void 0,0,1,1,0,3),ce.bind(void 0,0,1,1,1,0),ce.bind(void 0,0,1,1,1,1),ce.bind(void 0,0,1,1,1,2),ce.bind(void 0,0,1,1,1,3),ce.bind(void 0,1,0,0,0,0),ce.bind(void 0,1,0,0,0,1),ce.bind(void 0,1,0,0,0,2),ce.bind(void 0,1,0,0,0,3),ce.bind(void 0,1,0,0,1,0),ce.bind(void 0,1,0,0,1,1),ce.bind(void 0,1,0,0,1,2),ce.bind(void 0,1,0,0,1,3),ce.bind(void 0,1,0,1,0,0),ce.bind(void 0,1,0,1,0,1),ce.bind(void 0,1,0,1,0,2),ce.bind(void 0,1,0,1,0,3),ce.bind(void 0,1,0,1,1,0),ce.bind(void 0,1,0,1,1,1),ce.bind(void 0,1,0,1,1,2),ce.bind(void 0,1,0,1,1,3),ce.bind(void 0,1,1,0,0,0),ce.bind(void 0,1,1,0,0,1),ce.bind(void 0,1,1,0,0,2),ce.bind(void 0,1,1,0,0,3),ce.bind(void 0,1,1,0,1,0),ce.bind(void 0,1,1,0,1,1),ce.bind(void 0,1,1,0,1,2),ce.bind(void 0,1,1,0,1,3),ce.bind(void 0,1,1,1,0,0),ce.bind(void 0,1,1,1,0,1),ce.bind(void 0,1,1,1,0,2),ce.bind(void 0,1,1,1,0,3),ce.bind(void 0,1,1,1,1,0),ce.bind(void 0,1,1,1,1,1),ce.bind(void 0,1,1,1,1,2),ce.bind(void 0,1,1,1,1,3)];function Oi(r){this.char=r,this.state={},this.activeState=null}function Tp(r,t,e){this.contextName=e,this.startIndex=r,this.endOffset=t}function gL(r,t,e){this.contextName=r,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=e}function ur(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 Ql(r){this.eventId=r,this.subscribers=[]}function yL(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 Ql(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 He(r){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],yL.call(this,r)}Oi.prototype.setState=function(r,t){return this.state[r]=t,this.activeState={key:r,value:this.state[r]},this.activeState};Oi.prototype.getState=function(r){return this.state[r]||null};He.prototype.inboundIndex=function(r){return r>=0&&r<this.tokens.length};He.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)})])};He.prototype.replaceRange=function(r,t,e,n){t=t!==null?t:this.tokens.length;var o=e.every(function(a){return a instanceof Oi});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."}};He.prototype.replaceToken=function(r,t,e){if(!isNaN(r)&&this.inboundIndex(r)&&t instanceof Oi){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."}};He.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};He.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."}};He.prototype.insertToken=function(r,t,e){var n=r.every(function(o){return o instanceof Oi});return n?(this.tokens.splice.apply(this.tokens,[t,0].concat(r)),e||this.dispatch("insertToken",[r,t]),r):{FAIL:"insertToken: invalid token(s)."}};He.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)};Ql.prototype.subscribe=function(r){return typeof r=="function"?this.subscribers.push(r)-1:{FAIL:"invalid '"+this.eventId+"' event handler"}};Ql.prototype.unsubscribe=function(r){this.subscribers.splice(r,1)};ur.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)};ur.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}};He.prototype.rangeToText=function(r){if(r instanceof Tp)return this.getRangeTokens(r).map(function(t){return t.char}).join("")};He.prototype.getText=function(){return this.tokens.map(function(r){return r.char}).join("")};He.prototype.getContext=function(r){var t=this.registeredContexts[r];return t||null};He.prototype.on=function(r,t){var e=this.events[r];return e?e.subscribe(t):null};He.prototype.dispatch=function(r,t){var e=this,n=this.events[r];n instanceof Ql&&n.subscribers.forEach(function(o){o.apply(e,t||[])})};He.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 gL(r,t,e);return this.registeredContexts[r]=n,this.contextCheckers.push(n),n};He.prototype.getRangeTokens=function(r){var t=r.startIndex+r.endOffset;return[].concat(this.tokens.slice(r.startIndex,t))};He.prototype.getContextRanges=function(r){var t=this.getContext(r);return t?t.ranges:{FAIL:"context checker '"+r+"' is not registered."}};He.prototype.resetContextsRanges=function(){var r=this.registeredContexts;for(var t in r)if(r.hasOwnProperty(t)){var e=r[t];e.ranges=[]}};He.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 ur(r,t);this.runContextCheck(e)}this.dispatch("updateContextsRanges",[this.registeredContexts])};He.prototype.setEndOffset=function(r,t){var e=this.getContext(t).openRange.startIndex,n=new Tp(e,r,t),o=this.getContext(t).ranges;return n.rangeId=t+"."+o.length,o.push(n),this.getContext(t).openRange=null,n};He.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 Tp(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])}})};He.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 ur(t,e);this.dispatch("next",[o]),this.runContextCheck(o);var i=new Oi(n);this.tokens.push(i),this.dispatch("newToken",[i,o])}return this.dispatch("end",[this.tokens]),this.tokens};function Rn(r){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(r)}function w0(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 Hl(r){return/[A-z]/.test(r)}function vL(r){return/\s/.test(r)}function Gt(r){this.font=r,this.features={}}function so(r){this.id=r.id,this.tag=r.tag,this.substitution=r.substitution}function Ha(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 xL(r,t){var e=Ha(r,t.coverage);return e===-1?null:r+t.deltaGlyphId}function bL(r,t){var e=Ha(r,t.coverage);return e===-1?null:t.substitute[e]}function op(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=Ha(i,o);a!==-1&&e.push(a)}return e.length!==r.length?-1:e}function SL(r,t){var e=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(r.context.length<e)return[];var n=op(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 ur(i,0),s=op(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 ur(l,0),c=op(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],b=this.getLookupMethod(g,x),w=this.getSubstitutionType(g,x);if(w==="12")for(var S=0;S<n.length;S++){var _=r.get(S),T=b(_);T&&f.push(T)}}return f}function wL(r,t){var e=r.current,n=Ha(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 TL(r,t){var e=Ha(r,t.coverage);return e===-1?null:t.sequences[e]}Gt.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[]};Gt.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()};Gt.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};Gt.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};Gt.prototype.getSubstitutionType=function(r,t){var e=r.lookupType.toString(),n=t.substFormat.toString();return e+n};Gt.prototype.getLookupMethod=function(r,t){var e=this,n=this.getSubstitutionType(r,t);switch(n){case"11":return function(o){return xL.apply(e,[o,t])};case"12":return function(o){return bL.apply(e,[o,t])};case"63":return function(o){return SL.apply(e,[o,t])};case"41":return function(o){return wL.apply(e,[o,t])};case"21":return function(o){return TL.apply(e,[o,t])};default:throw new Error("lookupType: "+r.lookupType+" - substFormat: "+t.substFormat+" is not yet supported")}};Gt.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 so({id:11,tag:r.tag,substitution:d}));break;case"12":d=f(t.current),d&&i.splice(e,1,new so({id:12,tag:r.tag,substitution:d}));break;case"63":d=f(t),Array.isArray(d)&&d.length&&i.splice(e,1,new so({id:63,tag:r.tag,substitution:d}));break;case"41":d=f(t),d&&i.splice(e,1,new so({id:41,tag:r.tag,substitution:d}));break;case"21":d=f(t.current),d&&i.splice(e,1,new so({id:21,tag:r.tag,substitution:d}));break}t=new ur(i,e),!(Array.isArray(d)&&!d.length)&&(d=null)}return i.length?i:null};Gt.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};Gt.prototype.getLookupSubtables=function(r){return r.subtables||null};Gt.prototype.getLookupByIndex=function(r){var t=this.font.tables.gsub.lookups;return t[r]||null};Gt.prototype.getFeatureLookups=function(r){return r.lookupListIndexes.map(this.getLookupByIndex.bind(this))};Gt.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 CL(r){var t=r.current,e=r.get(-1);return e===null&&Rn(t)||!Rn(e)&&Rn(t)}function AL(r){var t=r.get(1);return t===null||!Rn(t)}var _L={startCheck:CL,endCheck:AL};function OL(r){var t=r.current,e=r.get(-1);return(Rn(t)||kn(t))&&!Rn(e)}function IL(r){var t=r.get(1);switch(!0){case t===null:return!0;case(!Rn(t)&&!kn(t)):var e=vL(t);if(!e)return!0;if(e){var n=!1;if(n=r.lookahead.some(function(o){return Rn(o)||kn(o)}),!n)return!0}break;default:return!1}}var LL={startCheck:OL,endCheck:IL};function NL(r,t,e){t[e].setState(r.tag,r.substitution)}function PL(r,t,e){t[e].setState(r.tag,r.substitution)}function ML(r,t,e){r.substitution.forEach(function(n,o){var i=t[e+o];i.setState(r.tag,n)})}function EL(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 Iy={11:NL,12:PL,63:ML,41:EL};function Cp(r,t,e){r instanceof so&&Iy[r.id]&&Iy[r.id](r,t,e)}function DL(r){for(var t=[].concat(r.backtrack),e=t.length-1;e>=0;e--){var n=t[e],o=w0(n),i=kn(n);if(!o&&!i)return!0;if(o)return!1}return!1}function BL(r){if(w0(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 FL(r){var t=this,e="arab",n=this.featuresTags[e],o=this.tokenizer.getRangeTokens(r);if(o.length!==1){var i=new ur(o.map(function(s){return s.getState("glyphIndex")}),0),a=new ur(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;DL(a)&&(u|=1),BL(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 so&&(Cp(f,o,d),i.context[d]=f.substitution)})}}})}}function Ly(r,t){var e=r.map(function(n){return n.activeState.value});return new ur(e,t||0)}function RL(r){var t=this,e="arab",n=this.tokenizer.getRangeTokens(r),o=Ly(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 Cp(l,n,a)}),o=Ly(n))})}function kL(r){var t=r.current,e=r.get(-1);return e===null&&Hl(t)||!Hl(e)&&Hl(t)}function GL(r){var t=r.get(1);return t===null||!Hl(t)}var UL={startCheck:kL,endCheck:GL};function Ny(r,t){var e=r.map(function(n){return n.activeState.value});return new ur(e,t||0)}function VL(r){var t=this,e="latn",n=this.tokenizer.getRangeTokens(r),o=Ny(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 Cp(l,n,a)}),o=Ny(n))})}function dr(r){this.baseDir=r||"ltr",this.tokenizer=new He,this.featuresTags={}}dr.prototype.setText=function(r){this.text=r};dr.prototype.contextChecks={latinWordCheck:UL,arabicWordCheck:_L,arabicSentenceCheck:LL};function ip(r){var t=this.contextChecks[r+"Check"];return this.tokenizer.registerContextChecker(r,t.startCheck,t.endCheck)}function zL(){return ip.call(this,"latinWord"),ip.call(this,"arabicWord"),ip.call(this,"arabicSentence"),this.tokenizer.tokenize(this.text)}function jL(){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())})}dr.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};dr.prototype.applyFeatures=function(r,t){if(!r)throw new Error("No valid font was provided to apply features");this.query||(this.query=new Gt(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)}};dr.prototype.registerModifier=function(r,t,e){this.tokenizer.registerModifier(r,t,e)};function Ap(){if(this.tokenizer.registeredModifiers.indexOf("glyphIndex")===-1)throw new Error("glyphIndex modifier is required to apply arabic presentation features.")}function HL(){var r=this,t="arab";if(!!this.featuresTags.hasOwnProperty(t)){Ap.call(this);var e=this.tokenizer.getContextRanges("arabicWord");e.forEach(function(n){FL.call(r,n)})}}function WL(){var r=this,t="arab";if(!!this.featuresTags.hasOwnProperty(t)){var e=this.featuresTags[t];if(e.indexOf("rlig")!==-1){Ap.call(this);var n=this.tokenizer.getContextRanges("arabicWord");n.forEach(function(o){RL.call(r,o)})}}}function qL(){var r=this,t="latn";if(!!this.featuresTags.hasOwnProperty(t)){var e=this.featuresTags[t];if(e.indexOf("liga")!==-1){Ap.call(this);var n=this.tokenizer.getContextRanges("latinWord");n.forEach(function(o){VL.call(r,o)})}}}dr.prototype.checkContextReady=function(r){return!!this.tokenizer.getContext(r)};dr.prototype.applyFeaturesToContexts=function(){this.checkContextReady("arabicWord")&&(HL.call(this),WL.call(this)),this.checkContextReady("latinWord")&&qL.call(this),this.checkContextReady("arabicSentence")&&jL.call(this)};dr.prototype.processText=function(r){(!this.text||this.text!==r)&&(this.setText(r),zL.call(this),this.applyFeaturesToContexts())};dr.prototype.getBidiText=function(r){return this.processText(r),this.tokenizer.getText()};dr.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 Re(r){r=r||{},r.tables=r.tables||{},r.empty||(Da(r.familyName,"When creating a new Font object, familyName is required."),Da(r.styleName,"When creating a new Font object, styleName is required."),Da(r.unitsPerEm,"When creating a new Font object, unitsPerEm is required."),Da(r.ascender,"When creating a new Font object, ascender is required."),Da(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 qr.GlyphSet(this,r.glyphs||[]),this.encoding=new Vy(this),this.position=new Va(this),this.substitution=new kt(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 v0(this)}})}Re.prototype.hasChar=function(r){return this.encoding.charToGlyphIndex(r)!==null};Re.prototype.charToGlyphIndex=function(r){return this.encoding.charToGlyphIndex(r)};Re.prototype.charToGlyph=function(r){var t=this.charToGlyphIndex(r),e=this.glyphs.get(t);return e||(e=this.glyphs.get(0)),e};Re.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})};Re.prototype.stringToGlyphs=function(r,t){var e=this,n=new dr,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};Re.prototype.nameToGlyphIndex=function(r){return this.glyphNames.nameToGlyphIndex(r)};Re.prototype.nameToGlyph=function(r){var t=this.nameToGlyphIndex(r),e=this.glyphs.get(t);return e||(e=this.glyphs.get(0)),e};Re.prototype.glyphIndexToName=function(r){return this.glyphNames.glyphIndexToName?this.glyphNames.glyphIndexToName(r):""};Re.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};Re.prototype.defaultRenderOptions={kerning:!0,features:[{script:"arab",tags:["init","medi","fina","rlig"]},{script:"latn",tags:["liga","rlig"]}]};Re.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};Re.prototype.getPath=function(r,t,e,n,o){var i=new rt;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};Re.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};Re.prototype.getAdvanceWidth=function(r,t,e){return this.forEachGlyph(r,0,0,t,e,function(){})};Re.prototype.draw=function(r,t,e,n,o,i){this.getPath(t,e,n,o,i).draw(r)};Re.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)})};Re.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)})};Re.prototype.getEnglishName=function(r){var t=this.names[r];if(t)return t.en};Re.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};Re.prototype.toTables=function(){return M2.fontToTable(this)};Re.prototype.toBuffer=function(){return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."),this.toArrayBuffer()};Re.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};Re.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(D2())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=Ku(),u=F2(n);l.writeFileSync(r,u)}};Re.prototype.fsSelectionValues={ITALIC:1,UNDERSCORE:2,NEGATIVE:4,OUTLINED:8,STRIKEOUT:16,BOLD:32,REGULAR:64,USER_TYPO_METRICS:128,WWS:256,OBLIQUE:512};Re.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};Re.prototype.usWeightClasses={THIN:100,EXTRA_LIGHT:200,LIGHT:300,NORMAL:400,MEDIUM:500,SEMI_BOLD:600,BOLD:700,EXTRA_BOLD:800,BLACK:900};function T0(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 XL(r,t,e){var n=T0(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 YL(r,t,e){var n={},o=new ue.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 $L(r,t,e,n){for(var o=T0(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 KL(r,t,e,n){var o={},i=new ue.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 ZL(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(XL(n,r.axes[n],t));for(var o=0;o<r.instances.length;o++)e.fields=e.fields.concat($L(o,r.instances[o],r.axes,t));return e}function QL(r,t,e){var n=new ue.Parser(r,t),o=n.parseULong();ve.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(YL(r,t+i+p*s,e));for(var f=[],d=t+i+a*s,h=0;h<l;h++)f.push(KL(r,d+h*u,c,e));return{axes:c,instances:f}}var JL={make:ZL,parse:QL},eN=function(){return{coverage:this.parsePointer(E.coverage),attachPoints:this.parseList(E.pointer(E.uShortList))}},tN=function(){var r=this.parseUShort();if(ve.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()}},rN=function(){return this.parseList(E.pointer(tN))},nN=function(){return{coverage:this.parsePointer(E.coverage),ligGlyphs:this.parseList(E.pointer(rN))}},oN=function(){return this.parseUShort(),this.parseList(E.pointer(E.coverage))};function iN(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);ve.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(eN),ligCaretList:e.parsePointer(nN),markAttachClassDef:e.parsePointer(E.classDef)};return n>=1.2&&(o.markGlyphSets=e.parsePointer(oN)),o}var aN={parse:iN},pr=new Array(10);pr[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()};ve.assert(!1,"0x"+t.toString(16)+": GPOS lookup type 1 format must be 1 or 2.")};pr[2]=function(){var t=this.offset+this.relativeOffset,e=this.parseUShort();ve.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)}}))}}};pr[3]=function(){return{error:"GPOS Lookup 3 not supported"}};pr[4]=function(){return{error:"GPOS Lookup 4 not supported"}};pr[5]=function(){return{error:"GPOS Lookup 5 not supported"}};pr[6]=function(){return{error:"GPOS Lookup 6 not supported"}};pr[7]=function(){return{error:"GPOS Lookup 7 not supported"}};pr[8]=function(){return{error:"GPOS Lookup 8 not supported"}};pr[9]=function(){return{error:"GPOS Lookup 9 not supported"}};function sN(r,t){t=t||0;var e=new E(r,t),n=e.parseVersion(1);return ve.argument(n===1||n===1.1,"Unsupported GPOS table version "+n),n===1?{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(pr)}:{version:n,scripts:e.parseScriptList(),features:e.parseFeatureList(),lookups:e.parseLookupList(pr),variations:e.parseFeatureVariationsList()}}var lN=new Array(10);function cN(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,lN)}])}var uN={parse:sN,make:cN};function pN(r){var t={};r.skip("uShort");var e=r.parseUShort();ve.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 fN(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 dN(r,t){var e=new ue.Parser(r,t),n=e.parseUShort();if(n===0)return pN(e);if(n===1)return fN(e);throw new Error("Unsupported kern table version ("+n+").")}var hN={parse:dN};function mN(r,t,e,n){for(var o=new ue.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 gN={parse:mN};function yN(r,t){var e=Ku();e.readFile(r,function(n,o){if(n)return t(n.message);t(null,B2(o))})}function vN(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 Py(r,t){for(var e=[],n=12,o=0;o<t;o+=1){var i=ue.getTag(r,n),a=ue.getULong(r,n+4),s=ue.getULong(r,n+8),l=ue.getULong(r,n+12);e.push({tag:i,checksum:a,offset:s,length:l,compression:!1}),n+=16}return e}function xN(r,t){for(var e=[],n=44,o=0;o<t;o+=1){var i=ue.getTag(r,n),a=ue.getULong(r,n+4),s=ue.getULong(r,n+8),l=ue.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 Ye(r,t){if(t.compression==="WOFF"){var e=new Uint8Array(r.buffer,t.offset+2,t.compressedLength-2),n=new Uint8Array(t.length);if(cO(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 _p(r,t){t=t??{};var e,n,o=new Re({empty:!0}),i=new DataView(r,0),a,s=[],l=ue.getTag(i,0);if(l===String.fromCharCode(0,1,0,0)||l==="true"||l==="typ1")o.outlinesFormat="truetype",a=ue.getUShort(i,4),s=Py(i,a);else if(l==="OTTO")o.outlinesFormat="cff",a=ue.getUShort(i,4),s=Py(i,a);else if(l==="wOFF"){var u=ue.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=ue.getUShort(i,12),s=xN(i,a)}else throw new Error("Unsupported OpenType signature "+l);for(var c,p,f,d,h,m,g,v,x,b,w,S,_=0;_<a;_+=1){var T=s[_],y=void 0;switch(T.tag){case"cmap":y=Ye(i,T),o.tables.cmap=Uy.parse(y.data,y.offset),o.encoding=new zy(o.tables.cmap);break;case"cvt ":y=Ye(i,T),S=new ue.Parser(y.data,y.offset),o.tables.cvt=S.parseShortList(T.length/2);break;case"fvar":p=T;break;case"fpgm":y=Ye(i,T),S=new ue.Parser(y.data,y.offset),o.tables.fpgm=S.parseByteList(T.length);break;case"head":y=Ye(i,T),o.tables.head=Qy.parse(y.data,y.offset),o.unitsPerEm=o.tables.head.unitsPerEm,e=o.tables.head.indexToLocFormat;break;case"hhea":y=Ye(i,T),o.tables.hhea=Jy.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=Ye(i,T),n=t0.parse(y.data,y.offset);break;case"maxp":y=Ye(i,T),o.tables.maxp=r0.parse(y.data,y.offset),o.numGlyphs=o.tables.maxp.numGlyphs;break;case"name":b=T;break;case"OS/2":y=Ye(i,T),o.tables.os2=dp.parse(y.data,y.offset);break;case"post":y=Ye(i,T),o.tables.post=l0.parse(y.data,y.offset),o.glyphNames=new xp(o.tables.post);break;case"prep":y=Ye(i,T),S=new ue.Parser(y.data,y.offset),o.tables.prep=S.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 O=Ye(i,b);if(o.tables.name=s0.parse(O.data,O.offset,n),o.names=o.tables.name,f&&x){var A=e===0,I=Ye(i,x),C=gN.parse(I.data,I.offset,o.numGlyphs,A),N=Ye(i,f);o.glyphs=m0.parse(N.data,N.offset,C,o,t)}else if(c){var P=Ye(i,c);Zy.parse(P.data,P.offset,o,t)}else throw new Error("Font doesn't contain TrueType or CFF outlines.");var G=Ye(i,g);if(e0.parse(o,G.data,G.offset,o.numberOfHMetrics,o.numGlyphs,o.glyphs,t),NO(o,t),v){var $=Ye(i,v);o.kerningPairs=hN.parse($.data,$.offset)}else o.kerningPairs={};if(d){var Y=Ye(i,d);o.tables.gdef=aN.parse(Y.data,Y.offset)}if(h){var ie=Ye(i,h);o.tables.gpos=uN.parse(ie.data,ie.offset),o.position.init()}if(m){var j=Ye(i,m);o.tables.gsub=c0.parse(j.data,j.offset)}if(p){var H=Ye(i,p);o.tables.fvar=JL.parse(H.data,H.offset,o.names)}if(w){var V=Ye(i,w);o.tables.meta=u0.parse(V.data,V.offset),o.metas=o.tables.meta}return o}function C0(r,t,e){e=e??{};var n=typeof window>"u",o=n&&!e.isUrl?yN:vN;return new Promise(function(i,a){o(r,function(s,l){if(s){if(t)return t(s);a(s)}var u;try{u=_p(l,e)}catch(c){if(t)return t(c,null);a(c)}if(t)return t(null,u);i(u)})})}var Wa=class{load(t,e,n=()=>{}){C0(t,(o,i)=>{o||!i?n(o??"Something went wrong"):e(i)})}parse(t){try{return _p(t)}catch(e){console.error(e)}}};async function bN(r){return await(await fetch(r)).arrayBuffer()}var SN=new Wa;async function Op(r){let t,e,n=!1;if(r.url?(t=await bN(r.url),e=r.url,n=r.url.startsWith("/")):r.data&&(t=r.data.buffer),t){let o=SN.parse(t);if(o)return{font:o,url:e,intercepted:n,arr:t}}}import{Vector3 as wN,Matrix4 as TN,Ray as CN}from"three";var A0=new wN,_0=new TN,O0=new CN,Jl=class extends ut{constructor(e,n,o){super(new ni(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){let o=e.parameters,i=this.geometry.getAttribute("randomColor"),a={...this.geometry.userData.parameters,...o};this.geometry.userData={parameters:a,type:"TextGeometry"},n&&(o.font||!this.geometry.font&&n.getFont(a.font))&&await this.geometry.updateFont(o.font??a.font,n),await this.geometry.update(a),Ur(this),i&&Vr(this);let{wrappedText:s,charCoords:l,charWidths:u}=this.geometry;this.wrappedText=s,this.charWidths=u,this.charCoords=l,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.geometry.userData.parameters.height,this.fontScale,this.geometry.userData.parameters.verticalAlign)??0}get fontScale(){return this.font?this.geometry.userData.parameters.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.geometry.userData.parameters.fontSize*this.geometry.userData.parameters.lineHeight}raycast(e,n){let{matrixWorld:o}=this;if(_0.copy(o).invert(),O0.copy(e.ray).applyMatrix4(_0),O0.intersectBox(this.singleBBox,A0)){let i=A0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);n.push({distance:a,point:i.clone(),object:this})}}};import{Box3 as AN,Matrix4 as co,Sphere as N0,Vector3 as _N}from"three";var M0=kp(L0());var Ip;vl.then(r=>{Ip=r});var E0=new co,ON=new co,IN=new co,hr=new AN,Un=new _N,LN=new co,NN=new co,Ii=class extends ut{constructor(e,n,o,i){super(o??n,i);this.subdivPointer=e;this.originalGeometry=n;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new co;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new co;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,n,o){let{subdivPointer:i,originalGeometry:a,subdividedGeometry:s}=Xt.build(n.geometry,void 0,void 0,!n.flatShading),l=o.material(n.material),u=new Ii(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}=Xt.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,Ur(this),Vr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Xt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Xt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,n){this.geometry=this.originalGeometry,ut.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,M0.SVD)(n),s=E0.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=ON.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=IN.copy(l).transpose();this.shearScale=LN.makeScale(a[0],a[1],a[2]).multiply(u).premultiply(l),this.shearScaleInv=NN.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 N0);let n=e.attributes.position,o=e.boundingSphere.center;hr.setFromBufferAttribute(n),hr.getCenter(o),e.boundingSphere.radius=o.distanceTo(hr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hr.getSize(Un);let i={width:Un.x,height:Un.y,depth:Un.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let n=this.originalGeometry;hr.min.set(e[0],e[2],e[4]),hr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(hr.min.applyMatrix4(this.shearScaleInv),hr.max.applyMatrix4(this.shearScaleInv)),n.boundingSphere===null&&(n.boundingSphere=new N0);let o=n.boundingSphere.center;hr.getCenter(o),n.boundingSphere.radius=o.distanceTo(hr.max),isNaN(n.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hr.getSize(Un);let i={width:Un.x,height:Un.y,depth:Un.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(Ip.free_bvh(this.subdivPointer),Ip.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,P0(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(P0(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 P0(r,t,e,n){let o=r.position.array,i=r.normal.array,a=E0.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}import{BackSide as PN,BufferGeometry as MN,DoubleSide as EN,FrontSide as DN}from"three";function D0(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=DN:t.side===1?r.side=PN:r.side=EN)}function BN(r,t){if(Array.isArray(r.material))for(let e of r.material)D0(e,t);else{let e=r.material;D0(e,t)}r.objectType==="SubdivObject"&&t.flatShading!==void 0&&(r.material.flatShading=!1,r.smoothShading=!t.flatShading,r.updateMesh())}function B0(r,t,e){let n;if(t.geometry.type==="SubdivGeometry")n=Ii.createFromState(r,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new MN:xl(t.geometry,e),i="materials"in t?t.materials.map(a=>e.material(a)):e.material(t.material);bs.is2DParametricMesh(o.userData.type)?n=new Fl(o,i):o?.userData.type==="VectorGeometry"?n=new gi(o,i):t.geometry.type==="NonParametricGeometry"?n=new Rl(o,i):t.geometry.type==="BooleanGeometry"?(n=new Pl(void 0,i),n.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(n.phongAngle=t.geometry.phongAngle)):n=new wi(o,i),n.uuid=r,n.fromState(t,e)}return BN(n,t),n}function F0(r,t,e){return t.type==="Mesh"?t.geometry.type==="TextGeometry"?new Jl(r,t,e):B0(r,t,e):t.type==="Empty"?oo.createFromState(r,t):t.type==="PointLight"?xi.createFromState(r,t,e):t.type==="SpotLight"?bi.createFromState(r,t,e):t.type==="DirectionalLight"?vi.createFromState(r,t,e):bo.is(t.type)?on.createFromState(r,t):(console.error(t),new oo)}var uo=class extends Rt{};import{Mesh as G0,Ray as RN,Matrix4 as kN,Raycaster as GN}from"three";function R0(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,Vr(r),Ur(r)),n.length===0&&o.length===0&&r.layers.set(0),e}function k0(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 U0(r){let t=!1;return r.traverseEntity(e=>{if(e instanceof G0)if(Array.isArray(e.material))for(let n=0;n<e.material.length;n++)R0(e,e.material[n])&&(t=!0);else R0(e,e.material)&&(t=!0)}),t}function V0(r){let t=!1;return r.traverseEntity(e=>{if(e instanceof G0)if(Array.isArray(e.material))for(let n=0;n<e.material.length;n++)k0(e,e.material[n])&&(t=!0);else k0(e,e.material)&&(t=!0)}),t}function z0(r){"material"in r&&UN(r.material),"geometry"in r&&r.geometry.dispose()}function UN(r){Gh(r).forEach(t=>{t instanceof uo||t.dispose()})}var VN=new GN,zN=new kN,jN=new RN;function j0(r,t,e){let n=r.cloner;if(n)for(let o of n.children){let i=zN.copy(o.matrixWorld).invert(),a=jN.copy(t.ray).applyMatrix4(i),s=r.matrixWorld;a.applyMatrix4(s);let l=VN;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 H0=new qN,Lp=class extends Tl(WN){constructor(e,n){super();this.objectType="Scene";this.backupFog=new XN(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 et(1,1,1,1);this.entityByUuid={};this.ambientLight=new HN(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=V0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=U0(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(at(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 on&&this.switchActiveCamera(o)}this.traverse(o=>{Nr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{z0(e)});for(let e of this.children)Mr(e)&&e.removeFromParent()}resetAfterClear(e,n){this.init(e,n)}createPersonalCamera(){let e=on.createFromState(Lp.PERSONAL_CAMERA_ID,{...Ys.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)Mr(a)&&!a.raycastLock&&a.visible&&((Lr(a)||wl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,n),j0(a,e,n)),o(a))};return o(this),n}traverseEntity(e){for(let n of this.children)Mr(n)&&n.traverseEntity(e)}traverseVisibleEntity(e){for(let n of this.children)Mr(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=at(e.color,n),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,n){dg(this.ambientLight,e,n),e.groundColor!==void 0&&(this.ambientLight.groundColor=at(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=F0(e,n,a);return s&&(this.entityByUuid[e]=s,i.add(s),Nr(i)&&Lr(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 YN;return o.setFromPoints(n),o.getCenter(H0),H0}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 ut)if(Array.isArray(n.material))for(let o=0;o<n.material.length;o++)n.material[o]instanceof Rt&&e(n.material[o]);else n.material instanceof Rt&&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})})}},qa=Lp;qa.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var Y0=kp(W0());var q0=new Map;function X0(r){if(typeof r=="string")return r;let t=q0.get(r);return t||(t={url:URL.createObjectURL(new Blob([r]))},q0.set(r,t)),t.url}var Li=class{constructor({src:t,volume:e,delay:n,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:X0(t),format:"wav"},this.sound=new Y0.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 status(){return this._status}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}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}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._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};function Ni(r){this.char=r,this.state={},this.activeState=null}function Np(r,t,e){this.contextName=e,this.startIndex=r,this.endOffset=t}function $N(r,t,e){this.contextName=r,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=e}function wt(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 rc(r){this.eventId=r,this.subscribers=[]}function KN(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 rc(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 We(r){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],KN.call(this,r)}Ni.prototype.setState=function(r,t){return this.state[r]=t,this.activeState={key:r,value:this.state[r]},this.activeState};Ni.prototype.getState=function(r){return this.state[r]||null};We.prototype.inboundIndex=function(r){return r>=0&&r<this.tokens.length};We.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))])};We.prototype.replaceRange=function(r,t,e,n){t=t!==null?t:this.tokens.length;let o=e.every(i=>i instanceof Ni);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."}};We.prototype.replaceToken=function(r,t,e){if(!isNaN(r)&&this.inboundIndex(r)&&t instanceof Ni){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."}};We.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};We.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."}};We.prototype.insertToken=function(r,t,e){return r.every(o=>o instanceof Ni)?(this.tokens.splice.apply(this.tokens,[t,0].concat(r)),e||this.dispatch("insertToken",[r,t]),r):{FAIL:"insertToken: invalid token(s)."}};We.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)};rc.prototype.subscribe=function(r){return typeof r=="function"?this.subscribers.push(r)-1:{FAIL:`invalid '${this.eventId}' event handler`}};rc.prototype.unsubscribe=function(r){this.subscribers.splice(r,1)};wt.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)};wt.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}};We.prototype.rangeToText=function(r){if(r instanceof Np)return this.getRangeTokens(r).map(t=>t.char).join("")};We.prototype.getText=function(){return this.tokens.map(r=>r.char).join("")};We.prototype.getContext=function(r){let t=this.registeredContexts[r];return t||null};We.prototype.on=function(r,t){let e=this.events[r];return e?e.subscribe(t):null};We.prototype.dispatch=function(r,t){let e=this.events[r];e instanceof rc&&e.subscribers.forEach(n=>{n.apply(this,t||[])})};We.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 $N(r,t,e);return this.registeredContexts[r]=n,this.contextCheckers.push(n),n};We.prototype.getRangeTokens=function(r){let t=r.startIndex+r.endOffset;return[].concat(this.tokens.slice(r.startIndex,t))};We.prototype.getContextRanges=function(r){let t=this.getContext(r);return t?t.ranges:{FAIL:`context checker '${r}' is not registered.`}};We.prototype.resetContextsRanges=function(){let r=this.registeredContexts;for(let t in r)if(r.hasOwnProperty(t)){let e=r[t];e.ranges=[]}};We.prototype.updateContextsRanges=function(){this.resetContextsRanges();let r=this.tokens.map(t=>t.char);for(let t=0;t<r.length;t++){let e=new wt(r,t);this.runContextCheck(e)}this.dispatch("updateContextsRanges",[this.registeredContexts])};We.prototype.setEndOffset=function(r,t){let e=this.getContext(t).openRange.startIndex,n=new Np(e,r,t),o=this.getContext(t).ranges;return n.rangeId=`${t}.${o.length}`,o.push(n),this.getContext(t).openRange=null,n};We.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 Np(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])}})};We.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 wt(t,e);this.dispatch("next",[o]),this.runContextCheck(o);let i=new Ni(n);this.tokens.push(i),this.dispatch("newToken",[i,o])}return this.dispatch("end",[this.tokens]),this.tokens};var $0=We;function Xr(r){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(r)}function Pp(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 mr(r){return/[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(r)}function Xa(r){return/[A-z]/.test(r)}function K0(r){return/\s/.test(r)}function Ut(r){this.font=r,this.features={}}function ln(r){this.id=r.id,this.tag=r.tag,this.substitution=r.substitution}function Ya(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 ZN(r,t){return Ya(r,t.coverage)===-1?null:r+t.deltaGlyphId}function QN(r,t){let e=Ya(r,t.coverage);return e===-1?null:t.substitute[e]}function Mp(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=Ya(i,o);a!==-1&&e.push(a)}return e.length!==r.length?-1:e}function JN(r,t){let e=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(r.context.length<e)return[];let n=Mp(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&&mr(i[0].char);)i.shift();let a=new wt(i,0),s=Mp(t.lookaheadCoverage,a),l=[].concat(r.backtrack);for(l.reverse();l.length&&mr(l[0].char);)l.shift();if(l.length<t.backtrackCoverage.length)return[];let u=new wt(l,0),c=Mp(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],b=this.getLookupMethod(g,x);if(this.getSubstitutionType(g,x)==="12")for(let S=0;S<n.length;S++){let _=r.get(S),T=b(_);T&&f.push(T)}}}return f}function eP(r,t){let e=r.current,n=Ya(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 tP(r,t){let e=Ya(r,t.coverage);return e===-1?null:t.sequences[e]}Ut.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[]};Ut.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()};Ut.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};Ut.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};Ut.prototype.getSubstitutionType=function(r,t){let e=r.lookupType.toString(),n=t.substFormat.toString();return e+n};Ut.prototype.getLookupMethod=function(r,t){switch(this.getSubstitutionType(r,t)){case"11":return n=>ZN.apply(this,[n,t]);case"12":return n=>QN.apply(this,[n,t]);case"63":return n=>JN.apply(this,[n,t]);case"41":return n=>eP.apply(this,[n,t]);case"21":return n=>tP.apply(this,[n,t]);default:throw new Error(`lookupType: ${r.lookupType} - substFormat: ${t.substFormat} is not yet supported`)}};Ut.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 ln({id:11,tag:r.tag,substitution:d}));break;case"12":d=f(t.current),d&&i.splice(e,1,new ln({id:12,tag:r.tag,substitution:d}));break;case"63":d=f(t),Array.isArray(d)&&d.length&&i.splice(e,1,new ln({id:63,tag:r.tag,substitution:d}));break;case"41":d=f(t),d&&i.splice(e,1,new ln({id:41,tag:r.tag,substitution:d}));break;case"21":d=f(t.current),d&&i.splice(e,1,new ln({id:21,tag:r.tag,substitution:d}));break}t=new wt(i,e),!(Array.isArray(d)&&!d.length)&&(d=null)}}return i.length?i:null};Ut.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};Ut.prototype.getLookupSubtables=function(r){return r.subtables||null};Ut.prototype.getLookupByIndex=function(r){return this.font.tables.gsub.lookups[r]||null};Ut.prototype.getFeatureLookups=function(r){return r.lookupListIndexes.map(this.getLookupByIndex.bind(this))};Ut.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 Z0=Ut;function rP(r){let t=r.current,e=r.get(-1);return e===null&&Xr(t)||!Xr(e)&&Xr(t)}function nP(r){let t=r.get(1);return t===null||!Xr(t)}var Q0={startCheck:rP,endCheck:nP};function oP(r){let t=r.current,e=r.get(-1);return(Xr(t)||mr(t))&&!Xr(e)}function iP(r){let t=r.get(1);switch(!0){case t===null:return!0;case(!Xr(t)&&!mr(t)):let e=K0(t);if(!e)return!0;if(e){let n=!1;if(n=r.lookahead.some(o=>Xr(o)||mr(o)),!n)return!0}break;default:return!1}}var J0={startCheck:oP,endCheck:iP};function aP(r,t,e){t[e].setState(r.tag,r.substitution)}function sP(r,t,e){t[e].setState(r.tag,r.substitution)}function lP(r,t,e){r.substitution.forEach((n,o)=>{t[e+o].setState(r.tag,n)})}function cP(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 ev={11:aP,12:sP,63:lP,41:cP};function uP(r,t,e){r instanceof ln&&ev[r.id]&&ev[r.id](r,t,e)}var Pi=uP;function pP(r){let t=[].concat(r.backtrack);for(let e=t.length-1;e>=0;e--){let n=t[e],o=Pp(n),i=mr(n);if(!o&&!i)return!0;if(o)return!1}return!1}function fP(r){if(Pp(r.current))return!1;for(let t=0;t<r.lookahead.length;t++){let e=r.lookahead[t];if(!mr(e))return!0}return!1}function dP(r){let t="arab",e=this.featuresTags[t],n=this.tokenizer.getRangeTokens(r);if(n.length===1)return;let o=new wt(n.map(a=>a.getState("glyphIndex")),0),i=new wt(n.map(a=>a.char),0);n.forEach((a,s)=>{if(mr(a.char))return;o.setCurrentIndex(s),i.setCurrentIndex(s);let l=0;pP(i)&&(l|=1),fP(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 ln&&(Pi(p,n,f),o.context[f]=p.substitution)})})}var tv=dP;function rv(r,t){let e=r.map(n=>n.activeState.value);return new wt(e,t||0)}function hP(r){let t="arab",e=this.tokenizer.getRangeTokens(r),n=rv(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=>Pi(s,e,i)),n=rv(e))})}var nv=hP;function mP(r){let t=r.current,e=r.get(-1);return e===null&&Xa(t)||!Xa(e)&&Xa(t)}function gP(r){let t=r.get(1);return t===null||!Xa(t)}var ov={startCheck:mP,endCheck:gP};function iv(r,t){let e=r.map(n=>n.activeState.value);return new wt(e,t||0)}function yP(r){let t="latn",e=this.tokenizer.getRangeTokens(r),n=iv(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=>Pi(s,e,i)),n=iv(e))})}var av=yP;function gr(r){this.baseDir=r||"ltr",this.tokenizer=new $0,this.featuresTags={}}gr.prototype.setText=function(r){this.text=r};gr.prototype.contextChecks={latinWordCheck:ov,arabicWordCheck:Q0,arabicSentenceCheck:J0};function Ep(r){let t=this.contextChecks[`${r}Check`];return this.tokenizer.registerContextChecker(r,t.startCheck,t.endCheck)}function vP(){return Ep.call(this,"latinWord"),Ep.call(this,"arabicWord"),Ep.call(this,"arabicSentence"),this.tokenizer.tokenize(this.text)}function xP(){this.tokenizer.getContextRanges("arabicSentence").forEach(t=>{let e=this.tokenizer.getRangeTokens(t);this.tokenizer.replaceRange(t.startIndex,t.endOffset,e.reverse())})}gr.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};gr.prototype.applyFeatures=function(r,t){if(!r)throw new Error("No valid font was provided to apply features");this.query||(this.query=new Z0(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)}};gr.prototype.registerModifier=function(r,t,e){this.tokenizer.registerModifier(r,t,e)};function Dp(){if(this.tokenizer.registeredModifiers.indexOf("glyphIndex")===-1)throw new Error("glyphIndex modifier is required to apply arabic presentation features.")}function bP(){let r="arab";if(!this.featuresTags.hasOwnProperty(r))return;Dp.call(this),this.tokenizer.getContextRanges("arabicWord").forEach(e=>{tv.call(this,e)})}function SP(){let r="arab";if(!this.featuresTags.hasOwnProperty(r)||this.featuresTags[r].indexOf("rlig")===-1)return;Dp.call(this),this.tokenizer.getContextRanges("arabicWord").forEach(n=>{nv.call(this,n)})}function wP(){let r="latn";if(!this.featuresTags.hasOwnProperty(r)||this.featuresTags[r].indexOf("liga")===-1)return;Dp.call(this),this.tokenizer.getContextRanges("latinWord").forEach(n=>{av.call(this,n)})}gr.prototype.checkContextReady=function(r){return!!this.tokenizer.getContext(r)};gr.prototype.applyFeaturesToContexts=function(){this.checkContextReady("arabicWord")&&(bP.call(this),SP.call(this)),this.checkContextReady("latinWord")&&wP.call(this),this.checkContextReady("arabicSentence")&&xP.call(this)};gr.prototype.processText=function(r){(!this.text||this.text!==r)&&(this.setText(r),vP.call(this),this.applyFeaturesToContexts())};gr.prototype.getBidiText=function(r){return this.processText(r),this.tokenizer.getText()};gr.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 sv=gr;import{Box2 as TP,Vector2 as po,Path as lv,Shape as CP,ShapeUtils as AP,Color as _P}from"three";var nc=class{constructor(){this.type="ShapePath";this.color=new _P;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new lv,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 b=m.x,w=g.x,S=v.x,_=x.x,T=m.y,y=g.y,O=v.y,A=x.y,I=(_-S)*(T-O)-(A-O)*(b-S),C=(w-b)*(T-O)-(y-T)*(b-S),N=(A-O)*(w-b)-(_-S)*(y-T),P=I/N,G=C/N;if(N===0&&I!==0||P<=0||P>=1||G<0||G>1)return null;if(I===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=+(b+n.t*(w-b)).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 $=+(b+P*(w-b)).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,b=v.y-g.y,w=m.x-g.x,S=m.y-g.y,_=x*S-w*b;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||b*S<0){n.loc=e.BEHIND;return}if(Math.sqrt(x*x+b*b)<Math.sqrt(w*w+S*S)){n.loc=e.BEYOND;return}let T;x!==0?T=w/x:T=S/b,n.loc=e.BETWEEN,n.t=T}function a(m,g){let v=[],x=[];for(let b=1;b<m.length;b++){let w=m[b-1],S=m[b];for(let _=1;_<g.length;_++){let T=g[_-1],y=g[_],O=o(w,S,T,y);O!==null&&v.find(A=>A.t<=O.t+Number.EPSILON&&A.t>=O.t-Number.EPSILON)===void 0&&(v.push(O),x.push(new po(O.x,O.y)))}}return x}function s(m,g,v){let x=new po;g.getCenter(x);let b=[];return v.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{b.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function l(m,g,v,x,b){(b==null||b==="")&&(b="nonzero");let w=new po;m.boundingBox.getCenter(w);let S=[new po(v,w.y),new po(x,w.y)],_=s(S,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 O=T[0].point.x,A=[],I=0;for(;I<y.length&&y[I].point.x<O;)A.length>0&&A[A.length-1]===y[I].identifier?A.pop():A.push(y[I].identifier),I++;if(A.push(m.identifier),b==="evenodd"){let C=A.length%2===0,N=A[A.length-2];return{identifier:m.identifier,isHole:C,for:N}}else if(b==="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: "'+b+'" is currently not implemented.')}let u=0,c=999999999,p=-999999999,f=[];this.subPaths.forEach(m=>{let g=m.getPoints(),v=-999999999,x=999999999,b=-999999999,w=999999999;for(let S=0;S<g.length;S++){let _=g[S];_.y>v&&(v=_.y),_.y<x&&(x=_.y),_.x>b&&(b=_.x),_.x<w&&(w=_.x)}p<=b&&(p=b+1),c>=w&&(c=w-1),g.length&&f.push({curves:m.curves,points:g,isCW:AP.isClockWise(g),identifier:u++,boundingBox:new TP(new po(w,x),new po(b,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 CP;v.curves=m.curves,d.filter(b=>b?.isHole&&b.for===m.identifier).forEach(b=>{if(b){let w=f[b.identifier],S=new lv;S.curves=w.curves,v.holes.push(S)}}),h.push(v)}}),h}};import{CubicBezierCurve as OP,LineCurve as IP,QuadraticBezierCurve as LP}from"three";function NP(r,t){return t.state.glyphIndex===r||t.state.fina===r||t.state.medi===r||t.state.init===r}var oc=class{constructor(t,e){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Op(t).then(n=>{n&&(this._arrayBuffer=n.arr,this._url=n.url,this.font=n.font,this._intercepted=n.intercepted,this._isLoaded=!0,e())})}update(t,e){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Op(t).then(n=>{n&&(this._arrayBuffer=n.arr,this._url=n.url,this.font=n.font,this._intercepted=n.intercepted,this._isLoaded=!0,e())})}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 sv,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(NP(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],b={features:{liga:!0}},w=[];try{w=n.stringToGlyphs(x,b)}catch(_){console.warn(_)}l=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign);let S=[];try{S=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,O=S[_],A=0,I=0;_===0&&e.horizontalAlign===2&&T.leftSideBearing!==void 0&&(I=-T.leftSideBearing*o),m&&(A=n.getKerningValue(T,m)*o),l+=I+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+I),f.push(N.path))}if(O.replacements.length===1)h[v].push([l,u]),d[v].push(C);else{let N=O.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 nc,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 s.subPaths.forEach(u=>{let c=PP(u.curves);c!==void 0&&u.currentPoint.distanceTo(c)>0&&u.lineTo(c.x,c.y)}),{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}};function PP(r){if(r.length){let t=r[0];if(t instanceof IP)return t.v1;if(t instanceof OP||t instanceof LP)return t.v0}}var $a=class{constructor(t,e={}){this.deletedMaterial=new uo(Bt.defaultTwoLayerData("basic"),this);this.deletedImage=new ro(Qs.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 uo(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 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 ro(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 hi(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 Pn(e.r,e.g,e.b,e.a):this.colors[t]=new Pn(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 et(0,0,0,0))}else return"a"in t?new et(t.r,t.g,t.b,t.a):new et(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 Li)return e;{let n=new Li({src:e});return this.audios[t]=n,n}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}addFont(t,e){this.fonts[t]=new oc(e,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 Li&&e.dispose()}),this.audios={}}},wZ=new $a(Ks.emptyData());import{DRACOLoader as MP}from"three/examples/jsm/loaders/DRACOLoader.js";var Vn;function EP(){return Vn||(Vn=new MP,Vn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Vn.decoderPending}async function DP(r){if(Vn){let t={attributeIDs:Vn.defaultAttributeIDs,attributeTypes:Vn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Vn.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 cv(r,t){let[e,n]=pc(hs.deserialize(new Uint8Array(r)));Wh(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 EP();for(let i of o){let a=await DP(Ct(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}import{Mesh as DZ}from"three";import{mergeBufferGeometries as RZ}from"three/examples/jsm/utils/BufferGeometryUtils.js";function uv(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}import{Color as pv,ShaderLib as BP}from"three";function fv(r){let t=new Set;return r.traverse(e=>{if(Lr(e))if(je(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(FP(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new pv,specularColor:new pv});let o=0;e.onBeforeCompile=(i,a)=>{n&&n(i,a),i.uniforms=Object.assign({},BP.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 RP(e)||(e.onBeforeCompile=(o,i)=>{n&&n(o,i),e.transparent=!1})}),r}function FP(r){return r.getLayersOfType("transmission").length>0}function RP(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 dv(r){return r.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),r}function hv(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}import{mergeBufferGeometries as kP}from"three/examples/jsm/utils/BufferGeometryUtils.js";function mv(r){let t=[];return r.traverse(e=>{e instanceof Zn&&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&&uv(l),l}),a=kP(e.parameters.hideBase?i:[n.geometry,...i]);n.geometry=a,n.remove(e),n.cloner=void 0}),r}function gv(r){return r.traverse(t=>{t.matrixAutoUpdate=!0}),r}function yv(r){Object.values(r.shared.materials).forEach(t=>{Bp(t)}),r.scene.objects.traverse((t,e)=>{"material"in e?Bp(e.material):"materials"in e&&e.materials.forEach(n=>{Bp(n)})})}function Bp(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 vv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Fp=class extends UP{load(t,e,n,o=console.error){let i=new GP(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(vv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(vv),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 cv(t,yv),n=new $a(e.shared);Object.values(n.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new qa(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&&fg(a)&&Object.assign(a,{makeDefault:!0})}return o=mv(o),o=fv(o),o=dv(o),o=hv(o),o=gv(o),o}};export{Fp as default};
1334
+ }`,[it.simplex,e,o,s])}}();import{Matrix3 as G1}from"three";function Nm(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Sa=class extends Sn{constructor(e,r){super(new G1);this.repeat=e;this.offset=r;Nm(this.value,e,r)}updateMatrix(){Nm(this.value,this.repeat,this.offset)}};var fr=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)yc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return mr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new Ei(i,r.texture.wrapping),l=new ba(i),c=new Sa(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new ye(r.projection??0),u=new ye(["x","y","z"].indexOf(r.axis)??0),d=new ye(r.side??0),f=new Ke(r.size?new yo(r.size[0],r.size[1]):new yo(100,100)),m=new Y(r.alpha??1),h=new ye(r.mode??0),g=new Ti(s,l,p,a,u,d,f,c,m,h),x=new Se(g.calpha,"f");return new He(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,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 Ei(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new ye(r.mode??0),p=new Mi(s,l,c),a=new Se(p.calpha,"f");return new He(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new et(new dr(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new ye(r.noiseType??0),a=new wi(l,c,i,s,p);return new Di(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:p},a)}else throw new Error;else return V1(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:Am(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?gc(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}},He=class extends fr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},Di=class extends fr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},mr=class extends fr{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,l=new Y(o.alpha),c=new ye(o.mode),p;if(o.category==="lambert"){s=new Ii;let a=new _e(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="phong"){s=new xa;let a=new Y(o.shininess??30),u=new _e(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="toon"){s=new Oi;let a=new Y(o.shininess??30),u=new _e(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new Pi;let a=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:a,metalness:u,reflectivity:d},s.roughness=a,s.metalness=u,s.reflectivity=d}else s=new ho,p={};return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new mr(e,r,o,s,p)}};function Im(n){let t=n instanceof fr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function R1(n,t,e,r){switch(n.type){case"color":{let o=new _e(r.color??5855577),i=new Y(r.alpha??1),s=new Se("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ye(r.mode??0);return o.alpha=i,new He(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new _e(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),l=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),a=new ye(r.mode??0),u=new gi(o,i,s,l,c,p,a),d=new Se(u.calpha,"f");return new He(t,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:p,mode:a},u,a,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new et(r.wavelengths??new dr(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new et(r.offset??new dr(0,0,0)),a=new Y(r.alpha??1),u=new yi(o,i,s,l,c,p,a),d=new Se(u.calpha,"f"),f=new ye(r.mode??0);return new He(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,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),l=tt.transmissionSize,c=tt.transmissionRenderTarget,p=tt.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new Ke(u/a,1):new Ke(1,a/u),f=new Y(r.alpha??1),m=new vi(o,i,s,l,c,p,d,f),h=new Se(m.calpha,"f"),g=new ye(r.mode??0);return new He(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,g,h)}case"toon":{let o=new ye(r.positioning??0),i;r.colors?i=new kt(r.colors.length,r.colors):(i=new kt(10,new An(0,0,0,1)),i.value[1]=new An(1,1,1,1));let s;r.steps?s=new jt(r.steps.length,r.steps):(s=new jt(10,1),s.value[0]=0);let l=new et(r.source??new dr(0,0,0)),c=new Kr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new Et(r.shadowColor),d=new et(r.offset??new dr(0,0,0)),f=new Y(r.alpha??1),m=new Bi(o,i,s,l,c,p,a,u,d,f),h=new Se(m.calpha,"f"),g=new ye(r.mode??0);return new He(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new _e(r.outlineColor??16777215),i=new _e(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),l=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),a=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new et(r.contourDirections??new dr(0,1,0)),f=new Kr(r.positionalLines??!1),m=new Kr(r.compensation??!0),h=tt.normalRenderTarget,g=tt.normalRenderTargetDepth,x=tt.pixelRatioNode,v=tt.resolution,w=new Y(r.alpha??1),S=new xi(o,i,s,l,c,p,a,u,d,f,m,v,h,g,x,w),b=new Se(S.calpha,"f"),N=new ye(r.mode??0);return new He(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:w,mode:N},S,N,b)}case"depth":{let o=new ye(r.gradientType??0),i=new Kr(r.smooth??!1),s=new Y(r.near??50),l=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),a=new et(r.origin??new dr),u=new et(r.direction??new dr),d;r.colors?d=new kt(r.colors.length,r.colors):(d=new kt(2,new An(0,0,0,1)),d.value[1]=new An(1,1,1,1));let f;r.steps?f=new jt(r.steps.length,r.steps):(f=new jt(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new ye(r.mode??0),g=new bi(o,i,s,l,c,p,a,u,d,f,m),x=new Se(g.calpha,"f");return new He(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:d,steps:f,alpha:m,mode:h},g,h,x)}case"noise":{let o=new Y(r.scale??1),i=new et(r.size??new dr(100,100,100)),s=new Y(r.move??1),l=new Ke(r.fA??new yo(1.7,9.2)),c=new Ke(r.fB??new yo(8.3,2.8)),p=new Ke(r.distortion??new yo(1,1)),a=new Et(r.colorA),u=new Et(r.colorB),d=new Et(r.colorC),f=new Et(r.colorD),m=new Y(r.alpha??1),h=new ye(r.mode??0),g=new ye(r.noiseType??0),x=new hi(o,i,s,l,c,p,a,u,d,f,m,g),v=new Se(x.calpha,"f");return new He(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new et(r.cnormal??new dr(1,1,1)),i=new Y(r.alpha??1),s=new ye(r.mode??0),l=new Ni(o,i),c=new Se("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new He(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new ye(r.gradientType??0),i=new Kr(r.smooth??!1),s;r.colors?s=new kt(r.colors.length,r.colors):(s=new kt(10,new An(0,0,0,1)),s.value[1]=new An(1,1,1,1));let l;r.steps?l=new jt(r.steps.length,r.steps):(l=new jt(10,1),l.value[0]=0);let c=new Ke(r.offset??new yo(0,0)),p=new Ke(r.morph??new yo(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new ye(r.mode??0),f=new _i(o,i,s,l,c,p,a,u),m=new Se(f.calpha,"f");return new He(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},f,d,m)}default:{let o=new _e(1,0,0,1),i=new Y(1),s=new Se("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ye(0);return o.alpha=i,new He(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function V1(n,t,e,r){let o=wm(e,r);return R1(e,n,t,o)}function yc(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 _t=class extends z1{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??St.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>fr.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 mr),this.lightLayer===void 0&&(this.lightLayer=new mr(0,"",Dr.defaultData("light","basic"),new ho,{})),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=fr.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),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(l=>l.uuid===i);if(s){let l=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},l,o)){let p=fr.create(this.layerIdGen++,i,l,o);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof He),r=this.layers.findIndex(o=>o instanceof mr);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 He&&(o=new Si(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Se("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof mr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof He&&(e=new Si(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 Di);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new ht(r,e[o].position,ht.ADD),r=new ht(r,new Y(.5).setReadonly(!0),ht.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,l)=>Math.min(Math.max(i,s),l);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=(mc[r.type]??[]).map(l=>r[l]),i=(hc[r.type]??[]).map(l=>r[l]?.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 ya;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>F1,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(_t.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{MathUtils as bc,BufferAttribute as U1,Vector3 as Sc,Float32BufferAttribute as Pm}from"three";function j1(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]}`,l=new Sc(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Sc})}t.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);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]}`,l=t.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Pm(o,3))}function k1(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 Sc;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 Pm(e,3))}function hr(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof _t)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"||n.objectType==="TextFrame"&&n.data?.geometry?.depth===0?k1(n):j1(n)}function gr(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=[bc.seededRandom(r),bc.seededRandom(r+1e4),bc.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new U1(e,3))}var Ze=class extends Mt(H1){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new W1;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,Math.max(e.getIndex()?.count??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,r){let o=this.geometry,i=Zl[o.userData.type],s=this.objectType==="NonParametric"?Object.assign({},o.userData,{geometry:o}):o.userData,l=i.build(i.normalizeInputs(e,s)),c=o.uuid;this.geometry.dispose(),this.geometry=l,this.geometry.uuid=c,this.geometry.computeBoundingSphere(),hr(this),o.getAttribute("randomColor")&&gr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=ui(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 uo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new uo(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&&(Ft.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ir(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)nr(e)&&(e.freeBooleanPointer(),ir(e)&&e.invalidateUpstreamBooleanData())}};var X1=new wc(0,0,1),Om=new wc,Cm=new wc,Lm=new $1,Nn=class extends Ze{constructor(e=Je.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new q1;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,r){if(super.updateGeometry(e,r),"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,r){super.updateWorldMatrix(e,r),Lm.getNormalMatrix(this.matrixWorld),Om.copy(X1).applyMatrix3(Lm).normalize(),Cm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Om,Cm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=Je.create(Object.assign({},i,{shape:r})),l=new Nn(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Ze.prototype.raycast.call(this,e,r)}};var yr=(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=Xe(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 In=new Ht,_c=new Ht,Pr=class extends yr(Mt(Y1),$s){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=io.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new K1(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new Q1(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 Pr().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(In),this.targetOffset=In.distanceTo(e)}getTarget(e=new Ht){return this.getWorldDirection(_c),this.getWorldPosition(In),_c.multiplyScalar(this.targetOffset),e.copy(In).add(_c),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(In),In.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Z1),r=new Ht(0,0,1).applyQuaternion(e),o=new Ht().copy(Mm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Ht().copy(Mm.DefaultUp).projectOnPlane(r),s=new Ht().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ht),i=e.getWorldDirection(new Ht).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ht),i=this.getWorldDirection(new Ht).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,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,l):this.orthoCamera.setViewOffset(e,r,o,i,s,l)}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 Ko(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}};import{BufferGeometry as Em,Matrix4 as J1}from"three";var Bm=new J1;var wa=class extends Ze{constructor(e=new Em,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];ir(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(dm(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=Ft.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;Ft.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else ir(s)&&s.needsTransformForDownstream===!0?(Ft.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Bm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Ft.transformMeshSet(s.booleanMeshSetAddress,Bm),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 Ft.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Em,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Ft.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,hr(this),gr(this)}updateGeometry(e,r){let o=e.parameters;o.operation!==void 0&&(this.booleanOp=o.operation),o.phongAngle!==void 0&&(this.phongAngle=o.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Group as e_}from"three";var xo=class extends yr(Mt(e_),en){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new xo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as t_,CameraHelper as _a}from"three";var Pn=class extends yr(Mt(t_),Jo){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 _a(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Pn().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 _a&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof _a&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof _a&&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&&am(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}};import{PointLight as r_,Vector3 as Ta,Box3 as o_,Box3Helper as Aa,Color as n_}from"three";var On=class extends yr(Mt(r_),tn){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 Ta(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ta(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new o_(i,s),c=new Aa(l,new n_(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new On().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 Aa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Aa&&(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 Aa){let o=this.shadow.camera,i=new Ta(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ta(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}};import{SpotLight as i_,CameraHelper as Na,MathUtils as s_,Vector3 as Vm,Quaternion as a_}from"three";var Dm=new Vm,Gm=new Vm,Rm=new a_,Cn=class extends yr(Mt(i_),Zn){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=s_.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Na(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Cn().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 Na&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Na&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Na&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Gm.setFromMatrixPosition(this.matrixWorld),Rm.setFromRotationMatrix(this.matrixWorld),Dm.copy(this.up).applyQuaternion(Rm).negate().multiplyScalar(this.distance),this.target.position.copy(Gm).add(Dm),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 Fm=n=>n.tagName==="VIDEO",Ln=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Fm(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];Im(s)&&Ln.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;Fm(l)?s=l.videoWidth/l.videoHeight:s=l.width/l.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 Ia=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e,r){super.updateGeometry(e,r),this.material.layers&&Ln.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Mn=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Pa=class extends Mn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var Um,Ri=new Promise(n=>{Um=n}),zm=!1;async function jm(){if(zm)return;let n=await import("./opentype.js");Um(n),zm=!0}var Vi=class{async load(t,e,r=()=>{}){let{load:o}=await Ri;o(t,(i,s)=>{i||!s?r(i??"Something went wrong"):e(s)})}async parse(t){let{parse:e}=await Ri;try{return e(t)}catch(r){console.error(r)}}};async function l_(n){return await(await fetch(n)).arrayBuffer()}var c_=new Vi;async function Tc(n){let t,e,r=!1;if(n.url?(t=await l_(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer),t){let o=await c_.parse(t);if(o)return{font:o,url:e,intercepted:r,arr:t}}}import{Vector3 as u_,Matrix4 as p_,Ray as d_}from"three";var km=new u_,Hm=new p_,Wm=new d_;function qm(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Oa=class extends Ze{constructor(e,r,o){super(new fn(r.geometry,o),o.material(r.material));this.data=r;this.objectType="TextFrame";this.wrappedText=[""];this.charWidths=[];this.charCoords=[];this.castShadow=r.castShadow,this.receiveShadow=r.receiveShadow,this.name=r.name,this.uuid=e,this.updateState(r,o)}async updateGeometry(e,r){let o=e.parameters,i=this.geometry.getAttribute("randomColor"),s={...this.geometry.userData.parameters,...o};this.geometry.userData={parameters:s,type:"TextGeometry"},r&&(o.font||!this.geometry.font&&r.getFont(s.font))&&await this.geometry.updateFont(o.font??s.font,r),await this.geometry.update(s),hr(this),i&&gr(this);let{wrappedText:l,charCoords:c,charWidths:p}=this.geometry;this.wrappedText=l,this.charWidths=p,this.charCoords=c,this.resetBBoxNeedsUpdate()}updateState(e,r){this.data=e,this.material=r.material(e.material),this.fromState(e,r),this.updateGeometry({parameters:e.geometry},r)}get font(){return this.geometry.font}get initialOffsetY(){return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,this.geometry.userData.parameters.height,this.fontScale,this.geometry.userData.parameters.verticalAlign)??0}get fontScale(){return this.font?this.geometry.userData.parameters.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.geometry.userData.parameters.fontSize*this.geometry.userData.parameters.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(Hm.copy(o).invert(),Wm.copy(e.ray).applyMatrix4(Hm),Wm.intersectBox(this.singleBBox,km)){let i=km.applyMatrix4(o),s=e.ray.origin.distanceTo(i);r.push({distance:s,point:i.clone(),object:this})}}};import{Box3 as f_,Matrix4 as vo,Sphere as Ym,Vector3 as m_}from"three";var Qm=Lc(Xm());var Ac;ca.then(n=>{Ac=n});var Zm=new vo,h_=new vo,g_=new vo,Wt=new f_,Jr=new m_,y_=new vo,x_=new vo;var En=class extends Ze{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new vo;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new vo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Ct.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new En(i,s,l||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}=Ct.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,hr(this),gr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ct.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ct.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ct.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ct.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ze.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,Qm.SVD)(r),l=Zm.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=h_.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=g_.copy(c).transpose();this.shearScale=y_.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=x_.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,p),s.every(a=>Math.abs(s[0]-a)<.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 Ym);let r=e.attributes.position,o=e.boundingSphere.center;Wt.setFromBufferAttribute(r),Wt.getCenter(o),e.boundingSphere.radius=o.distanceTo(Wt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Wt.getSize(Jr);let i={width:Jr.x,height:Jr.y,depth:Jr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;Wt.min.set(e[0],e[2],e[4]),Wt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Wt.min.applyMatrix4(this.shearScaleInv),Wt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Ym);let o=r.boundingSphere.center;Wt.getCenter(o),r.boundingSphere.radius=o.distanceTo(Wt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Wt.getSize(Jr);let i={width:Jr.x,height:Jr.y,depth:Jr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(Ac.free_bvh(this.subdivPointer),Ac.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e,r){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,Km(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Km(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 Km(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Zm.makeScale(t,e,r).invert().elements,l,c,p;for(var a=0,u=o.length;a<u;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],p=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*p,i[a+1]=s[1]*l+s[5]*c+s[9]*p,i[a+2]=s[2]*l+s[6]*c+s[10]*p}import{BackSide as v_,BufferGeometry as b_,DoubleSide as S_,FrontSide as w_}from"three";function Jm(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=w_:t.side===1?n.side=v_:n.side=S_)}function __(n,t){if(Array.isArray(n.material))for(let e of n.material)Jm(e,t);else{let e=n.material;Jm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function eh(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=En.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new b_:ua(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);ps.is2DParametricMesh(o.userData.type)?r=new Ia(o,i):o?.userData.type==="VectorGeometry"?r=new Nn(o,i):t.geometry.type==="NonParametricGeometry"?r=new Pa(o,i):t.geometry.type==="BooleanGeometry"?(r=new wa(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Mn(o,i),r.uuid=n,r.fromState(t,e)}return __(r,t),r}function th(n,t,e){return t.type==="Mesh"?t.geometry.type==="TextGeometry"?new Oa(n,t,e):eh(n,t,e):t.type==="Empty"?xo.createFromState(n,t):t.type==="PointLight"?On.createFromState(n,t,e):t.type==="SpotLight"?Cn.createFromState(n,t,e):t.type==="DirectionalLight"?Pn.createFromState(n,t,e):Oo.is(t.type)?Pr.createFromState(n,t):(console.error(t),new xo)}var bo=class extends _t{};import{Mesh as nh,Ray as A_,Matrix4 as N_,Raycaster as I_}from"three";function rh(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,gr(n),hr(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function oh(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 ih(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof nh)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)rh(e,e.material[r])&&(t=!0);else rh(e,e.material)&&(t=!0)}),t}function sh(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof nh)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)oh(e,e.material[r])&&(t=!0);else oh(e,e.material)&&(t=!0)}),t}function ah(n){"material"in n&&P_(n.material),"geometry"in n&&n.geometry.dispose()}function P_(n){Ld(n).forEach(t=>{t instanceof bo||t.dispose()})}var O_=new I_,C_=new N_,L_=new A_;function lh(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=C_.copy(o.matrixWorld).invert(),s=L_.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=O_;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 ch=new B_,Nc=class extends ma(E_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new D_(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 ke(1,1,1,1);this.entityByUuid={};this.ambientLight=new M_(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=sh(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=ih(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(Xe(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 Pr&&this.switchActiveCamera(o)}this.traverse(o=>{ir(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{ah(e)});for(let e of this.children)ar(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Pr.createFromState(Nc.PERSONAL_CAMERA_ID,{...Fs.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)ar(s)&&!s.raycastLock&&s.visible&&((nr(s)||fa(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),lh(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)ar(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)ar(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=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){sm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(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 l=th(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),ir(i)&&nr(l)&&(l.prevBooleanObjectParent=i),this.createChildrenObjects(o,l,s)),l}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],p=this.find(l),a=c?p.recursiveBBox:p.singleBBox;r.push(...a.vertices)}let o=new G_;return o.setFromPoints(r),o.getCenter(ch),ch}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 Ze)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof _t&&e(r.material[o]);else r.material instanceof _t&&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})})}},Fi=Nc;Fi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var fh=Lc(uh());var ph=new Map;function dh(n){if(typeof n=="string")return n;let t=ph.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},ph.set(n,t)),t.url}var Bn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:dh(t),format:"wav"},this.sound=new fh.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 status(){return this._status}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}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}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._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as R_,Vector2 as So,Path as mh,Shape as V_,ShapeUtils as F_,Color as z_}from"three";var Ma=class{constructor(){this.type="ShapePath";this.color=new z_;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new mh,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,s){return this.currentPath?.bezierCurveTo(t,e,r,o,i,s),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},r={loc:e.ORIGIN,t:0};function o(h,g,x,v){let w=h.x,S=g.x,b=x.x,N=v.x,T=h.y,y=g.y,P=x.y,A=v.y,O=(N-b)*(T-P)-(A-P)*(w-b),_=(S-w)*(T-P)-(y-T)*(w-b),L=(A-P)*(S-w)-(N-b)*(y-T),D=O/L,U=_/L;if(L===0&&O!==0||D<=0||D>=1||U<0||U>1)return null;if(O===0&&L===0){for(let re=0;re<2;re++)if(i(re===0?x:v,h,g),r.loc===e.ORIGIN){let Q=re===0?x:v;return{x:Q.x,y:Q.y,t:r.t}}else if(r.loc===e.BETWEEN){let Q=+(w+r.t*(S-w)).toPrecision(10),le=+(T+r.t*(y-T)).toPrecision(10);return{x:Q,y:le,t:r.t}}return null}else{for(let le=0;le<2;le++)if(i(le===0?x:v,h,g),r.loc===e.ORIGIN){let H=le===0?x:v;return{x:H.x,y:H.y,t:r.t}}let re=+(w+D*(S-w)).toPrecision(10),Q=+(T+D*(y-T)).toPrecision(10);return{x:re,y:Q,t:D}}}function i(h,g,x){let v=x.x-g.x,w=x.y-g.y,S=h.x-g.x,b=h.y-g.y,N=v*b-S*w;if(h.x===g.x&&h.y===g.y){r.loc=e.ORIGIN,r.t=0;return}if(h.x===x.x&&h.y===x.y){r.loc=e.DESTINATION,r.t=1;return}if(N<-Number.EPSILON){r.loc=e.LEFT;return}if(N>Number.EPSILON){r.loc=e.RIGHT;return}if(v*S<0||w*b<0){r.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(S*S+b*b)){r.loc=e.BEYOND;return}let T;v!==0?T=S/v:T=b/w,r.loc=e.BETWEEN,r.t=T}function s(h,g){let x=[],v=[];for(let w=1;w<h.length;w++){let S=h[w-1],b=h[w];for(let N=1;N<g.length;N++){let T=g[N-1],y=g[N],P=o(S,b,T,y);P!==null&&x.find(A=>A.t<=P.t+Number.EPSILON&&A.t>=P.t-Number.EPSILON)===void 0&&(x.push(P),v.push(new So(P.x,P.y)))}}return v}function l(h,g,x){let v=new So;g.getCenter(v);let w=[];return x.forEach(S=>{S.boundingBox.containsPoint(v)&&s(h,S.points).forEach(N=>{w.push({identifier:S.identifier,isCW:S.isCW,point:N})})}),w.sort((S,b)=>S.point.x-b.point.x),w}function c(h,g,x,v,w){(w==null||w==="")&&(w="nonzero");let S=new So;h.boundingBox.getCenter(S);let b=[new So(x,S.y),new So(v,S.y)],N=l(b,h.boundingBox,g);N.sort((_,L)=>_.point.x-L.point.x);let T=[],y=[];N.forEach(_=>{_.identifier===h.identifier?T.push(_):y.push(_)});let P=T[0].point.x,A=[],O=0;for(;O<y.length&&y[O].point.x<P;)A.length>0&&A[A.length-1]===y[O].identifier?A.pop():A.push(y[O].identifier),O++;if(A.push(h.identifier),w==="evenodd"){let _=A.length%2===0,L=A[A.length-2];return{identifier:h.identifier,isHole:_,for:L}}else if(w==="nonzero"){let _=!0,L=null,D=null;for(let U=0;U<A.length;U++){let re=A[U];g[re]&&(_?(D=g[re].isCW,_=!1,L=re):D!==g[re].isCW&&(D=g[re].isCW,_=!0))}return{identifier:h.identifier,isHole:_,for:L}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let p=0,a=999999999,u=-999999999,d=[];this.subPaths.forEach(h=>{let g=h.getPoints(),x=-999999999,v=999999999,w=-999999999,S=999999999;for(let b=0;b<g.length;b++){let N=g[b];N.y>x&&(x=N.y),N.y<v&&(v=N.y),N.x>w&&(w=N.x),N.x<S&&(S=N.x)}u<=w&&(u=w+1),a>=S&&(a=S-1),g.length&&d.push({curves:h.curves,points:g,isCW:F_.isClockWise(g),identifier:p++,boundingBox:new R_(new So(S,v),new So(w,x))})});let f=d.map(h=>c(h,d,a,u,this.userData?.style.fillRule)),m=[];return d.forEach(h=>{let g=f[h.identifier];if(g&&!g.isHole){let x=new V_;x.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let S=d[w.identifier],b=new mh;b.curves=S.curves,x.holes.push(b)}}),m.push(x)}}),m}};import{CubicBezierCurve as H_,LineCurve as W_,QuadraticBezierCurve as q_}from"three";import{DRACOLoader as U_}from"three/examples/jsm/loaders/DRACOLoader.js";var eo;function j_(){return eo||(eo=new U_,eo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),eo.decoderPending}async function k_(n){if(eo){let t={attributeIDs:eo.defaultAttributeIDs,attributeTypes:eo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await eo.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 hh(n,t){let[e,r]=Fa(is.deserialize(new Uint8Array(n)));Rd(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 j_();for(let i of o){let s=await k_(ut(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:p,itemSize:a})=>{l[c]={array:p,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}function $_(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var Ea=class{constructor(t,e){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Tc(t).then(r=>{r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,e())})}update(t,e){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Tc(t).then(r=>{r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,e())})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}async reverseLigaturesTable(t,e,r){let{Bidi:o}=await Ri,i=new o,s=u=>t.charToGlyphIndex(u.char);i.registerModifier("glyphIndex",null,s),i.applyFeatures(t,t.defaultRenderOptions.features),i.getTextGlyphs(e);let l=i.tokenizer.tokens,c=[],p=0,a=r.length===l.length;for(let u=0;u<r.length;u++){let d=r[u].index,f=String.fromCharCode(r[u].unicode),m=l[p];if($_(d,m)||a)c.push({char:f,index:d,replacements:[m.state.glyphIndex],replacementChars:[m.char]}),p++;else{let h=m.char,g="",x=[m.state.glyphIndex],v=[],w=!1;for(;!w;)p++,g=e.charAt(p),h+=g,x.push(t.charToGlyphIndex(g)),v=t.stringToGlyphs(h),v.length===1&&v[0].index===d&&(w=!0),p>e.length&&(w=!0);c.push({char:f,index:d,replacements:x,replacementChars:Array.from(h)}),p++}}return c}async generateShapes(t,e){await this._loadingPromise;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=t.map(x=>this.getTextWidth(x,e)),l=e.width,c=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign),p=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),a=this.computeSpaceWidthForLine(t,0,e),u=this.getCharWidth(`
1335
+ `,e),d=[],f=t.map(x=>[]),m=t.map(x=>[]),h;for(let x=0;x<t.length;x++){let v=t[x],w={features:{liga:!0}},S=[];try{S=r.stringToGlyphs(v,w)}catch(N){console.warn(N)}c=this.getLineInitialOffsetX(s[x],l,e.horizontalAlign);let b=[];try{b=await this.reverseLigaturesTable(r,v,S)}catch(N){console.warn(N)}a=this.computeSpaceWidthForLine(t,x,e);for(let N=0;N<S.length;N++){let T=S[N],y=T.index===0?`
1336
+ `:T.unicode?String.fromCharCode(T.unicode):void 0,P=b[N],A=0,O=0;N===0&&e.horizontalAlign===2&&T.leftSideBearing!==void 0&&(O=-T.leftSideBearing*o),h&&(A=r.getKerningValue(T,h)*o),c+=O+A;let _=0;if(y===`
1337
+ `)_=u;else if(y===" ")_=a;else{let L=this.createPath(T,o,c,p,e);L&&(_=L.offsetX-(A+O),d.push(L.path))}if(P.replacements.length===1)m[x].push([c,p]),f[x].push(_);else{let L=P.replacements.map(Q=>(r.glyphs.get(Q).advanceWidth??0)*o),D=L.reduce((Q,le)=>Q+=le,0),U=L.map(Q=>Q/D),re=c;for(let Q=0;Q<U.length;Q++){let le=_*U[Q];m[x].push([re,p]),f[x].push(le),re+=le}}c+=_,h=T}p-=i}let g=[];for(let x=0,v=d.length;x<v;x++)g.push(...d[x].toShapes());return{shapes:g,charWidths:f,lineWidths:s,charCoords:m}}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,r){return r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let s=e*t,l=Math.abs(this.ascender-this.descender)*o,c=t-l,p=-this.ascender*o-c/2;return i===3?-(r-s-p):i===2?-(r*.5-s*.5-p):p}createPath(t,e,r,o,i){let s=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let l=new Ma,c=(t.advanceWidth??1)*e;if(t)for(let p of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&p.type!=="Z"&&a.x===p.x&&-a.y===p.y))switch(p.type){case"M":l.moveTo(p.x,-p.y);break;case"L":l.lineTo(p.x,-p.y);break;case"Q":l.quadraticCurveTo(p.x1,-p.y1,p.x,-p.y);break;case"C":l.bezierCurveTo(p.x1,-p.y1,p.x2,-p.y2,p.x,-p.y);break}}return l.subPaths.forEach(p=>{let a=X_(p.curves);a!==void 0&&p.currentPoint.distanceTo(a)>0&&p.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}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,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let s=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=r.width,c=this.getTextWidth(i,r);return(l-(c-s*o))/s}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function X_(n){if(n.length){let t=n[0];if(t instanceof W_)return t.v1;if(t instanceof H_||t instanceof q_)return t.v0}}var zi=class{constructor(t,e={}){this.deletedMaterial=new bo(St.defaultTwoLayerData("basic"),this);this.deletedImage=new go(ks.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[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}setOnFontLoad(t){this._onFontLoad=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 bo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r);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 _t(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new go(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 Tn(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 Qr(e.r,e.g,e.b,e.a):this.colors[t]=new Qr(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 ke(0,0,0,0))}else return"a"in t?new ke(t.r,t.g,t.b,t.a):new ke(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 Bn)return e;{let r=new Bn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}addFont(t,e){this.fonts[t]=new Ea(e,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 Bn&&e.dispose()}),this.audios={}}},lq=new zi(Us.emptyData());import{Mesh as dq}from"three";import{mergeBufferGeometries as hq}from"three/examples/jsm/utils/BufferGeometryUtils.js";function gh(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}import{Color as yh,ShaderLib as Y_}from"three";function xh(n){let t=new Set;return n.traverse(e=>{if(nr(e))if(De(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(K_(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new yh,specularColor:new yh});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign({},Y_.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else Q_(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function K_(n){return n.getLayersOfType("transmission").length>0}function Q_(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 vh(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function bh(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(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as Z_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Sh(n){let t=[];return n.traverse(e=>{e instanceof uo&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&gh(c),c}),s=Z_(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function wh(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function _h(n){Object.values(n.shared.materials).forEach(t=>{Ic(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Ic(e.material):"materials"in e&&e.materials.forEach(r=>{Ic(r)})})}function Ic(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 Th="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Pc=class extends eT{load(t,e,r,o=console.error){let i=new J_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Th+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Th),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},r,o)}async parse(t){let e=await hh(t,_h);qm(e)&&await jm();let r=new zi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Fi(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&&im(s)&&Object.assign(s,{makeDefault:!0})}return o=Sh(o),o=xh(o),o=vh(o),o=bh(o),o=wh(o),o}};export{Pc as default};