a3js 0.0.39 → 0.0.40

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.
package/dist/a3js.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Br=Object.create;var xn=Object.defineProperty;var Tr=Object.getOwnPropertyDescriptor;var wr=Object.getOwnPropertyNames;var Rr=Object.getPrototypeOf,vr=Object.prototype.hasOwnProperty;var Qr=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of wr(e))!vr.call(i,r)&&r!==t&&xn(i,r,{get:()=>e[r],enumerable:!(n=Tr(e,r))||n.enumerable});return i};var kr=(i,e,t)=>(t=i!=null?Br(Rr(i)):{},Qr(e||!i||!i.__esModule?xn(t,"default",{value:i,enumerable:!0}):t,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("three"),Xn=require("fflate");function Sr(i){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const t in i)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>i[t]})}}return e.default=i,Object.freeze(e)}const oe=Sr(E);class Ae{x=0;y=0;z=0;constructor(e,t,n){typeof e=="number"?(this.x=e,this.y=t,this.z=n):typeof e>"u"?this.x=this.y=this.z=0:(this.x=e.x,this.y=e.y,this.z=e.z)}clone(){return new Ae(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t):console.warn("Vec3.normalize."),this}negate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}set(e,t,n){return typeof e=="number"?(this.x=e,this.y=t,this.z=n):(this.x=e.x,this.y=e.y,this.z=e.z),this}add(e,t,n){return typeof e=="number"?(this.x+=e,this.y+=t,this.z+=n):(this.x+=e.x,this.y+=e.y,this.z+=e.z),this}sub(e,t,n){return typeof e=="number"?(this.x-=e,this.y-=t,this.z-=n):(this.x-=e.x,this.y-=e.y,this.z-=e.z),this}scale(e){return this.x*=e,this.y*=e,this.z*=e,this}cross(e,t){return this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this}apply(e,t,n,r){let o,s,c,A;typeof e=="number"?(o=e,s=t,c=n,A=r):(o=e.x,s=e.y,c=e.z,A=e.w);const a=2*(s*this.z-c*this.y),d=2*(c*this.x-o*this.z),u=2*(o*this.y-s*this.x);return this.x+=A*a+s*u-c*d,this.y+=A*d+c*a-o*u,this.z+=A*u+o*d-s*a,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z}}class Pe{x=0;y=0;z=0;w=1;constructor(e,t,n,r){typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):typeof e>"u"?(this.x=this.y=this.z=0,this.w=1):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w)}clone(){return new Pe(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t,this.w/=t):console.warn("Quat.normalize."),this}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}set(e,t,n,r){return typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w),this}mul(e,t,n,r){const o=this.x,s=this.y,c=this.z,A=this.w;let a,d,u,m;return typeof e=="number"?(a=e,d=t,u=n,m=r):(a=e.x,d=e.y,u=e.z,m=e.w),this.x=A*a+o*m+s*u-c*d,this.y=A*d-o*u+s*m+c*a,this.z=A*u+o*d-s*a+c*m,this.w=A*m-o*a-s*d-c*u,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z,this.w=(1-n)*e.w+n*t.w}slerp(e,t,n){if(n<0||n>1){console.warn("Quat.slerp(): t must be in [0,1]");return}let r=e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w;if(Ye.set(t),r<0&&(r*=-1,Ye.set(-Ye.x,-Ye.y,-Ye.z,-Ye.w)),r>.9995){this.x=(1-n)*e.x+n*Ye.x,this.y=(1-n)*e.y+n*Ye.y,this.z=(1-n)*e.z+n*Ye.z,this.w=(1-n)*e.w+n*Ye.w;const o=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);o<1e-4?(console.warn("Quat.slerp(); ???!"),this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w):(this.x*=1/o,this.y*=1/o,this.z*=1/o,this.w*=1/o)}else{const o=Math.acos(r),s=Math.sin((1-n)*o)/Math.sin(o),c=Math.sin(n*o)/Math.sin(o);this.x=s*e.x+c*Ye.x,this.y=s*e.y+c*Ye.y,this.z=s*e.z+c*Ye.z,this.w=s*e.w+c*Ye.w}}}const Ye=new Pe;function at(i,e,t,n){t.normalize();const r=i.clone().sub(e).normalize(),o=new Ae().cross(r,t).normalize(),s=new Ae().cross(o,r),c=o.x,A=s.x,a=-r.x,d=o.y,u=s.y,m=-r.y,p=o.z,I=s.z,g=-r.z;let l,h,f,C;const b=c+u+g;if(b>0){const R=Math.sqrt(b+1)*2;l=(I-m)/R,h=(a-p)/R,f=(d-A)/R,C=.25*R}else if(c>u&&c>g){const R=Math.sqrt(1+c-u-g)*2;l=.25*R,h=(A+d)/R,f=(a+p)/R,C=(I-m)/R}else if(u>g){const R=Math.sqrt(1+u-c-g)*2;l=(A+d)/R,h=.25*R,f=(m+I)/R,C=(a-p)/R}else{const R=Math.sqrt(1+g-c-u)*2;l=(a+p)/R,h=(m+I)/R,f=.25*R,C=(d-A)/R}const y=n??new Pe;return y.set(l,h,f,C),y}function ut(i,e="ZXY",t){const n=t!==void 0?t.set(0,0,0,1):new Pe(0,0,0,1);for(let r=0;r<3;r++)switch(e.charAt(r)){case"X":n.mul(Math.sin(i.x),0,0,Math.cos(i.x));break;case"Y":n.mul(0,Math.sin(i.y),0,Math.cos(i.y));break;case"Z":n.mul(0,0,Math.sin(i.z),Math.cos(i.z));break}return n}function xr(i){const e=[[],[],[]],t=i.x+i.x,n=i.y+i.y,r=i.z+i.z,o=i.x*t,s=i.x*n,c=i.x*r,A=i.y*n,a=i.y*r,d=i.z*r,u=i.w*t,m=i.w*n,p=i.w*r;return e[0][0]=1-(A+d),e[0][1]=s-p,e[0][2]=c+m,e[1][0]=s+p,e[1][1]=1-(o+d),e[1][2]=a-u,e[2][0]=c-m,e[2][1]=a+u,e[2][2]=1-(o+A),e}const pt=i=>Math.max(-1,Math.min(1,i));function Ln(i,e="ZXY",t){const n=xr(i),r=t??new Ae;let o=0,s=0,c=0;switch(e){case"XYZ":s=Math.asin(pt(n[0][2])),Math.abs(n[0][2])<.9999999?(o=Math.atan2(-n[1][2],n[2][2]),c=Math.atan2(-n[0][1],n[0][0])):(o=Math.atan2(n[2][1],n[1][1]),c=0);break;case"YXZ":o=Math.asin(-pt(n[1][2])),Math.abs(n[1][2])<.9999999?(s=Math.atan2(n[0][2],n[2][2]),c=Math.atan2(n[1][0],n[1][1])):(s=Math.atan2(-n[2][0],n[0][0]),c=0);break;case"ZXY":o=Math.asin(pt(n[2][1])),Math.abs(n[2][1])<.9999999?(s=Math.atan2(-n[2][0],n[2][2]),c=Math.atan2(-n[0][1],n[1][1])):(s=0,c=Math.atan2(n[1][0],n[0][0]));break;case"ZYX":s=Math.asin(-pt(n[2][0])),Math.abs(n[2][0])<.9999999?(o=Math.atan2(n[2][1],n[2][2]),c=Math.atan2(n[1][0],n[0][0])):(o=0,c=Math.atan2(-n[0][1],n[1][1]));break;case"YZX":c=Math.asin(pt(n[1][0])),Math.abs(n[1][0])<.9999999?(o=Math.atan2(-n[1][2],n[1][1]),s=Math.atan2(-n[2][0],n[0][0])):(o=0,s=Math.atan2(n[0][2],n[2][2]));break;case"XZY":c=Math.asin(-pt(n[0][1])),Math.abs(n[0][1])<.9999999?(o=Math.atan2(n[2][1],n[1][1]),s=Math.atan2(n[0][2],n[0][0])):(o=Math.atan2(-n[1][2],n[2][2]),s=0);break}return r.set(o,s,c),r}class qe{loc;quat;scale;constructor(){this.loc=new Ae,this.quat=new Pe,this.scale=new Ae(1,1,1)}set(e){return e instanceof qe?(this.loc.set(e.loc),this.quat.set(e.quat),this.scale.set(e.scale)):(e.getPosition(this.loc),e.getQuat(this.quat),e.getScale(this.scale)),this}write(e){e instanceof Me?(e.object3D.position.set(this.loc.x,this.loc.y,this.loc.z),e.object3D.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.object3D.scale.set(this.scale.x,this.scale.y,this.scale.z)):(e.position.set(this.loc.x,this.loc.y,this.loc.z),e.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.scale.set(this.scale.x,this.scale.y,this.scale.z))}blend(e,t){return this.loc.lerp(this.loc,e.loc,t),this.quat.slerp(this.quat,e.quat,t),this.scale.lerp(this.scale,e.scale,t),this}clone(){const e=new qe;return e.set(this),e}}class Rt{transform;constructor(){this.transform=new qe}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.transform.loc.set(e)}setPositionNow(e){this.transform.loc.set(e)}setQuat(e){this.transform.quat.set(e)}setQuatNow(e){this.transform.quat.set(e)}setScale(e){this.transform.scale.set(e)}setScaleNow(e){this.transform.scale.set(e)}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class Zn{transform;constructor(){this.transform=new qe}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){}setQuat(e){}setQuatNow(e){}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class En{startTransform;transform;endTransform;currentTime;duration;constructor(){this.startTransform=new qe,this.transform=new qe,this.endTransform=new qe,this.currentTime=0,this.duration=1}init(e,t){this.startTransform.set(e),this.transform.set(e),this.endTransform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.startTransform.set(this.transform),this.endTransform.loc.set(e),this.currentTime=0}setPositionNow(e){this.setPosition(e),this.currentTime=1}setQuat(e){this.startTransform.set(this.transform),this.endTransform.quat.set(e),this.currentTime=0}setQuatNow(e){this.setQuat(e),this.currentTime=1}setScale(e){this.startTransform.set(this.transform),this.endTransform.scale.set(e),this.currentTime=0}setScaleNow(e){this.setScale(e),this.currentTime=1}setLinearVelocity(e){}getLinearVelocity(e){e||(e=new Ae);const t=this.endTransform.loc.x-this.startTransform.loc.x,n=this.endTransform.loc.y-this.startTransform.loc.y,r=this.endTransform.loc.z-this.startTransform.loc.z;e.set(t,n,r);const o=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*o*o+6*o)/this.duration),e}setAngularVelocity(e){}getAngularVelocity(e){e||(e=new Ae),Ln(this.startTransform.quat,"ZXY",_t),Ln(this.endTransform.quat,"ZXY",Dt),e.set(Dt.x-_t.x,Dt.y-_t.y,Dt.z-_t.z);const t=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*t*t+6*t)/this.duration),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}smoothstep(e){return e*e*(3-2*e)}update(e){this.currentTime+=e,this.currentTime>this.duration&&(this.currentTime=this.duration);const t=this.currentTime/this.duration,n=this.smoothstep(t);this.transform.set(this.startTransform),this.transform.blend(this.endTransform,n)}}const rt=new Ae,Ct=new Ae,dt=new Pe,Lt=new qe,_t=new Ae,Dt=new Ae;class $n extends Rt{up;target;constructor(e){super(),this.up=new Ae(0,1,0),this.target=e}setTarget(e){this.target=e}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Me.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){rt.set(this.transform.loc),this.target.getPosition(Ct),at(rt,Ct,this.up,dt),this.transform.quat.set(dt)}}class ei extends En{up;target;constructor(e){super(),this.up=new Ae(0,1,0),this.target=e}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Me.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){super.update(e),rt.set(this.transform.loc),this.target.getPosition(Ct),at(rt,Ct,this.up,dt),this.transform.quat.set(dt)}}const ti={lookFrom:{x:0,y:5,z:-10},smoothness:.9};class ni extends Zn{options;target;lookFrom;up;constructor(e,t={}){super(),this.options={...ti,...t},this.target=e,this.lookFrom=new Ae(this.options.lookFrom),e.upVector?this.up=e.upVector:this.up=Me.defaultUpVector}init(e,t){super.init(e,t)}update(e){super.update(e),rt.set(this.transform.loc),this.target.getPosition(Ct),at(rt,Ct,this.up,dt),dt.mul(0,1,0,0),Lt.quat.set(dt),rt.set(this.lookFrom),rt.apply(this.target.getQuat()),rt.add(this.target.getPosition()),Lt.loc.set(rt),this.transform.loc.lerp(this.transform.loc,Lt.loc,1-this.options.smoothness),this.transform.quat.slerp(this.transform.quat,Lt.quat,1-this.options.smoothness)}}const ii={rigidBody:"dynamic",collider:"solid",meshCollider:"convex_hull",mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1};function ri(i){return typeof i=="string"}function In(i){return i.isMesh===!0}function Lr(i){return i.type==="RoundedBoxGeometry"}function _r(i){return i.type==="BoxGeometry"}function Dr(i){return i.type==="SphereGeometry"}function Nr(i){return i.type==="IcosahedronGeometry"}function Fr(i){return i.type==="CylinderGeometry"}function Or(i){return i.type==="CapsuleGeometry"}function Mr(i){return i.isBone===!0}function Pr(i){return i.isPerspectiveCamera===!0}let je;const nt=new Map;class vt{static RAPIER;isInitialized=!1;constructor(){}async init(){if(!vt.RAPIER){const e=await import("@dimforge/rapier3d-compat");await e.init(),vt.RAPIER=e,je=e,this.isInitialized=!0}}createWorld(e){let t=.016666666666666666;this.isRapierWorldOptions(e)&&(t=e.timestep);const n=new je.World(e.gravity);return new bn(n,t)}isRapierWorldOptions(e){return"timestep"in e}}class bn{world;timestep;collisionEventQueue;constructor(e,t){this.world=e,this.timestep=t,this.collisionEventQueue=new je.EventQueue(!0),this.world.integrationParameters.dt=this.timestep}add(e){e.addOneselfToPhysics(this)}remove(e){e.removeOneselfFromPhysics(this)}update(e){const t=Math.ceil(e/this.timestep);for(let n=0;n<t;n++)this.world.step(this.collisionEventQueue)}getCollisions(){const e=[];return this.collisionEventQueue.drainCollisionEvents((t,n,r)=>{const o=nt.get(t),s=nt.get(n);o&&s&&e.push({objectA:o,partOfA:t,objectB:s,partOfB:n,started:r})}),e}}class _n{transform;objectA3;bodyDesc;body;colliderDescs;colliders;completeOptions;constructor(e={}){this.completeOptions={...ii,...e},this.transform=new qe,this.colliderDescs=[],this.colliders=[]}makeBodyDesc(){let e;switch(this.completeOptions.rigidBody){case"dynamic":e=je.RigidBodyDesc.dynamic();break;case"kinematic":e=je.RigidBodyDesc.kinematicPositionBased();break;case"fixed":e=je.RigidBodyDesc.fixed();break}return e.setTranslation(this.transform.loc.x,this.transform.loc.y,this.transform.loc.z),e.setRotation({x:this.transform.quat.x,y:this.transform.quat.y,z:this.transform.quat.z,w:this.transform.quat.w}),e}configColliderDescs(){if(!this.objectA3)return;const e=this.completeOptions,t=[];this.objectA3.object3D.traverse(r=>{if(In(r)){const o=jr(r.geometry),s=e.membership<<16|e.filter;if(o)o.colliderDesc.setCollisionGroups(s),e.collisionDetection&&o.colliderDesc.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(o.colliderDesc),o.colliderDesc.setRestitution(e.restitution).setFriction(e.friction),t.push(o.volume);else{let c,A;switch(e.meshCollider){case"tri_mesh":c=Gr(r),A=Dn(r.geometry);break;case"convex_hull":c=Ur(r),A=Dn(r.geometry);break}c&&(c.setCollisionGroups(s),e.collisionDetection&&c.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(c),t.push(A))}}});let n=t.reduce((r,o)=>r+o,0);for(let r=0;r<this.colliderDescs.length;r++)this.colliderDescs[r].setRestitution(e.restitution),this.colliderDescs[r].setFriction(e.friction),this.colliderDescs[r].setMass(e.mass*(t[r]/n))}init(e,t){this.transform.set(e),this.objectA3=t,this.colliderDescs=[],this.colliders=[],this.bodyDesc=this.makeBodyDesc(),this.configColliderDescs(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat)}addOneselfToPhysics(e){this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.colliderDescs.forEach(t=>{const n=e.world.createCollider(t,this.body);this.colliders.push(n),this.objectA3&&nt.set(n.handle,this.objectA3)}),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0))}removeOneselfFromPhysics(e){this.body&&e.world.removeRigidBody(this.body),this.colliders.forEach(t=>{e.world.removeCollider(t,!1),nt.delete(t.handle)})}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){this.body?this.body.setTranslation(e,!0):this.bodyDesc?.setTranslation(e.x,e.y,e.z),this.transform.loc.set(e)}setQuat(e){}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}update(e){if(this.body){const t=this.body.translation();this.transform.loc.set(t.x,t.y,t.z);const n=this.body.rotation();this.transform.quat.set(n.x,n.y,n.z,n.w)}}}function Gr(i){let e=null;if(In(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;let o=n.index?n.index.array:null;if(o)o instanceof Uint32Array||(o=new Uint32Array(o));else{const s=n.attributes.position.count;o=new Uint32Array(s);for(let c=0;c<s;c++)o[c]=c}r instanceof Float32Array&&(e=je.ColliderDesc.trimesh(r,o))}return e}function Ur(i){let e=null;if(In(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;r instanceof Float32Array&&(e=je.ColliderDesc.convexHull(r))}return e}function Dn(i){const e=i.attributes.position;if(!e)throw new Error("position attribute not found");const t=i.index,n=e.array;let r=0;const o=new oe.Vector3,s=new oe.Vector3,c=new oe.Vector3;if(t){const A=t.array;for(let a=0;a<A.length;a+=3){const d=A[a]*3,u=A[a+1]*3,m=A[a+2]*3;o.set(n[d],n[d+1],n[d+2]),s.set(n[u],n[u+1],n[u+2]),c.set(n[m],n[m+1],n[m+2]),r+=o.dot(s.clone().cross(c))}}else for(let A=0;A<n.length;A+=9)o.set(n[A],n[A+1],n[A+2]),s.set(n[A+3],n[A+4],n[A+5]),c.set(n[A+6],n[A+7],n[A+8]),r+=o.dot(s.clone().cross(c));return Math.abs(r)/6}function jr(i){if(Lr(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5,o=.1;return{colliderDesc:je.ColliderDesc.roundCuboid(t-o,n-o,r-o,o),volume:2*t*2*n*2*r}}else if(_r(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5;return{colliderDesc:je.ColliderDesc.cuboid(t,n,r),volume:2*t*2*n*2*r}}else if(Dr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(Nr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(Fr(i)){const e=i.parameters,t=typeof e?.radiusBottom=="number"?e.radiusBottom:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.cylinder(n/2,t),volume:Math.PI*t*t*n}}else if(Or(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.capsule(n/2,t),volume:4/3*Math.PI*t*t*t+Math.PI*t*t*n}}return null}const cn=new vt;async function Hr(){await cn.init()}const D={v0:new Ae,v1:new Ae,v2:new Ae,v3:new Ae,v4:new Ae,q0:new Pe,q1:new Pe,q2:new Pe,q3:new Pe,q4:new Pe,t0:new qe,t1:new qe,t2:new qe,t3:new qe,t4:new qe};function qr(i){return new Promise(e=>{setTimeout(()=>{e()},i)})}async function oi(i){const t=await(await fetch(i)).arrayBuffer(),n=await new Promise((r,o)=>{Xn.unzip(new Uint8Array(t),(s,c)=>{s?o(s):r(c)})});return{zipUrl:i,unzipped:n}}function Ot(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e])return Xn.strFromU8(i.unzipped[e]);throw new Error(`readStringFromUnzippedA3(): no file at ${e}`)}function ln(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e]){const t=Vr(e);return new Blob([new Uint8Array(i.unzipped[e])],{type:t})}else throw new Error(`readBlobFromUnzippedA3(): no file at ${e}`)}const zr={"image/png":/\.png$/i,"image/jpeg":/\.(jpg|jpeg)$/i,"image/gif":/\.gif$/i,"model/vrml":/\.wrl$/i,"application/xml":/\.xml$/i,"application/octet-stream":/\.bvh/i,"audio/x-wav":/\.wav/i,"audio/mpeg":/\.mp3/i,"audio/ogg":/\.ogg/i,"text/plain":/\.(txt|text)$/i,"model/gltf+json":/\.gltf$/i,"model/gltf-binary":/\.glb$/i};function Vr(i){for(const[e,t]of Object.entries(zr))if(t.test(i))return e;return"application/octet-stream"}function Ut(i,e){if(!e)return i;const t={...i};for(const n in e)typeof i[n]=="object"&&typeof e[n]=="object"?t[n]=Ut(i[n],e[n]):t[n]=e[n];return t}const si={offset:.01,auto:!0,height:1.5,radius:.3};class ai{transform;objectA3;completeOptions;controller;colliderDesc;collider;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;constructor(e={}){this.completeOptions={...si,...e},this.transform=new qe,this.capsuleCenter=new Ae,this.nextLocation=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Pe}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);o.remove(t.object3D),s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius),this.colliderDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.colliderDesc.setRotation({x:e.quat.x,y:e.quat.y,z:e.quat.z,w:e.quat.w})}addOneselfToPhysics(e){this.controller=e.world.createCharacterController(this.completeOptions.offset),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc)),this.collider&&this.objectA3&&nt.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&(e.world.removeCollider(this.collider,!1),nt.delete(this.collider.handle))}setPosition(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.nextLocation.set(this.tmpV1)}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),e=this.tmpV1,this.collider&&this.collider.setTranslation(e),this.transform.loc.set(e),this.nextLocation.set(e)}setQuat(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}setAngularVelocity(e){}getAngularVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}isGrounded(){return this.controller?this.controller.computedGrounded():!1}update(e){if(!this.controller||!this.collider)return;this.transform.quat.set(this.collider.rotation()),this.tmpV1.set(this.collider.translation()),this.tmpV2.set(this.nextLocation),this.tmpV2.sub(this.tmpV1),this.controller.computeColliderMovement(this.collider,this.tmpV2);const t=this.controller.computedMovement();this.tmpV1.add(t),this.collider.setTranslation(this.tmpV1),this.tmpV1.sub(this.capsuleCenter),this.transform.loc.set(this.tmpV1),this.nextLocation.set(this.tmpV1)}}const Ai={auto:!0,height:1.5,radius:.3};class ci{transform;objectA3;completeOptions;colliderDesc;collider;bodyDesc;body;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;physicsWorld;constructor(e={}){this.completeOptions={...Ai,...e},this.transform=new qe,this.capsuleCenter=new Ae,this.nextLocation=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Pe}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.bodyDesc=je.RigidBodyDesc.dynamic(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat),this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius)}addOneselfToPhysics(e){this.physicsWorld=e,this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.body.setEnabledRotations(!1,!1,!1,!0),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0)),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc,this.body)),this.collider&&this.objectA3&&nt.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.body&&e.world.removeRigidBody(this.body),this.collider&&(e.world.removeCollider(this.collider,!1),nt.delete(this.collider.handle)),this.physicsWorld=void 0}setPosition(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.nextLocation.set(this.tmpV1)}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),e=this.tmpV1,this.body?this.body.setTranslation(e,!0):this.bodyDesc?.setTranslation(e.x,e.y,e.z),this.transform.loc.set(e),this.nextLocation.set(e)}setQuat(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}isGrounded(){if(this.body&&this.physicsWorld){const e=this.body.translation(),t=new je.Ray(e,{x:0,y:-1,z:0}),n=1.1*(this.completeOptions.height+this.completeOptions.radius);return this.physicsWorld.world.castRay(t,n,!0,void 0,void 0,this.collider)!==null}else return this.transform.loc.y<=0}update(e){if(!this.body)return;const t=new Ae(this.body.translation());t.sub(this.capsuleCenter),this.transform.loc.set(t),this.transform.quat.set(this.body.rotation())}}const Kr=new oe.SphereGeometry,Wr=new oe.MeshStandardMaterial({color:16711680});let Yr=new oe.Mesh(Kr,Wr);class Me{static defaultRotationOrder="ZXY";static defaultUpVector=new Ae(0,1,0);rotationOrder;upVector;object3D;scene;balloon;transformer;parent;children=[];clickListener;constructor(e){this.transformer=this.initTransformer(e),this.object3D=new oe.Object3D;const t=this.initObject(e);t&&this.object3D.add(t),this.object3D.traverse(n=>{n.userData.a3js={objectA3:this}})}initObject(e){return Yr.clone()}initTransformer(e){return new Rt}setTransformer(e){D.t0.set(this.transformer.transform),e.init(D.t0,this),this.transformer=e}getTransformer(){return this.transformer}setTransformMode(e,t,n){if(e==="Default")this.setTransformer(new Rt);else if(e==="Smooth")this.setTransformer(new En);else if(e==="Follow"){if(!t)throw new Error("ObjectA3.setTransformMode(): Follow mode needs target.");this.setTransformer(new ni(t,n))}else if(e==="Billboard"){if(!t)throw new Error("ObjectA3.setTransformMode(): Billboard mode needs target.");this.setTransformer(new $n(t))}else if(e==="SmoothBillboard"){if(!t)throw new Error("ObjectA3.setTransformMode(): SmoothBillboard mode needs target.");this.setTransformer(new ei(t))}else e==="SimplePhysics"?this.setTransformer(new _n(n)):e==="KinematicCharacter"?this.setTransformer(new ai(n)):e==="DynamicCharacter"&&this.setTransformer(new ci(n))}initSimplePhysics(e){const t={...ii,...e};this.setTransformer(new _n(t))}update(e){this.transformer.update(e),this.transformer.transform.write(this),this.children.forEach(t=>{t.update(e)})}add(e){if(e.scene){console.warn("ObjectA3.add(obj) is ignored.");return}if(e.parent){console.warn("ObjectA3.add(obj) is ignored.");return}this.children.push(e),e.parent=this,this.object3D.add(e.object3D)}remove(e){if(e.parent!==this){console.warn("ObjectA3.remove(obj) is ignored.");return}const t=this.children.indexOf(e);this.children.splice(t,1),e.parent=void 0,this.object3D.remove(e.object3D)}setSpeechBubble(e){this.balloon?this.balloon.message=e:this.balloon=new Jr(e)}setClickListener(e){this.clickListener=e}handleCollision(e,t,n,r){}async clicked(){this.clickListener&&await this.clickListener(this)}getPosition(e){return e?(e.set(this.transformer.transform.loc),e):this.transformer.transform.loc.clone()}setPosition(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setPosition(D.v0)}setPositionNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setPositionNow(D.v0)}getQuat(e){return e?(e.set(this.transformer.transform.quat),e):this.transformer.transform.quat.clone()}setQuat(e,t,n,r){typeof e=="number"?D.q0.set(e,t,n,r):D.q0.set(e),this.transformer.setQuat(D.q0)}setQuatNow(e,t,n,r){typeof e=="number"?D.q0.set(e,t,n,r):D.q0.set(e),this.transformer.setQuatNow(D.q0)}getScale(e){return e?(e.set(this.transformer.transform.scale),e):this.transformer.transform.scale.clone()}setScale(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setScale(D.v0)}setScaleNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setScaleNow(D.v0)}setRotation(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q1),this.setQuat(D.q1)}setRotationNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q0),this.setQuatNow(D.q0)}lookAt(e,t,n){typeof e=="number"?D.v1.set(e,t,n):e instanceof Me?D.v1.set(e.transformer.transform.loc):D.v1.set(e);const r=this.upVector?this.upVector:Me.defaultUpVector;at(this.transformer.transform.loc,D.v1,r,D.q1),this.setQuat(D.q1)}lookAtNow(e,t,n){typeof e=="number"?D.v1.set(e,t,n):e instanceof Me?D.v1.set(e.transformer.transform.loc):D.v1.set(e);const r=this.upVector?this.upVector:Me.defaultUpVector;at(this.transformer.transform.loc,D.v1,r,D.q1),this.setQuatNow(D.q1)}getUnitVecX(e){return e?(e.set(1,0,0),e.apply(this.object3D.quaternion)):new Ae(1,0,0).apply(this.object3D.quaternion)}getUnitVecY(e){return e?(e.set(0,1,0),e.apply(this.object3D.quaternion)):new Ae(0,1,0).apply(this.object3D.quaternion)}getUnitVecZ(e){return e?(e.set(0,0,1),e.apply(this.object3D.quaternion)):new Ae(0,0,1).apply(this.object3D.quaternion)}translate(e,t,n){D.v1.set(this.transformer.transform.loc),typeof e=="number"?D.v1.add(e,t,n):D.v1.add(e),this.setPosition(D.v1)}addLocationNow(e,t,n){D.v1.set(this.transformer.transform.loc),typeof e=="number"?D.v1.add(e,t,n):D.v1.add(e),this.setPositionNow(D.v1)}mulQuat(e,t,n,r){D.q1.set(this.transformer.transform.quat),typeof e=="number"?D.q1.mul(e,t,n,r):D.q1.mul(e),this.setQuat(D.q1)}mulQuatNow(e,t,n,r){D.q1.set(this.transformer.transform.quat),typeof e=="number"?D.q1.mul(e,t,n,r):D.q1.mul(e),this.setQuatNow(D.q1)}mulRotation(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q1),this.getQuat(D.q0),D.q0.mul(D.q1),this.setQuat(D.q0)}mulRotationNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q1),this.getQuat(D.q0),D.q0.mul(D.q1),this.setQuatNow(D.q0)}scaleBy(e,t,n){this.getScale(D.v0),typeof e=="number"?D.v0.set(D.v0.x*e,D.v0.y*t,D.v0.z*n):D.v0.set(D.v0.x*e.x,D.v0.y*e.y,D.v0.z*e.z),this.setScale(D.v0)}mulScaleNow(e,t,n){this.getScale(D.v0),typeof e=="number"?D.v0.set(D.v0.x*e,D.v0.y*t,D.v0.z*n):D.v0.set(D.v0.x*e.x,D.v0.y*e.y,D.v0.z*e.z),this.setScaleNow(D.v0)}moveForward(e){this.getUnitVecZ(D.v0),D.v0.scale(e),this.translate(D.v0)}moveForwardNow(e){this.getUnitVecZ(D.v0),D.v0.scale(e),this.addLocationNow(D.v0)}moveBackward(e){this.getUnitVecZ(D.v0),D.v0.scale(-e),this.translate(D.v0)}moveBackwardNow(e){this.getUnitVecZ(D.v0),D.v0.scale(-e),this.addLocationNow(D.v0)}moveRight(e){this.getUnitVecX(D.v0),D.v0.scale(-e),this.translate(D.v0)}moveRightNow(e){this.getUnitVecX(D.v0),D.v0.scale(-e),this.addLocationNow(D.v0)}moveLeft(e){this.getUnitVecX(D.v0),D.v0.scale(e),this.translate(D.v0)}moveLeftNow(e){this.getUnitVecX(D.v0),D.v0.scale(e),this.addLocationNow(D.v0)}moveUp(e){this.getUnitVecY(D.v0),D.v0.scale(e),this.translate(D.v0)}moveUpNow(e){this.getUnitVecY(D.v0),D.v0.scale(e),this.addLocationNow(D.v0)}moveDown(e){this.getUnitVecY(D.v0),D.v0.scale(-e),this.translate(D.v0)}moveDownNow(e){this.getUnitVecY(D.v0),D.v0.scale(-e),this.addLocationNow(D.v0)}turnUp(e){this.mulRotation(-e,0,0)}turnUpNow(e){this.mulRotationNow(-e,0,0)}turnDown(e){this.mulRotation(e,0,0)}turnDownNow(e){this.mulRotationNow(e,0,0)}turnRight(e){this.mulRotation(0,-e,0)}turnRightNow(e){this.mulRotationNow(0,-e,0)}turnLeft(e){this.mulRotation(0,e,0)}turnLeftNow(e){this.mulRotationNow(0,e,0)}rollRight(e){this.mulRotation(0,0,e)}rollRightNow(e){this.mulRotationNow(0,0,e)}rollLeft(e){this.mulRotation(0,0,-e)}rollLeftNow(e){this.mulRotationNow(0,0,-e)}setLinearVelocity(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setLinearVelocity(D.v0)}getLinearVelocity(e){return this.transformer.getLinearVelocity(e)}setAngularVelocity(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setAngularVelocity(D.v0)}getAngularVelocity(e){return this.transformer.getAngularVelocity(e)}resetForce(){this.transformer.resetForce()}addForce(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.addForce(D.v0)}addForceAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")D.v0.set(e,t,n),D.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else D.v0.set(e),D.v1.set(t);this.transformer.addForceAtPoint(D.v0,D.v1)}resetTorque(){this.transformer.resetTorque()}addTorque(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.addTorque(D.v0)}applyImpulse(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.applyImpulse(D.v0)}applyImpulseAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")D.v0.set(e,t,n),D.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else D.v0.set(e),D.v1.set(t);this.transformer.applyImpulseAtPoint(D.v0,D.v1)}applyTorqueImpulse(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.applyTorqueImpulse(D.v0)}addOneselfToPhysics(e){this.transformer.addOneselfToPhysics(e)}removeOneselfFromPhysics(e){this.transformer.removeOneselfFromPhysics(e)}isGrounded(){return this.transformer.isGrounded()}}class Jr{message;dir;offsetTop;offsetRight;offsetLeft;offsetBottom;constructor(e){this.message=e,this.dir="RIGHT",this.offsetTop={x:0,y:2},this.offsetRight={x:1,y:1},this.offsetLeft={x:-1,y:1},this.offsetBottom={x:0,y:0}}}class Cn{shape;motion;constructor(e,t){this.shape=e,this.motion=t}enable(e,t){this.motion.playCount=0,this.motion.time=0,e.add(this.shape.root)}disable(e,t){e.remove(this.shape.root)}}class It extends Me{ready;actions;currentAction;stateAction;emoteAction;morphs;overwriteMorphs;constructor(e){super(e),this.actions={},this.morphs={},this.overwriteMorphs=!1,this.ready=this.asyncInit(e)}syncInit(e,t,n={}){this.actions=t,this.stateAction=this.actions[e],this.currentAction=this.stateAction,this.object3D.clear(),this.morphs=n,this.stateAction?.enable(this.object3D,this.scene)}setActions(e){this.actions=e}getAction(e){return this.actions[e]}addAction(e,t){this.actions[e]=t}removeAction(e){const t=this.actions[e];return delete this.actions[e],t}getActionNames(){return Object.keys(this.actions)}setState(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.stateAction=t)}setEmote(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.emoteAction=t)}setMorphsOverwrite(e){this.overwriteMorphs=e}setMorph(e,t){if(e in this.morphs){const{array:n,idx:r}=this.morphs[e];n[r]=t}}getMorphNames(){return Object.keys(this.morphs)}pose={};update(e){super.update(e);let t;if(this.emoteAction&&this.emoteAction.motion.playCount<=0?(t=this.emoteAction.motion.update(e),this.emoteAction.motion.playCount>0&&(this.emoteAction.disable(this.object3D,this.scene),this.emoteAction=void 0,this.stateAction&&(this.stateAction.enable(this.object3D,this.scene),this.currentAction=this.stateAction))):this.stateAction&&(t=this.stateAction.motion.update(e)),t&&this.currentAction&&this.currentAction.shape.bones)for(const[n,r]of Object.entries(t)){const o=this.currentAction.shape.bones[n];if(o&&(r.loc&&o.position.set(r.loc.x,r.loc.y,r.loc.z),r.quat&&o.quaternion.set(r.quat.x,r.quat.y,r.quat.z,r.quat.w),r.scale&&o.scale.set(r.scale.x,r.scale.y,r.scale.z)),!this.overwriteMorphs&&r.morphs){for(const s of r.morphs)for(const c of Object.keys(this.morphs))if(c.startsWith(s.name)){const{array:A}=this.morphs[c];for(let a=0;a<A.length;a++)A[a]=s.vals[a];break}}}this.object3D.updateMatrixWorld(!0),this.currentAction&&this.currentAction.shape.skeleton?.update()}}class Nn{name;playCount;time;finishListener;constructor(){this.name="dummy",this.playCount=0,this.time=0}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){}setTime(e){}setFinishListener(e){this.finishListener=e}update(e){return{}}}var Re=(i,e)=>()=>(e||(e={exports:{}},i(e.exports,e)),e.exports),li=Re(i=>{Object.defineProperty(i,"__esModule",{value:!0}),i.VERSION=void 0,i.VERSION="9.0.1"}),Ne=Re((i,e)=>{var t=i&&i.__spreadArray||function(M,Y){for(var V=0,re=Y.length,fe=M.length;V<re;V++,fe++)M[fe]=Y[V];return M};Object.defineProperty(i,"__esModule",{value:!0}),i.toFastProperties=i.timer=i.peek=i.isES2015MapSupported=i.PRINT_WARNING=i.PRINT_ERROR=i.packArray=i.IDENTITY=i.NOOP=i.merge=i.groupBy=i.defaults=i.assignNoOverwrite=i.assign=i.zipObject=i.sortBy=i.indexOf=i.some=i.difference=i.every=i.isObject=i.isRegExp=i.isArray=i.partial=i.uniq=i.compact=i.reduce=i.findAll=i.find=i.cloneObj=i.cloneArr=i.contains=i.has=i.pick=i.reject=i.filter=i.dropRight=i.drop=i.isFunction=i.isUndefined=i.isString=i.forEach=i.last=i.first=i.flatten=i.map=i.mapValues=i.values=i.keys=i.isEmpty=void 0;function n(M){return M&&M.length===0}i.isEmpty=n;function r(M){return M==null?[]:Object.keys(M)}i.keys=r;function o(M){for(var Y=[],V=Object.keys(M),re=0;re<V.length;re++)Y.push(M[V[re]]);return Y}i.values=o;function s(M,Y){for(var V=[],re=r(M),fe=0;fe<re.length;fe++){var ke=re[fe];V.push(Y.call(null,M[ke],ke))}return V}i.mapValues=s;function c(M,Y){for(var V=[],re=0;re<M.length;re++)V.push(Y.call(null,M[re],re));return V}i.map=c;function A(M){for(var Y=[],V=0;V<M.length;V++){var re=M[V];Array.isArray(re)?Y=Y.concat(A(re)):Y.push(re)}return Y}i.flatten=A;function a(M){return n(M)?void 0:M[0]}i.first=a;function d(M){var Y=M&&M.length;return Y?M[Y-1]:void 0}i.last=d;function u(M,Y){if(Array.isArray(M))for(var V=0;V<M.length;V++)Y.call(null,M[V],V);else if($(M))for(var re=r(M),V=0;V<re.length;V++){var fe=re[V],ke=M[fe];Y.call(null,ke,fe)}else throw Error("non exhaustive match")}i.forEach=u;function m(M){return typeof M=="string"}i.isString=m;function p(M){return M===void 0}i.isUndefined=p;function I(M){return M instanceof Function}i.isFunction=I;function g(M,Y){return Y===void 0&&(Y=1),M.slice(Y,M.length)}i.drop=g;function l(M,Y){return Y===void 0&&(Y=1),M.slice(0,M.length-Y)}i.dropRight=l;function h(M,Y){var V=[];if(Array.isArray(M))for(var re=0;re<M.length;re++){var fe=M[re];Y.call(null,fe)&&V.push(fe)}return V}i.filter=h;function f(M,Y){return h(M,function(V){return!Y(V)})}i.reject=f;function C(M,Y){for(var V=Object.keys(M),re={},fe=0;fe<V.length;fe++){var ke=V[fe],Be=M[ke];Y(Be)&&(re[ke]=Be)}return re}i.pick=C;function b(M,Y){return $(M)?M.hasOwnProperty(Y):!1}i.has=b;function y(M,Y){return z(M,function(V){return V===Y})!==void 0}i.contains=y;function R(M){for(var Y=[],V=0;V<M.length;V++)Y.push(M[V]);return Y}i.cloneArr=R;function x(M){var Y={};for(var V in M)Object.prototype.hasOwnProperty.call(M,V)&&(Y[V]=M[V]);return Y}i.cloneObj=x;function z(M,Y){for(var V=0;V<M.length;V++){var re=M[V];if(Y.call(null,re))return re}}i.find=z;function k(M,Y){for(var V=[],re=0;re<M.length;re++){var fe=M[re];Y.call(null,fe)&&V.push(fe)}return V}i.findAll=k;function P(M,Y,V){for(var re=Array.isArray(M),fe=re?M:o(M),ke=re?[]:r(M),Be=V,ce=0;ce<fe.length;ce++)Be=Y.call(null,Be,fe[ce],re?ce:ke[ce]);return Be}i.reduce=P;function N(M){return f(M,function(Y){return Y==null})}i.compact=N;function S(M,Y){Y===void 0&&(Y=function(re){return re});var V=[];return P(M,function(re,fe){var ke=Y(fe);return y(V,ke)?re:(V.push(ke),re.concat(fe))},[])}i.uniq=S;function F(M){for(var Y=[],V=1;V<arguments.length;V++)Y[V-1]=arguments[V];var re=[null],fe=re.concat(Y);return Function.bind.apply(M,fe)}i.partial=F;function _(M){return Array.isArray(M)}i.isArray=_;function W(M){return M instanceof RegExp}i.isRegExp=W;function $(M){return M instanceof Object}i.isObject=$;function H(M,Y){for(var V=0;V<M.length;V++)if(!Y(M[V],V))return!1;return!0}i.every=H;function ee(M,Y){return f(M,function(V){return y(Y,V)})}i.difference=ee;function ne(M,Y){for(var V=0;V<M.length;V++)if(Y(M[V]))return!0;return!1}i.some=ne;function ue(M,Y){for(var V=0;V<M.length;V++)if(M[V]===Y)return V;return-1}i.indexOf=ue;function ie(M,Y){var V=R(M);return V.sort(function(re,fe){return Y(re)-Y(fe)}),V}i.sortBy=ie;function X(M,Y){if(M.length!==Y.length)throw Error("can't zipObject with different number of keys and values!");for(var V={},re=0;re<M.length;re++)V[M[re]]=Y[re];return V}i.zipObject=X;function se(M){for(var Y=[],V=1;V<arguments.length;V++)Y[V-1]=arguments[V];for(var re=0;re<Y.length;re++)for(var fe=Y[re],ke=r(fe),Be=0;Be<ke.length;Be++){var ce=ke[Be];M[ce]=fe[ce]}return M}i.assign=se;function de(M){for(var Y=[],V=1;V<arguments.length;V++)Y[V-1]=arguments[V];for(var re=0;re<Y.length;re++)for(var fe=Y[re],ke=r(fe),Be=0;Be<ke.length;Be++){var ce=ke[Be];b(M,ce)||(M[ce]=fe[ce])}return M}i.assignNoOverwrite=de;function G(){for(var M=[],Y=0;Y<arguments.length;Y++)M[Y]=arguments[Y];return de.apply(void 0,t([{}],M))}i.defaults=G;function q(M,Y){var V={};return u(M,function(re){var fe=Y(re),ke=V[fe];ke?ke.push(re):V[fe]=[re]}),V}i.groupBy=q;function j(M,Y){for(var V=x(M),re=r(Y),fe=0;fe<re.length;fe++){var ke=re[fe],Be=Y[ke];V[ke]=Be}return V}i.merge=j;function Z(){}i.NOOP=Z;function J(M){return M}i.IDENTITY=J;function le(M){for(var Y=[],V=0;V<M.length;V++){var re=M[V];Y.push(re!==void 0?re:void 0)}return Y}i.packArray=le;function ye(M){console&&console.error&&console.error("Error: "+M)}i.PRINT_ERROR=ye;function Te(M){console&&console.warn&&console.warn("Warning: "+M)}i.PRINT_WARNING=Te;function De(){return typeof Map=="function"}i.isES2015MapSupported=De;function ze(M){return M[M.length-1]}i.peek=ze;function Xe(M){var Y=new Date().getTime(),V=M(),re=new Date().getTime(),fe=re-Y;return{time:fe,value:V}}i.timer=Xe;function Fe(M){function Y(){}Y.prototype=M;var V=new Y;function re(){return typeof V.bar}return re(),re(),M}i.toFastProperties=Fe}),yn=Re((i,e)=>{(function(t,n){typeof define=="function"&&define.amd?define([],n):typeof e=="object"&&e.exports?e.exports=n():t.regexpToAst=n()})(typeof self<"u"?self:i,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(l){this.idx=l.idx,this.input=l.input,this.groupIdx=l.groupIdx},t.prototype.pattern=function(l){this.idx=0,this.input=l,this.groupIdx=0,this.consumeChar("/");var h=this.disjunction();this.consumeChar("/");for(var f={type:"Flags",loc:{begin:this.idx,end:l.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":A(f,"global");break;case"i":A(f,"ignoreCase");break;case"m":A(f,"multiLine");break;case"u":A(f,"unicode");break;case"y":A(f,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:f,value:h,loc:this.loc(0)}},t.prototype.disjunction=function(){var l=[],h=this.idx;for(l.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),l.push(this.alternative());return{type:"Disjunction",value:l,loc:this.loc(h)}},t.prototype.alternative=function(){for(var l=[],h=this.idx;this.isTerm();)l.push(this.term());return{type:"Alternative",value:l,loc:this.loc(h)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var l=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(l)};case"$":return{type:"EndAnchor",loc:this.loc(l)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(l)};case"B":return{type:"NonWordBoundary",loc:this.loc(l)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var h;switch(this.popChar()){case"=":h="Lookahead";break;case"!":h="NegativeLookahead";break}a(h);var f=this.disjunction();return this.consumeChar(")"),{type:h,value:f,loc:this.loc(l)}}d()},t.prototype.quantifier=function(l){var h,f=this.idx;switch(this.popChar()){case"*":h={atLeast:0,atMost:1/0};break;case"+":h={atLeast:1,atMost:1/0};break;case"?":h={atLeast:0,atMost:1};break;case"{":var C=this.integerIncludingZero();switch(this.popChar()){case"}":h={atLeast:C,atMost:C};break;case",":var b;this.isDigit()?(b=this.integerIncludingZero(),h={atLeast:C,atMost:b}):h={atLeast:C,atMost:1/0},this.consumeChar("}");break}if(l===!0&&h===void 0)return;a(h);break}if(!(l===!0&&h===void 0))return a(h),this.peekChar(0)==="?"?(this.consumeChar("?"),h.greedy=!1):h.greedy=!0,h.type="Quantifier",h.loc=this.loc(f),h},t.prototype.atom=function(){var l,h=this.idx;switch(this.peekChar()){case".":l=this.dotAll();break;case"\\":l=this.atomEscape();break;case"[":l=this.characterClass();break;case"(":l=this.group();break}return l===void 0&&this.isPatternCharacter()&&(l=this.patternCharacter()),a(l),l.loc=this.loc(h),this.isQuantifier()&&(l.quantifier=this.quantifier()),l},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[s(`
1
+ "use strict";var Br=Object.create;var xn=Object.defineProperty;var Tr=Object.getOwnPropertyDescriptor;var wr=Object.getOwnPropertyNames;var Rr=Object.getPrototypeOf,vr=Object.prototype.hasOwnProperty;var Qr=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of wr(e))!vr.call(i,r)&&r!==t&&xn(i,r,{get:()=>e[r],enumerable:!(n=Tr(e,r))||n.enumerable});return i};var kr=(i,e,t)=>(t=i!=null?Br(Rr(i)):{},Qr(e||!i||!i.__esModule?xn(t,"default",{value:i,enumerable:!0}):t,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("three"),Xn=require("fflate");function Sr(i){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const t in i)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>i[t]})}}return e.default=i,Object.freeze(e)}const oe=Sr(E);class Ae{x=0;y=0;z=0;constructor(e,t,n){typeof e=="number"?(this.x=e,this.y=t,this.z=n):typeof e>"u"?this.x=this.y=this.z=0:(this.x=e.x,this.y=e.y,this.z=e.z)}clone(){return new Ae(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t):console.warn("Vec3.normalize."),this}negate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}set(e,t,n){return typeof e=="number"?(this.x=e,this.y=t,this.z=n):(this.x=e.x,this.y=e.y,this.z=e.z),this}add(e,t,n){return typeof e=="number"?(this.x+=e,this.y+=t,this.z+=n):(this.x+=e.x,this.y+=e.y,this.z+=e.z),this}sub(e,t,n){return typeof e=="number"?(this.x-=e,this.y-=t,this.z-=n):(this.x-=e.x,this.y-=e.y,this.z-=e.z),this}scale(e){return this.x*=e,this.y*=e,this.z*=e,this}cross(e,t){return this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this}apply(e,t,n,r){let o,s,c,A;typeof e=="number"?(o=e,s=t,c=n,A=r):(o=e.x,s=e.y,c=e.z,A=e.w);const a=2*(s*this.z-c*this.y),d=2*(c*this.x-o*this.z),u=2*(o*this.y-s*this.x);return this.x+=A*a+s*u-c*d,this.y+=A*d+c*a-o*u,this.z+=A*u+o*d-s*a,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z}}class Pe{x=0;y=0;z=0;w=1;constructor(e,t,n,r){typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):typeof e>"u"?(this.x=this.y=this.z=0,this.w=1):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w)}clone(){return new Pe(this)}write(e){e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w}normalize(){const e=this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w,t=Math.sqrt(e);return t!==0?(this.x/=t,this.y/=t,this.z/=t,this.w/=t):console.warn("Quat.normalize."),this}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}set(e,t,n,r){return typeof e=="number"?(this.x=e,this.y=t,this.z=n,this.w=r):(this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w),this}mul(e,t,n,r){const o=this.x,s=this.y,c=this.z,A=this.w;let a,d,u,m;return typeof e=="number"?(a=e,d=t,u=n,m=r):(a=e.x,d=e.y,u=e.z,m=e.w),this.x=A*a+o*m+s*u-c*d,this.y=A*d-o*u+s*m+c*a,this.z=A*u+o*d-s*a+c*m,this.w=A*m-o*a-s*d-c*u,this}lerp(e,t,n){this.x=(1-n)*e.x+n*t.x,this.y=(1-n)*e.y+n*t.y,this.z=(1-n)*e.z+n*t.z,this.w=(1-n)*e.w+n*t.w}slerp(e,t,n){if(n<0||n>1){console.warn("Quat.slerp(): t must be in [0,1]");return}let r=e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w;if(Ye.set(t),r<0&&(r*=-1,Ye.set(-Ye.x,-Ye.y,-Ye.z,-Ye.w)),r>.9995){this.x=(1-n)*e.x+n*Ye.x,this.y=(1-n)*e.y+n*Ye.y,this.z=(1-n)*e.z+n*Ye.z,this.w=(1-n)*e.w+n*Ye.w;const o=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);o<1e-4?(console.warn("Quat.slerp(); ???!"),this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w):(this.x*=1/o,this.y*=1/o,this.z*=1/o,this.w*=1/o)}else{const o=Math.acos(r),s=Math.sin((1-n)*o)/Math.sin(o),c=Math.sin(n*o)/Math.sin(o);this.x=s*e.x+c*Ye.x,this.y=s*e.y+c*Ye.y,this.z=s*e.z+c*Ye.z,this.w=s*e.w+c*Ye.w}}}const Ye=new Pe;function at(i,e,t,n){t.normalize();const r=i.clone().sub(e).normalize(),o=new Ae().cross(r,t).normalize(),s=new Ae().cross(o,r),c=o.x,A=s.x,a=-r.x,d=o.y,u=s.y,m=-r.y,p=o.z,I=s.z,g=-r.z;let l,h,f,C;const b=c+u+g;if(b>0){const R=Math.sqrt(b+1)*2;l=(I-m)/R,h=(a-p)/R,f=(d-A)/R,C=.25*R}else if(c>u&&c>g){const R=Math.sqrt(1+c-u-g)*2;l=.25*R,h=(A+d)/R,f=(a+p)/R,C=(I-m)/R}else if(u>g){const R=Math.sqrt(1+u-c-g)*2;l=(A+d)/R,h=.25*R,f=(m+I)/R,C=(a-p)/R}else{const R=Math.sqrt(1+g-c-u)*2;l=(a+p)/R,h=(m+I)/R,f=.25*R,C=(d-A)/R}const y=n??new Pe;return y.set(l,h,f,C),y}function ut(i,e="ZXY",t){const n=t!==void 0?t.set(0,0,0,1):new Pe(0,0,0,1);for(let r=0;r<3;r++)switch(e.charAt(r)){case"X":n.mul(Math.sin(i.x),0,0,Math.cos(i.x));break;case"Y":n.mul(0,Math.sin(i.y),0,Math.cos(i.y));break;case"Z":n.mul(0,0,Math.sin(i.z),Math.cos(i.z));break}return n}function xr(i){const e=[[],[],[]],t=i.x+i.x,n=i.y+i.y,r=i.z+i.z,o=i.x*t,s=i.x*n,c=i.x*r,A=i.y*n,a=i.y*r,d=i.z*r,u=i.w*t,m=i.w*n,p=i.w*r;return e[0][0]=1-(A+d),e[0][1]=s-p,e[0][2]=c+m,e[1][0]=s+p,e[1][1]=1-(o+d),e[1][2]=a-u,e[2][0]=c-m,e[2][1]=a+u,e[2][2]=1-(o+A),e}const pt=i=>Math.max(-1,Math.min(1,i));function Ln(i,e="ZXY",t){const n=xr(i),r=t??new Ae;let o=0,s=0,c=0;switch(e){case"XYZ":s=Math.asin(pt(n[0][2])),Math.abs(n[0][2])<.9999999?(o=Math.atan2(-n[1][2],n[2][2]),c=Math.atan2(-n[0][1],n[0][0])):(o=Math.atan2(n[2][1],n[1][1]),c=0);break;case"YXZ":o=Math.asin(-pt(n[1][2])),Math.abs(n[1][2])<.9999999?(s=Math.atan2(n[0][2],n[2][2]),c=Math.atan2(n[1][0],n[1][1])):(s=Math.atan2(-n[2][0],n[0][0]),c=0);break;case"ZXY":o=Math.asin(pt(n[2][1])),Math.abs(n[2][1])<.9999999?(s=Math.atan2(-n[2][0],n[2][2]),c=Math.atan2(-n[0][1],n[1][1])):(s=0,c=Math.atan2(n[1][0],n[0][0]));break;case"ZYX":s=Math.asin(-pt(n[2][0])),Math.abs(n[2][0])<.9999999?(o=Math.atan2(n[2][1],n[2][2]),c=Math.atan2(n[1][0],n[0][0])):(o=0,c=Math.atan2(-n[0][1],n[1][1]));break;case"YZX":c=Math.asin(pt(n[1][0])),Math.abs(n[1][0])<.9999999?(o=Math.atan2(-n[1][2],n[1][1]),s=Math.atan2(-n[2][0],n[0][0])):(o=0,s=Math.atan2(n[0][2],n[2][2]));break;case"XZY":c=Math.asin(-pt(n[0][1])),Math.abs(n[0][1])<.9999999?(o=Math.atan2(n[2][1],n[1][1]),s=Math.atan2(n[0][2],n[0][0])):(o=Math.atan2(-n[1][2],n[2][2]),s=0);break}return r.set(o,s,c),r}class qe{loc;quat;scale;constructor(){this.loc=new Ae,this.quat=new Pe,this.scale=new Ae(1,1,1)}set(e){return e instanceof qe?(this.loc.set(e.loc),this.quat.set(e.quat),this.scale.set(e.scale)):(e.getPosition(this.loc),e.getQuat(this.quat),e.getScale(this.scale)),this}write(e){e instanceof Me?(e.object3D.position.set(this.loc.x,this.loc.y,this.loc.z),e.object3D.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.object3D.scale.set(this.scale.x,this.scale.y,this.scale.z)):(e.position.set(this.loc.x,this.loc.y,this.loc.z),e.quaternion.set(this.quat.x,this.quat.y,this.quat.z,this.quat.w),e.scale.set(this.scale.x,this.scale.y,this.scale.z))}blend(e,t){return this.loc.lerp(this.loc,e.loc,t),this.quat.slerp(this.quat,e.quat,t),this.scale.lerp(this.scale,e.scale,t),this}clone(){const e=new qe;return e.set(this),e}}class Rt{transform;constructor(){this.transform=new qe}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.transform.loc.set(e)}setPositionNow(e){this.transform.loc.set(e)}setQuat(e){this.transform.quat.set(e)}setQuatNow(e){this.transform.quat.set(e)}setScale(e){this.transform.scale.set(e)}setScaleNow(e){this.transform.scale.set(e)}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class Zn{transform;constructor(){this.transform=new qe}init(e,t){this.transform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){}setQuat(e){}setQuatNow(e){}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||new Ae}setAngularVelocity(e){}getAngularVelocity(e){return e||new Ae}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}update(e){}}class En{startTransform;transform;endTransform;currentTime;duration;constructor(){this.startTransform=new qe,this.transform=new qe,this.endTransform=new qe,this.currentTime=0,this.duration=1}init(e,t){this.startTransform.set(e),this.transform.set(e),this.endTransform.set(e)}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}isGrounded(){return this.transform.loc.y<=0}setPosition(e){this.startTransform.set(this.transform),this.endTransform.loc.set(e),this.currentTime=0}setPositionNow(e){this.setPosition(e),this.currentTime=1}setQuat(e){this.startTransform.set(this.transform),this.endTransform.quat.set(e),this.currentTime=0}setQuatNow(e){this.setQuat(e),this.currentTime=1}setScale(e){this.startTransform.set(this.transform),this.endTransform.scale.set(e),this.currentTime=0}setScaleNow(e){this.setScale(e),this.currentTime=1}setLinearVelocity(e){}getLinearVelocity(e){e||(e=new Ae);const t=this.endTransform.loc.x-this.startTransform.loc.x,n=this.endTransform.loc.y-this.startTransform.loc.y,r=this.endTransform.loc.z-this.startTransform.loc.z;e.set(t,n,r);const o=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*o*o+6*o)/this.duration),e}setAngularVelocity(e){}getAngularVelocity(e){e||(e=new Ae),Ln(this.startTransform.quat,"ZXY",_t),Ln(this.endTransform.quat,"ZXY",Dt),e.set(Dt.x-_t.x,Dt.y-_t.y,Dt.z-_t.z);const t=this.currentTime<this.duration?this.currentTime:this.duration;return e.scale((-6*t*t+6*t)/this.duration),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}smoothstep(e){return e*e*(3-2*e)}update(e){this.currentTime+=e,this.currentTime>this.duration&&(this.currentTime=this.duration);const t=this.currentTime/this.duration,n=this.smoothstep(t);this.transform.set(this.startTransform),this.transform.blend(this.endTransform,n)}}const rt=new Ae,Ct=new Ae,dt=new Pe,Lt=new qe,_t=new Ae,Dt=new Ae;class $n extends Rt{up;target;constructor(e){super(),this.up=new Ae(0,1,0),this.target=e}setTarget(e){this.target=e}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Me.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){rt.set(this.transform.loc),this.target.getPosition(Ct),at(rt,Ct,this.up,dt),this.transform.quat.set(dt)}}class ei extends En{up;target;constructor(e){super(),this.up=new Ae(0,1,0),this.target=e}init(e,t){super.init(e,t),t.upVector?this.up=t.upVector:this.up=Me.defaultUpVector}setQuat(e){}setQuatNow(e){}update(e){super.update(e),rt.set(this.transform.loc),this.target.getPosition(Ct),at(rt,Ct,this.up,dt),this.transform.quat.set(dt)}}const ti={lookFrom:{x:0,y:5,z:-10},smoothness:.9};class ni extends Zn{options;target;lookFrom;up;constructor(e,t={}){super(),this.options={...ti,...t},this.target=e,this.lookFrom=new Ae(this.options.lookFrom),e.upVector?this.up=e.upVector:this.up=Me.defaultUpVector}init(e,t){super.init(e,t)}update(e){super.update(e),rt.set(this.transform.loc),this.target.getPosition(Ct),at(rt,Ct,this.up,dt),dt.mul(0,1,0,0),Lt.quat.set(dt),rt.set(this.lookFrom),rt.apply(this.target.getQuat()),rt.add(this.target.getPosition()),Lt.loc.set(rt),this.transform.loc.lerp(this.transform.loc,Lt.loc,1-this.options.smoothness),this.transform.quat.slerp(this.transform.quat,Lt.quat,1-this.options.smoothness)}}const ii={rigidBody:"dynamic",collider:"solid",meshCollider:"convex_hull",mass:1,friction:.5,restitution:.5,membership:1,filter:1,collisionDetection:!1};function ri(i){return typeof i=="string"}function In(i){return i.isMesh===!0}function Lr(i){return i.type==="RoundedBoxGeometry"}function _r(i){return i.type==="BoxGeometry"}function Dr(i){return i.type==="SphereGeometry"}function Nr(i){return i.type==="IcosahedronGeometry"}function Fr(i){return i.type==="CylinderGeometry"}function Or(i){return i.type==="CapsuleGeometry"}function Mr(i){return i.isBone===!0}function Pr(i){return i.isPerspectiveCamera===!0}let je;const nt=new Map;class vt{static RAPIER;isInitialized=!1;constructor(){}async init(){if(!vt.RAPIER){const e=await import("@dimforge/rapier3d-compat");await e.init(),vt.RAPIER=e,je=e,this.isInitialized=!0}}createWorld(e){let t=.016666666666666666;this.isRapierWorldOptions(e)&&(t=e.timestep);const n=new je.World(e.gravity);return new bn(n,t)}isRapierWorldOptions(e){return"timestep"in e}}class bn{world;timestep;collisionEventQueue;constructor(e,t){this.world=e,this.timestep=t,this.collisionEventQueue=new je.EventQueue(!0),this.world.integrationParameters.dt=this.timestep}add(e){e.addOneselfToPhysics(this)}remove(e){e.removeOneselfFromPhysics(this)}update(e){const t=Math.ceil(e/this.timestep);for(let n=0;n<t;n++)this.world.step(this.collisionEventQueue)}getCollisions(){const e=[];return this.collisionEventQueue.drainCollisionEvents((t,n,r)=>{const o=nt.get(t),s=nt.get(n);o&&s&&e.push({objectA:o,partOfA:t,objectB:s,partOfB:n,started:r})}),e}}class _n{transform;objectA3;bodyDesc;body;colliderDescs;colliders;completeOptions;constructor(e={}){this.completeOptions={...ii,...e},this.transform=new qe,this.colliderDescs=[],this.colliders=[]}makeBodyDesc(){let e;switch(this.completeOptions.rigidBody){case"dynamic":e=je.RigidBodyDesc.dynamic();break;case"kinematic":e=je.RigidBodyDesc.kinematicPositionBased();break;case"fixed":e=je.RigidBodyDesc.fixed();break}return e.setTranslation(this.transform.loc.x,this.transform.loc.y,this.transform.loc.z),e.setRotation({x:this.transform.quat.x,y:this.transform.quat.y,z:this.transform.quat.z,w:this.transform.quat.w}),e}configColliderDescs(){if(!this.objectA3)return;const e=this.completeOptions,t=[];this.objectA3.object3D.traverse(r=>{if(In(r)){const o=jr(r.geometry),s=e.membership<<16|e.filter;if(o)o.colliderDesc.setCollisionGroups(s),e.collisionDetection&&o.colliderDesc.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(o.colliderDesc),o.colliderDesc.setRestitution(e.restitution).setFriction(e.friction),t.push(o.volume);else{let c,A;switch(e.meshCollider){case"tri_mesh":c=Gr(r),A=Dn(r.geometry);break;case"convex_hull":c=Ur(r),A=Dn(r.geometry);break}c&&(c.setCollisionGroups(s),e.collisionDetection&&c.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS),this.colliderDescs.push(c),t.push(A))}}});let n=t.reduce((r,o)=>r+o,0);for(let r=0;r<this.colliderDescs.length;r++)this.colliderDescs[r].setRestitution(e.restitution),this.colliderDescs[r].setFriction(e.friction),this.colliderDescs[r].setMass(e.mass*(t[r]/n))}init(e,t){this.transform.set(e),this.objectA3=t,this.colliderDescs=[],this.colliders=[],this.bodyDesc=this.makeBodyDesc(),this.configColliderDescs(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat)}addOneselfToPhysics(e){this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.colliderDescs.forEach(t=>{const n=e.world.createCollider(t,this.body);this.colliders.push(n),this.objectA3&&nt.set(n.handle,this.objectA3)}),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0))}removeOneselfFromPhysics(e){this.body&&e.world.removeRigidBody(this.body),this.colliders.forEach(t=>{e.world.removeCollider(t,!1),nt.delete(t.handle)})}isGrounded(){return this.transform.loc.y<=0}setPosition(e){}setPositionNow(e){this.body?this.body.setTranslation(e,!0):this.bodyDesc?.setTranslation(e.x,e.y,e.z),this.transform.loc.set(e)}setQuat(e){}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}update(e){if(this.body){const t=this.body.translation();this.transform.loc.set(t.x,t.y,t.z);const n=this.body.rotation();this.transform.quat.set(n.x,n.y,n.z,n.w)}}}function Gr(i){let e=null;if(In(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;let o=n.index?n.index.array:null;if(o)o instanceof Uint32Array||(o=new Uint32Array(o));else{const s=n.attributes.position.count;o=new Uint32Array(s);for(let c=0;c<s;c++)o[c]=c}r instanceof Float32Array&&(e=je.ColliderDesc.trimesh(r,o))}return e}function Ur(i){let e=null;if(In(i)){const t=i;t.updateWorldMatrix(!0,!0);const n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const r=n.attributes.position.array;r instanceof Float32Array&&(e=je.ColliderDesc.convexHull(r))}return e}function Dn(i){const e=i.attributes.position;if(!e)throw new Error("position attribute not found");const t=i.index,n=e.array;let r=0;const o=new oe.Vector3,s=new oe.Vector3,c=new oe.Vector3;if(t){const A=t.array;for(let a=0;a<A.length;a+=3){const d=A[a]*3,u=A[a+1]*3,m=A[a+2]*3;o.set(n[d],n[d+1],n[d+2]),s.set(n[u],n[u+1],n[u+2]),c.set(n[m],n[m+1],n[m+2]),r+=o.dot(s.clone().cross(c))}}else for(let A=0;A<n.length;A+=9)o.set(n[A],n[A+1],n[A+2]),s.set(n[A+3],n[A+4],n[A+5]),c.set(n[A+6],n[A+7],n[A+8]),r+=o.dot(s.clone().cross(c));return Math.abs(r)/6}function jr(i){if(Lr(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5,o=.1;return{colliderDesc:je.ColliderDesc.roundCuboid(t-o,n-o,r-o,o),volume:2*t*2*n*2*r}}else if(_r(i)){const e=i.parameters,t=typeof e?.width=="number"?e.width/2:.5,n=typeof e?.height=="number"?e.height/2:.5,r=typeof e?.depth=="number"?e.depth/2:.5;return{colliderDesc:je.ColliderDesc.cuboid(t,n,r),volume:2*t*2*n*2*r}}else if(Dr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(Nr(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:1;return{colliderDesc:je.ColliderDesc.ball(t),volume:4/3*Math.PI*t*t*t}}else if(Fr(i)){const e=i.parameters,t=typeof e?.radiusBottom=="number"?e.radiusBottom:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.cylinder(n/2,t),volume:Math.PI*t*t*n}}else if(Or(i)){const e=i.parameters,t=typeof e?.radius=="number"?e.radius:.5,n=typeof e?.height=="number"?e.height:.5;return{colliderDesc:je.ColliderDesc.capsule(n/2,t),volume:4/3*Math.PI*t*t*t+Math.PI*t*t*n}}return null}const cn=new vt;async function Hr(){await cn.init()}const D={v0:new Ae,v1:new Ae,v2:new Ae,v3:new Ae,v4:new Ae,q0:new Pe,q1:new Pe,q2:new Pe,q3:new Pe,q4:new Pe,t0:new qe,t1:new qe,t2:new qe,t3:new qe,t4:new qe};function qr(i){return new Promise(e=>{setTimeout(()=>{e()},i)})}async function oi(i){const t=await(await fetch(i)).arrayBuffer(),n=await new Promise((r,o)=>{Xn.unzip(new Uint8Array(t),(s,c)=>{s?o(s):r(c)})});return{zipUrl:i,unzipped:n}}function Ot(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e])return Xn.strFromU8(i.unzipped[e]);throw new Error(`readStringFromUnzippedA3(): no file at ${e}`)}function ln(i,e){if(e=e.replace(/^\.\//,"").replace(/^\//,""),i.unzipped[e]){const t=Vr(e);return new Blob([new Uint8Array(i.unzipped[e])],{type:t})}else throw new Error(`readBlobFromUnzippedA3(): no file at ${e}`)}const zr={"image/png":/\.png$/i,"image/jpeg":/\.(jpg|jpeg)$/i,"image/gif":/\.gif$/i,"model/vrml":/\.wrl$/i,"application/xml":/\.xml$/i,"application/octet-stream":/\.bvh/i,"audio/x-wav":/\.wav/i,"audio/mpeg":/\.mp3/i,"audio/ogg":/\.ogg/i,"text/plain":/\.(txt|text)$/i,"model/gltf+json":/\.gltf$/i,"model/gltf-binary":/\.glb$/i};function Vr(i){for(const[e,t]of Object.entries(zr))if(t.test(i))return e;return"application/octet-stream"}function Ut(i,e){if(!e)return i;const t={...i};for(const n in e)typeof i[n]=="object"&&typeof e[n]=="object"?t[n]=Ut(i[n],e[n]):t[n]=e[n];return t}const si={offset:.01,auto:!0,height:1.5,radius:.3};class ai{transform;objectA3;completeOptions;controller;colliderDesc;collider;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;constructor(e={}){this.completeOptions={...si,...e},this.transform=new qe,this.capsuleCenter=new Ae,this.nextLocation=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Pe}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);o.remove(t.object3D),s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius),this.colliderDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.colliderDesc.setRotation({x:e.quat.x,y:e.quat.y,z:e.quat.z,w:e.quat.w})}addOneselfToPhysics(e){this.controller=e.world.createCharacterController(this.completeOptions.offset),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc)),this.collider&&this.objectA3&&nt.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.collider&&(e.world.removeCollider(this.collider,!1),nt.delete(this.collider.handle))}setPosition(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.nextLocation.set(this.tmpV1)}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),e=this.tmpV1,this.collider&&this.collider.setTranslation(e),this.transform.loc.set(e),this.nextLocation.set(e)}setQuat(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.collider&&this.collider.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){}getLinearVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}setAngularVelocity(e){}getAngularVelocity(e){return e||(e=new Ae),e.set(0,0,0),e}resetForce(){}addForce(e){}addForceAtPoint(e,t){}resetTorque(){}addTorque(e){}applyImpulse(e){}applyImpulseAtPoint(e,t){}applyTorqueImpulse(e){}isGrounded(){return this.controller?this.controller.computedGrounded():!1}update(e){if(!this.controller||!this.collider)return;this.transform.quat.set(this.collider.rotation()),this.tmpV1.set(this.collider.translation()),this.tmpV2.set(this.nextLocation),this.tmpV2.sub(this.tmpV1),this.controller.computeColliderMovement(this.collider,this.tmpV2);const t=this.controller.computedMovement();this.tmpV1.add(t),this.collider.setTranslation(this.tmpV1),this.tmpV1.sub(this.capsuleCenter),this.transform.loc.set(this.tmpV1),this.nextLocation.set(this.tmpV1)}}const Ai={auto:!0,height:1.5,radius:.3};class ci{transform;objectA3;completeOptions;colliderDesc;collider;bodyDesc;body;capsuleCenter;nextLocation;tmpV1;tmpV2;tmpQ1;physicsWorld;constructor(e={}){this.completeOptions={...Ai,...e},this.transform=new qe,this.capsuleCenter=new Ae,this.nextLocation=new Ae,this.tmpV1=new Ae,this.tmpV2=new Ae,this.tmpQ1=new Pe}init(e,t){if(this.transform.set(e),this.completeOptions.auto){const n=new oe.Vector3,r=new oe.Quaternion,o=new oe.Object3D;o.add(t.object3D),t.getPosition(this.tmpV1),this.tmpV1.write(n),o.position.set(n.x,n.y,n.z),t.getQuat(this.tmpQ1),this.tmpQ1.write(r),o.quaternion.set(r.x,r.y,r.z,r.w),t.getScale(this.tmpV2),this.tmpV2.write(n),o.scale.set(n.x,n.y,n.z);const s=new oe.Box3().setFromObject(o);s.getSize(n),this.completeOptions.radius=Math.max(n.x,n.z)/2,this.completeOptions.height=n.y-this.completeOptions.radius*2,s.getCenter(n),this.capsuleCenter.set(n)}this.bodyDesc=je.RigidBodyDesc.dynamic(),this.bodyDesc.setTranslation(e.loc.x,e.loc.y,e.loc.z),this.bodyDesc.setRotation(e.quat),this.colliderDesc=je.ColliderDesc.capsule(this.completeOptions.height,this.completeOptions.radius)}addOneselfToPhysics(e){this.physicsWorld=e,this.bodyDesc&&(this.body=e.world.createRigidBody(this.bodyDesc),this.body.setEnabledRotations(!1,!1,!1,!0),this.body.setTranslation(this.transform.loc,!0),this.body.setRotation(this.transform.quat,!0)),this.colliderDesc&&(this.collider=e.world.createCollider(this.colliderDesc,this.body)),this.collider&&this.objectA3&&nt.set(this.collider.handle,this.objectA3)}removeOneselfFromPhysics(e){this.body&&e.world.removeRigidBody(this.body),this.collider&&(e.world.removeCollider(this.collider,!1),nt.delete(this.collider.handle)),this.physicsWorld=void 0}setPosition(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),this.nextLocation.set(this.tmpV1)}setPositionNow(e){this.tmpV1.set(e),this.tmpV1.add(this.capsuleCenter),e=this.tmpV1,this.body?this.body.setTranslation(e,!0):this.bodyDesc?.setTranslation(e.x,e.y,e.z),this.transform.loc.set(e),this.nextLocation.set(e)}setQuat(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setQuatNow(e){this.body?this.body.setRotation(e,!0):this.bodyDesc?.setRotation(e),this.transform.quat.set(e)}setScale(e){}setScaleNow(e){}setLinearVelocity(e){this.body?this.body.setLinvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setLinvel(e.x,e.y,e.z)}getLinearVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.linvel()):this.bodyDesc&&e.set(this.bodyDesc.linvel),e}setAngularVelocity(e){this.body?this.body.setAngvel({x:e.x,y:e.y,z:e.z},!0):this.bodyDesc?.setAngvel({x:e.x,y:e.y,z:e.z})}getAngularVelocity(e){return e||(e=new Ae),this.body?e.set(this.body.angvel()):this.bodyDesc&&e.set(this.bodyDesc.angvel),e}resetForce(){this.body?.resetForces(!0)}addForce(e){this.body?.addForce({x:e.x,y:e.y,z:e.z},!0)}addForceAtPoint(e,t){this.body?.addForceAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}resetTorque(){this.body?.resetTorques(!0)}addTorque(e){this.body?.addTorque({x:e.x,y:e.y,z:e.z},!0)}applyImpulse(e){this.body?.applyImpulse({x:e.x,y:e.y,z:e.z},!0)}applyImpulseAtPoint(e,t){this.body?.applyImpulseAtPoint({x:e.x,y:e.y,z:e.z},{x:t.x,y:t.y,z:t.z},!0)}applyTorqueImpulse(e){this.body?.applyTorqueImpulse({x:e.x,y:e.y,z:e.z},!0)}isGrounded(){if(this.body&&this.physicsWorld){const e=this.body.translation(),t=new je.Ray(e,{x:0,y:-1,z:0}),n=1.1*(this.completeOptions.height+this.completeOptions.radius);return this.physicsWorld.world.castRay(t,n,!0,void 0,void 0,this.collider)!==null}else return this.transform.loc.y<=0}update(e){if(!this.body)return;const t=new Ae(this.body.translation());t.sub(this.capsuleCenter),this.transform.loc.set(t),this.transform.quat.set(this.body.rotation())}}const Kr=new oe.SphereGeometry,Wr=new oe.MeshStandardMaterial({color:16711680});let Yr=new oe.Mesh(Kr,Wr);class Me{static defaultRotationOrder="ZXY";static defaultUpVector=new Ae(0,1,0);rotationOrder;upVector;object3D;scene;balloon;transformer;parent;children=[];clickListener;constructor(e){this.transformer=this.initTransformer(e),this.object3D=new oe.Object3D;const t=this.initObject(e);t&&this.object3D.add(t),this.object3D.traverse(n=>{n.userData.a3js={objectA3:this}})}initObject(e){return Yr.clone()}initTransformer(e){return new Rt}setTransformer(e){D.t0.set(this.transformer.transform),e.init(D.t0,this),this.transformer=e}getTransformer(){return this.transformer}setTransformMode(e,t,n){if(e==="Default")this.setTransformer(new Rt);else if(e==="Smooth")this.setTransformer(new En);else if(e==="Follow"){if(!t)throw new Error("ObjectA3.setTransformMode(): Follow mode needs target.");this.setTransformer(new ni(t,n))}else if(e==="Billboard"){if(!t)throw new Error("ObjectA3.setTransformMode(): Billboard mode needs target.");this.setTransformer(new $n(t))}else if(e==="SmoothBillboard"){if(!t)throw new Error("ObjectA3.setTransformMode(): SmoothBillboard mode needs target.");this.setTransformer(new ei(t))}else e==="SimplePhysics"?this.setTransformer(new _n(n)):e==="KinematicCharacter"?this.setTransformer(new ai(n)):e==="DynamicCharacter"&&this.setTransformer(new ci(n))}initSimplePhysics(e){const t={...ii,...e};this.setTransformer(new _n(t))}update(e){this.transformer.update(e),this.transformer.transform.write(this),this.children.forEach(t=>{t.update(e)})}add(e){if(e.scene){console.warn("ObjectA3.add(obj) is ignored.");return}if(e.parent){console.warn("ObjectA3.add(obj) is ignored.");return}this.children.push(e),e.parent=this,this.object3D.add(e.object3D)}remove(e){if(e.parent!==this){console.warn("ObjectA3.remove(obj) is ignored.");return}const t=this.children.indexOf(e);this.children.splice(t,1),e.parent=void 0,this.object3D.remove(e.object3D)}setSpeechBubble(e){this.balloon?this.balloon.message=e:this.balloon=new Jr(e)}setClickListener(e){this.clickListener=e}handleCollision(e,t,n,r){}async clicked(){this.clickListener&&await this.clickListener(this)}getPosition(e){return e?(e.set(this.transformer.transform.loc),e):this.transformer.transform.loc.clone()}setPosition(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setPosition(D.v0)}setPositionNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setPositionNow(D.v0)}getQuat(e){return e?(e.set(this.transformer.transform.quat),e):this.transformer.transform.quat.clone()}setQuat(e,t,n,r){typeof e=="number"?D.q0.set(e,t,n,r):D.q0.set(e),this.transformer.setQuat(D.q0)}setQuatNow(e,t,n,r){typeof e=="number"?D.q0.set(e,t,n,r):D.q0.set(e),this.transformer.setQuatNow(D.q0)}getScale(e){return e?(e.set(this.transformer.transform.scale),e):this.transformer.transform.scale.clone()}setScale(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setScale(D.v0)}setScaleNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setScaleNow(D.v0)}setRotation(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q1),this.setQuat(D.q1)}setRotationNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q0),this.setQuatNow(D.q0)}lookAt(e,t,n){typeof e=="number"?D.v1.set(e,t,n):e instanceof Me?D.v1.set(e.transformer.transform.loc):D.v1.set(e);const r=this.upVector?this.upVector:Me.defaultUpVector;at(this.transformer.transform.loc,D.v1,r,D.q1),this.setQuat(D.q1)}lookAtNow(e,t,n){typeof e=="number"?D.v1.set(e,t,n):e instanceof Me?D.v1.set(e.transformer.transform.loc):D.v1.set(e);const r=this.upVector?this.upVector:Me.defaultUpVector;at(this.transformer.transform.loc,D.v1,r,D.q1),this.setQuatNow(D.q1)}getUnitVecX(e){return e?(e.set(1,0,0),e.apply(this.object3D.quaternion)):new Ae(1,0,0).apply(this.object3D.quaternion)}getUnitVecY(e){return e?(e.set(0,1,0),e.apply(this.object3D.quaternion)):new Ae(0,1,0).apply(this.object3D.quaternion)}getUnitVecZ(e){return e?(e.set(0,0,1),e.apply(this.object3D.quaternion)):new Ae(0,0,1).apply(this.object3D.quaternion)}translate(e,t,n){D.v1.set(this.transformer.transform.loc),typeof e=="number"?D.v1.add(e,t,n):D.v1.add(e),this.setPosition(D.v1)}translateNow(e,t,n){D.v1.set(this.transformer.transform.loc),typeof e=="number"?D.v1.add(e,t,n):D.v1.add(e),this.setPositionNow(D.v1)}mulQuat(e,t,n,r){D.q1.set(this.transformer.transform.quat),typeof e=="number"?D.q1.mul(e,t,n,r):D.q1.mul(e),this.setQuat(D.q1)}mulQuatNow(e,t,n,r){D.q1.set(this.transformer.transform.quat),typeof e=="number"?D.q1.mul(e,t,n,r):D.q1.mul(e),this.setQuatNow(D.q1)}mulRotation(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q1),this.getQuat(D.q0),D.q0.mul(D.q1),this.setQuat(D.q0)}mulRotationNow(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),D.v0.scale(Math.PI/360);const r=this.rotationOrder?this.rotationOrder:Me.defaultRotationOrder;ut(D.v0,r,D.q1),this.getQuat(D.q0),D.q0.mul(D.q1),this.setQuatNow(D.q0)}scaleBy(e,t,n){this.getScale(D.v0),typeof e=="number"?D.v0.set(D.v0.x*e,D.v0.y*t,D.v0.z*n):D.v0.set(D.v0.x*e.x,D.v0.y*e.y,D.v0.z*e.z),this.setScale(D.v0)}mulScaleNow(e,t,n){this.getScale(D.v0),typeof e=="number"?D.v0.set(D.v0.x*e,D.v0.y*t,D.v0.z*n):D.v0.set(D.v0.x*e.x,D.v0.y*e.y,D.v0.z*e.z),this.setScaleNow(D.v0)}moveForward(e){this.getUnitVecZ(D.v0),D.v0.scale(e),this.translate(D.v0)}moveForwardNow(e){this.getUnitVecZ(D.v0),D.v0.scale(e),this.translateNow(D.v0)}moveBackward(e){this.getUnitVecZ(D.v0),D.v0.scale(-e),this.translate(D.v0)}moveBackwardNow(e){this.getUnitVecZ(D.v0),D.v0.scale(-e),this.translateNow(D.v0)}moveRight(e){this.getUnitVecX(D.v0),D.v0.scale(-e),this.translate(D.v0)}moveRightNow(e){this.getUnitVecX(D.v0),D.v0.scale(-e),this.translateNow(D.v0)}moveLeft(e){this.getUnitVecX(D.v0),D.v0.scale(e),this.translate(D.v0)}moveLeftNow(e){this.getUnitVecX(D.v0),D.v0.scale(e),this.translateNow(D.v0)}moveUp(e){this.getUnitVecY(D.v0),D.v0.scale(e),this.translate(D.v0)}moveUpNow(e){this.getUnitVecY(D.v0),D.v0.scale(e),this.translateNow(D.v0)}moveDown(e){this.getUnitVecY(D.v0),D.v0.scale(-e),this.translate(D.v0)}moveDownNow(e){this.getUnitVecY(D.v0),D.v0.scale(-e),this.translateNow(D.v0)}turnUp(e){this.mulRotation(-e,0,0)}turnUpNow(e){this.mulRotationNow(-e,0,0)}turnDown(e){this.mulRotation(e,0,0)}turnDownNow(e){this.mulRotationNow(e,0,0)}turnRight(e){this.mulRotation(0,-e,0)}turnRightNow(e){this.mulRotationNow(0,-e,0)}turnLeft(e){this.mulRotation(0,e,0)}turnLeftNow(e){this.mulRotationNow(0,e,0)}rollRight(e){this.mulRotation(0,0,e)}rollRightNow(e){this.mulRotationNow(0,0,e)}rollLeft(e){this.mulRotation(0,0,-e)}rollLeftNow(e){this.mulRotationNow(0,0,-e)}setLinearVelocity(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setLinearVelocity(D.v0)}getLinearVelocity(e){return this.transformer.getLinearVelocity(e)}setAngularVelocity(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.setAngularVelocity(D.v0)}getAngularVelocity(e){return this.transformer.getAngularVelocity(e)}resetForce(){this.transformer.resetForce()}addForce(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.addForce(D.v0)}addForceAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")D.v0.set(e,t,n),D.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else D.v0.set(e),D.v1.set(t);this.transformer.addForceAtPoint(D.v0,D.v1)}resetTorque(){this.transformer.resetTorque()}addTorque(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.addTorque(D.v0)}applyImpulse(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.applyImpulse(D.v0)}applyImpulseAtPoint(e,t,n,r,o,s){if(typeof e=="number")if(typeof t=="number")D.v0.set(e,t,n),D.v1.set(r,o,s);else{console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else if(typeof t=="number"){console.warn("ObjectA3.addForceAtPoint(): type of arguments mismatch.");return}else D.v0.set(e),D.v1.set(t);this.transformer.applyImpulseAtPoint(D.v0,D.v1)}applyTorqueImpulse(e,t,n){typeof e=="number"?D.v0.set(e,t,n):D.v0.set(e),this.transformer.applyTorqueImpulse(D.v0)}addOneselfToPhysics(e){this.transformer.addOneselfToPhysics(e)}removeOneselfFromPhysics(e){this.transformer.removeOneselfFromPhysics(e)}isGrounded(){return this.transformer.isGrounded()}}class Jr{message;dir;offsetTop;offsetRight;offsetLeft;offsetBottom;constructor(e){this.message=e,this.dir="RIGHT",this.offsetTop={x:0,y:2},this.offsetRight={x:1,y:1},this.offsetLeft={x:-1,y:1},this.offsetBottom={x:0,y:0}}}class Cn{shape;motion;constructor(e,t){this.shape=e,this.motion=t}enable(e,t){this.motion.playCount=0,this.motion.time=0,e.add(this.shape.root)}disable(e,t){e.remove(this.shape.root)}}class It extends Me{ready;actions;currentAction;stateAction;emoteAction;morphs;overwriteMorphs;constructor(e){super(e),this.actions={},this.morphs={},this.overwriteMorphs=!1,this.ready=this.asyncInit(e)}syncInit(e,t,n={}){this.actions=t,this.stateAction=this.actions[e],this.currentAction=this.stateAction,this.object3D.clear(),this.morphs=n,this.stateAction?.enable(this.object3D,this.scene)}setActions(e){this.actions=e}getAction(e){return this.actions[e]}addAction(e,t){this.actions[e]=t}removeAction(e){const t=this.actions[e];return delete this.actions[e],t}getActionNames(){return Object.keys(this.actions)}setState(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.stateAction=t)}setEmote(e){const t=this.actions[e];t&&(this.currentAction&&this.currentAction.disable(this.object3D,this.scene),t.enable(this.object3D,this.scene),this.currentAction=t,this.emoteAction=t)}setMorphsOverwrite(e){this.overwriteMorphs=e}setMorph(e,t){if(e in this.morphs){const{array:n,idx:r}=this.morphs[e];n[r]=t}}getMorphNames(){return Object.keys(this.morphs)}pose={};update(e){super.update(e);let t;if(this.emoteAction&&this.emoteAction.motion.playCount<=0?(t=this.emoteAction.motion.update(e),this.emoteAction.motion.playCount>0&&(this.emoteAction.disable(this.object3D,this.scene),this.emoteAction=void 0,this.stateAction&&(this.stateAction.enable(this.object3D,this.scene),this.currentAction=this.stateAction))):this.stateAction&&(t=this.stateAction.motion.update(e)),t&&this.currentAction&&this.currentAction.shape.bones)for(const[n,r]of Object.entries(t)){const o=this.currentAction.shape.bones[n];if(o&&(r.loc&&o.position.set(r.loc.x,r.loc.y,r.loc.z),r.quat&&o.quaternion.set(r.quat.x,r.quat.y,r.quat.z,r.quat.w),r.scale&&o.scale.set(r.scale.x,r.scale.y,r.scale.z)),!this.overwriteMorphs&&r.morphs){for(const s of r.morphs)for(const c of Object.keys(this.morphs))if(c.startsWith(s.name)){const{array:A}=this.morphs[c];for(let a=0;a<A.length;a++)A[a]=s.vals[a];break}}}this.object3D.updateMatrixWorld(!0),this.currentAction&&this.currentAction.shape.skeleton?.update()}}class Nn{name;playCount;time;finishListener;constructor(){this.name="dummy",this.playCount=0,this.time=0}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){}setTime(e){}setFinishListener(e){this.finishListener=e}update(e){return{}}}var Re=(i,e)=>()=>(e||(e={exports:{}},i(e.exports,e)),e.exports),li=Re(i=>{Object.defineProperty(i,"__esModule",{value:!0}),i.VERSION=void 0,i.VERSION="9.0.1"}),Ne=Re((i,e)=>{var t=i&&i.__spreadArray||function(M,Y){for(var V=0,re=Y.length,fe=M.length;V<re;V++,fe++)M[fe]=Y[V];return M};Object.defineProperty(i,"__esModule",{value:!0}),i.toFastProperties=i.timer=i.peek=i.isES2015MapSupported=i.PRINT_WARNING=i.PRINT_ERROR=i.packArray=i.IDENTITY=i.NOOP=i.merge=i.groupBy=i.defaults=i.assignNoOverwrite=i.assign=i.zipObject=i.sortBy=i.indexOf=i.some=i.difference=i.every=i.isObject=i.isRegExp=i.isArray=i.partial=i.uniq=i.compact=i.reduce=i.findAll=i.find=i.cloneObj=i.cloneArr=i.contains=i.has=i.pick=i.reject=i.filter=i.dropRight=i.drop=i.isFunction=i.isUndefined=i.isString=i.forEach=i.last=i.first=i.flatten=i.map=i.mapValues=i.values=i.keys=i.isEmpty=void 0;function n(M){return M&&M.length===0}i.isEmpty=n;function r(M){return M==null?[]:Object.keys(M)}i.keys=r;function o(M){for(var Y=[],V=Object.keys(M),re=0;re<V.length;re++)Y.push(M[V[re]]);return Y}i.values=o;function s(M,Y){for(var V=[],re=r(M),fe=0;fe<re.length;fe++){var ke=re[fe];V.push(Y.call(null,M[ke],ke))}return V}i.mapValues=s;function c(M,Y){for(var V=[],re=0;re<M.length;re++)V.push(Y.call(null,M[re],re));return V}i.map=c;function A(M){for(var Y=[],V=0;V<M.length;V++){var re=M[V];Array.isArray(re)?Y=Y.concat(A(re)):Y.push(re)}return Y}i.flatten=A;function a(M){return n(M)?void 0:M[0]}i.first=a;function d(M){var Y=M&&M.length;return Y?M[Y-1]:void 0}i.last=d;function u(M,Y){if(Array.isArray(M))for(var V=0;V<M.length;V++)Y.call(null,M[V],V);else if($(M))for(var re=r(M),V=0;V<re.length;V++){var fe=re[V],ke=M[fe];Y.call(null,ke,fe)}else throw Error("non exhaustive match")}i.forEach=u;function m(M){return typeof M=="string"}i.isString=m;function p(M){return M===void 0}i.isUndefined=p;function I(M){return M instanceof Function}i.isFunction=I;function g(M,Y){return Y===void 0&&(Y=1),M.slice(Y,M.length)}i.drop=g;function l(M,Y){return Y===void 0&&(Y=1),M.slice(0,M.length-Y)}i.dropRight=l;function h(M,Y){var V=[];if(Array.isArray(M))for(var re=0;re<M.length;re++){var fe=M[re];Y.call(null,fe)&&V.push(fe)}return V}i.filter=h;function f(M,Y){return h(M,function(V){return!Y(V)})}i.reject=f;function C(M,Y){for(var V=Object.keys(M),re={},fe=0;fe<V.length;fe++){var ke=V[fe],Be=M[ke];Y(Be)&&(re[ke]=Be)}return re}i.pick=C;function b(M,Y){return $(M)?M.hasOwnProperty(Y):!1}i.has=b;function y(M,Y){return z(M,function(V){return V===Y})!==void 0}i.contains=y;function R(M){for(var Y=[],V=0;V<M.length;V++)Y.push(M[V]);return Y}i.cloneArr=R;function x(M){var Y={};for(var V in M)Object.prototype.hasOwnProperty.call(M,V)&&(Y[V]=M[V]);return Y}i.cloneObj=x;function z(M,Y){for(var V=0;V<M.length;V++){var re=M[V];if(Y.call(null,re))return re}}i.find=z;function k(M,Y){for(var V=[],re=0;re<M.length;re++){var fe=M[re];Y.call(null,fe)&&V.push(fe)}return V}i.findAll=k;function P(M,Y,V){for(var re=Array.isArray(M),fe=re?M:o(M),ke=re?[]:r(M),Be=V,ce=0;ce<fe.length;ce++)Be=Y.call(null,Be,fe[ce],re?ce:ke[ce]);return Be}i.reduce=P;function N(M){return f(M,function(Y){return Y==null})}i.compact=N;function S(M,Y){Y===void 0&&(Y=function(re){return re});var V=[];return P(M,function(re,fe){var ke=Y(fe);return y(V,ke)?re:(V.push(ke),re.concat(fe))},[])}i.uniq=S;function F(M){for(var Y=[],V=1;V<arguments.length;V++)Y[V-1]=arguments[V];var re=[null],fe=re.concat(Y);return Function.bind.apply(M,fe)}i.partial=F;function _(M){return Array.isArray(M)}i.isArray=_;function W(M){return M instanceof RegExp}i.isRegExp=W;function $(M){return M instanceof Object}i.isObject=$;function H(M,Y){for(var V=0;V<M.length;V++)if(!Y(M[V],V))return!1;return!0}i.every=H;function ee(M,Y){return f(M,function(V){return y(Y,V)})}i.difference=ee;function ne(M,Y){for(var V=0;V<M.length;V++)if(Y(M[V]))return!0;return!1}i.some=ne;function ue(M,Y){for(var V=0;V<M.length;V++)if(M[V]===Y)return V;return-1}i.indexOf=ue;function ie(M,Y){var V=R(M);return V.sort(function(re,fe){return Y(re)-Y(fe)}),V}i.sortBy=ie;function X(M,Y){if(M.length!==Y.length)throw Error("can't zipObject with different number of keys and values!");for(var V={},re=0;re<M.length;re++)V[M[re]]=Y[re];return V}i.zipObject=X;function se(M){for(var Y=[],V=1;V<arguments.length;V++)Y[V-1]=arguments[V];for(var re=0;re<Y.length;re++)for(var fe=Y[re],ke=r(fe),Be=0;Be<ke.length;Be++){var ce=ke[Be];M[ce]=fe[ce]}return M}i.assign=se;function de(M){for(var Y=[],V=1;V<arguments.length;V++)Y[V-1]=arguments[V];for(var re=0;re<Y.length;re++)for(var fe=Y[re],ke=r(fe),Be=0;Be<ke.length;Be++){var ce=ke[Be];b(M,ce)||(M[ce]=fe[ce])}return M}i.assignNoOverwrite=de;function G(){for(var M=[],Y=0;Y<arguments.length;Y++)M[Y]=arguments[Y];return de.apply(void 0,t([{}],M))}i.defaults=G;function q(M,Y){var V={};return u(M,function(re){var fe=Y(re),ke=V[fe];ke?ke.push(re):V[fe]=[re]}),V}i.groupBy=q;function j(M,Y){for(var V=x(M),re=r(Y),fe=0;fe<re.length;fe++){var ke=re[fe],Be=Y[ke];V[ke]=Be}return V}i.merge=j;function Z(){}i.NOOP=Z;function J(M){return M}i.IDENTITY=J;function le(M){for(var Y=[],V=0;V<M.length;V++){var re=M[V];Y.push(re!==void 0?re:void 0)}return Y}i.packArray=le;function ye(M){console&&console.error&&console.error("Error: "+M)}i.PRINT_ERROR=ye;function Te(M){console&&console.warn&&console.warn("Warning: "+M)}i.PRINT_WARNING=Te;function De(){return typeof Map=="function"}i.isES2015MapSupported=De;function ze(M){return M[M.length-1]}i.peek=ze;function Xe(M){var Y=new Date().getTime(),V=M(),re=new Date().getTime(),fe=re-Y;return{time:fe,value:V}}i.timer=Xe;function Fe(M){function Y(){}Y.prototype=M;var V=new Y;function re(){return typeof V.bar}return re(),re(),M}i.toFastProperties=Fe}),yn=Re((i,e)=>{(function(t,n){typeof define=="function"&&define.amd?define([],n):typeof e=="object"&&e.exports?e.exports=n():t.regexpToAst=n()})(typeof self<"u"?self:i,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(l){this.idx=l.idx,this.input=l.input,this.groupIdx=l.groupIdx},t.prototype.pattern=function(l){this.idx=0,this.input=l,this.groupIdx=0,this.consumeChar("/");var h=this.disjunction();this.consumeChar("/");for(var f={type:"Flags",loc:{begin:this.idx,end:l.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":A(f,"global");break;case"i":A(f,"ignoreCase");break;case"m":A(f,"multiLine");break;case"u":A(f,"unicode");break;case"y":A(f,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:f,value:h,loc:this.loc(0)}},t.prototype.disjunction=function(){var l=[],h=this.idx;for(l.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),l.push(this.alternative());return{type:"Disjunction",value:l,loc:this.loc(h)}},t.prototype.alternative=function(){for(var l=[],h=this.idx;this.isTerm();)l.push(this.term());return{type:"Alternative",value:l,loc:this.loc(h)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var l=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(l)};case"$":return{type:"EndAnchor",loc:this.loc(l)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(l)};case"B":return{type:"NonWordBoundary",loc:this.loc(l)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var h;switch(this.popChar()){case"=":h="Lookahead";break;case"!":h="NegativeLookahead";break}a(h);var f=this.disjunction();return this.consumeChar(")"),{type:h,value:f,loc:this.loc(l)}}d()},t.prototype.quantifier=function(l){var h,f=this.idx;switch(this.popChar()){case"*":h={atLeast:0,atMost:1/0};break;case"+":h={atLeast:1,atMost:1/0};break;case"?":h={atLeast:0,atMost:1};break;case"{":var C=this.integerIncludingZero();switch(this.popChar()){case"}":h={atLeast:C,atMost:C};break;case",":var b;this.isDigit()?(b=this.integerIncludingZero(),h={atLeast:C,atMost:b}):h={atLeast:C,atMost:1/0},this.consumeChar("}");break}if(l===!0&&h===void 0)return;a(h);break}if(!(l===!0&&h===void 0))return a(h),this.peekChar(0)==="?"?(this.consumeChar("?"),h.greedy=!1):h.greedy=!0,h.type="Quantifier",h.loc=this.loc(f),h},t.prototype.atom=function(){var l,h=this.idx;switch(this.peekChar()){case".":l=this.dotAll();break;case"\\":l=this.atomEscape();break;case"[":l=this.characterClass();break;case"(":l=this.group();break}return l===void 0&&this.isPatternCharacter()&&(l=this.patternCharacter()),a(l),l.loc=this.loc(h),this.isQuantifier()&&(l.quantifier=this.quantifier()),l},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[s(`
2
2
  `),s("\r"),s("\u2028"),s("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var l=this.positiveInteger();return{type:"GroupBackReference",value:l}},t.prototype.characterClassEscape=function(){var l,h=!1;switch(this.popChar()){case"d":l=m;break;case"D":l=m,h=!0;break;case"s":l=I;break;case"S":l=I,h=!0;break;case"w":l=p;break;case"W":l=p,h=!0;break}return a(l),{type:"Set",value:l,complement:h}},t.prototype.controlEscapeAtom=function(){var l;switch(this.popChar()){case"f":l=s("\f");break;case"n":l=s(`
3
3
  `);break;case"r":l=s("\r");break;case"t":l=s(" ");break;case"v":l=s("\v");break}return a(l),{type:"Character",value:l}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var l=this.popChar();if(/[a-zA-Z]/.test(l)===!1)throw Error("Invalid ");var h=l.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:h}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:s("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var l=this.popChar();return{type:"Character",value:s(l)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case`
4
4
  `:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var l=this.popChar();return{type:"Character",value:s(l)}}},t.prototype.characterClass=function(){var l=[],h=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),h=!0);this.isClassAtom();){var f=this.classAtom(),C=f.type==="Character";if(C&&this.isRangeDash()){this.consumeChar("-");var b=this.classAtom(),y=b.type==="Character";if(y){if(b.value<f.value)throw Error("Range out of order in character class");l.push({from:f.value,to:b.value})}else c(f.value,l),l.push(s("-")),c(b.value,l)}else c(f.value,l)}return this.consumeChar("]"),{type:"Set",complement:h,value:l}},t.prototype.classAtom=function(){switch(this.peekChar()){case"]":case`