@needle-tools/engine 4.12.0-beta.1 → 4.12.0-next.c6c0281

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.
Files changed (129) hide show
  1. package/components.needle.json +1 -1
  2. package/dist/{generateMeshBVH.worker-mO20N_b8.js → generateMeshBVH.worker-BvGEI0r7.js} +4 -4
  3. package/dist/{gltf-progressive-DZrY8VT6.min.js → gltf-progressive-BmSygnAC.min.js} +2 -2
  4. package/dist/{gltf-progressive-DgYz5BYa.js → gltf-progressive-DnLBuGK5.js} +24 -24
  5. package/dist/{gltf-progressive-DWcmTMCh.umd.cjs → gltf-progressive-Rs-ojtXy.umd.cjs} +1 -1
  6. package/dist/{loader.worker-Dip-PthR.js → loader.worker-DWzfDpAl.js} +4 -4
  7. package/dist/{needle-engine.bundle-BxG30KEV.js → needle-engine.bundle-BVdPECIB.js} +1106 -1167
  8. package/dist/{needle-engine.bundle-C08Ag6_H.umd.cjs → needle-engine.bundle-Dk2U2sIu.umd.cjs} +76 -77
  9. package/dist/{needle-engine.bundle-BeTUOBiO.min.js → needle-engine.bundle-ThW_g39D.min.js} +80 -81
  10. package/dist/needle-engine.d.ts +96 -40
  11. package/dist/needle-engine.js +4 -4
  12. package/dist/needle-engine.min.js +1 -1
  13. package/dist/needle-engine.umd.cjs +1 -1
  14. package/dist/{postprocessing-DYDtB188.min.js → postprocessing-B5ksn9-G.min.js} +54 -54
  15. package/dist/{postprocessing-CMgoN5t5.umd.cjs → postprocessing-DZtb9Nnn.umd.cjs} +81 -81
  16. package/dist/{postprocessing-BTW9pD_s.js → postprocessing-__7s9wON.js} +450 -441
  17. package/dist/{three-DfMvBzXi.js → three-BCCkyCA5.js} +1 -7
  18. package/dist/{three-qj71I7J3.umd.cjs → three-Bf2NBxAw.umd.cjs} +2 -2
  19. package/dist/{three-B7CT31Bt.min.js → three-W7zWTcfP.min.js} +1 -1
  20. package/dist/{three-examples-CsW4_6LI.umd.cjs → three-examples-Dho7cuu4.umd.cjs} +4 -4
  21. package/dist/{three-examples-D1P7eEhn.min.js → three-examples-MsJjauyk.min.js} +10 -10
  22. package/dist/{three-examples-D1SK93ek.js → three-examples-y2GeYlze.js} +2 -20
  23. package/dist/{three-mesh-ui-C_uSB5dD.js → three-mesh-ui-3nSSizT4.js} +1 -1
  24. package/dist/{three-mesh-ui-LQ44s0AL.min.js → three-mesh-ui-CIez6qJQ.min.js} +1 -1
  25. package/dist/{three-mesh-ui-DpATDXwU.umd.cjs → three-mesh-ui-zsOOA5Pq.umd.cjs} +1 -1
  26. package/dist/vendor-BiJQtqow.min.js +1116 -0
  27. package/dist/{vendor-D0zoswDa.js → vendor-C_oHRUjX.js} +2686 -2663
  28. package/dist/{vendor-UCpFAwt1.umd.cjs → vendor-DN-NsXVB.umd.cjs} +30 -30
  29. package/lib/engine/codegen/register_types.js +0 -2
  30. package/lib/engine/codegen/register_types.js.map +1 -1
  31. package/lib/engine/engine_license.js +3 -9
  32. package/lib/engine/engine_license.js.map +1 -1
  33. package/lib/engine/engine_physics_rapier.js +1 -1
  34. package/lib/engine/engine_physics_rapier.js.map +1 -1
  35. package/lib/engine/extensions/extensions.d.ts +29 -7
  36. package/lib/engine/extensions/extensions.js.map +1 -1
  37. package/lib/engine/webcomponents/needle menu/needle-menu.js +4 -5
  38. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  39. package/lib/engine/webcomponents/needle-engine.js +1 -1
  40. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  41. package/lib/engine-components/AlignmentConstraint.d.ts +1 -1
  42. package/lib/engine-components/AlignmentConstraint.js +1 -1
  43. package/lib/engine-components/Animation.d.ts +1 -1
  44. package/lib/engine-components/Animation.js +1 -1
  45. package/lib/engine-components/Animator.d.ts +1 -1
  46. package/lib/engine-components/Animator.js +1 -1
  47. package/lib/engine-components/AudioListener.d.ts +1 -1
  48. package/lib/engine-components/AudioListener.js +1 -1
  49. package/lib/engine-components/AudioSource.d.ts +1 -1
  50. package/lib/engine-components/AudioSource.js +1 -1
  51. package/lib/engine-components/Camera.d.ts +1 -1
  52. package/lib/engine-components/Camera.js +1 -1
  53. package/lib/engine-components/CharacterController.d.ts +6 -2
  54. package/lib/engine-components/CharacterController.js +6 -2
  55. package/lib/engine-components/CharacterController.js.map +1 -1
  56. package/lib/engine-components/Collider.d.ts +1 -1
  57. package/lib/engine-components/Collider.js.map +1 -1
  58. package/lib/engine-components/Joints.d.ts +14 -0
  59. package/lib/engine-components/Joints.js +14 -0
  60. package/lib/engine-components/Joints.js.map +1 -1
  61. package/lib/engine-components/LookAtConstraint.d.ts +1 -1
  62. package/lib/engine-components/LookAtConstraint.js +1 -1
  63. package/lib/engine-components/OrbitControls.d.ts +1 -1
  64. package/lib/engine-components/OrbitControls.js +1 -1
  65. package/lib/engine-components/Renderer.d.ts +6 -0
  66. package/lib/engine-components/Renderer.js +6 -0
  67. package/lib/engine-components/Renderer.js.map +1 -1
  68. package/lib/engine-components/RendererInstancing.js +5 -3
  69. package/lib/engine-components/RendererInstancing.js.map +1 -1
  70. package/lib/engine-components/SceneSwitcher.js +18 -14
  71. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  72. package/lib/engine-components/SpriteRenderer.d.ts +2 -1
  73. package/lib/engine-components/SpriteRenderer.js +2 -1
  74. package/lib/engine-components/SpriteRenderer.js.map +1 -1
  75. package/lib/engine-components/api.d.ts +1 -0
  76. package/lib/engine-components/api.js +1 -0
  77. package/lib/engine-components/api.js.map +1 -1
  78. package/lib/engine-components/codegen/components.d.ts +0 -1
  79. package/lib/engine-components/codegen/components.js +0 -1
  80. package/lib/engine-components/codegen/components.js.map +1 -1
  81. package/lib/engine-components/timeline/SignalAsset.d.ts +1 -1
  82. package/lib/engine-components/timeline/SignalAsset.js +1 -1
  83. package/lib/engine-components/ui/Raycaster.d.ts +3 -2
  84. package/lib/engine-components/ui/Raycaster.js +3 -2
  85. package/lib/engine-components/ui/Raycaster.js.map +1 -1
  86. package/lib/engine-components/ui/RectTransform.d.ts +6 -0
  87. package/lib/engine-components/ui/RectTransform.js +6 -0
  88. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  89. package/lib/engine-components/utils/LookAt.d.ts +2 -1
  90. package/lib/engine-components/utils/LookAt.js +2 -1
  91. package/lib/engine-components/utils/LookAt.js.map +1 -1
  92. package/lib/engine-components/web/CursorFollow.d.ts +1 -1
  93. package/lib/engine-components/web/CursorFollow.js +1 -1
  94. package/lib/engine-components/web/HoverAnimation.d.ts +1 -1
  95. package/lib/engine-components/web/HoverAnimation.js +1 -1
  96. package/lib/engine-components/web/ViewBox.d.ts +1 -1
  97. package/lib/engine-components/web/ViewBox.js +1 -1
  98. package/package.json +2 -2
  99. package/src/engine/codegen/register_types.ts +0 -2
  100. package/src/engine/engine_license.ts +3 -8
  101. package/src/engine/engine_physics_rapier.ts +1 -1
  102. package/src/engine/extensions/extensions.ts +30 -6
  103. package/src/engine/webcomponents/needle menu/needle-menu.ts +4 -5
  104. package/src/engine/webcomponents/needle-engine.ts +2 -2
  105. package/src/engine-components/AlignmentConstraint.ts +1 -1
  106. package/src/engine-components/Animation.ts +1 -1
  107. package/src/engine-components/Animator.ts +1 -1
  108. package/src/engine-components/AudioListener.ts +1 -1
  109. package/src/engine-components/AudioSource.ts +1 -1
  110. package/src/engine-components/Camera.ts +1 -1
  111. package/src/engine-components/CharacterController.ts +6 -2
  112. package/src/engine-components/Collider.ts +1 -1
  113. package/src/engine-components/Joints.ts +14 -0
  114. package/src/engine-components/LookAtConstraint.ts +1 -1
  115. package/src/engine-components/OrbitControls.ts +1 -1
  116. package/src/engine-components/Renderer.ts +6 -0
  117. package/src/engine-components/RendererInstancing.ts +6 -3
  118. package/src/engine-components/SceneSwitcher.ts +17 -17
  119. package/src/engine-components/SpriteRenderer.ts +2 -1
  120. package/src/engine-components/api.ts +2 -1
  121. package/src/engine-components/codegen/components.ts +0 -1
  122. package/src/engine-components/timeline/SignalAsset.ts +1 -1
  123. package/src/engine-components/ui/Raycaster.ts +3 -2
  124. package/src/engine-components/ui/RectTransform.ts +6 -0
  125. package/src/engine-components/utils/LookAt.ts +2 -1
  126. package/src/engine-components/web/CursorFollow.ts +1 -1
  127. package/src/engine-components/web/HoverAnimation.ts +1 -1
  128. package/src/engine-components/web/ViewBox.ts +1 -1
  129. package/dist/vendor-BKGa4GE0.min.js +0 -1116
@@ -0,0 +1,1116 @@
1
+ import{PlaneGeometry as Ko,ShaderChunk as Jl,Object3D as Qo,Layers as ar,MeshBasicMaterial as $o,DoubleSide as fs,AdditiveBlending as ea,InstancedBufferAttribute as fn,DynamicDrawUsage as Qe,InstancedBufferGeometry as Gl,Uniform$1 as Pt,ShaderMaterial as ms,BufferGeometry as $n,BufferAttribute as ut,Mesh as ys,MeshStandardMaterial as Wl,MeshPhysicalMaterial as Hl,Triangle as mn,Vector3 as q,Line3 as qt,Plane as ta,Vector2 as nn,Matrix4 as kt,Box3 as zt,BackSide as ql,REVISION as na,FrontSide as ia,Sphere as Xl,BatchedMesh as Yl,Ray as Zl,Matrix3 as Kl,Vector4 as gs,SkinnedMesh as Ql,InterpolateDiscrete as $l,InterpolateLinear as ra,AnimationClip as eu,QuaternionKeyframeTrack as tu,ColorKeyframeTrack as nu,VectorKeyframeTrack as iu,BooleanKeyframeTrack as ru,NumberKeyframeTrack as su,PropertyBinding as sa}from"./three-W7zWTcfP.min.js";const Ae={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function oa(r){const e=await fetch(r);if(e.ok)return e.json();throw new Error(e.statusText)}async function ou(r){return await oa(`${r}/profilesList.json`)}async function au(r,e,t=null,n=!0){if(!r)throw new Error("No xrInputSource supplied");const i=await ou(e);let s;if(r.profiles.some(c=>{const l=i[c];return l&&(s={profileId:c,profilePath:`${e}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!t)throw new Error("No matching profile name found");const c=i[t];if(!c)throw new Error(`No matching profile name found and default profile "${t}" missing.`);s={profileId:t,profilePath:`${e}/${c.path}`,deprecated:!!c.deprecated}}const a=await oa(s.profilePath);let o;if(n){let c;if(r.handedness==="any"?c=a.layouts[Object.keys(a.layouts)[0]]:c=a.layouts[r.handedness],!c)throw new Error(`No matching handedness, ${r.handedness}, in profile ${s.profileId}`);c.assetPath&&(o=s.profilePath.replace("profile.json",c.assetPath))}return{profile:a,assetPath:o}}const cu={xAxis:0,yAxis:0,button:0,state:Ae.ComponentState.DEFAULT};function lu(r=0,e=0){let t=r,n=e;if(Math.sqrt(r*r+e*e)>1){const i=Math.atan2(e,r);t=Math.cos(i),n=Math.sin(i)}return{normalizedXAxis:t*.5+.5,normalizedYAxis:n*.5+.5}}class uu{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Ae.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(cu)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:s,normalizedYAxis:a}=lu(e,t);switch(this.componentProperty){case Ae.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?s:.5;break;case Ae.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case Ae.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case Ae.ComponentProperty.STATE:this.valueNodeProperty===Ae.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(i):this.value=this.states.includes(i)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class hu{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(n=>{const i=new uu(t.visualResponses[n]);this.visualResponses[n]=i}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Ae.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=Ae.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){const t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Ae.ComponentState.PRESSED:(t.touched||this.values.button>Ae.ButtonTouchThreshold)&&(this.values.state=Ae.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Ae.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Ae.AxisTouchThreshold&&(this.values.state=Ae.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Ae.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Ae.AxisTouchThreshold&&(this.values.state=Ae.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(t=>{t.updateFromComponent(this.values)})}}class du{constructor(e,t,n){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No profile supplied");this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(i=>{const s=this.layoutDescription.components[i];this.components[i]=new hu(i,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}}const vs=2,Nt=4,Xt=4,aa=4,rn=new Int32Array(2),ca=new Float32Array(rn.buffer),la=new Float64Array(rn.buffer),cr=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;class en{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?en.ZERO:new en(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}}en.ZERO=new en(0,0);var Ss;(function(r){r[r.UTF8_BYTES=1]="UTF8_BYTES",r[r.UTF16_STRING=2]="UTF16_STRING"})(Ss||(Ss={}));class wi{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new wi(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new en(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new en(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return rn[0]=this.readInt32(e),ca[0]}readFloat64(e){return rn[cr?0:1]=this.readInt32(e),rn[cr?1:0]=this.readInt32(e+4),la[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){ca[0]=t,this.writeInt32(e,rn[0])}writeFloat64(e,t){la[0]=t,this.writeInt32(e,rn[cr?0:1]),this.writeInt32(e+4,rn[cr?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+Nt+Xt)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<Xt;t++)e+=String.fromCharCode(this.readInt8(this.position_+Nt+t));return e}__offset(e,t){const n=e-this.readInt32(e);return t<this.readInt16(n)?this.readInt16(n+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);const n=this.readInt32(e);let i="",s=0;if(e+=Nt,t===Ss.UTF8_BYTES)return this.bytes_.subarray(e,e+n);for(;s<n;){let a;const o=this.readUint8(e+s++);if(o<192)a=o;else{const c=this.readUint8(e+s++);if(o<224)a=(o&31)<<6|c&63;else{const l=this.readUint8(e+s++);if(o<240)a=(o&15)<<12|(c&63)<<6|l&63;else{const u=this.readUint8(e+s++);a=(o&7)<<18|(c&63)<<12|(l&63)<<6|u&63}}}a<65536?i+=String.fromCharCode(a):(a-=65536,i+=String.fromCharCode((a>>10)+55296,(a&1023)+56320))}return i}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+Nt}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=Xt)throw new Error("FlatBuffers: file identifier must be length "+Xt);for(let t=0;t<Xt;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+Nt+t))return!1;return!0}createLong(e,t){return en.create(e,t)}createScalarList(e,t){const n=[];for(let i=0;i<t;++i)e(i)!==null&&n.push(e(i));return n}createObjList(e,t){const n=[];for(let i=0;i<t;++i){const s=e(i);s!==null&&n.push(s.unpack())}return n}}class Co{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=wi.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);const n=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<n+e+t;){const i=this.bb.capacity();this.bb=Co.growByteBuffer(this.bb),this.space+=this.bb.capacity()-i}this.pad(n)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,n){(this.force_defaults||t!=n)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,n){(this.force_defaults||t!=n)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,n){(this.force_defaults||t!=n)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,n){(this.force_defaults||!t.equals(n))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,n){(this.force_defaults||t!=n)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,n){t!=n&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){const t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");const n=t<<1,i=wi.allocate(n);return i.setPosition(n-t),i.bytes().set(e.bytes(),n-t),i}addOffset(e){this.prep(Nt,0),this.writeInt32(this.offset()-e+Nt)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);const e=this.offset();let t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);const n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);const i=2;this.addInt16(e-this.object_start);const s=(n+i)*vs;this.addInt16(s);let a=0;const o=this.space;e:for(t=0;t<this.vtables.length;t++){const c=this.bb.capacity()-this.vtables[t];if(s==this.bb.readInt16(c)){for(let l=vs;l<s;l+=vs)if(this.bb.readInt16(o+l)!=this.bb.readInt16(c+l))continue e;a=this.vtables[t];break}}return a?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,a-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,n){const i=n?aa:0;if(t){const s=t;if(this.prep(this.minalign,Nt+Xt+i),s.length!=Xt)throw new Error("FlatBuffers: file identifier must be length "+Xt);for(let a=Xt-1;a>=0;a--)this.writeInt8(s.charCodeAt(a))}this.prep(this.minalign,Nt+i),this.addOffset(e),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){const n=this.bb.capacity()-e,i=n-this.bb.readInt32(n);if(this.bb.readInt16(i+t)==0)throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(Nt,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);const t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n<e.length;){let i;const s=e.charCodeAt(n++);if(s<55296||s>=56320)i=s;else{const a=e.charCodeAt(n++);i=(s<<10)+a+-56613888}i<128?t.push(i):(i<2048?t.push(i>>6&31|192):(i<65536?t.push(i>>12&15|224):t.push(i>>18&7|240,i>>12&63|128),t.push(i>>6&63|128)),t.push(i&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let n=0,i=this.space,s=this.bb.bytes();n<t.length;n++)s[i++]=t[n];return this.endVector()}createLong(e,t){return en.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){const t=[];for(let n=0;n<e.length;++n){const i=e[n];if(i!==null)t.push(this.createObjectOffset(i));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}}function lr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ua={exports:{}},ha;function da(){return ha||(ha=1,function(r){var e={};e.useBlobBuilder=function(){try{return new Blob([]),!1}catch{return!0}}(),e.useArrayBufferView=!e.useBlobBuilder&&function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}}(),r.exports.binaryFeatures=e;var t=r.exports.BlobBuilder;typeof window<"u"&&(t=r.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function n(){this._pieces=[],this._parts=[]}n.prototype.append=function(i){typeof i=="number"?this._pieces.push(i):(this.flush(),this._parts.push(i))},n.prototype.flush=function(){if(this._pieces.length>0){var i=new Uint8Array(this._pieces);e.useArrayBufferView||(i=i.buffer),this._parts.push(i),this._pieces=[]}},n.prototype.getBuffer=function(){if(this.flush(),e.useBlobBuilder){for(var i=new t,s=0,a=this._parts.length;s<a;s++)i.append(this._parts[s]);return i.getBlob()}else return new Blob(this._parts)},r.exports.BufferBuilder=n}(ua)),ua.exports}var bs,pa;function pu(){if(pa)return bs;pa=1;var r=da().BufferBuilder,e=da().binaryFeatures,t={unpack:function(o){var c=new n(o);return c.unpack()},pack:function(o){var c=new i;c.pack(o);var l=c.getBuffer();return l}};bs=t;function n(o){this.index=0,this.dataBuffer=o,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}n.prototype.unpack=function(){var o=this.unpack_uint8();if(o<128)return o;if((o^224)<32)return(o^224)-32;var c;if((c=o^160)<=15)return this.unpack_raw(c);if((c=o^176)<=15)return this.unpack_string(c);if((c=o^144)<=15)return this.unpack_array(c);if((c=o^128)<=15)return this.unpack_map(c);switch(o){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return c=this.unpack_uint16(),this.unpack_string(c);case 217:return c=this.unpack_uint32(),this.unpack_string(c);case 218:return c=this.unpack_uint16(),this.unpack_raw(c);case 219:return c=this.unpack_uint32(),this.unpack_raw(c);case 220:return c=this.unpack_uint16(),this.unpack_array(c);case 221:return c=this.unpack_uint32(),this.unpack_array(c);case 222:return c=this.unpack_uint16(),this.unpack_map(c);case 223:return c=this.unpack_uint32(),this.unpack_map(c)}},n.prototype.unpack_uint8=function(){var o=this.dataView[this.index]&255;return this.index++,o},n.prototype.unpack_uint16=function(){var o=this.read(2),c=(o[0]&255)*256+(o[1]&255);return this.index+=2,c},n.prototype.unpack_uint32=function(){var o=this.read(4),c=((o[0]*256+o[1])*256+o[2])*256+o[3];return this.index+=4,c},n.prototype.unpack_uint64=function(){var o=this.read(8),c=((((((o[0]*256+o[1])*256+o[2])*256+o[3])*256+o[4])*256+o[5])*256+o[6])*256+o[7];return this.index+=8,c},n.prototype.unpack_int8=function(){var o=this.unpack_uint8();return o<128?o:o-256},n.prototype.unpack_int16=function(){var o=this.unpack_uint16();return o<32768?o:o-65536},n.prototype.unpack_int32=function(){var o=this.unpack_uint32();return o<Math.pow(2,31)?o:o-Math.pow(2,32)},n.prototype.unpack_int64=function(){var o=this.unpack_uint64();return o<Math.pow(2,63)?o:o-Math.pow(2,64)},n.prototype.unpack_raw=function(o){if(this.length<this.index+o)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+o+" "+this.length);var c=this.dataBuffer.slice(this.index,this.index+o);return this.index+=o,c},n.prototype.unpack_string=function(o){for(var c=this.read(o),l=0,u="",p,m;l<o;)p=c[l],p<128?(u+=String.fromCharCode(p),l++):(p^192)<32?(m=(p^192)<<6|c[l+1]&63,u+=String.fromCharCode(m),l+=2):(m=(p&15)<<12|(c[l+1]&63)<<6|c[l+2]&63,u+=String.fromCharCode(m),l+=3);return this.index+=o,u},n.prototype.unpack_array=function(o){for(var c=new Array(o),l=0;l<o;l++)c[l]=this.unpack();return c},n.prototype.unpack_map=function(o){for(var c={},l=0;l<o;l++){var u=this.unpack(),p=this.unpack();c[u]=p}return c},n.prototype.unpack_float=function(){var o=this.unpack_uint32(),c=o>>31,l=(o>>23&255)-127,u=o&8388607|8388608;return(c===0?1:-1)*u*Math.pow(2,l-23)},n.prototype.unpack_double=function(){var o=this.unpack_uint32(),c=this.unpack_uint32(),l=o>>31,u=(o>>20&2047)-1023,p=o&1048575|1048576,m=p*Math.pow(2,u-20)+c*Math.pow(2,u-52);return(l===0?1:-1)*m},n.prototype.read=function(o){var c=this.index;if(c+o<=this.length)return this.dataView.subarray(c,c+o);throw new Error("BinaryPackFailure: read index out of range")};function i(){this.bufferBuilder=new r}i.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},i.prototype.pack=function(o){var c=typeof o;if(c==="string")this.pack_string(o);else if(c==="number")Math.floor(o)===o?this.pack_integer(o):this.pack_double(o);else if(c==="boolean")o===!0?this.bufferBuilder.append(195):o===!1&&this.bufferBuilder.append(194);else if(c==="undefined")this.bufferBuilder.append(192);else if(c==="object")if(o===null)this.bufferBuilder.append(192);else{var l=o.constructor;if(l==Array)this.pack_array(o);else if(l==Blob||l==File||o instanceof Blob||o instanceof File)this.pack_bin(o);else if(l==ArrayBuffer)e.useArrayBufferView?this.pack_bin(new Uint8Array(o)):this.pack_bin(o);else if("BYTES_PER_ELEMENT"in o)e.useArrayBufferView?this.pack_bin(new Uint8Array(o.buffer)):this.pack_bin(o.buffer);else if(l==Object||l.toString().startsWith("class"))this.pack_object(o);else if(l==Date)this.pack_string(o.toString());else if(typeof o.toBinaryPack=="function")this.bufferBuilder.append(o.toBinaryPack());else throw new Error('Type "'+l.toString()+'" not yet supported')}else throw new Error('Type "'+c+'" not yet supported');this.bufferBuilder.flush()},i.prototype.pack_bin=function(o){var c=o.length||o.byteLength||o.size;if(c<=15)this.pack_uint8(160+c);else if(c<=65535)this.bufferBuilder.append(218),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_string=function(o){var c=a(o);if(c<=15)this.pack_uint8(176+c);else if(c<=65535)this.bufferBuilder.append(216),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_array=function(o){var c=o.length;if(c<=15)this.pack_uint8(144+c);else if(c<=65535)this.bufferBuilder.append(220),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(c);else throw new Error("Invalid length");for(var l=0;l<c;l++)this.pack(o[l])},i.prototype.pack_integer=function(o){if(o>=-32&&o<=127)this.bufferBuilder.append(o&255);else if(o>=0&&o<=255)this.bufferBuilder.append(204),this.pack_uint8(o);else if(o>=-128&&o<=127)this.bufferBuilder.append(208),this.pack_int8(o);else if(o>=0&&o<=65535)this.bufferBuilder.append(205),this.pack_uint16(o);else if(o>=-32768&&o<=32767)this.bufferBuilder.append(209),this.pack_int16(o);else if(o>=0&&o<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(o);else if(o>=-2147483648&&o<=2147483647)this.bufferBuilder.append(210),this.pack_int32(o);else if(o>=-9223372036854776e3&&o<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(o);else if(o>=0&&o<=18446744073709552e3)this.bufferBuilder.append(207),this.pack_uint64(o);else throw new Error("Invalid integer")},i.prototype.pack_double=function(o){var c=0;o<0&&(c=1,o=-o);var l=Math.floor(Math.log(o)/Math.LN2),u=o/Math.pow(2,l)-1,p=Math.floor(u*Math.pow(2,52)),m=Math.pow(2,32),f=c<<31|l+1023<<20|p/m&1048575,x=p%m;this.bufferBuilder.append(203),this.pack_int32(f),this.pack_int32(x)},i.prototype.pack_object=function(o){var c=Object.keys(o),l=c.length;if(l<=15)this.pack_uint8(128+l);else if(l<=65535)this.bufferBuilder.append(222),this.pack_uint16(l);else if(l<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(l);else throw new Error("Invalid length");for(var u in o)o.hasOwnProperty(u)&&(this.pack(u),this.pack(o[u]))},i.prototype.pack_uint8=function(o){this.bufferBuilder.append(o)},i.prototype.pack_uint16=function(o){this.bufferBuilder.append(o>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_uint32=function(o){var c=o&4294967295;this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255)},i.prototype.pack_uint64=function(o){var c=o/Math.pow(2,32),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)},i.prototype.pack_int8=function(o){this.bufferBuilder.append(o&255)},i.prototype.pack_int16=function(o){this.bufferBuilder.append((o&65280)>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int32=function(o){this.bufferBuilder.append(o>>>24&255),this.bufferBuilder.append((o&16711680)>>>16),this.bufferBuilder.append((o&65280)>>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int64=function(o){var c=Math.floor(o/Math.pow(2,32)),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)};function s(o){var c=o.charCodeAt(0);return c<=2047?"00":c<=65535?"000":c<=2097151?"0000":c<=67108863?"00000":"000000"}function a(o){return o.length>600?new Blob([o]).size:o.replace(/[^\u0000-\u007F]/g,s).length}return bs}var fu=pu();const fa=lr(fu);let ma=!0,ya=!0;function ei(r,e,t){const n=r.match(e);return n&&n.length>=t&&parseInt(n[t],10)}function zn(r,e,t){if(!r.RTCPeerConnection)return;const n=r.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(a,o){if(a!==e)return i.apply(this,arguments);const c=l=>{const u=t(l);u&&(o.handleEvent?o.handleEvent(u):o(u))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),i.apply(this,[a,c])};const s=n.removeEventListener;n.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(o))return s.apply(this,arguments);const c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,c])},Object.defineProperty(n,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function mu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ma=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function yu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ya=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function xs(){if(typeof window=="object"){if(ma)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function ur(r,e){ya&&console.warn(r+" is deprecated, please use "+e+" instead.")}function gu(r){const e={browser:null,version:null};if(typeof r>"u"||!r.navigator)return e.browser="Not a browser.",e;const{navigator:t}=r;if(t.mozGetUserMedia)e.browser="firefox",e.version=ei(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection&&!r.RTCIceGatherer)e.browser="chrome",e.version=ei(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))e.browser="edge",e.version=ei(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=ei(t.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return e.browser="Not a supported browser.",e;return e}function ga(r){return Object.prototype.toString.call(r)==="[object Object]"}function va(r){return ga(r)?Object.keys(r).reduce(function(e,t){const n=ga(r[t]),i=n?va(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):r}function ws(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?ws(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(i=>{ws(r,r.get(i),t)})}))}function Sa(r,e,t){const n=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;const s=[];return r.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{r.forEach(o=>{o.type===n&&o.trackId===a.id&&ws(r,o,i)})}),i}const ba=xs;function xa(r,e){const t=r&&r.navigator;if(!t.mediaDevices)return;const n=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const c={};return Object.keys(o).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;const u=typeof o[l]=="object"?o[l]:{ideal:o[l]};u.exact!==void 0&&typeof u.exact=="number"&&(u.min=u.max=u.exact);const p=function(m,f){return m?m+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(u.ideal!==void 0){c.optional=c.optional||[];let m={};typeof u.ideal=="number"?(m[p("min",l)]=u.ideal,c.optional.push(m),m={},m[p("max",l)]=u.ideal,c.optional.push(m)):(m[p("",l)]=u.ideal,c.optional.push(m))}u.exact!==void 0&&typeof u.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[p("",l)]=u.exact):["min","max"].forEach(m=>{u[m]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[p(m,l)]=u[m])})}),o.advanced&&(c.optional=(c.optional||[]).concat(o.advanced)),c},i=function(o,c){if(e.version>=61)return c(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const l=function(u,p,m){p in u&&!(m in u)&&(u[m]=u[p],delete u[p])};o=JSON.parse(JSON.stringify(o)),l(o.audio,"autoGainControl","googAutoGainControl"),l(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=n(o.audio)}if(o&&typeof o.video=="object"){let l=o.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});const u=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!u)){delete o.video.facingMode;let p;if(l.exact==="environment"||l.ideal==="environment"?p=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(p=["front"]),p)return t.mediaDevices.enumerateDevices().then(m=>{m=m.filter(x=>x.kind==="videoinput");let f=m.find(x=>p.some(_=>x.label.toLowerCase().includes(_)));return!f&&m.length&&p.includes("back")&&(f=m[m.length-1]),f&&(o.video.deviceId=l.exact?{exact:f.deviceId}:{ideal:f.deviceId}),o.video=n(o.video),ba("chrome: "+JSON.stringify(o)),c(o)})}o.video=n(o.video)}return ba("chrome: "+JSON.stringify(o)),c(o)},s=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,c,l){i(o,u=>{t.webkitGetUserMedia(u,c,p=>{l&&l(s(p))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(c){return i(c,l=>o(l).then(u=>{if(l.audio&&!u.getAudioTracks().length||l.video&&!u.getVideoTracks().length)throw u.getTracks().forEach(p=>{p.stop()}),new DOMException("","NotFoundError");return u},u=>Promise.reject(s(u))))})}}function vu(r,e){if(!(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices)&&r.navigator.mediaDevices){if(typeof e!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}r.navigator.mediaDevices.getDisplayMedia=function(t){return e(t).then(n=>{const i=t.video&&t.video.width,s=t.video&&t.video.height,a=t.video&&t.video.frameRate;return t.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:n,maxFrameRate:a||3}},i&&(t.video.mandatory.maxWidth=i),s&&(t.video.mandatory.maxHeight=s),r.navigator.mediaDevices.getUserMedia(t)})}}}function wa(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function _a(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("ontrack"in r.RTCPeerConnection.prototype)){Object.defineProperty(r.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",n=>{let i;r.RTCPeerConnection.prototype.getReceivers?i=this.getReceivers().find(a=>a.track&&a.track.id===n.track.id):i={track:n.track};const s=new Event("track");s.track=n.track,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)}),t.stream.getTracks().forEach(n=>{let i;r.RTCPeerConnection.prototype.getReceivers?i=this.getReceivers().find(a=>a.track&&a.track.id===n.id):i={track:n};const s=new Event("track");s.track=n,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else zn(r,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function Ta(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("getSenders"in r.RTCPeerConnection.prototype)&&"createDTMFSender"in r.RTCPeerConnection.prototype){const e=function(i,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=i.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:i}};if(!r.RTCPeerConnection.prototype.getSenders){r.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,o){let c=i.apply(this,arguments);return c||(c=e(this,a),this._senders.push(c)),c};const s=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);const o=this._senders.indexOf(a);o!==-1&&this._senders.splice(o,1)}}const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(i){this._senders=this._senders||[],t.apply(this,[i]),i.getTracks().forEach(s=>{this._senders.push(e(this,s))})};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(i){this._senders=this._senders||[],n.apply(this,[i]),i.getTracks().forEach(s=>{const a=this._senders.find(o=>o.track===s);a&&this._senders.splice(this._senders.indexOf(a),1)})}}else if(typeof r=="object"&&r.RTCPeerConnection&&"getSenders"in r.RTCPeerConnection.prototype&&"createDTMFSender"in r.RTCPeerConnection.prototype&&r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)){const e=r.RTCPeerConnection.prototype.getSenders;r.RTCPeerConnection.prototype.getSenders=function(){const t=e.apply(this,[]);return t.forEach(n=>n._pc=this),t},Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Ma(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[t,n,i]=arguments;if(arguments.length>0&&typeof t=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof t!="function"))return e.apply(this,[]);const s=function(o){const c={};return o.result().forEach(l=>{const u={id:l.id,timestamp:l.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[l.type]||l.type};l.names().forEach(p=>{u[p]=l.stat(p)}),c[u.id]=u}),c},a=function(o){return new Map(Object.keys(o).map(c=>[c,o[c]]))};if(arguments.length>=2){const o=function(c){n(a(s(c)))};return e.apply(this,[o,t])}return new Promise((o,c)=>{e.apply(this,[function(l){o(a(s(l)))},c])}).then(n,i)}}function Ca(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&r.RTCRtpReceiver))return;if(!("getStats"in r.RTCRtpSender.prototype)){const t=r.RTCPeerConnection.prototype.getSenders;t&&(r.RTCPeerConnection.prototype.getSenders=function(){const i=t.apply(this,[]);return i.forEach(s=>s._pc=this),i});const n=r.RTCPeerConnection.prototype.addTrack;n&&(r.RTCPeerConnection.prototype.addTrack=function(){const i=n.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){const i=this;return this._pc.getStats().then(s=>Sa(s,i.track,!0))}}if(!("getStats"in r.RTCRtpReceiver.prototype)){const t=r.RTCPeerConnection.prototype.getReceivers;t&&(r.RTCPeerConnection.prototype.getReceivers=function(){const n=t.apply(this,[]);return n.forEach(i=>i._pc=this),n}),zn(r,"track",n=>(n.receiver._pc=n.srcElement,n)),r.RTCRtpReceiver.prototype.getStats=function(){const n=this;return this._pc.getStats().then(i=>Sa(i,n.track,!1))}}if(!("getStats"in r.RTCRtpSender.prototype&&"getStats"in r.RTCRtpReceiver.prototype))return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof r.MediaStreamTrack){const t=arguments[0];let n,i,s;return this.getSenders().forEach(a=>{a.track===t&&(n?s=!0:n=a)}),this.getReceivers().forEach(a=>(a.track===t&&(i?s=!0:i=a),a.track===t)),s||n&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):n?n.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function Ea(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(s=>this._shimmedLocalStreams[s][0])};const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(s,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const o=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(o)===-1&&this._shimmedLocalStreams[a.id].push(o):this._shimmedLocalStreams[a.id]=[a,o],o};const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(s){this._shimmedLocalStreams=this._shimmedLocalStreams||{},s.getTracks().forEach(c=>{if(this.getSenders().find(l=>l.track===c))throw new DOMException("Track already exists.","InvalidAccessError")});const a=this.getSenders();t.apply(this,arguments);const o=this.getSenders().filter(c=>a.indexOf(c)===-1);this._shimmedLocalStreams[s.id]=[s].concat(o)};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[s.id],n.apply(this,arguments)};const i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},s&&Object.keys(this._shimmedLocalStreams).forEach(a=>{const o=this._shimmedLocalStreams[a].indexOf(s);o!==-1&&this._shimmedLocalStreams[a].splice(o,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),i.apply(this,arguments)}}function Pa(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Ea(r);const t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){const l=t.apply(this);return this._reverseStreams=this._reverseStreams||{},l.map(u=>this._reverseStreams[u.id])};const n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(l){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},l.getTracks().forEach(u=>{if(this.getSenders().find(p=>p.track===u))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[l.id]){const u=new r.MediaStream(l.getTracks());this._streams[l.id]=u,this._reverseStreams[u.id]=l,l=u}n.apply(this,[l])};const i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(l){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[l.id]||l]),delete this._reverseStreams[this._streams[l.id]?this._streams[l.id].id:l.id],delete this._streams[l.id]},r.RTCPeerConnection.prototype.addTrack=function(l,u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const p=[].slice.call(arguments,1);if(p.length!==1||!p[0].getTracks().find(f=>f===l))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(f=>f.track===l))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const m=this._streams[u.id];if(m)m.addTrack(l),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const f=new r.MediaStream([l]);this._streams[u.id]=f,this._reverseStreams[f.id]=u,this.addStream(f)}return this.getSenders().find(f=>f.track===l)};function s(l,u){let p=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const f=l._reverseStreams[m],x=l._streams[f.id];p=p.replace(new RegExp(x.id,"g"),f.id)}),new RTCSessionDescription({type:u.type,sdp:p})}function a(l,u){let p=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const f=l._reverseStreams[m],x=l._streams[f.id];p=p.replace(new RegExp(f.id,"g"),x.id)}),new RTCSessionDescription({type:u.type,sdp:p})}["createOffer","createAnswer"].forEach(function(l){const u=r.RTCPeerConnection.prototype[l],p={[l](){const m=arguments;return arguments.length&&typeof arguments[0]=="function"?u.apply(this,[f=>{const x=s(this,f);m[0].apply(null,[x])},f=>{m[1]&&m[1].apply(null,f)},arguments[2]]):u.apply(this,arguments).then(f=>s(this,f))}};r.RTCPeerConnection.prototype[l]=p[l]});const o=r.RTCPeerConnection.prototype.setLocalDescription;r.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(r.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(r.RTCPeerConnection.prototype,"localDescription",{get(){const l=c.get.apply(this);return l.type===""?l:s(this,l)}}),r.RTCPeerConnection.prototype.removeTrack=function(l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!l._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(l._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let u;Object.keys(this._streams).forEach(p=>{this._streams[p].getTracks().find(m=>l.track===m)&&(u=this._streams[p])}),u&&(u.getTracks().length===1?this.removeStream(this._reverseStreams[u.id]):u.removeTrack(l.track),this.dispatchEvent(new Event("negotiationneeded")))}}function _s(r,e){!r.RTCPeerConnection&&r.webkitRTCPeerConnection&&(r.RTCPeerConnection=r.webkitRTCPeerConnection),r.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const n=r.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};r.RTCPeerConnection.prototype[t]=i[t]})}function ka(r,e){zn(r,"negotiationneeded",t=>{const n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}const Ra=Object.freeze(Object.defineProperty({__proto__:null,fixNegotiationNeeded:ka,shimAddTrackRemoveTrack:Pa,shimAddTrackRemoveTrackWithNative:Ea,shimGetDisplayMedia:vu,shimGetSendersWithDtmf:Ta,shimGetStats:Ma,shimGetUserMedia:xa,shimMediaStream:wa,shimOnTrack:_a,shimPeerConnection:_s,shimSenderReceiverGetStats:Ca},Symbol.toStringTag,{value:"Module"}));function Su(r,e){let t=!1;return r=JSON.parse(JSON.stringify(r)),r.filter(n=>{if(n&&(n.urls||n.url)){let i=n.urls||n.url;n.url&&!n.urls&&ur("RTCIceServer.url","RTCIceServer.urls");const s=typeof i=="string";return s&&(i=[i]),i=i.filter(a=>{if(a.indexOf("stun:")===0)return!1;const o=a.startsWith("turn")&&!a.startsWith("turn:[")&&a.includes("transport=udp");return o&&!t?(t=!0,!0):o&&!t}),delete n.url,n.urls=s?i[0]:i,!!i.length}})}var Aa={exports:{}},Oa;function Ia(){return Oa||(Oa=1,function(r){var e={};e.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
2
+ `).map(function(n){return n.trim()})},e.splitSections=function(t){var n=t.split(`
3
+ m=`);return n.map(function(i,s){return(s>0?"m="+i:i).trim()+`\r
4
+ `})},e.getDescription=function(t){var n=e.splitSections(t);return n&&n[0]},e.getMediaSections=function(t){var n=e.splitSections(t);return n.shift(),n},e.matchPrefix=function(t,n){return e.splitLines(t).filter(function(i){return i.indexOf(n)===0})},e.parseCandidate=function(t){var n;t.indexOf("a=candidate:")===0?n=t.substring(12).split(" "):n=t.substring(10).split(" ");for(var i={foundation:n[0],component:parseInt(n[1],10),protocol:n[2].toLowerCase(),priority:parseInt(n[3],10),ip:n[4],address:n[4],port:parseInt(n[5],10),type:n[7]},s=8;s<n.length;s+=2)switch(n[s]){case"raddr":i.relatedAddress=n[s+1];break;case"rport":i.relatedPort=parseInt(n[s+1],10);break;case"tcptype":i.tcpType=n[s+1];break;case"ufrag":i.ufrag=n[s+1],i.usernameFragment=n[s+1];break;default:i[n[s]]=n[s+1];break}return i},e.writeCandidate=function(t){var n=[];n.push(t.foundation),n.push(t.component),n.push(t.protocol.toUpperCase()),n.push(t.priority),n.push(t.address||t.ip),n.push(t.port);var i=t.type;return n.push("typ"),n.push(i),i!=="host"&&t.relatedAddress&&t.relatedPort&&(n.push("raddr"),n.push(t.relatedAddress),n.push("rport"),n.push(t.relatedPort)),t.tcpType&&t.protocol.toLowerCase()==="tcp"&&(n.push("tcptype"),n.push(t.tcpType)),(t.usernameFragment||t.ufrag)&&(n.push("ufrag"),n.push(t.usernameFragment||t.ufrag)),"candidate:"+n.join(" ")},e.parseIceOptions=function(t){return t.substr(14).split(" ")},e.parseRtpMap=function(t){var n=t.substr(9).split(" "),i={payloadType:parseInt(n.shift(),10)};return n=n[0].split("/"),i.name=n[0],i.clockRate=parseInt(n[1],10),i.channels=n.length===3?parseInt(n[2],10):1,i.numChannels=i.channels,i},e.writeRtpMap=function(t){var n=t.payloadType;t.preferredPayloadType!==void 0&&(n=t.preferredPayloadType);var i=t.channels||t.numChannels||1;return"a=rtpmap:"+n+" "+t.name+"/"+t.clockRate+(i!==1?"/"+i:"")+`\r
5
+ `},e.parseExtmap=function(t){var n=t.substr(9).split(" ");return{id:parseInt(n[0],10),direction:n[0].indexOf("/")>0?n[0].split("/")[1]:"sendrecv",uri:n[1]}},e.writeExtmap=function(t){return"a=extmap:"+(t.id||t.preferredId)+(t.direction&&t.direction!=="sendrecv"?"/"+t.direction:"")+" "+t.uri+`\r
6
+ `},e.parseFmtp=function(t){for(var n={},i,s=t.substr(t.indexOf(" ")+1).split(";"),a=0;a<s.length;a++)i=s[a].trim().split("="),n[i[0].trim()]=i[1];return n},e.writeFmtp=function(t){var n="",i=t.payloadType;if(t.preferredPayloadType!==void 0&&(i=t.preferredPayloadType),t.parameters&&Object.keys(t.parameters).length){var s=[];Object.keys(t.parameters).forEach(function(a){t.parameters[a]?s.push(a+"="+t.parameters[a]):s.push(a)}),n+="a=fmtp:"+i+" "+s.join(";")+`\r
7
+ `}return n},e.parseRtcpFb=function(t){var n=t.substr(t.indexOf(" ")+1).split(" ");return{type:n.shift(),parameter:n.join(" ")}},e.writeRtcpFb=function(t){var n="",i=t.payloadType;return t.preferredPayloadType!==void 0&&(i=t.preferredPayloadType),t.rtcpFeedback&&t.rtcpFeedback.length&&t.rtcpFeedback.forEach(function(s){n+="a=rtcp-fb:"+i+" "+s.type+(s.parameter&&s.parameter.length?" "+s.parameter:"")+`\r
8
+ `}),n},e.parseSsrcMedia=function(t){var n=t.indexOf(" "),i={ssrc:parseInt(t.substr(7,n-7),10)},s=t.indexOf(":",n);return s>-1?(i.attribute=t.substr(n+1,s-n-1),i.value=t.substr(s+1)):i.attribute=t.substr(n+1),i},e.parseSsrcGroup=function(t){var n=t.substr(13).split(" ");return{semantics:n.shift(),ssrcs:n.map(function(i){return parseInt(i,10)})}},e.getMid=function(t){var n=e.matchPrefix(t,"a=mid:")[0];if(n)return n.substr(6)},e.parseFingerprint=function(t){var n=t.substr(14).split(" ");return{algorithm:n[0].toLowerCase(),value:n[1]}},e.getDtlsParameters=function(t,n){var i=e.matchPrefix(t+n,"a=fingerprint:");return{role:"auto",fingerprints:i.map(e.parseFingerprint)}},e.writeDtlsParameters=function(t,n){var i="a=setup:"+n+`\r
9
+ `;return t.fingerprints.forEach(function(s){i+="a=fingerprint:"+s.algorithm+" "+s.value+`\r
10
+ `}),i},e.parseCryptoLine=function(t){var n=t.substr(9).split(" ");return{tag:parseInt(n[0],10),cryptoSuite:n[1],keyParams:n[2],sessionParams:n.slice(3)}},e.writeCryptoLine=function(t){return"a=crypto:"+t.tag+" "+t.cryptoSuite+" "+(typeof t.keyParams=="object"?e.writeCryptoKeyParams(t.keyParams):t.keyParams)+(t.sessionParams?" "+t.sessionParams.join(" "):"")+`\r
11
+ `},e.parseCryptoKeyParams=function(t){if(t.indexOf("inline:")!==0)return null;var n=t.substr(7).split("|");return{keyMethod:"inline",keySalt:n[0],lifeTime:n[1],mkiValue:n[2]?n[2].split(":")[0]:void 0,mkiLength:n[2]?n[2].split(":")[1]:void 0}},e.writeCryptoKeyParams=function(t){return t.keyMethod+":"+t.keySalt+(t.lifeTime?"|"+t.lifeTime:"")+(t.mkiValue&&t.mkiLength?"|"+t.mkiValue+":"+t.mkiLength:"")},e.getCryptoParameters=function(t,n){var i=e.matchPrefix(t+n,"a=crypto:");return i.map(e.parseCryptoLine)},e.getIceParameters=function(t,n){var i=e.matchPrefix(t+n,"a=ice-ufrag:")[0],s=e.matchPrefix(t+n,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substr(12),password:s.substr(10)}:null},e.writeIceParameters=function(t){return"a=ice-ufrag:"+t.usernameFragment+`\r
12
+ a=ice-pwd:`+t.password+`\r
13
+ `},e.parseRtpParameters=function(t){for(var n={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=e.splitLines(t),s=i[0].split(" "),a=3;a<s.length;a++){var o=s[a],c=e.matchPrefix(t,"a=rtpmap:"+o+" ")[0];if(c){var l=e.parseRtpMap(c),u=e.matchPrefix(t,"a=fmtp:"+o+" ");switch(l.parameters=u.length?e.parseFmtp(u[0]):{},l.rtcpFeedback=e.matchPrefix(t,"a=rtcp-fb:"+o+" ").map(e.parseRtcpFb),n.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":n.fecMechanisms.push(l.name.toUpperCase());break}}}return e.matchPrefix(t,"a=extmap:").forEach(function(p){n.headerExtensions.push(e.parseExtmap(p))}),n},e.writeRtpDescription=function(t,n){var i="";i+="m="+t+" ",i+=n.codecs.length>0?"9":"0",i+=" UDP/TLS/RTP/SAVPF ",i+=n.codecs.map(function(a){return a.preferredPayloadType!==void 0?a.preferredPayloadType:a.payloadType}).join(" ")+`\r
14
+ `,i+=`c=IN IP4 0.0.0.0\r
15
+ `,i+=`a=rtcp:9 IN IP4 0.0.0.0\r
16
+ `,n.codecs.forEach(function(a){i+=e.writeRtpMap(a),i+=e.writeFmtp(a),i+=e.writeRtcpFb(a)});var s=0;return n.codecs.forEach(function(a){a.maxptime>s&&(s=a.maxptime)}),s>0&&(i+="a=maxptime:"+s+`\r
17
+ `),i+=`a=rtcp-mux\r
18
+ `,n.headerExtensions&&n.headerExtensions.forEach(function(a){i+=e.writeExtmap(a)}),i},e.parseRtpEncodingParameters=function(t){var n=[],i=e.parseRtpParameters(t),s=i.fecMechanisms.indexOf("RED")!==-1,a=i.fecMechanisms.indexOf("ULPFEC")!==-1,o=e.matchPrefix(t,"a=ssrc:").map(function(m){return e.parseSsrcMedia(m)}).filter(function(m){return m.attribute==="cname"}),c=o.length>0&&o[0].ssrc,l,u=e.matchPrefix(t,"a=ssrc-group:FID").map(function(m){var f=m.substr(17).split(" ");return f.map(function(x){return parseInt(x,10)})});u.length>0&&u[0].length>1&&u[0][0]===c&&(l=u[0][1]),i.codecs.forEach(function(m){if(m.name.toUpperCase()==="RTX"&&m.parameters.apt){var f={ssrc:c,codecPayloadType:parseInt(m.parameters.apt,10)};c&&l&&(f.rtx={ssrc:l}),n.push(f),s&&(f=JSON.parse(JSON.stringify(f)),f.fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},n.push(f))}}),n.length===0&&c&&n.push({ssrc:c});var p=e.matchPrefix(t,"b=");return p.length&&(p[0].indexOf("b=TIAS:")===0?p=parseInt(p[0].substr(7),10):p[0].indexOf("b=AS:")===0?p=parseInt(p[0].substr(5),10)*1e3*.95-2e3*8:p=void 0,n.forEach(function(m){m.maxBitrate=p})),n},e.parseRtcpParameters=function(t){var n={},i=e.matchPrefix(t,"a=ssrc:").map(function(o){return e.parseSsrcMedia(o)}).filter(function(o){return o.attribute==="cname"})[0];i&&(n.cname=i.value,n.ssrc=i.ssrc);var s=e.matchPrefix(t,"a=rtcp-rsize");n.reducedSize=s.length>0,n.compound=s.length===0;var a=e.matchPrefix(t,"a=rtcp-mux");return n.mux=a.length>0,n},e.parseMsid=function(t){var n,i=e.matchPrefix(t,"a=msid:");if(i.length===1)return n=i[0].substr(7).split(" "),{stream:n[0],track:n[1]};var s=e.matchPrefix(t,"a=ssrc:").map(function(a){return e.parseSsrcMedia(a)}).filter(function(a){return a.attribute==="msid"});if(s.length>0)return n=s[0].value.split(" "),{stream:n[0],track:n[1]}},e.parseSctpDescription=function(t){var n=e.parseMLine(t),i=e.matchPrefix(t,"a=max-message-size:"),s;i.length>0&&(s=parseInt(i[0].substr(19),10)),isNaN(s)&&(s=65536);var a=e.matchPrefix(t,"a=sctp-port:");if(a.length>0)return{port:parseInt(a[0].substr(12),10),protocol:n.fmt,maxMessageSize:s};var o=e.matchPrefix(t,"a=sctpmap:");if(o.length>0){var c=e.matchPrefix(t,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(c[0],10),protocol:c[1],maxMessageSize:s}}},e.writeSctpDescription=function(t,n){var i=[];return t.protocol!=="DTLS/SCTP"?i=["m="+t.kind+" 9 "+t.protocol+" "+n.protocol+`\r
19
+ `,`c=IN IP4 0.0.0.0\r
20
+ `,"a=sctp-port:"+n.port+`\r
21
+ `]:i=["m="+t.kind+" 9 "+t.protocol+" "+n.port+`\r
22
+ `,`c=IN IP4 0.0.0.0\r
23
+ `,"a=sctpmap:"+n.port+" "+n.protocol+` 65535\r
24
+ `],n.maxMessageSize!==void 0&&i.push("a=max-message-size:"+n.maxMessageSize+`\r
25
+ `),i.join("")},e.generateSessionId=function(){return Math.random().toString().substr(2,21)},e.writeSessionBoilerplate=function(t,n,i){var s,a=n!==void 0?n:2;t?s=t:s=e.generateSessionId();var o=i||"thisisadapterortc";return`v=0\r
26
+ o=`+o+" "+s+" "+a+` IN IP4 127.0.0.1\r
27
+ s=-\r
28
+ t=0 0\r
29
+ `},e.writeMediaSection=function(t,n,i,s){var a=e.writeRtpDescription(t.kind,n);if(a+=e.writeIceParameters(t.iceGatherer.getLocalParameters()),a+=e.writeDtlsParameters(t.dtlsTransport.getLocalParameters(),i==="offer"?"actpass":"active"),a+="a=mid:"+t.mid+`\r
30
+ `,t.direction?a+="a="+t.direction+`\r
31
+ `:t.rtpSender&&t.rtpReceiver?a+=`a=sendrecv\r
32
+ `:t.rtpSender?a+=`a=sendonly\r
33
+ `:t.rtpReceiver?a+=`a=recvonly\r
34
+ `:a+=`a=inactive\r
35
+ `,t.rtpSender){var o="msid:"+s.id+" "+t.rtpSender.track.id+`\r
36
+ `;a+="a="+o,a+="a=ssrc:"+t.sendEncodingParameters[0].ssrc+" "+o,t.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+t.sendEncodingParameters[0].rtx.ssrc+" "+o,a+="a=ssrc-group:FID "+t.sendEncodingParameters[0].ssrc+" "+t.sendEncodingParameters[0].rtx.ssrc+`\r
37
+ `)}return a+="a=ssrc:"+t.sendEncodingParameters[0].ssrc+" cname:"+e.localCName+`\r
38
+ `,t.rtpSender&&t.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+t.sendEncodingParameters[0].rtx.ssrc+" cname:"+e.localCName+`\r
39
+ `),a},e.getDirection=function(t,n){for(var i=e.splitLines(t),s=0;s<i.length;s++)switch(i[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[s].substr(2)}return n?e.getDirection(n):"sendrecv"},e.getKind=function(t){var n=e.splitLines(t),i=n[0].split(" ");return i[0].substr(2)},e.isRejected=function(t){return t.split(" ",2)[1]==="0"},e.parseMLine=function(t){var n=e.splitLines(t),i=n[0].substr(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},e.parseOLine=function(t){var n=e.matchPrefix(t,"o=")[0],i=n.substr(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},e.isValidSDP=function(t){if(typeof t!="string"||t.length===0)return!1;for(var n=e.splitLines(t),i=0;i<n.length;i++)if(n[i].length<2||n[i].charAt(1)!=="=")return!1;return!0},r.exports=e}(Aa)),Aa.exports}var Ts,Ba;function bu(){if(Ba)return Ts;Ba=1;var r=Ia();function e(c){return{inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[c.type]||c.type}function t(c,l,u,p,m){var f=r.writeRtpDescription(c.kind,l);if(f+=r.writeIceParameters(c.iceGatherer.getLocalParameters()),f+=r.writeDtlsParameters(c.dtlsTransport.getLocalParameters(),u==="offer"?"actpass":m||"active"),f+="a=mid:"+c.mid+`\r
40
+ `,c.rtpSender&&c.rtpReceiver?f+=`a=sendrecv\r
41
+ `:c.rtpSender?f+=`a=sendonly\r
42
+ `:c.rtpReceiver?f+=`a=recvonly\r
43
+ `:f+=`a=inactive\r
44
+ `,c.rtpSender){var x=c.rtpSender._initialTrackId||c.rtpSender.track.id;c.rtpSender._initialTrackId=x;var _="msid:"+(p?p.id:"-")+" "+x+`\r
45
+ `;f+="a="+_,f+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" "+_,c.sendEncodingParameters[0].rtx&&(f+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" "+_,f+="a=ssrc-group:FID "+c.sendEncodingParameters[0].ssrc+" "+c.sendEncodingParameters[0].rtx.ssrc+`\r
46
+ `)}return f+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+`\r
47
+ `,c.rtpSender&&c.sendEncodingParameters[0].rtx&&(f+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+`\r
48
+ `),f}function n(c,l){var u=!1;return c=JSON.parse(JSON.stringify(c)),c.filter(function(p){if(p&&(p.urls||p.url)){var m=p.urls||p.url;p.url&&!p.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var f=typeof m=="string";return f&&(m=[m]),m=m.filter(function(x){var _=x.indexOf("turn:")===0&&x.indexOf("transport=udp")!==-1&&x.indexOf("turn:[")===-1&&!u;return _?(u=!0,!0):x.indexOf("stun:")===0&&l>=14393&&x.indexOf("?transport=udp")===-1}),delete p.url,p.urls=f?m[0]:m,!!m.length}})}function i(c,l){var u={codecs:[],headerExtensions:[],fecMechanisms:[]},p=function(f,x){f=parseInt(f,10);for(var _=0;_<x.length;_++)if(x[_].payloadType===f||x[_].preferredPayloadType===f)return x[_]},m=function(f,x,_,g){var v=p(f.parameters.apt,_),w=p(x.parameters.apt,g);return v&&w&&v.name.toLowerCase()===w.name.toLowerCase()};return c.codecs.forEach(function(f){for(var x=0;x<l.codecs.length;x++){var _=l.codecs[x];if(f.name.toLowerCase()===_.name.toLowerCase()&&f.clockRate===_.clockRate){if(f.name.toLowerCase()==="rtx"&&f.parameters&&_.parameters.apt&&!m(f,_,c.codecs,l.codecs))continue;_=JSON.parse(JSON.stringify(_)),_.numChannels=Math.min(f.numChannels,_.numChannels),u.codecs.push(_),_.rtcpFeedback=_.rtcpFeedback.filter(function(g){for(var v=0;v<f.rtcpFeedback.length;v++)if(f.rtcpFeedback[v].type===g.type&&f.rtcpFeedback[v].parameter===g.parameter)return!0;return!1});break}}}),c.headerExtensions.forEach(function(f){for(var x=0;x<l.headerExtensions.length;x++){var _=l.headerExtensions[x];if(f.uri===_.uri){u.headerExtensions.push(_);break}}}),u}function s(c,l,u){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[l][c].indexOf(u)!==-1}function a(c,l){var u=c.getRemoteCandidates().find(function(p){return l.foundation===p.foundation&&l.ip===p.ip&&l.port===p.port&&l.priority===p.priority&&l.protocol===p.protocol&&l.type===p.type});return u||c.addRemoteCandidate(l),!u}function o(c,l){var u=new Error(l);return u.name=c,u.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[c],u}return Ts=function(c,l){function u(g,v){v.addTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("addtrack",{track:g}))}function p(g,v){v.removeTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:g}))}function m(g,v,w,S){var T=new Event("track");T.track=v,T.receiver=w,T.transceiver={receiver:w},T.streams=S,c.setTimeout(function(){g._dispatchEvent("track",T)})}var f=function(g){var v=this,w=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(T){v[T]=w[T].bind(w)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",g=JSON.parse(JSON.stringify(g||{})),this.usingBundle=g.bundlePolicy==="max-bundle",g.rtcpMuxPolicy==="negotiate")throw o("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(g.rtcpMuxPolicy||(g.rtcpMuxPolicy="require"),g.iceTransportPolicy){case"all":case"relay":break;default:g.iceTransportPolicy="all";break}switch(g.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:g.bundlePolicy="balanced";break}if(g.iceServers=n(g.iceServers||[],l),this._iceGatherers=[],g.iceCandidatePoolSize)for(var S=g.iceCandidatePoolSize;S>0;S--)this._iceGatherers.push(new c.RTCIceGatherer({iceServers:g.iceServers,gatherPolicy:g.iceTransportPolicy}));else g.iceCandidatePoolSize=0;this._config=g,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(f.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(f.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),f.prototype.onicecandidate=null,f.prototype.onaddstream=null,f.prototype.ontrack=null,f.prototype.onremovestream=null,f.prototype.onsignalingstatechange=null,f.prototype.oniceconnectionstatechange=null,f.prototype.onconnectionstatechange=null,f.prototype.onicegatheringstatechange=null,f.prototype.onnegotiationneeded=null,f.prototype.ondatachannel=null,f.prototype._dispatchEvent=function(g,v){this._isClosed||(this.dispatchEvent(v),typeof this["on"+g]=="function"&&this["on"+g](v))},f.prototype._emitGatheringStateChange=function(){var g=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",g)},f.prototype.getConfiguration=function(){return this._config},f.prototype.getLocalStreams=function(){return this.localStreams},f.prototype.getRemoteStreams=function(){return this.remoteStreams},f.prototype._createTransceiver=function(g,v){var w=this.transceivers.length>0,S={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:g,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&w)S.iceTransport=this.transceivers[0].iceTransport,S.dtlsTransport=this.transceivers[0].dtlsTransport;else{var T=this._createIceAndDtlsTransports();S.iceTransport=T.iceTransport,S.dtlsTransport=T.dtlsTransport}return v||this.transceivers.push(S),S},f.prototype.addTrack=function(g,v){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var w=this.transceivers.find(function(M){return M.track===g});if(w)throw o("InvalidAccessError","Track already exists.");for(var S,T=0;T<this.transceivers.length;T++)!this.transceivers[T].track&&this.transceivers[T].kind===g.kind&&(S=this.transceivers[T]);return S||(S=this._createTransceiver(g.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(v)===-1&&this.localStreams.push(v),S.track=g,S.stream=v,S.rtpSender=new c.RTCRtpSender(g,S.dtlsTransport),S.rtpSender},f.prototype.addStream=function(g){var v=this;if(l>=15025)g.getTracks().forEach(function(S){v.addTrack(S,g)});else{var w=g.clone();g.getTracks().forEach(function(S,T){var M=w.getTracks()[T];S.addEventListener("enabled",function(E){M.enabled=E.enabled})}),w.getTracks().forEach(function(S){v.addTrack(S,w)})}},f.prototype.removeTrack=function(g){if(this._isClosed)throw o("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(g instanceof c.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var v=this.transceivers.find(function(T){return T.rtpSender===g});if(!v)throw o("InvalidAccessError","Sender was not created by this connection.");var w=v.stream;v.rtpSender.stop(),v.rtpSender=null,v.track=null,v.stream=null;var S=this.transceivers.map(function(T){return T.stream});S.indexOf(w)===-1&&this.localStreams.indexOf(w)>-1&&this.localStreams.splice(this.localStreams.indexOf(w),1),this._maybeFireNegotiationNeeded()},f.prototype.removeStream=function(g){var v=this;g.getTracks().forEach(function(w){var S=v.getSenders().find(function(T){return T.track===w});S&&v.removeTrack(S)})},f.prototype.getSenders=function(){return this.transceivers.filter(function(g){return!!g.rtpSender}).map(function(g){return g.rtpSender})},f.prototype.getReceivers=function(){return this.transceivers.filter(function(g){return!!g.rtpReceiver}).map(function(g){return g.rtpReceiver})},f.prototype._createIceGatherer=function(g,v){var w=this;if(v&&g>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var S=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(S,"state",{value:"new",writable:!0}),this.transceivers[g].bufferedCandidateEvents=[],this.transceivers[g].bufferCandidates=function(T){var M=!T.candidate||Object.keys(T.candidate).length===0;S.state=M?"completed":"gathering",w.transceivers[g].bufferedCandidateEvents!==null&&w.transceivers[g].bufferedCandidateEvents.push(T)},S.addEventListener("localcandidate",this.transceivers[g].bufferCandidates),S},f.prototype._gather=function(g,v){var w=this,S=this.transceivers[v].iceGatherer;if(!S.onlocalcandidate){var T=this.transceivers[v].bufferedCandidateEvents;this.transceivers[v].bufferedCandidateEvents=null,S.removeEventListener("localcandidate",this.transceivers[v].bufferCandidates),S.onlocalcandidate=function(M){if(!(w.usingBundle&&v>0)){var E=new Event("icecandidate");E.candidate={sdpMid:g,sdpMLineIndex:v};var P=M.candidate,O=!P||Object.keys(P).length===0;if(O)(S.state==="new"||S.state==="gathering")&&(S.state="completed");else{S.state==="new"&&(S.state="gathering"),P.component=1,P.ufrag=S.getLocalParameters().usernameFragment;var A=r.writeCandidate(P);E.candidate=Object.assign(E.candidate,r.parseCandidate(A)),E.candidate.candidate=A,E.candidate.toJSON=function(){return{candidate:E.candidate.candidate,sdpMid:E.candidate.sdpMid,sdpMLineIndex:E.candidate.sdpMLineIndex,usernameFragment:E.candidate.usernameFragment}}}var R=r.getMediaSections(w._localDescription.sdp);O?R[E.candidate.sdpMLineIndex]+=`a=end-of-candidates\r
49
+ `:R[E.candidate.sdpMLineIndex]+="a="+E.candidate.candidate+`\r
50
+ `,w._localDescription.sdp=r.getDescription(w._localDescription.sdp)+R.join("");var I=w.transceivers.every(function(B){return B.iceGatherer&&B.iceGatherer.state==="completed"});w.iceGatheringState!=="gathering"&&(w.iceGatheringState="gathering",w._emitGatheringStateChange()),O||w._dispatchEvent("icecandidate",E),I&&(w._dispatchEvent("icecandidate",new Event("icecandidate")),w.iceGatheringState="complete",w._emitGatheringStateChange())}},c.setTimeout(function(){T.forEach(function(M){S.onlocalcandidate(M)})},0)}},f.prototype._createIceAndDtlsTransports=function(){var g=this,v=new c.RTCIceTransport(null);v.onicestatechange=function(){g._updateIceConnectionState(),g._updateConnectionState()};var w=new c.RTCDtlsTransport(v);return w.ondtlsstatechange=function(){g._updateConnectionState()},w.onerror=function(){Object.defineProperty(w,"state",{value:"failed",writable:!0}),g._updateConnectionState()},{iceTransport:v,dtlsTransport:w}},f.prototype._disposeIceAndDtlsTransports=function(g){var v=this.transceivers[g].iceGatherer;v&&(delete v.onlocalcandidate,delete this.transceivers[g].iceGatherer);var w=this.transceivers[g].iceTransport;w&&(delete w.onicestatechange,delete this.transceivers[g].iceTransport);var S=this.transceivers[g].dtlsTransport;S&&(delete S.ondtlsstatechange,delete S.onerror,delete this.transceivers[g].dtlsTransport)},f.prototype._transceive=function(g,v,w){var S=i(g.localCapabilities,g.remoteCapabilities);v&&g.rtpSender&&(S.encodings=g.sendEncodingParameters,S.rtcp={cname:r.localCName,compound:g.rtcpParameters.compound},g.recvEncodingParameters.length&&(S.rtcp.ssrc=g.recvEncodingParameters[0].ssrc),g.rtpSender.send(S)),w&&g.rtpReceiver&&S.codecs.length>0&&(g.kind==="video"&&g.recvEncodingParameters&&l<15019&&g.recvEncodingParameters.forEach(function(T){delete T.rtx}),g.recvEncodingParameters.length?S.encodings=g.recvEncodingParameters:S.encodings=[{}],S.rtcp={compound:g.rtcpParameters.compound},g.rtcpParameters.cname&&(S.rtcp.cname=g.rtcpParameters.cname),g.sendEncodingParameters.length&&(S.rtcp.ssrc=g.sendEncodingParameters[0].ssrc),g.rtpReceiver.receive(S))},f.prototype.setLocalDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setLocalDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set local "+g.type+" in state "+v.signalingState));var w,S;if(g.type==="offer")w=r.splitSections(g.sdp),S=w.shift(),w.forEach(function(M,E){var P=r.parseRtpParameters(M);v.transceivers[E].localCapabilities=P}),v.transceivers.forEach(function(M,E){v._gather(M.mid,E)});else if(g.type==="answer"){w=r.splitSections(v._remoteDescription.sdp),S=w.shift();var T=r.matchPrefix(S,"a=ice-lite").length>0;w.forEach(function(M,E){var P=v.transceivers[E],O=P.iceGatherer,A=P.iceTransport,R=P.dtlsTransport,I=P.localCapabilities,B=P.remoteCapabilities,U=r.isRejected(M)&&r.matchPrefix(M,"a=bundle-only").length===0;if(!U&&!P.rejected){var L=r.getIceParameters(M,S),j=r.getDtlsParameters(M,S);T&&(j.role="server"),(!v.usingBundle||E===0)&&(v._gather(P.mid,E),A.state==="new"&&A.start(O,L,T?"controlling":"controlled"),R.state==="new"&&R.start(j));var W=i(I,B);v._transceive(P,W.codecs.length>0,!1)}})}return v._localDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-local-offer"):v._updateSignalingState("stable"),Promise.resolve()},f.prototype.setRemoteDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setRemoteDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set remote "+g.type+" in state "+v.signalingState));var w={};v.remoteStreams.forEach(function(A){w[A.id]=A});var S=[],T=r.splitSections(g.sdp),M=T.shift(),E=r.matchPrefix(M,"a=ice-lite").length>0,P=r.matchPrefix(M,"a=group:BUNDLE ").length>0;v.usingBundle=P;var O=r.matchPrefix(M,"a=ice-options:")[0];return O?v.canTrickleIceCandidates=O.substr(14).split(" ").indexOf("trickle")>=0:v.canTrickleIceCandidates=!1,T.forEach(function(A,R){var I=r.splitLines(A),B=r.getKind(A),U=r.isRejected(A)&&r.matchPrefix(A,"a=bundle-only").length===0,L=I[0].substr(2).split(" ")[2],j=r.getDirection(A,M),W=r.parseMsid(A),ee=r.getMid(A)||r.generateIdentifier();if(U||B==="application"&&(L==="DTLS/SCTP"||L==="UDP/DTLS/SCTP")){v.transceivers[R]={mid:ee,kind:B,protocol:L,rejected:!0};return}!U&&v.transceivers[R]&&v.transceivers[R].rejected&&(v.transceivers[R]=v._createTransceiver(B,!0));var H,pe,ie,he,oe,le,xe,ge,de,se=r.parseRtpParameters(A),Xe,ze;U||(Xe=r.getIceParameters(A,M),ze=r.getDtlsParameters(A,M),ze.role="client"),xe=r.parseRtpEncodingParameters(A);var Ee=r.parseRtcpParameters(A),at=r.matchPrefix(A,"a=end-of-candidates",M).length>0,Ne=r.matchPrefix(A,"a=candidate:").map(function(fe){return r.parseCandidate(fe)}).filter(function(fe){return fe.component===1});if((g.type==="offer"||g.type==="answer")&&!U&&P&&R>0&&v.transceivers[R]&&(v._disposeIceAndDtlsTransports(R),v.transceivers[R].iceGatherer=v.transceivers[0].iceGatherer,v.transceivers[R].iceTransport=v.transceivers[0].iceTransport,v.transceivers[R].dtlsTransport=v.transceivers[0].dtlsTransport,v.transceivers[R].rtpSender&&v.transceivers[R].rtpSender.setTransport(v.transceivers[0].dtlsTransport),v.transceivers[R].rtpReceiver&&v.transceivers[R].rtpReceiver.setTransport(v.transceivers[0].dtlsTransport)),g.type==="offer"&&!U){H=v.transceivers[R]||v._createTransceiver(B),H.mid=ee,H.iceGatherer||(H.iceGatherer=v._createIceGatherer(R,P)),Ne.length&&H.iceTransport.state==="new"&&(at&&(!P||R===0)?H.iceTransport.setRemoteCandidates(Ne):Ne.forEach(function(fe){a(H.iceTransport,fe)})),ge=c.RTCRtpReceiver.getCapabilities(B),l<15019&&(ge.codecs=ge.codecs.filter(function(fe){return fe.name!=="rtx"})),le=H.sendEncodingParameters||[{ssrc:(2*R+2)*1001}];var ve=!1;if(j==="sendrecv"||j==="sendonly"){if(ve=!H.rtpReceiver,oe=H.rtpReceiver||new c.RTCRtpReceiver(H.dtlsTransport,B),ve){var ue;de=oe.track,W&&W.stream==="-"||(W?(w[W.stream]||(w[W.stream]=new c.MediaStream,Object.defineProperty(w[W.stream],"id",{get:function(){return W.stream}})),Object.defineProperty(de,"id",{get:function(){return W.track}}),ue=w[W.stream]):(w.default||(w.default=new c.MediaStream),ue=w.default)),ue&&(u(de,ue),H.associatedRemoteMediaStreams.push(ue)),S.push([de,oe,ue])}}else H.rtpReceiver&&H.rtpReceiver.track&&(H.associatedRemoteMediaStreams.forEach(function(fe){var nt=fe.getTracks().find(function(wt){return wt.id===H.rtpReceiver.track.id});nt&&p(nt,fe)}),H.associatedRemoteMediaStreams=[]);H.localCapabilities=ge,H.remoteCapabilities=se,H.rtpReceiver=oe,H.rtcpParameters=Ee,H.sendEncodingParameters=le,H.recvEncodingParameters=xe,v._transceive(v.transceivers[R],!1,ve)}else if(g.type==="answer"&&!U){H=v.transceivers[R],pe=H.iceGatherer,ie=H.iceTransport,he=H.dtlsTransport,oe=H.rtpReceiver,le=H.sendEncodingParameters,ge=H.localCapabilities,v.transceivers[R].recvEncodingParameters=xe,v.transceivers[R].remoteCapabilities=se,v.transceivers[R].rtcpParameters=Ee,Ne.length&&ie.state==="new"&&((E||at)&&(!P||R===0)?ie.setRemoteCandidates(Ne):Ne.forEach(function(fe){a(H.iceTransport,fe)})),(!P||R===0)&&(ie.state==="new"&&ie.start(pe,Xe,"controlling"),he.state==="new"&&he.start(ze));var pt=i(H.localCapabilities,H.remoteCapabilities),Pe=pt.codecs.filter(function(fe){return fe.name.toLowerCase()==="rtx"}).length;!Pe&&H.sendEncodingParameters[0].rtx&&delete H.sendEncodingParameters[0].rtx,v._transceive(H,j==="sendrecv"||j==="recvonly",j==="sendrecv"||j==="sendonly"),oe&&(j==="sendrecv"||j==="sendonly")?(de=oe.track,W?(w[W.stream]||(w[W.stream]=new c.MediaStream),u(de,w[W.stream]),S.push([de,oe,w[W.stream]])):(w.default||(w.default=new c.MediaStream),u(de,w.default),S.push([de,oe,w.default]))):delete H.rtpReceiver}}),v._dtlsRole===void 0&&(v._dtlsRole=g.type==="offer"?"active":"passive"),v._remoteDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-remote-offer"):v._updateSignalingState("stable"),Object.keys(w).forEach(function(A){var R=w[A];if(R.getTracks().length){if(v.remoteStreams.indexOf(R)===-1){v.remoteStreams.push(R);var I=new Event("addstream");I.stream=R,c.setTimeout(function(){v._dispatchEvent("addstream",I)})}S.forEach(function(B){var U=B[0],L=B[1];R.id===B[2].id&&m(v,U,L,[R])})}}),S.forEach(function(A){A[2]||m(v,A[0],A[1],[])}),c.setTimeout(function(){v&&v.transceivers&&v.transceivers.forEach(function(A){A.iceTransport&&A.iceTransport.state==="new"&&A.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),A.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},f.prototype.close=function(){this.transceivers.forEach(function(g){g.iceTransport&&g.iceTransport.stop(),g.dtlsTransport&&g.dtlsTransport.stop(),g.rtpSender&&g.rtpSender.stop(),g.rtpReceiver&&g.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},f.prototype._updateSignalingState=function(g){this.signalingState=g;var v=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",v)},f.prototype._maybeFireNegotiationNeeded=function(){var g=this;this.signalingState!=="stable"||this.needNegotiation===!0||(this.needNegotiation=!0,c.setTimeout(function(){if(g.needNegotiation){g.needNegotiation=!1;var v=new Event("negotiationneeded");g._dispatchEvent("negotiationneeded",v)}},0))},f.prototype._updateIceConnectionState=function(){var g,v={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(S){S.iceTransport&&!S.rejected&&v[S.iceTransport.state]++}),g="new",v.failed>0?g="failed":v.checking>0?g="checking":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0?g="connected":v.completed>0&&(g="completed"),g!==this.iceConnectionState){this.iceConnectionState=g;var w=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",w)}},f.prototype._updateConnectionState=function(){var g,v={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(S){S.iceTransport&&S.dtlsTransport&&!S.rejected&&(v[S.iceTransport.state]++,v[S.dtlsTransport.state]++)}),v.connected+=v.completed,g="new",v.failed>0?g="failed":v.connecting>0?g="connecting":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0&&(g="connected"),g!==this.connectionState){this.connectionState=g;var w=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",w)}},f.prototype.createOffer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createOffer after close"));var v=g.transceivers.filter(function(E){return E.kind==="audio"}).length,w=g.transceivers.filter(function(E){return E.kind==="video"}).length,S=arguments[0];if(S){if(S.mandatory||S.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");S.offerToReceiveAudio!==void 0&&(S.offerToReceiveAudio===!0?v=1:S.offerToReceiveAudio===!1?v=0:v=S.offerToReceiveAudio),S.offerToReceiveVideo!==void 0&&(S.offerToReceiveVideo===!0?w=1:S.offerToReceiveVideo===!1?w=0:w=S.offerToReceiveVideo)}for(g.transceivers.forEach(function(E){E.kind==="audio"?(v--,v<0&&(E.wantReceive=!1)):E.kind==="video"&&(w--,w<0&&(E.wantReceive=!1))});v>0||w>0;)v>0&&(g._createTransceiver("audio"),v--),w>0&&(g._createTransceiver("video"),w--);var T=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.transceivers.forEach(function(E,P){var O=E.track,A=E.kind,R=E.mid||r.generateIdentifier();E.mid=R,E.iceGatherer||(E.iceGatherer=g._createIceGatherer(P,g.usingBundle));var I=c.RTCRtpSender.getCapabilities(A);l<15019&&(I.codecs=I.codecs.filter(function(U){return U.name!=="rtx"})),I.codecs.forEach(function(U){U.name==="H264"&&U.parameters["level-asymmetry-allowed"]===void 0&&(U.parameters["level-asymmetry-allowed"]="1"),E.remoteCapabilities&&E.remoteCapabilities.codecs&&E.remoteCapabilities.codecs.forEach(function(L){U.name.toLowerCase()===L.name.toLowerCase()&&U.clockRate===L.clockRate&&(U.preferredPayloadType=L.payloadType)})}),I.headerExtensions.forEach(function(U){var L=E.remoteCapabilities&&E.remoteCapabilities.headerExtensions||[];L.forEach(function(j){U.uri===j.uri&&(U.id=j.id)})});var B=E.sendEncodingParameters||[{ssrc:(2*P+1)*1001}];O&&l>=15019&&A==="video"&&!B[0].rtx&&(B[0].rtx={ssrc:B[0].ssrc+1}),E.wantReceive&&(E.rtpReceiver=new c.RTCRtpReceiver(E.dtlsTransport,A)),E.localCapabilities=I,E.sendEncodingParameters=B}),g._config.bundlePolicy!=="max-compat"&&(T+="a=group:BUNDLE "+g.transceivers.map(function(E){return E.mid}).join(" ")+`\r
51
+ `),T+=`a=ice-options:trickle\r
52
+ `,g.transceivers.forEach(function(E,P){T+=t(E,E.localCapabilities,"offer",E.stream,g._dtlsRole),T+=`a=rtcp-rsize\r
53
+ `,E.iceGatherer&&g.iceGatheringState!=="new"&&(P===0||!g.usingBundle)&&(E.iceGatherer.getLocalCandidates().forEach(function(O){O.component=1,T+="a="+r.writeCandidate(O)+`\r
54
+ `}),E.iceGatherer.state==="completed"&&(T+=`a=end-of-candidates\r
55
+ `))});var M=new c.RTCSessionDescription({type:"offer",sdp:T});return Promise.resolve(M)},f.prototype.createAnswer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createAnswer after close"));if(!(g.signalingState==="have-remote-offer"||g.signalingState==="have-local-pranswer"))return Promise.reject(o("InvalidStateError","Can not call createAnswer in signalingState "+g.signalingState));var v=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.usingBundle&&(v+="a=group:BUNDLE "+g.transceivers.map(function(T){return T.mid}).join(" ")+`\r
56
+ `),v+=`a=ice-options:trickle\r
57
+ `;var w=r.getMediaSections(g._remoteDescription.sdp).length;g.transceivers.forEach(function(T,M){if(!(M+1>w)){if(T.rejected){T.kind==="application"?T.protocol==="DTLS/SCTP"?v+=`m=application 0 DTLS/SCTP 5000\r
58
+ `:v+="m=application 0 "+T.protocol+` webrtc-datachannel\r
59
+ `:T.kind==="audio"?v+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r
60
+ a=rtpmap:0 PCMU/8000\r
61
+ `:T.kind==="video"&&(v+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r
62
+ a=rtpmap:120 VP8/90000\r
63
+ `),v+=`c=IN IP4 0.0.0.0\r
64
+ a=inactive\r
65
+ a=mid:`+T.mid+`\r
66
+ `;return}if(T.stream){var E;T.kind==="audio"?E=T.stream.getAudioTracks()[0]:T.kind==="video"&&(E=T.stream.getVideoTracks()[0]),E&&l>=15019&&T.kind==="video"&&!T.sendEncodingParameters[0].rtx&&(T.sendEncodingParameters[0].rtx={ssrc:T.sendEncodingParameters[0].ssrc+1})}var P=i(T.localCapabilities,T.remoteCapabilities),O=P.codecs.filter(function(A){return A.name.toLowerCase()==="rtx"}).length;!O&&T.sendEncodingParameters[0].rtx&&delete T.sendEncodingParameters[0].rtx,v+=t(T,P,"answer",T.stream,g._dtlsRole),T.rtcpParameters&&T.rtcpParameters.reducedSize&&(v+=`a=rtcp-rsize\r
67
+ `)}});var S=new c.RTCSessionDescription({type:"answer",sdp:v});return Promise.resolve(S)},f.prototype.addIceCandidate=function(g){var v=this,w;return g&&!(g.sdpMLineIndex!==void 0||g.sdpMid)?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(S,T){if(v._remoteDescription)if(!g||g.candidate==="")for(var M=0;M<v.transceivers.length&&!(!v.transceivers[M].rejected&&(v.transceivers[M].iceTransport.addRemoteCandidate({}),w=r.getMediaSections(v._remoteDescription.sdp),w[M]+=`a=end-of-candidates\r
68
+ `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+w.join(""),v.usingBundle));M++);else{var E=g.sdpMLineIndex;if(g.sdpMid){for(var P=0;P<v.transceivers.length;P++)if(v.transceivers[P].mid===g.sdpMid){E=P;break}}var O=v.transceivers[E];if(O){if(O.rejected)return S();var A=Object.keys(g.candidate).length>0?r.parseCandidate(g.candidate):{};if(A.protocol==="tcp"&&(A.port===0||A.port===9)||A.component&&A.component!==1)return S();if((E===0||E>0&&O.iceTransport!==v.transceivers[0].iceTransport)&&!a(O.iceTransport,A))return T(o("OperationError","Can not add ICE candidate"));var R=g.candidate.trim();R.indexOf("a=")===0&&(R=R.substr(2)),w=r.getMediaSections(v._remoteDescription.sdp),w[E]+="a="+(A.type?R:"end-of-candidates")+`\r
69
+ `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+w.join("")}else return T(o("OperationError","Can not add ICE candidate"))}else return T(o("InvalidStateError","Can not add ICE candidate without a remote description"));S()})},f.prototype.getStats=function(g){if(g&&g instanceof c.MediaStreamTrack){var v=null;if(this.transceivers.forEach(function(S){S.rtpSender&&S.rtpSender.track===g?v=S.rtpSender:S.rtpReceiver&&S.rtpReceiver.track===g&&(v=S.rtpReceiver)}),!v)throw o("InvalidAccessError","Invalid selector.");return v.getStats()}var w=[];return this.transceivers.forEach(function(S){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(T){S[T]&&w.push(S[T].getStats())})}),Promise.all(w).then(function(S){var T=new Map;return S.forEach(function(M){M.forEach(function(E){T.set(E.id,E)})}),T})};var x=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];x.forEach(function(g){var v=c[g];if(v&&v.prototype&&v.prototype.getStats){var w=v.prototype.getStats;v.prototype.getStats=function(){return w.apply(this).then(function(S){var T=new Map;return Object.keys(S).forEach(function(M){S[M].type=e(S[M]),T.set(M,S[M])}),T})}}});var _=["createOffer","createAnswer"];return _.forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var w=arguments;return typeof w[0]=="function"||typeof w[1]=="function"?v.apply(this,[arguments[2]]).then(function(S){typeof w[0]=="function"&&w[0].apply(null,[S])},function(S){typeof w[1]=="function"&&w[1].apply(null,[S])}):v.apply(this,arguments)}}),_=["setLocalDescription","setRemoteDescription","addIceCandidate"],_.forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var w=arguments;return typeof w[1]=="function"||typeof w[2]=="function"?v.apply(this,arguments).then(function(){typeof w[1]=="function"&&w[1].apply(null)},function(S){typeof w[2]=="function"&&w[2].apply(null,[S])}):v.apply(this,arguments)}}),["getStats"].forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var w=arguments;return typeof w[1]=="function"?v.apply(this,arguments).then(function(){typeof w[1]=="function"&&w[1].apply(null)}):v.apply(this,arguments)}}),f},Ts}var xu=bu();const wu=lr(xu);function za(r){const e=r&&r.navigator,t=function(i){return{name:{PermissionDeniedError:"NotAllowedError"}[i.name]||i.name,message:i.message,constraint:i.constraint,toString(){return this.name}}},n=e.mediaDevices.getUserMedia.bind(e.mediaDevices);Object.getOwnPropertyDescriptor(e.mediaDevices,"getUserMedia")?.writable&&(e.mediaDevices.getUserMedia=function(i){return n(i).catch(s=>Promise.reject(t(s)))})}function Na(r){"getDisplayMedia"in r.navigator&&r.navigator.mediaDevices&&(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||(r.navigator.mediaDevices.getDisplayMedia=r.navigator.getDisplayMedia.bind(r.navigator)))}function Ms(r,e){if(r.RTCIceGatherer&&(r.RTCIceCandidate||(r.RTCIceCandidate=function(n){return n}),r.RTCSessionDescription||(r.RTCSessionDescription=function(n){return n}),e.version<15025)){const n=Object.getOwnPropertyDescriptor(r.MediaStreamTrack.prototype,"enabled");Object.defineProperty(r.MediaStreamTrack.prototype,"enabled",{set(i){n.set.call(this,i);const s=new Event("enabled");s.enabled=i,this.dispatchEvent(s)}})}r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)&&Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new r.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),r.RTCDtmfSender&&!r.RTCDTMFSender&&(r.RTCDTMFSender=r.RTCDtmfSender);const t=wu(r,e.version);r.RTCPeerConnection=function(n){return n&&n.iceServers&&(n.iceServers=Su(n.iceServers,e.version),xs("ICE servers after filtering:",n.iceServers)),new t(n)},r.RTCPeerConnection.prototype=t.prototype}function Ua(r){r.RTCRtpSender&&!("replaceTrack"in r.RTCRtpSender.prototype)&&(r.RTCRtpSender.prototype.replaceTrack=r.RTCRtpSender.prototype.setTrack)}const Da=Object.freeze(Object.defineProperty({__proto__:null,shimGetDisplayMedia:Na,shimGetUserMedia:za,shimPeerConnection:Ms,shimReplaceTrack:Ua},Symbol.toStringTag,{value:"Module"}));function La(r,e){const t=r&&r.navigator,n=r&&r.MediaStreamTrack;if(t.getUserMedia=function(i,s,a){ur("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(i).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const i=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),i(a.audio,"autoGainControl","mozAutoGainControl"),i(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)}),n&&n.prototype.getSettings){const a=n.prototype.getSettings;n.prototype.getSettings=function(){const o=a.apply(this,arguments);return i(o,"mozAutoGainControl","autoGainControl"),i(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){const a=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),i(o,"autoGainControl","mozAutoGainControl"),i(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function _u(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(t){if(!(t&&t.video)){const n=new DOMException("getDisplayMedia without video constraints is undefined");return n.name="NotFoundError",n.code=8,Promise.reject(n)}return t.video===!0?t.video={mediaSource:e}:t.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(t)})}function Fa(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Cs(r,e){if(typeof r!="object"||!(r.RTCPeerConnection||r.mozRTCPeerConnection))return;!r.RTCPeerConnection&&r.mozRTCPeerConnection&&(r.RTCPeerConnection=r.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){const s=r.RTCPeerConnection.prototype[i],a={[i](){return arguments[0]=new(i==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};r.RTCPeerConnection.prototype[i]=a[i]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[i,s,a]=arguments;return n.apply(this,[i||null]).then(o=>{if(e.version<53&&!s)try{o.forEach(c=>{c.type=t[c.type]||c.type})}catch(c){if(c.name!=="TypeError")throw c;o.forEach((l,u)=>{o.set(u,Object.assign({},l,{type:t[l.type]||l.type}))})}return o}).then(s,a)}}function Va(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpSender.prototype)return;const e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n});const t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){const n=t.apply(this,arguments);return n._pc=this,n}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function ja(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpReceiver.prototype)return;const e=r.RTCPeerConnection.prototype.getReceivers;e&&(r.RTCPeerConnection.prototype.getReceivers=function(){const t=e.apply(this,[]);return t.forEach(n=>n._pc=this),t}),zn(r,"track",t=>(t.receiver._pc=t.srcElement,t)),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Ja(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(e){ur("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function Ga(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function Wa(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const t=arguments[1],n=t&&"sendEncodings"in t;n&&t.sendEncodings.forEach(s=>{if("rid"in s&&!/^[a-z0-9]{0,16}$/i.test(s.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in s&&!(parseFloat(s.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in s&&!(parseFloat(s.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const i=e.apply(this,arguments);if(n){const{sender:s}=i,a=s.getParameters();(!("encodings"in a)||a.encodings.length===1&&Object.keys(a.encodings[0]).length===0)&&(a.encodings=t.sendEncodings,s.sendEncodings=t.sendEncodings,this.setParametersPromises.push(s.setParameters(a).then(()=>{delete s.sendEncodings}).catch(()=>{delete s.sendEncodings})))}return i})}function Ha(r){if(!(typeof r=="object"&&r.RTCRtpSender))return;const e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){const t=e.apply(this,arguments);return"encodings"in t||(t.encodings=[].concat(this.sendEncodings||[{}])),t})}function qa(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Xa(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createAnswer;r.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}const Ya=Object.freeze(Object.defineProperty({__proto__:null,shimAddTransceiver:Wa,shimCreateAnswer:Xa,shimCreateOffer:qa,shimGetDisplayMedia:_u,shimGetParameters:Ha,shimGetUserMedia:La,shimOnTrack:Fa,shimPeerConnection:Cs,shimRTCDataChannel:Ga,shimReceiverGetStats:ja,shimRemoveStream:Ja,shimSenderGetStats:Va},Symbol.toStringTag,{value:"Module"}));function Za(r){if(!(typeof r!="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(t){this._localStreams||(this._localStreams=[]),this._localStreams.includes(t)||this._localStreams.push(t),t.getAudioTracks().forEach(n=>e.call(this,n,t)),t.getVideoTracks().forEach(n=>e.call(this,n,t))},r.RTCPeerConnection.prototype.addTrack=function(t,...n){return n&&n.forEach(i=>{this._localStreams?this._localStreams.includes(i)||this._localStreams.push(i):this._localStreams=[i]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);const n=e.getTracks();this.getSenders().forEach(i=>{n.includes(i.track)&&this.removeTrack(i)})})}}function Ka(r){if(!(typeof r!="object"||!r.RTCPeerConnection)&&("getRemoteStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in r.RTCPeerConnection.prototype))){Object.defineProperty(r.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach(i=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(i))return;this._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,this.dispatchEvent(s)})})}});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){const t=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(n){n.streams.forEach(i=>{if(t._remoteStreams||(t._remoteStreams=[]),t._remoteStreams.indexOf(i)>=0)return;t._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,t.dispatchEvent(s)})}),e.apply(t,arguments)}}}function Qa(r){if(typeof r!="object"||!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(c,l){const u=arguments.length>=2?arguments[2]:arguments[0],p=t.apply(this,[u]);return l?(p.then(c,l),Promise.resolve()):p},e.createAnswer=function(c,l){const u=arguments.length>=2?arguments[2]:arguments[0],p=n.apply(this,[u]);return l?(p.then(c,l),Promise.resolve()):p};let o=function(c,l,u){const p=i.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p};e.setLocalDescription=o,o=function(c,l,u){const p=s.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p},e.setRemoteDescription=o,o=function(c,l,u){const p=a.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p},e.addIceCandidate=o}function $a(r){const e=r&&r.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=i=>n(ec(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(t,n,i){e.mediaDevices.getUserMedia(t).then(n,i)}.bind(e))}function ec(r){return r&&r.video!==void 0?Object.assign({},r,{video:va(r.video)}):r}function tc(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection;r.RTCPeerConnection=function(t,n){if(t&&t.iceServers){const i=[];for(let s=0;s<t.iceServers.length;s++){let a=t.iceServers[s];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(ur("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,i.push(a)):i.push(t.iceServers[s])}t.iceServers=i}return new e(t,n)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function nc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ic(r){const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(t){if(t){typeof t.offerToReceiveAudio<"u"&&(t.offerToReceiveAudio=!!t.offerToReceiveAudio);const n=this.getTransceivers().find(s=>s.receiver.track.kind==="audio");t.offerToReceiveAudio===!1&&n?n.direction==="sendrecv"?n.setDirection?n.setDirection("sendonly"):n.direction="sendonly":n.direction==="recvonly"&&(n.setDirection?n.setDirection("inactive"):n.direction="inactive"):t.offerToReceiveAudio===!0&&!n&&this.addTransceiver("audio"),typeof t.offerToReceiveVideo<"u"&&(t.offerToReceiveVideo=!!t.offerToReceiveVideo);const i=this.getTransceivers().find(s=>s.receiver.track.kind==="video");t.offerToReceiveVideo===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):t.offerToReceiveVideo===!0&&!i&&this.addTransceiver("video")}return e.apply(this,arguments)}}function rc(r){typeof r!="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}const sc=Object.freeze(Object.defineProperty({__proto__:null,shimAudioContext:rc,shimCallbacksAPI:Qa,shimConstraints:ec,shimCreateOfferLegacy:ic,shimGetUserMedia:$a,shimLocalStreamsAPI:Za,shimRTCIceServerUrls:tc,shimRemoteStreamsAPI:Ka,shimTrackEventTransceiver:nc},Symbol.toStringTag,{value:"Module"}));var Tu=Ia();const hr=lr(Tu);function dr(r){if(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)return;const e=r.RTCIceCandidate;r.RTCIceCandidate=function(t){if(typeof t=="object"&&t.candidate&&t.candidate.indexOf("a=")===0&&(t=JSON.parse(JSON.stringify(t)),t.candidate=t.candidate.substr(2)),t.candidate&&t.candidate.length){const n=new e(t),i=hr.parseCandidate(t.candidate),s=Object.assign(n,i);return s.toJSON=function(){return{candidate:s.candidate,sdpMid:s.sdpMid,sdpMLineIndex:s.sdpMLineIndex,usernameFragment:s.usernameFragment}},s}return new e(t)},r.RTCIceCandidate.prototype=e.prototype,zn(r,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t))}function ti(r,e){if(!r.RTCPeerConnection)return;"sctp"in r.RTCPeerConnection.prototype||Object.defineProperty(r.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});const t=function(o){if(!o||!o.sdp)return!1;const c=hr.splitSections(o.sdp);return c.shift(),c.some(l=>{const u=hr.parseMLine(l);return u&&u.kind==="application"&&u.protocol.indexOf("SCTP")!==-1})},n=function(o){const c=o.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;const l=parseInt(c[1],10);return l!==l?-1:l},i=function(o){let c=65536;return e.browser==="firefox"&&(e.version<57?o===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},s=function(o,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);const u=hr.matchPrefix(o.sdp,"a=max-message-size:");return u.length>0?l=parseInt(u[0].substr(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},a=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:o}=this.getConfiguration();o==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const o=n(arguments[0]),c=i(o),l=s(arguments[0],o);let u;c===0&&l===0?u=Number.POSITIVE_INFINITY:c===0||l===0?u=Math.max(c,l):u=Math.min(c,l);const p={};Object.defineProperty(p,"maxMessageSize",{get(){return u}}),this._sctp=p}return a.apply(this,arguments)}}function ni(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){const s=n.send;n.send=function(){const a=arguments[0],o=a.length||a.size||a.byteLength;if(n.readyState==="open"&&i.sctp&&o>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(n,arguments)}}const t=r.RTCPeerConnection.prototype.createDataChannel;r.RTCPeerConnection.prototype.createDataChannel=function(){const n=t.apply(this,arguments);return e(n,this),n},zn(r,"datachannel",n=>(e(n.channel,n.target),n))}function Es(r){if(!r.RTCPeerConnection||"connectionState"in r.RTCPeerConnection.prototype)return;const e=r.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{const n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=i=>{const s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;const a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function Ps(r,e){if(!r.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e.version>=605)return;const t=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(n){if(n&&n.sdp&&n.sdp.indexOf(`
70
+ a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
71
+ `).filter(s=>s.trim()!=="a=extmap-allow-mixed").join(`
72
+ `);r.RTCSessionDescription&&n instanceof r.RTCSessionDescription?arguments[0]=new r.RTCSessionDescription({type:n.type,sdp:i}):n.sdp=i}return t.apply(this,arguments)}}function pr(r,e){if(!(r.RTCPeerConnection&&r.RTCPeerConnection.prototype))return;const t=r.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(r.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}const Mu=Object.freeze(Object.defineProperty({__proto__:null,removeExtmapAllowMixed:Ps,shimAddIceCandidateNullOrEmpty:pr,shimConnectionState:Es,shimMaxMessageSize:ti,shimRTCIceCandidate:dr,shimSendThrowTypeError:ni},Symbol.toStringTag,{value:"Module"}));function Cu({window:r}={},e={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const t=xs,n=gu(r),i={browserDetails:n,commonShim:Mu,extractVersion:ei,disableLog:mu,disableWarnings:yu};switch(n.browser){case"chrome":if(!Ra||!_s||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),i;if(n.version===null)return t("Chrome shim can not determine version, not shimming."),i;t("adapter.js shimming chrome."),i.browserShim=Ra,pr(r,n),xa(r,n),wa(r),_s(r,n),_a(r),Pa(r,n),Ta(r),Ma(r),Ca(r),ka(r,n),dr(r),Es(r),ti(r,n),ni(r),Ps(r,n);break;case"firefox":if(!Ya||!Cs||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),i;t("adapter.js shimming firefox."),i.browserShim=Ya,pr(r,n),La(r,n),Cs(r,n),Fa(r),Ja(r),Va(r),ja(r),Ga(r),Wa(r),Ha(r),qa(r),Xa(r),dr(r),Es(r),ti(r,n),ni(r);break;case"edge":if(!Da||!Ms||!e.shimEdge)return t("MS edge shim is not included in this adapter release."),i;t("adapter.js shimming edge."),i.browserShim=Da,za(r),Na(r),Ms(r,n),Ua(r),ti(r,n),ni(r);break;case"safari":if(!sc||!e.shimSafari)return t("Safari shim is not included in this adapter release."),i;t("adapter.js shimming safari."),i.browserShim=sc,pr(r,n),tc(r),ic(r),Qa(r),Za(r),Ka(r),nc(r),$a(r),rc(r),dr(r),ti(r,n),ni(r),Ps(r,n);break;default:t("Unsupported browser!");break}return i}const oc=Cu({window:typeof window>"u"?void 0:window});function Ut(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}var ks=oc.default||oc,ii=new(function(){function r(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return r.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<"u"},r.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion(),n=this.supportedBrowsers.includes(e);return n?e==="chrome"?t>=this.minChromeVersion:e==="firefox"?t>=this.minFirefoxVersion:e==="safari"?!this.isIOS&&t>=this.minSafariVersion:!1:!1},r.prototype.getBrowser=function(){return ks.browserDetails.browser},r.prototype.getVersion=function(){return ks.browserDetails.version||0},r.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=ks.browserDetails.version||0;if(e==="chrome"&&t<this.minChromeVersion)return!1;if(e==="firefox"&&t>=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var n,i=!1;try{n=new RTCPeerConnection,n.addTransceiver("audio"),i=!0}catch{}finally{n&&n.close()}return i},r.prototype.toString=function(){return`Supports:
73
+ browser:`.concat(this.getBrowser(),`
74
+ version:`).concat(this.getVersion(),`
75
+ isIOS:`).concat(this.isIOS,`
76
+ isWebRTCSupported:`).concat(this.isWebRTCSupported(),`
77
+ isBrowserSupported:`).concat(this.isBrowserSupported(),`
78
+ isUnifiedPlanSupported:`).concat(this.isUnifiedPlanSupported())},r}()),ac={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},Eu=function(){function r(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=ac,this.browser=ii.getBrowser(),this.browserVersion=ii.getVersion(),this.supports=function(){var e={browser:ii.isBrowserSupported(),webRTC:ii.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(ac),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel("_PEERJSTEST",{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType="blob",e.binaryBlob=!ii.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e}(),this.pack=fa.pack,this.unpack=fa.unpack,this._dataCount=1}return r.prototype.noop=function(){},r.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},r.prototype.chunk=function(e){for(var t=[],n=e.size,i=Math.ceil(n/te.chunkedMTU),s=0,a=0;a<n;){var o=Math.min(n,a+te.chunkedMTU),c=e.slice(a,o),l={__peerData:this._dataCount,n:s,data:c,total:i};t.push(l),a=o,s++}return this._dataCount++,t},r.prototype.blobToArrayBuffer=function(e,t){var n=new FileReader;return n.onload=function(i){i.target&&t(i.target.result)},n.readAsArrayBuffer(e),n},r.prototype.binaryStringToArrayBuffer=function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t.buffer},r.prototype.randomToken=function(){return Math.random().toString(36).slice(2)},r.prototype.isSecure=function(){return location.protocol==="https:"},r}(),te=new Eu,cc={};Ut(cc,"Peer",()=>zs,r=>zs=r);var ri={},Pu=Object.prototype.hasOwnProperty,$e="~";function si(){}Object.create&&(si.prototype=Object.create(null),new si().__proto__||($e=!1));function ku(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function lc(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new ku(t,n||r,i),a=$e?$e+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],s]:r._events[a].push(s):(r._events[a]=s,r._eventsCount++),r}function fr(r,e){--r._eventsCount===0?r._events=new si:delete r._events[e]}function We(){this._events=new si,this._eventsCount=0}We.prototype.eventNames=function(){var r=[],e,t;if(this._eventsCount===0)return r;for(t in e=this._events)Pu.call(e,t)&&r.push($e?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},We.prototype.listeners=function(r){var e=$e?$e+r:r,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,i=t.length,s=new Array(i);n<i;n++)s[n]=t[n].fn;return s},We.prototype.listenerCount=function(r){var e=$e?$e+r:r,t=this._events[e];return t?t.fn?1:t.length:0},We.prototype.emit=function(r,e,t,n,i,s){var a=$e?$e+r:r;if(!this._events[a])return!1;var o=this._events[a],c=arguments.length,l,u;if(o.fn){switch(o.once&&this.removeListener(r,o.fn,void 0,!0),c){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,e),!0;case 3:return o.fn.call(o.context,e,t),!0;case 4:return o.fn.call(o.context,e,t,n),!0;case 5:return o.fn.call(o.context,e,t,n,i),!0;case 6:return o.fn.call(o.context,e,t,n,i,s),!0}for(u=1,l=new Array(c-1);u<c;u++)l[u-1]=arguments[u];o.fn.apply(o.context,l)}else{var p=o.length,m;for(u=0;u<p;u++)switch(o[u].once&&this.removeListener(r,o[u].fn,void 0,!0),c){case 1:o[u].fn.call(o[u].context);break;case 2:o[u].fn.call(o[u].context,e);break;case 3:o[u].fn.call(o[u].context,e,t);break;case 4:o[u].fn.call(o[u].context,e,t,n);break;default:if(!l)for(m=1,l=new Array(c-1);m<c;m++)l[m-1]=arguments[m];o[u].fn.apply(o[u].context,l)}}return!0},We.prototype.on=function(r,e,t){return lc(this,r,e,t,!1)},We.prototype.once=function(r,e,t){return lc(this,r,e,t,!0)},We.prototype.removeListener=function(r,e,t,n){var i=$e?$e+r:r;if(!this._events[i])return this;if(!e)return fr(this,i),this;var s=this._events[i];if(s.fn)s.fn===e&&(!n||s.once)&&(!t||s.context===t)&&fr(this,i);else{for(var a=0,o=[],c=s.length;a<c;a++)(s[a].fn!==e||n&&!s[a].once||t&&s[a].context!==t)&&o.push(s[a]);o.length?this._events[i]=o.length===1?o[0]:o:fr(this,i)}return this},We.prototype.removeAllListeners=function(r){var e;return r?(e=$e?$e+r:r,this._events[e]&&fr(this,e)):(this._events=new si,this._eventsCount=0),this},We.prototype.off=We.prototype.removeListener,We.prototype.addListener=We.prototype.on,We.prefixed=$e,We.EventEmitter=We,ri=We;var J={};Ut(J,"LogLevel",()=>st,r=>st=r),Ut(J,"default",()=>uc,r=>uc=r);var yn=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},gn=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},Ru="PeerJS: ",st;(function(r){r[r.Disabled=0]="Disabled",r[r.Errors=1]="Errors",r[r.Warnings=2]="Warnings",r[r.All=3]="All"})(st||(st={}));var Au=function(){function r(){this._logLevel=st.Disabled}return Object.defineProperty(r.prototype,"logLevel",{get:function(){return this._logLevel},set:function(e){this._logLevel=e},enumerable:!1,configurable:!0}),r.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=st.All&&this._print.apply(this,gn([st.All],yn(e),!1))},r.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=st.Warnings&&this._print.apply(this,gn([st.Warnings],yn(e),!1))},r.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=st.Errors&&this._print.apply(this,gn([st.Errors],yn(e),!1))},r.prototype.setLogFunction=function(e){this._print=e},r.prototype._print=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=gn([Ru],yn(t),!1);for(var s in i)i[s]instanceof Error&&(i[s]="("+i[s].name+") "+i[s].message);e>=st.All?console.log.apply(console,gn([],yn(i),!1)):e>=st.Warnings?console.warn.apply(console,gn(["WARNING"],yn(i),!1)):e>=st.Errors&&console.error.apply(console,gn(["ERROR"],yn(i),!1))},r}(),uc=new Au,hc={};Ut(hc,"Socket",()=>dc,r=>dc=r);var Rt;(function(r){r.Data="data",r.Media="media"})(Rt||(Rt={}));var we;(function(r){r.BrowserIncompatible="browser-incompatible",r.Disconnected="disconnected",r.InvalidID="invalid-id",r.InvalidKey="invalid-key",r.Network="network",r.PeerUnavailable="peer-unavailable",r.SslUnavailable="ssl-unavailable",r.ServerError="server-error",r.SocketError="socket-error",r.SocketClosed="socket-closed",r.UnavailableID="unavailable-id",r.WebRTC="webrtc"})(we||(we={}));var Yt;(function(r){r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json"})(Yt||(Yt={}));var Zt;(function(r){r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close"})(Zt||(Zt={}));var Ue;(function(r){r.Heartbeat="HEARTBEAT",r.Candidate="CANDIDATE",r.Offer="OFFER",r.Answer="ANSWER",r.Open="OPEN",r.Error="ERROR",r.IdTaken="ID-TAKEN",r.InvalidKey="INVALID-KEY",r.Leave="LEAVE",r.Expire="EXPIRE"})(Ue||(Ue={}));var Rs={};Rs=JSON.parse('{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu <michelle@michellebu.com>","afrokick <devbyru@gmail.com>","ericz <really.ez@gmail.com>","Jairo <kidandcat@gmail.com>","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana <jairo@galax.be>","Carlos Caballero <carlos.caballero.gonzalez@gmail.com>","hc <hheennrryy@gmail.com>","Muhammad Asif <capripio@gmail.com>","PrashoonB <prashoonbhattacharjee@gmail.com>","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski <aleksanderkotbury@gmail.com>","lmb <i@lmb.io>","Jairooo <jairocaro@msn.com>","Moritz St\xFCckler <moritz.stueckler@gmail.com>","Simon <crydotsnakegithub@gmail.com>","Denis Lukov <denismassters@gmail.com>","Philipp Hancke <fippo@andyet.net>","Hans Oksendahl <hansoksendahl@gmail.com>","Jess <jessachandler@gmail.com>","khankuan <khankuan@gmail.com>","DUODVK <kurmanov.work@gmail.com>","XiZhao <kwang1imsa@gmail.com>","Matthias Lohr <matthias@lohr.me>","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt <aeckardt@outlook.com>","Chris Cowan <agentme49@gmail.com>","Alex Chuev <alex@chuev.com>","alxnull <alxnull@e.mail.de>","Yemel Jardi <angel.jardi@gmail.com>","Ben Parnell <benjaminparnell.94@gmail.com>","Benny Lichtner <bennlich@gmail.com>","fresheneesz <bitetrudpublic@gmail.com>","bob.barstead@exaptive.com <bob.barstead@exaptive.com>","chandika <chandika@gmail.com>","emersion <contact@emersion.fr>","Christopher Van <cvan@users.noreply.github.com>","eddieherm <edhermoso@gmail.com>","Eduardo Pinho <enet4mikeenet@gmail.com>","Evandro Zanatta <ezanatta@tray.net.br>","Gardner Bickford <gardner@users.noreply.github.com>","Gian Luca <gianluca.cecchi@cynny.com>","PatrickJS <github@gdi2290.com>","jonnyf <github@jonathanfoss.co.uk>","Hizkia Felix <hizkifw@gmail.com>","Hristo Oskov <hristo.oskov@gmail.com>","Isaac Madwed <i.madwed@gmail.com>","Ilya Konanykhin <ilya.konanykhin@gmail.com>","jasonbarry <jasbarry@me.com>","Jonathan Burke <jonathan.burke.1311@googlemail.com>","Josh Hamit <josh.hamit@gmail.com>","Jordan Austin <jrax86@gmail.com>","Joel Wetzell <jwetzell@yahoo.com>","xizhao <kevin.wang@cloudera.com>","Alberto Torres <kungfoobar@gmail.com>","Jonathan Mayol <mayoljonathan@gmail.com>","Jefferson Felix <me@jsfelix.dev>","Rolf Erik Lekang <me@rolflekang.com>","Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>","Pepijn de Vos <pepijndevos@gmail.com>","JooYoung <qkdlql@naver.com>","Tobias Speicher <rootcommander@gmail.com>","Steve Blaurock <sblaurock@gmail.com>","Kyrylo Shegeda <shegeda@ualberta.ca>","Diwank Singh Tomer <singh@diwank.name>","So\u0308ren Balko <Soeren.Balko@gmail.com>","Arpit Solanki <solankiarpit1997@gmail.com>","Yuki Ito <yuki@gnnk.net>","Artur Zayats <zag2art@gmail.com>"],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}');var Ou=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),Iu=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Bu=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},zu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},dc=function(r){Ou(e,r);function e(t,n,i,s,a,o){o===void 0&&(o=5e3);var c=r.call(this)||this;c.pingInterval=o,c._disconnected=!0,c._messagesQueue=[];var l=t?"wss://":"ws://";return c._baseUrl=l+n+":"+i+s+"peerjs?key="+a,c}return e.prototype.start=function(t,n){var i=this;this._id=t;var s="".concat(this._baseUrl,"&id=").concat(t,"&token=").concat(n);this._socket||!this._disconnected||(this._socket=new WebSocket(s+"&version="+Rs.version),this._disconnected=!1,this._socket.onmessage=function(a){var o;try{o=JSON.parse(a.data),J.default.log("Server message received:",o)}catch{J.default.log("Invalid server message",a.data);return}i.emit(Zt.Message,o)},this._socket.onclose=function(a){i._disconnected||(J.default.log("Socket closed.",a),i._cleanup(),i._disconnected=!0,i.emit(Zt.Disconnected))},this._socket.onopen=function(){i._disconnected||(i._sendQueuedMessages(),J.default.log("Socket open"),i._scheduleHeartbeat())})},e.prototype._scheduleHeartbeat=function(){var t=this;this._wsPingTimer=setTimeout(function(){t._sendHeartbeat()},this.pingInterval)},e.prototype._sendHeartbeat=function(){if(!this._wsOpen()){J.default.log("Cannot send heartbeat, because socket closed");return}var t=JSON.stringify({type:Ue.Heartbeat});this._socket.send(t),this._scheduleHeartbeat()},e.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},e.prototype._sendQueuedMessages=function(){var t,n,i=Bu([],Iu(this._messagesQueue),!1);this._messagesQueue=[];try{for(var s=zu(i),a=s.next();!a.done;a=s.next()){var o=a.value;this.send(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.send=function(t){if(!this._disconnected){if(!this._id){this._messagesQueue.push(t);return}if(!t.type){this.emit(Zt.Error,"Invalid message");return}if(this._wsOpen()){var n=JSON.stringify(t);this._socket.send(n)}}},e.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},e.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},e}(ri.EventEmitter),As={};Ut(As,"MediaConnection",()=>mc,r=>mc=r);var Os={};Ut(Os,"Negotiator",()=>pc,r=>pc=r);var mr=function(){return mr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},mr.apply(this,arguments)},yr=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(p){a(p)}}function c(u){try{l(n.throw(u))}catch(p){a(p)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},gr=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},pc=function(){function r(e){this.connection=e}return r.prototype.startConnection=function(e){var t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===Rt.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){if(this.connection.type===Rt.Data){var n=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(n.label,i);n.initialize(s)}this._makeOffer()}else this.handleSDP("OFFER",e.sdp)},r.prototype._startPeerConnection=function(){J.default.log("Creating RTCPeerConnection.");var e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e},r.prototype._setupListeners=function(e){var t=this,n=this.connection.peer,i=this.connection.connectionId,s=this.connection.type,a=this.connection.provider;J.default.log("Listening for ICE candidates."),e.onicecandidate=function(o){!o.candidate||!o.candidate.candidate||(J.default.log("Received ICE candidates for ".concat(n,":"),o.candidate),a.socket.send({type:Ue.Candidate,payload:{candidate:o.candidate,type:s,connectionId:i},dst:n}))},e.oniceconnectionstatechange=function(){switch(e.iceConnectionState){case"failed":J.default.log("iceConnectionState is failed, closing connections to "+n),t.connection.emit("error",new Error("Negotiation of connection to "+n+" failed.")),t.connection.close();break;case"closed":J.default.log("iceConnectionState is closed, closing connections to "+n),t.connection.emit("error",new Error("Connection to "+n+" closed.")),t.connection.close();break;case"disconnected":J.default.log("iceConnectionState changed to disconnected on the connection with "+n);break;case"completed":e.onicecandidate=te.noop;break}t.connection.emit("iceStateChanged",e.iceConnectionState)},J.default.log("Listening for data channel"),e.ondatachannel=function(o){J.default.log("Received data channel");var c=o.channel,l=a.getConnection(n,i);l.initialize(c)},J.default.log("Listening for remote stream"),e.ontrack=function(o){J.default.log("Received remote stream");var c=o.streams[0],l=a.getConnection(n,i);if(l.type===Rt.Media){var u=l;t._addStreamToMediaConnection(c,u)}}},r.prototype.cleanup=function(){J.default.log("Cleaning up PeerConnection to "+this.connection.peer);var e=this.connection.peerConnection;if(e){this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=function(){};var t=e.signalingState!=="closed",n=!1;if(this.connection.type===Rt.Data){var i=this.connection,s=i.dataChannel;s&&(n=!!s.readyState&&s.readyState!=="closed")}(t||n)&&e.close()}},r.prototype._makeOffer=function(){return yr(this,void 0,Promise,function(){var e,t,n,i,s,a,o;return gr(this,function(c){switch(c.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,c.label=1;case 1:return c.trys.push([1,7,,8]),[4,e.createOffer(this.connection.options.constraints)];case 2:n=c.sent(),J.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return c.sent(),J.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),i={sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:te.browser},this.connection.type===Rt.Data&&(s=this.connection,i=mr(mr({},i),{label:s.label,reliable:s.reliable,serialization:s.serialization})),t.socket.send({type:Ue.Offer,payload:i,dst:this.connection.peer}),[3,6];case 5:return a=c.sent(),a!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(we.WebRTC,a),J.default.log("Failed to setLocalDescription, ",a)),[3,6];case 6:return[3,8];case 7:return o=c.sent(),t.emitError(we.WebRTC,o),J.default.log("Failed to createOffer, ",o),[3,8];case 8:return[2]}})})},r.prototype._makeAnswer=function(){return yr(this,void 0,Promise,function(){var e,t,n,i,s;return gr(this,function(a){switch(a.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,a.label=1;case 1:return a.trys.push([1,7,,8]),[4,e.createAnswer()];case 2:n=a.sent(),J.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),a.label=3;case 3:return a.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return a.sent(),J.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),t.socket.send({type:Ue.Answer,payload:{sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,browser:te.browser},dst:this.connection.peer}),[3,6];case 5:return i=a.sent(),t.emitError(we.WebRTC,i),J.default.log("Failed to setLocalDescription, ",i),[3,6];case 6:return[3,8];case 7:return s=a.sent(),t.emitError(we.WebRTC,s),J.default.log("Failed to create answer, ",s),[3,8];case 8:return[2]}})})},r.prototype.handleSDP=function(e,t){return yr(this,void 0,Promise,function(){var n,i,s,a;return gr(this,function(o){switch(o.label){case 0:t=new RTCSessionDescription(t),n=this.connection.peerConnection,i=this.connection.provider,J.default.log("Setting remote description",t),s=this,o.label=1;case 1:return o.trys.push([1,5,,6]),[4,n.setRemoteDescription(t)];case 2:return o.sent(),J.default.log("Set remoteDescription:".concat(e," for:").concat(this.connection.peer)),e!=="OFFER"?[3,4]:[4,s._makeAnswer()];case 3:o.sent(),o.label=4;case 4:return[3,6];case 5:return a=o.sent(),i.emitError(we.WebRTC,a),J.default.log("Failed to setRemoteDescription, ",a),[3,6];case 6:return[2]}})})},r.prototype.handleCandidate=function(e){return yr(this,void 0,Promise,function(){var t,n,i,s,a,o;return gr(this,function(c){switch(c.label){case 0:J.default.log("handleCandidate:",e),t=e.candidate,n=e.sdpMLineIndex,i=e.sdpMid,s=this.connection.peerConnection,a=this.connection.provider,c.label=1;case 1:return c.trys.push([1,3,,4]),[4,s.addIceCandidate(new RTCIceCandidate({sdpMid:i,sdpMLineIndex:n,candidate:t}))];case 2:return c.sent(),J.default.log("Added ICE candidate for:".concat(this.connection.peer)),[3,4];case 3:return o=c.sent(),a.emitError(we.WebRTC,o),J.default.log("Failed to handleCandidate, ",o),[3,4];case 4:return[2]}})})},r.prototype._addTracksToConnection=function(e,t){if(J.default.log("add tracks from stream ".concat(e.id," to peer connection")),!t.addTrack)return J.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(function(n){t.addTrack(n,e)})},r.prototype._addStreamToMediaConnection=function(e,t){J.default.log("add stream ".concat(e.id," to media connection ").concat(t.connectionId)),t.addStream(e)},r}(),Is={};Ut(Is,"BaseConnection",()=>fc,r=>fc=r);var Nu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),fc=function(r){Nu(e,r);function e(t,n,i){var s=r.call(this)||this;return s.peer=t,s.provider=n,s.options=i,s._open=!1,s.metadata=i.metadata,s}return Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),e}(ri.EventEmitter),Uu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),vr=function(){return vr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},vr.apply(this,arguments)},Du=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},mc=function(r){Uu(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s._localStream=s.options._stream,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s._negotiator=new Os.Negotiator(s),s._localStream&&s._negotiator.startConnection({_stream:s._localStream,originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Rt.Media},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),e.prototype.addStream=function(t){J.default.log("Receiving stream",t),this._remoteStream=t,r.prototype.emit.call(this,"stream",t)},e.prototype.handleMessage=function(t){var n=t.type,i=t.payload;switch(t.type){case Ue.Answer:this._negotiator.handleSDP(n,i.sdp),this._open=!0;break;case Ue.Candidate:this._negotiator.handleCandidate(i.candidate);break;default:J.default.warn("Unrecognized message type:".concat(n," from peer:").concat(this.peer));break}},e.prototype.answer=function(t,n){var i,s;if(n===void 0&&(n={}),this._localStream){J.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=t,n&&n.sdpTransform&&(this.options.sdpTransform=n.sdpTransform),this._negotiator.startConnection(vr(vr({},this.options._payload),{_stream:t}));var a=this.provider._getMessages(this.connectionId);try{for(var o=Du(a),c=o.next();!c.done;c=o.next()){var l=c.value;this.handleMessage(l)}}catch(u){i={error:u}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}this._open=!0},e.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.ID_PREFIX="mc_",e}(Is.BaseConnection),Bs={};Ut(Bs,"DataConnection",()=>vc,r=>vc=r);var yc={};Ut(yc,"EncodingQueue",()=>gc,r=>gc=r);var Lu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),gc=function(r){Lu(e,r);function e(){var t=r.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(n){t._processing=!1,n.target&&t.emit("done",n.target.result),t.doNextTask()},t.fileReader.onerror=function(n){J.default.error("EncodingQueue error:",n),t._processing=!1,t.destroy(),t.emit("error",n)},t}return Object.defineProperty(e.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),e.prototype.enque=function(t){this.queue.push(t),!this.processing&&this.doNextTask()},e.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},e.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},e}(ri.EventEmitter),Fu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),Vu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},vc=function(r){Fu(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s.stringify=JSON.stringify,s.parse=JSON.parse,s._buffer=[],s._bufferSize=0,s._buffering=!1,s._chunkedData={},s._encodingQueue=new yc.EncodingQueue,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s.label=s.options.label||s.connectionId,s.serialization=s.options.serialization||Yt.Binary,s.reliable=!!s.options.reliable,s._encodingQueue.on("done",function(a){s._bufferedSend(a)}),s._encodingQueue.on("error",function(){J.default.error("DC#".concat(s.connectionId,": Error occured in encoding from blob to arraybuffer, close DC")),s.close()}),s._negotiator=new Os.Negotiator(s),s._negotiator.startConnection(s.options._payload||{originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Rt.Data},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),e.prototype.initialize=function(t){this._dc=t,this._configureDataChannel()},e.prototype._configureDataChannel=function(){var t=this;(!te.supports.binaryBlob||te.supports.reliable)&&(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){J.default.log("DC#".concat(t.connectionId," dc connection success")),t._open=!0,t.emit("open")},this.dataChannel.onmessage=function(n){J.default.log("DC#".concat(t.connectionId," dc onmessage:"),n.data),t._handleDataMessage(n)},this.dataChannel.onclose=function(){J.default.log("DC#".concat(t.connectionId," dc closed for:"),t.peer),t.close()}},e.prototype._handleDataMessage=function(t){var n=this,i=t.data,s=i.constructor,a=this.serialization===Yt.Binary||this.serialization===Yt.BinaryUTF8,o=i;if(a){if(s===Blob){te.blobToArrayBuffer(i,function(l){var u=te.unpack(l);n.emit("data",u)});return}else if(s===ArrayBuffer)o=te.unpack(i);else if(s===String){var c=te.binaryStringToArrayBuffer(i);o=te.unpack(c)}}else this.serialization===Yt.JSON&&(o=this.parse(i));if(o.__peerData){this._handleChunk(o);return}r.prototype.emit.call(this,"data",o)},e.prototype._handleChunk=function(t){var n=t.__peerData,i=this._chunkedData[n]||{data:[],count:0,total:t.total};if(i.data[t.n]=t.data,i.count++,this._chunkedData[n]=i,i.total===i.count){delete this._chunkedData[n];var s=new Blob(i.data);this._handleDataMessage({data:s})}},e.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.prototype.send=function(t,n){if(!this.open){r.prototype.emit.call(this,"error",new Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===Yt.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===Yt.Binary||this.serialization===Yt.BinaryUTF8){var i=te.pack(t);if(!n&&i.size>te.chunkedMTU){this._sendChunks(i);return}te.supports.binaryBlob?this._bufferedSend(i):this._encodingQueue.enque(i)}else this._bufferedSend(t)},e.prototype._bufferedSend=function(t){(this._buffering||!this._trySend(t))&&(this._buffer.push(t),this._bufferSize=this._buffer.length)},e.prototype._trySend=function(t){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>e.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(t)}catch(i){return J.default.error("DC#:".concat(this.connectionId," Error when sending:"),i),this._buffering=!0,this.close(),!1}return!0},e.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var t=this._buffer[0];this._trySend(t)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},e.prototype._sendChunks=function(t){var n,i,s=te.chunk(t);J.default.log("DC#".concat(this.connectionId," Try to send ").concat(s.length," chunks..."));try{for(var a=Vu(s),o=a.next();!o.done;o=a.next()){var c=o.value;this.send(c,!0)}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.handleMessage=function(t){var n=t.payload;switch(t.type){case Ue.Answer:this._negotiator.handleSDP(t.type,n.sdp);break;case Ue.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:J.default.warn("Unrecognized message type:",t.type,"from peer:",this.peer);break}},e.ID_PREFIX="dc_",e.MAX_BUFFERED_AMOUNT=8388608,e}(Is.BaseConnection),Sc={};Ut(Sc,"API",()=>wc,r=>wc=r);var bc=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(p){a(p)}}function c(u){try{l(n.throw(u))}catch(p){a(p)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},xc=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},wc=function(){function r(e){this._options=e}return r.prototype._buildRequest=function(e){var t=this._options.secure?"https":"http",n=this._options,i=n.host,s=n.port,a=n.path,o=n.key,c=new URL("".concat(t,"://").concat(i,":").concat(s).concat(a).concat(o,"/").concat(e));return c.searchParams.set("ts","".concat(Date.now()).concat(Math.random())),c.searchParams.set("version",Rs.version),fetch(c.href,{referrerPolicy:this._options.referrerPolicy})},r.prototype.retrieveId=function(){return bc(this,void 0,Promise,function(){var e,t,n;return xc(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("id")];case 1:if(e=i.sent(),e.status!==200)throw new Error("Error. Status:".concat(e.status));return[2,e.text()];case 2:throw t=i.sent(),J.default.error("Error retrieving ID",t),n="",this._options.path==="/"&&this._options.host!==te.CLOUD_HOST&&(n=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+n);case 3:return[2]}})})},r.prototype.listAllPeers=function(){return bc(this,void 0,Promise,function(){var e,t,n;return xc(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("peers")];case 1:if(e=i.sent(),e.status!==200)throw e.status===401?(t="",this._options.host===te.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)):new Error("Error. Status:".concat(e.status));return[2,e.json()];case 2:throw n=i.sent(),J.default.error("Error retrieving list peers",n),new Error("Could not get list peers from the server."+n);case 3:return[2]}})})},r}(),ju=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),oi=function(){return oi=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},oi.apply(this,arguments)},ai=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},Ju=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},zs=function(r){ju(e,r);function e(t,n){var i=r.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var s;return t&&t.constructor==Object?n=t:t&&(s=t.toString()),n=oi({debug:0,host:te.CLOUD_HOST,port:te.CLOUD_PORT,path:"/",key:e.DEFAULT_KEY,token:te.randomToken(),config:te.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin"},n),i._options=n,i._options.host==="/"&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!=="/"&&(i._options.path="/"+i._options.path),i._options.path[i._options.path.length-1]!=="/"&&(i._options.path+="/")),i._options.secure===void 0&&i._options.host!==te.CLOUD_HOST?i._options.secure=te.isSecure():i._options.host==te.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&J.default.setLogFunction(i._options.logFunction),J.default.logLevel=i._options.debug||0,i._api=new Sc.API(n),i._socket=i._createServerConnection(),!te.supports.audioVideo&&!te.supports.data?(i._delayedAbort(we.BrowserIncompatible,"The current browser does not support WebRTC"),i):s&&!te.validateId(s)?(i._delayedAbort(we.InvalidID,'ID "'.concat(s,'" is invalid')),i):(s?i._initialize(s):i._api.retrieveId().then(function(a){return i._initialize(a)}).catch(function(a){return i._abort(we.ServerError,a)}),i)}return Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connections",{get:function(){var t,n,i=Object.create(null);try{for(var s=ai(this._connections),a=s.next();!a.done;a=s.next()){var o=Ju(a.value,2),c=o[0],l=o[1];i[c]=l}}catch(u){t={error:u}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return i},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),e.prototype._createServerConnection=function(){var t=this,n=new hc.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return n.on(Zt.Message,function(i){t._handleMessage(i)}),n.on(Zt.Error,function(i){t._abort(we.SocketError,i)}),n.on(Zt.Disconnected,function(){t.disconnected||(t.emitError(we.Network,"Lost connection to server."),t.disconnect())}),n.on(Zt.Close,function(){t.disconnected||t._abort(we.SocketClosed,"Underlying socket is already closed.")}),n},e.prototype._initialize=function(t){this._id=t,this.socket.start(t,this._options.token)},e.prototype._handleMessage=function(t){var n,i,s=t.type,a=t.payload,o=t.src;switch(s){case Ue.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Ue.Error:this._abort(we.ServerError,a.msg);break;case Ue.IdTaken:this._abort(we.UnavailableID,'ID "'.concat(this.id,'" is taken'));break;case Ue.InvalidKey:this._abort(we.InvalidKey,'API KEY "'.concat(this._options.key,'" is invalid'));break;case Ue.Leave:J.default.log("Received leave message from ".concat(o)),this._cleanupPeer(o),this._connections.delete(o);break;case Ue.Expire:this.emitError(we.PeerUnavailable,"Could not connect to peer ".concat(o));break;case Ue.Offer:var x=a.connectionId,_=this.getConnection(o,x);if(_&&(_.close(),J.default.warn("Offer received for existing Connection ID:".concat(x))),a.type===Rt.Media){var c=new As.MediaConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata});_=c,this._addConnection(o,_),this.emit("call",c)}else if(a.type===Rt.Data){var l=new Bs.DataConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata,label:a.label,serialization:a.serialization,reliable:a.reliable});_=l,this._addConnection(o,_),this.emit("connection",l)}else{J.default.warn("Received malformed connection type:".concat(a.type));return}var u=this._getMessages(x);try{for(var p=ai(u),m=p.next();!m.done;m=p.next()){var f=m.value;_.handleMessage(f)}}catch(g){n={error:g}}finally{try{m&&!m.done&&(i=p.return)&&i.call(p)}finally{if(n)throw n.error}}break;default:if(!a){J.default.warn("You received a malformed message from ".concat(o," of type ").concat(s));return}var x=a.connectionId,_=this.getConnection(o,x);_&&_.peerConnection?_.handleMessage(t):x?this._storeMessage(x,t):J.default.warn("You received an unrecognized message:",t);break}},e.prototype._storeMessage=function(t,n){this._lostMessages.has(t)||this._lostMessages.set(t,[]),this._lostMessages.get(t).push(n)},e.prototype._getMessages=function(t){var n=this._lostMessages.get(t);return n?(this._lostMessages.delete(t),n):[]},e.prototype.connect=function(t,n){if(n===void 0&&(n={}),this.disconnected){J.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(we.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}var i=new Bs.DataConnection(t,this,n);return this._addConnection(t,i),i},e.prototype.call=function(t,n,i){if(i===void 0&&(i={}),this.disconnected){J.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(we.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!n){J.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var s=new As.MediaConnection(t,this,oi(oi({},i),{_stream:n}));return this._addConnection(t,s),s},e.prototype._addConnection=function(t,n){J.default.log("add connection ".concat(n.type,":").concat(n.connectionId," to peerId:").concat(t)),this._connections.has(t)||this._connections.set(t,[]),this._connections.get(t).push(n)},e.prototype._removeConnection=function(t){var n=this._connections.get(t.peer);if(n){var i=n.indexOf(t);i!==-1&&n.splice(i,1)}this._lostMessages.delete(t.connectionId)},e.prototype.getConnection=function(t,n){var i,s,a=this._connections.get(t);if(!a)return null;try{for(var o=ai(a),c=o.next();!c.done;c=o.next()){var l=c.value;if(l.connectionId===n)return l}}catch(u){i={error:u}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}return null},e.prototype._delayedAbort=function(t,n){var i=this;setTimeout(function(){i._abort(t,n)},0)},e.prototype._abort=function(t,n){J.default.error("Aborting!"),this.emitError(t,n),this._lastServerId?this.disconnect():this.destroy()},e.prototype.emitError=function(t,n){J.default.error("Error:",n);var i;typeof n=="string"?i=new Error(n):i=n,i.type=t,this.emit("error",i)},e.prototype.destroy=function(){this.destroyed||(J.default.log("Destroy peer with ID:".concat(this.id)),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))},e.prototype._cleanup=function(){var t,n;try{for(var i=ai(this._connections.keys()),s=i.next();!s.done;s=i.next()){var a=s.value;this._cleanupPeer(a),this._connections.delete(a)}}catch(o){t={error:o}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.socket.removeAllListeners()},e.prototype._cleanupPeer=function(t){var n,i,s=this._connections.get(t);if(s)try{for(var a=ai(s),o=a.next();!o.done;o=a.next()){var c=o.value;c.close()}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.disconnect=function(){if(!this.disconnected){var t=this.id;J.default.log("Disconnect peer with ID:".concat(t)),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=t,this._id=null,this.emit("disconnected",t)}},e.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)J.default.log("Attempting reconnection to server with ID ".concat(this._lastServerId)),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)J.default.error("In a hurry? We're still trying to make the initial connection!");else throw new Error("Peer ".concat(this.id," cannot reconnect because it is not disconnected from the server!"))}},e.prototype.listAllPeers=function(t){var n=this;t===void 0&&(t=function(i){}),this._api.listAllPeers().then(function(i){return t(i)}).catch(function(i){return n._abort(we.ServerError,i)})},e.DEFAULT_KEY="peerjs",e}(ri.EventEmitter),_c=cc.Peer;const Gu=Object.freeze(Object.defineProperty({__proto__:null,get Peer(){return zs},default:_c,util:te},Symbol.toStringTag,{value:"Module"})),Wu=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Hu(r){return typeof r=="string"&&Wu.test(r)}const De=[];for(let r=0;r<256;++r)De.push((r+256).toString(16).slice(1));function qu(r,e=0){return De[r[e+0]]+De[r[e+1]]+De[r[e+2]]+De[r[e+3]]+"-"+De[r[e+4]]+De[r[e+5]]+"-"+De[r[e+6]]+De[r[e+7]]+"-"+De[r[e+8]]+De[r[e+9]]+"-"+De[r[e+10]]+De[r[e+11]]+De[r[e+12]]+De[r[e+13]]+De[r[e+14]]+De[r[e+15]]}function Xu(r){if(!Hu(r))throw TypeError("Invalid UUID");let e;const t=new Uint8Array(16);return t[0]=(e=parseInt(r.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(r.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(r.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(r.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}function Yu(r){r=unescape(encodeURIComponent(r));const e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}const Zu="6ba7b810-9dad-11d1-80b4-00c04fd430c8",Ku="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function Qu(r,e,t){function n(i,s,a,o){var c;if(typeof i=="string"&&(i=Yu(i)),typeof s=="string"&&(s=Xu(s)),((c=s)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(s),l.set(i,s.length),l=t(l),l[6]=l[6]&15|e,l[8]=l[8]&63|128,a){o=o||0;for(let u=0;u<16;++u)a[o+u]=l[u];return a}return qu(l)}try{n.name=r}catch{}return n.DNS=Zu,n.URL=Ku,n}function $u(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function Ns(r,e){return r<<e|r>>>32-e}function eh(r){const e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const a=unescape(encodeURIComponent(r));r=[];for(let o=0;o<a.length;++o)r.push(a.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const n=r.length/4+2,i=Math.ceil(n/16),s=new Array(i);for(let a=0;a<i;++a){const o=new Uint32Array(16);for(let c=0;c<16;++c)o[c]=r[a*64+c*4]<<24|r[a*64+c*4+1]<<16|r[a*64+c*4+2]<<8|r[a*64+c*4+3];s[a]=o}s[i-1][14]=(r.length-1)*8/Math.pow(2,32),s[i-1][14]=Math.floor(s[i-1][14]),s[i-1][15]=(r.length-1)*8&4294967295;for(let a=0;a<i;++a){const o=new Uint32Array(80);for(let f=0;f<16;++f)o[f]=s[a][f];for(let f=16;f<80;++f)o[f]=Ns(o[f-3]^o[f-8]^o[f-14]^o[f-16],1);let c=t[0],l=t[1],u=t[2],p=t[3],m=t[4];for(let f=0;f<80;++f){const x=Math.floor(f/20),_=Ns(c,5)+$u(x,l,u,p)+m+e[x]+o[f]>>>0;m=p,p=u,u=Ns(l,30)>>>0,l=c,c=_}t[0]=t[0]+c>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+p>>>0,t[4]=t[4]+m>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}const th=Qu("v5",80,eh);var Tc={exports:{}},Mc={exports:{}},Cc;function nh(){return Cc||(Cc=1,function(){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(t,n){return t<<n|t>>>32-n},rotr:function(t,n){return t<<32-n|t>>>n},endian:function(t){if(t.constructor==Number)return e.rotl(t,8)&16711935|e.rotl(t,24)&4278255360;for(var n=0;n<t.length;n++)t[n]=e.endian(t[n]);return t},randomBytes:function(t){for(var n=[];t>0;t--)n.push(Math.floor(Math.random()*256));return n},bytesToWords:function(t){for(var n=[],i=0,s=0;i<t.length;i++,s+=8)n[s>>>5]|=t[i]<<24-s%32;return n},wordsToBytes:function(t){for(var n=[],i=0;i<t.length*32;i+=8)n.push(t[i>>>5]>>>24-i%32&255);return n},bytesToHex:function(t){for(var n=[],i=0;i<t.length;i++)n.push((t[i]>>>4).toString(16)),n.push((t[i]&15).toString(16));return n.join("")},hexToBytes:function(t){for(var n=[],i=0;i<t.length;i+=2)n.push(parseInt(t.substr(i,2),16));return n},bytesToBase64:function(t){for(var n=[],i=0;i<t.length;i+=3)for(var s=t[i]<<16|t[i+1]<<8|t[i+2],a=0;a<4;a++)i*8+a*6<=t.length*8?n.push(r.charAt(s>>>6*(3-a)&63)):n.push("=");return n.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/ig,"");for(var n=[],i=0,s=0;i<t.length;s=++i%4)s!=0&&n.push((r.indexOf(t.charAt(i-1))&Math.pow(2,-2*s+8)-1)<<s*2|r.indexOf(t.charAt(i))>>>6-s*2);return n}};Mc.exports=e}()),Mc.exports}var Us,Ec;function Pc(){if(Ec)return Us;Ec=1;var r={utf8:{stringToBytes:function(e){return r.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(r.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n)&255);return t},bytesToString:function(e){for(var t=[],n=0;n<e.length;n++)t.push(String.fromCharCode(e[n]));return t.join("")}}};return Us=r,Us}var Ds,kc;function ih(){if(kc)return Ds;kc=1,Ds=function(t){return t!=null&&(r(t)||e(t)||!!t._isBuffer)};function r(t){return!!t.constructor&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)}function e(t){return typeof t.readFloatLE=="function"&&typeof t.slice=="function"&&r(t.slice(0,0))}return Ds}var Rc;function rh(){return Rc||(Rc=1,function(){var r=nh(),e=Pc().utf8,t=ih(),n=Pc().bin,i=function(s,a){s.constructor==String?a&&a.encoding==="binary"?s=n.stringToBytes(s):s=e.stringToBytes(s):t(s)?s=Array.prototype.slice.call(s,0):!Array.isArray(s)&&s.constructor!==Uint8Array&&(s=s.toString());for(var o=r.bytesToWords(s),c=s.length*8,l=1732584193,u=-271733879,p=-1732584194,m=271733878,f=0;f<o.length;f++)o[f]=(o[f]<<8|o[f]>>>24)&16711935|(o[f]<<24|o[f]>>>8)&4278255360;o[c>>>5]|=128<<c%32,o[(c+64>>>9<<4)+14]=c;for(var x=i._ff,_=i._gg,g=i._hh,v=i._ii,f=0;f<o.length;f+=16){var w=l,S=u,T=p,M=m;l=x(l,u,p,m,o[f+0],7,-680876936),m=x(m,l,u,p,o[f+1],12,-389564586),p=x(p,m,l,u,o[f+2],17,606105819),u=x(u,p,m,l,o[f+3],22,-1044525330),l=x(l,u,p,m,o[f+4],7,-176418897),m=x(m,l,u,p,o[f+5],12,1200080426),p=x(p,m,l,u,o[f+6],17,-1473231341),u=x(u,p,m,l,o[f+7],22,-45705983),l=x(l,u,p,m,o[f+8],7,1770035416),m=x(m,l,u,p,o[f+9],12,-1958414417),p=x(p,m,l,u,o[f+10],17,-42063),u=x(u,p,m,l,o[f+11],22,-1990404162),l=x(l,u,p,m,o[f+12],7,1804603682),m=x(m,l,u,p,o[f+13],12,-40341101),p=x(p,m,l,u,o[f+14],17,-1502002290),u=x(u,p,m,l,o[f+15],22,1236535329),l=_(l,u,p,m,o[f+1],5,-165796510),m=_(m,l,u,p,o[f+6],9,-1069501632),p=_(p,m,l,u,o[f+11],14,643717713),u=_(u,p,m,l,o[f+0],20,-373897302),l=_(l,u,p,m,o[f+5],5,-701558691),m=_(m,l,u,p,o[f+10],9,38016083),p=_(p,m,l,u,o[f+15],14,-660478335),u=_(u,p,m,l,o[f+4],20,-405537848),l=_(l,u,p,m,o[f+9],5,568446438),m=_(m,l,u,p,o[f+14],9,-1019803690),p=_(p,m,l,u,o[f+3],14,-187363961),u=_(u,p,m,l,o[f+8],20,1163531501),l=_(l,u,p,m,o[f+13],5,-1444681467),m=_(m,l,u,p,o[f+2],9,-51403784),p=_(p,m,l,u,o[f+7],14,1735328473),u=_(u,p,m,l,o[f+12],20,-1926607734),l=g(l,u,p,m,o[f+5],4,-378558),m=g(m,l,u,p,o[f+8],11,-2022574463),p=g(p,m,l,u,o[f+11],16,1839030562),u=g(u,p,m,l,o[f+14],23,-35309556),l=g(l,u,p,m,o[f+1],4,-1530992060),m=g(m,l,u,p,o[f+4],11,1272893353),p=g(p,m,l,u,o[f+7],16,-155497632),u=g(u,p,m,l,o[f+10],23,-1094730640),l=g(l,u,p,m,o[f+13],4,681279174),m=g(m,l,u,p,o[f+0],11,-358537222),p=g(p,m,l,u,o[f+3],16,-722521979),u=g(u,p,m,l,o[f+6],23,76029189),l=g(l,u,p,m,o[f+9],4,-640364487),m=g(m,l,u,p,o[f+12],11,-421815835),p=g(p,m,l,u,o[f+15],16,530742520),u=g(u,p,m,l,o[f+2],23,-995338651),l=v(l,u,p,m,o[f+0],6,-198630844),m=v(m,l,u,p,o[f+7],10,1126891415),p=v(p,m,l,u,o[f+14],15,-1416354905),u=v(u,p,m,l,o[f+5],21,-57434055),l=v(l,u,p,m,o[f+12],6,1700485571),m=v(m,l,u,p,o[f+3],10,-1894986606),p=v(p,m,l,u,o[f+10],15,-1051523),u=v(u,p,m,l,o[f+1],21,-2054922799),l=v(l,u,p,m,o[f+8],6,1873313359),m=v(m,l,u,p,o[f+15],10,-30611744),p=v(p,m,l,u,o[f+6],15,-1560198380),u=v(u,p,m,l,o[f+13],21,1309151649),l=v(l,u,p,m,o[f+4],6,-145523070),m=v(m,l,u,p,o[f+11],10,-1120210379),p=v(p,m,l,u,o[f+2],15,718787259),u=v(u,p,m,l,o[f+9],21,-343485551),l=l+w>>>0,u=u+S>>>0,p=p+T>>>0,m=m+M>>>0}return r.endian([l,u,p,m])};i._ff=function(s,a,o,c,l,u,p){var m=s+(a&o|~a&c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._gg=function(s,a,o,c,l,u,p){var m=s+(a&c|o&~c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._hh=function(s,a,o,c,l,u,p){var m=s+(a^o^c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._ii=function(s,a,o,c,l,u,p){var m=s+(o^(a|~c))+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._blocksize=16,i._digestsize=16,Tc.exports=function(s,a){if(s==null)throw new Error("Illegal argument "+s);var o=r.wordsToBytes(i(s,a));return a&&a.asBytes?o:a&&a.asString?n.bytesToString(o):r.bytesToHex(o)}}()),Tc.exports}var sh=rh();const oh=lr(sh),He=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Ac=1234567;const Oc=Math.PI/180,Ic=180/Math.PI;function ah(){const r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(He[r&255]+He[r>>8&255]+He[r>>16&255]+He[r>>24&255]+"-"+He[e&255]+He[e>>8&255]+"-"+He[e>>16&15|64]+He[e>>24&255]+"-"+He[t&63|128]+He[t>>8&255]+"-"+He[t>>16&255]+He[t>>24&255]+He[n&255]+He[n>>8&255]+He[n>>16&255]+He[n>>24&255]).toLowerCase()}function Dt(r,e,t){return Math.max(e,Math.min(t,r))}function Bc(r,e){return(r%e+e)%e}function ch(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function lh(r,e,t){return r!==e?(t-r)/(e-r):0}function zc(r,e,t){return(1-t)*r+t*e}function uh(r,e,t,n){return zc(r,e,1-Math.exp(-t*n))}function hh(r,e=1){return e-Math.abs(Bc(r,e*2)-e)}function dh(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function ph(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function fh(r,e){return r+Math.floor(Math.random()*(e-r+1))}function mh(r,e){return r+Math.random()*(e-r)}function yh(r){return r*(.5-Math.random())}function gh(r){r!==void 0&&(Ac=r);let e=Ac+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function vh(r){return r*Oc}function Sh(r){return r*Ic}function bh(r){return(r&r-1)===0&&r!==0}function xh(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function wh(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function _h(r,e,t,n,i){const s=Math.cos,a=Math.sin,o=s(t/2),c=a(t/2),l=s((e+n)/2),u=a((e+n)/2),p=s((e-n)/2),m=a((e-n)/2),f=s((n-e)/2),x=a((n-e)/2);switch(i){case"XYX":r.set(o*u,c*p,c*m,o*l);break;case"YZY":r.set(c*m,o*u,c*p,o*l);break;case"ZXZ":r.set(c*p,c*m,o*u,o*l);break;case"XZX":r.set(o*u,c*x,c*f,o*l);break;case"YXY":r.set(c*f,o*u,c*x,o*l);break;case"ZYZ":r.set(c*x,c*f,o*u,o*l);break;default:console.warn("../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function Th(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Mh(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const Nn={DEG2RAD:Oc,RAD2DEG:Ic,generateUUID:ah,clamp:Dt,euclideanModulo:Bc,mapLinear:ch,inverseLerp:lh,lerp:zc,damp:uh,pingpong:hh,smoothstep:dh,smootherstep:ph,randInt:fh,randFloat:mh,randFloatSpread:yh,seededRandom:gh,degToRad:vh,radToDeg:Sh,isPowerOfTwo:bh,ceilPowerOfTwo:xh,floorPowerOfTwo:wh,setQuaternionFromProperEuler:_h,normalize:Mh,denormalize:Th};class re{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,s,a,o){let c=n[i+0],l=n[i+1],u=n[i+2],p=n[i+3];const m=s[a+0],f=s[a+1],x=s[a+2],_=s[a+3];if(o===0){e[t+0]=c,e[t+1]=l,e[t+2]=u,e[t+3]=p;return}if(o===1){e[t+0]=m,e[t+1]=f,e[t+2]=x,e[t+3]=_;return}if(p!==_||c!==m||l!==f||u!==x){let g=1-o;const v=c*m+l*f+u*x+p*_,w=v>=0?1:-1,S=1-v*v;if(S>Number.EPSILON){const M=Math.sqrt(S),E=Math.atan2(M,v*w);g=Math.sin(g*E)/M,o=Math.sin(o*E)/M}const T=o*w;if(c=c*g+m*T,l=l*g+f*T,u=u*g+x*T,p=p*g+_*T,g===1-o){const M=1/Math.sqrt(c*c+l*l+u*u+p*p);c*=M,l*=M,u*=M,p*=M}}e[t]=c,e[t+1]=l,e[t+2]=u,e[t+3]=p}static multiplyQuaternionsFlat(e,t,n,i,s,a){const o=n[i],c=n[i+1],l=n[i+2],u=n[i+3],p=s[a],m=s[a+1],f=s[a+2],x=s[a+3];return e[t]=o*x+u*p+c*f-l*m,e[t+1]=c*x+u*m+l*p-o*f,e[t+2]=l*x+u*f+o*m-c*p,e[t+3]=u*x-o*p-c*m-l*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new re(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,s=e._z,a=e._order,o=Math.cos,c=Math.sin,l=o(n/2),u=o(i/2),p=o(s/2),m=c(n/2),f=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=m*u*p+l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p-m*f*x;break;case"YXZ":this._x=m*u*p+l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p+m*f*x;break;case"ZXY":this._x=m*u*p-l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p-m*f*x;break;case"ZYX":this._x=m*u*p-l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p+m*f*x;break;case"YZX":this._x=m*u*p+l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p-m*f*x;break;case"XZY":this._x=m*u*p-l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p+m*f*x;break;default:console.warn("../math.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],a=t[1],o=t[5],c=t[9],l=t[2],u=t[6],p=t[10],m=n+o+p;if(m>0){const f=.5/Math.sqrt(m+1);this._w=.25/f,this._x=(u-c)*f,this._y=(s-l)*f,this._z=(a-i)*f}else if(n>o&&n>p){const f=2*Math.sqrt(1+n-o-p);this._w=(u-c)/f,this._x=.25*f,this._y=(i+a)/f,this._z=(s+l)/f}else if(o>p){const f=2*Math.sqrt(1+o-n-p);this._w=(s-l)/f,this._x=(i+a)/f,this._y=.25*f,this._z=(c+u)/f}else{const f=2*Math.sqrt(1+p-n-o);this._w=(a-i)/f,this._x=(s+l)/f,this._y=(c+u)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(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._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Dt(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,a=e._w,o=t._x,c=t._y,l=t._z,u=t._w;return this._x=n*u+a*o+i*l-s*c,this._y=i*u+a*c+s*o-n*l,this._z=s*u+a*l+n*c-i*o,this._w=a*u-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;const c=1-o*o;if(c<=Number.EPSILON){const f=1-t;return this._w=f*a+t*this._w,this._x=f*n+t*this._x,this._y=f*i+t*this._y,this._z=f*s+t*this._z,this.normalize(),this}const l=Math.sqrt(c),u=Math.atan2(l,o),p=Math.sin((1-t)*u)/l,m=Math.sin(t*u)/l;return this._w=a*p+this._w*m,this._x=n*p+this._x*m,this._y=i*p+this._y*m,this._z=s*p+this._z*m,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class G{constructor(e=0,t=0,n=0){this.isVector3=!0,G.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new G(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Nc.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Nc.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,a=e.y,o=e.z,c=e.w,l=2*(a*i-o*n),u=2*(o*t-s*i),p=2*(s*n-a*t);return this.x=t+c*l+a*p-o*u,this.y=n+c*u+o*l-s*p,this.z=i+c*p+s*u-a*l,this}transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,s=e.z,a=t.x,o=t.y,c=t.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Ls.copy(this).projectOnVector(e),this.sub(Ls)}reflect(e){return this.sub(Ls.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Dt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ls=new G,Nc=new re,Sr=2e3,Uc=2001;class It{constructor(e,t,n,i,s,a,o,c,l,u,p,m,f,x,_,g){this.isMatrix4=!0,It.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l,u,p,m,f,x,_,g)}extractPosition(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error("THREE.Matrix4: .multiplyToArray() has been removed."),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}set(e,t,n,i,s,a,o,c,l,u,p,m,f,x,_,g){const v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=s,v[5]=a,v[9]=o,v[13]=c,v[2]=l,v[6]=u,v[10]=p,v[14]=m,v[3]=f,v[7]=x,v[11]=_,v[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new It().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/Un.setFromMatrixColumn(e,0).length(),s=1/Un.setFromMatrixColumn(e,1).length(),a=1/Un.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),u=Math.cos(s),p=Math.sin(s);if(e.order==="XYZ"){const m=a*u,f=a*p,x=o*u,_=o*p;t[0]=c*u,t[4]=-c*p,t[8]=l,t[1]=f+x*l,t[5]=m-_*l,t[9]=-o*c,t[2]=_-m*l,t[6]=x+f*l,t[10]=a*c}else if(e.order==="YXZ"){const m=c*u,f=c*p,x=l*u,_=l*p;t[0]=m+_*o,t[4]=x*o-f,t[8]=a*l,t[1]=a*p,t[5]=a*u,t[9]=-o,t[2]=f*o-x,t[6]=_+m*o,t[10]=a*c}else if(e.order==="ZXY"){const m=c*u,f=c*p,x=l*u,_=l*p;t[0]=m-_*o,t[4]=-a*p,t[8]=x+f*o,t[1]=f+x*o,t[5]=a*u,t[9]=_-m*o,t[2]=-a*l,t[6]=o,t[10]=a*c}else if(e.order==="ZYX"){const m=a*u,f=a*p,x=o*u,_=o*p;t[0]=c*u,t[4]=x*l-f,t[8]=m*l+_,t[1]=c*p,t[5]=_*l+m,t[9]=f*l-x,t[2]=-l,t[6]=o*c,t[10]=a*c}else if(e.order==="YZX"){const m=a*c,f=a*l,x=o*c,_=o*l;t[0]=c*u,t[4]=_-m*p,t[8]=x*p+f,t[1]=p,t[5]=a*u,t[9]=-o*u,t[2]=-l*u,t[6]=f*p+x,t[10]=m-_*p}else if(e.order==="XZY"){const m=a*c,f=a*l,x=o*c,_=o*l;t[0]=c*u,t[4]=-p,t[8]=l*u,t[1]=m*p+_,t[5]=a*u,t[9]=f*p-x,t[2]=x*p-f,t[6]=o*u,t[10]=_*p+m}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Ch,e,Eh)}lookAt(e,t,n){const i=this.elements;return ht.subVectors(e,t),ht.lengthSq()===0&&(ht.z=1),ht.normalize(),sn.crossVectors(n,ht),sn.lengthSq()===0&&(Math.abs(n.z)===1?ht.x+=1e-4:ht.z+=1e-4,ht.normalize(),sn.crossVectors(n,ht)),sn.normalize(),br.crossVectors(ht,sn),i[0]=sn.x,i[4]=br.x,i[8]=ht.x,i[1]=sn.y,i[5]=br.y,i[9]=ht.y,i[2]=sn.z,i[6]=br.z,i[10]=ht.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],u=n[1],p=n[5],m=n[9],f=n[13],x=n[2],_=n[6],g=n[10],v=n[14],w=n[3],S=n[7],T=n[11],M=n[15],E=i[0],P=i[4],O=i[8],A=i[12],R=i[1],I=i[5],B=i[9],U=i[13],L=i[2],j=i[6],W=i[10],ee=i[14],H=i[3],pe=i[7],ie=i[11],he=i[15];return s[0]=a*E+o*R+c*L+l*H,s[4]=a*P+o*I+c*j+l*pe,s[8]=a*O+o*B+c*W+l*ie,s[12]=a*A+o*U+c*ee+l*he,s[1]=u*E+p*R+m*L+f*H,s[5]=u*P+p*I+m*j+f*pe,s[9]=u*O+p*B+m*W+f*ie,s[13]=u*A+p*U+m*ee+f*he,s[2]=x*E+_*R+g*L+v*H,s[6]=x*P+_*I+g*j+v*pe,s[10]=x*O+_*B+g*W+v*ie,s[14]=x*A+_*U+g*ee+v*he,s[3]=w*E+S*R+T*L+M*H,s[7]=w*P+S*I+T*j+M*pe,s[11]=w*O+S*B+T*W+M*ie,s[15]=w*A+S*U+T*ee+M*he,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],a=e[1],o=e[5],c=e[9],l=e[13],u=e[2],p=e[6],m=e[10],f=e[14],x=e[3],_=e[7],g=e[11],v=e[15];return x*(+s*c*p-i*l*p-s*o*m+n*l*m+i*o*f-n*c*f)+_*(+t*c*f-t*l*m+s*a*m-i*a*f+i*l*u-s*c*u)+g*(+t*l*p-t*o*f-s*a*p+n*a*f+s*o*u-n*l*u)+v*(-i*o*u-t*c*p+t*o*m+i*a*p-n*a*m+n*c*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8],p=e[9],m=e[10],f=e[11],x=e[12],_=e[13],g=e[14],v=e[15],w=p*g*l-_*m*l+_*c*f-o*g*f-p*c*v+o*m*v,S=x*m*l-u*g*l-x*c*f+a*g*f+u*c*v-a*m*v,T=u*_*l-x*p*l+x*o*f-a*_*f-u*o*v+a*p*v,M=x*p*c-u*_*c-x*o*m+a*_*m+u*o*g-a*p*g,E=t*w+n*S+i*T+s*M;if(E===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const P=1/E;return e[0]=w*P,e[1]=(_*m*s-p*g*s-_*i*f+n*g*f+p*i*v-n*m*v)*P,e[2]=(o*g*s-_*c*s+_*i*l-n*g*l-o*i*v+n*c*v)*P,e[3]=(p*c*s-o*m*s-p*i*l+n*m*l+o*i*f-n*c*f)*P,e[4]=S*P,e[5]=(u*g*s-x*m*s+x*i*f-t*g*f-u*i*v+t*m*v)*P,e[6]=(x*c*s-a*g*s-x*i*l+t*g*l+a*i*v-t*c*v)*P,e[7]=(a*m*s-u*c*s+u*i*l-t*m*l-a*i*f+t*c*f)*P,e[8]=T*P,e[9]=(x*p*s-u*_*s-x*n*f+t*_*f+u*n*v-t*p*v)*P,e[10]=(a*_*s-x*o*s+x*n*l-t*_*l-a*n*v+t*o*v)*P,e[11]=(u*o*s-a*p*s-u*n*l+t*p*l+a*n*f-t*o*f)*P,e[12]=M*P,e[13]=(u*_*i-x*p*i+x*n*m-t*_*m-u*n*g+t*p*g)*P,e[14]=(x*o*i-a*_*i-x*n*c+t*_*c+a*n*g-t*o*g)*P,e[15]=(a*p*i-u*o*i+u*n*c-t*p*c-a*n*m+t*o*m)*P,this}scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,a=e.x,o=e.y,c=e.z,l=s*a,u=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,u*o+n,u*c-i*a,0,l*c-i*o,u*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,a){return this.set(1,n,s,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,s=t._x,a=t._y,o=t._z,c=t._w,l=s+s,u=a+a,p=o+o,m=s*l,f=s*u,x=s*p,_=a*u,g=a*p,v=o*p,w=c*l,S=c*u,T=c*p,M=n.x,E=n.y,P=n.z;return i[0]=(1-(_+v))*M,i[1]=(f+T)*M,i[2]=(x-S)*M,i[3]=0,i[4]=(f-T)*E,i[5]=(1-(m+v))*E,i[6]=(g+w)*E,i[7]=0,i[8]=(x+S)*P,i[9]=(g-w)*P,i[10]=(1-(m+_))*P,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let s=Un.set(i[0],i[1],i[2]).length();const a=Un.set(i[4],i[5],i[6]).length(),o=Un.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],At.copy(this);const c=1/s,l=1/a,u=1/o;return At.elements[0]*=c,At.elements[1]*=c,At.elements[2]*=c,At.elements[4]*=l,At.elements[5]*=l,At.elements[6]*=l,At.elements[8]*=u,At.elements[9]*=u,At.elements[10]*=u,t.setFromRotationMatrix(At),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,i,s,a,o=Sr){const c=this.elements,l=2*s/(t-e),u=2*s/(n-i),p=(t+e)/(t-e),m=(n+i)/(n-i);let f,x;if(o===Sr)f=-(a+s)/(a-s),x=-2*a*s/(a-s);else if(o===Uc)f=-a/(a-s),x=-a*s/(a-s);else throw new Error("Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=l,c[4]=0,c[8]=p,c[12]=0,c[1]=0,c[5]=u,c[9]=m,c[13]=0,c[2]=0,c[6]=0,c[10]=f,c[14]=x,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,s,a,o=Sr){const c=this.elements,l=1/(t-e),u=1/(n-i),p=1/(a-s),m=(t+e)*l,f=(n+i)*u;let x,_;if(o===Sr)x=(a+s)*p,_=-2*p;else if(o===Uc)x=s*p,_=-1*p;else throw new Error("../math.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-m,c[1]=0,c[5]=2*u,c[9]=0,c[13]=-f,c[2]=0,c[6]=0,c[10]=_,c[14]=-x,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const Un=new G,At=new It,Ch=new G(0,0,0),Eh=new G(1,1,1),sn=new G,br=new G,ht=new G,Dc=new It,Lc=new re;class Ti{constructor(e=0,t=0,n=0,i=Ti.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new Ti(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],u=i[9],p=i[2],m=i[6],f=i[10];switch(t){case"XYZ":this._y=Math.asin(Dt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(m,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Dt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-p,s),this._z=0);break;case"ZXY":this._x=Math.asin(Dt(m,-1,1)),Math.abs(m)<.9999999?(this._y=Math.atan2(-p,f),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-Dt(p,-1,1)),Math.abs(p)<.9999999?(this._x=Math.atan2(m,f),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(Dt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-p,s)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Dt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(m,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-u,f),this._y=0);break;default:console.warn("../math.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Dc.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Dc,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Lc.setFromEuler(this),this.setFromQuaternion(Lc,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ti.DEFAULT_ORDER="XYZ";class qn{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new qn(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Dt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*i+e.x,this.y=s*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}qn.isVector2=!0;class ot{constructor(e=0,t=0,n=0,i=1){ot.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new ot(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s;const a=e.elements,o=a[0],c=a[4],l=a[8],u=a[1],p=a[5],m=a[9],f=a[2],x=a[6],_=a[10];if(Math.abs(c-u)<.01&&Math.abs(l-f)<.01&&Math.abs(m-x)<.01){if(Math.abs(c+u)<.1&&Math.abs(l+f)<.1&&Math.abs(m+x)<.1&&Math.abs(o+p+_-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const v=(o+1)/2,w=(p+1)/2,S=(_+1)/2,T=(c+u)/4,M=(l+f)/4,E=(m+x)/4;return v>w&&v>S?v<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(v),i=T/n,s=M/n):w>S?w<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(w),n=T/i,s=E/i):S<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(S),n=M/s,i=E/s),this.set(n,i,s,t),this}let g=Math.sqrt((x-m)*(x-m)+(l-f)*(l-f)+(u-c)*(u-c));return Math.abs(g)<.001&&(g=1),this.x=(x-m)/g,this.y=(l-f)/g,this.z=(u-c)/g,this.w=Math.acos((o+p+_-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Vt{constructor(e,t,n,i,s,a,o,c,l){Vt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l)}set(e,t,n,i,s,a,o,c,l){const u=this.elements;return u[0]=e,u[1]=i,u[2]=o,u[3]=t,u[4]=s,u[5]=c,u[6]=n,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],u=n[4],p=n[7],m=n[2],f=n[5],x=n[8],_=i[0],g=i[3],v=i[6],w=i[1],S=i[4],T=i[7],M=i[2],E=i[5],P=i[8];return s[0]=a*_+o*w+c*M,s[3]=a*g+o*S+c*E,s[6]=a*v+o*T+c*P,s[1]=l*_+u*w+p*M,s[4]=l*g+u*S+p*E,s[7]=l*v+u*T+p*P,s[2]=m*_+f*w+x*M,s[5]=m*g+f*S+x*E,s[8]=m*v+f*T+x*P,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8];return t*a*u-t*o*l-n*s*u+n*o*c+i*s*l-i*a*c}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8],p=u*a-o*l,m=o*c-u*s,f=l*s-a*c,x=t*p+n*m+i*f;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);const _=1/x;return e[0]=p*_,e[1]=(i*l-u*n)*_,e[2]=(o*n-i*a)*_,e[3]=m*_,e[4]=(u*t-i*c)*_,e[5]=(i*s-o*t)*_,e[6]=f*_,e[7]=(n*c-l*t)*_,e[8]=(a*t-n*s)*_,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,a,o){const c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+e,-i*l,i*c,-i*(-l*a+c*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Fs.makeScale(e,t)),this}rotate(e){return this.premultiply(Fs.makeRotation(-e)),this}translate(e,t){return this.premultiply(Fs.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new Vt().fromArray(this.elements)}}const Fs=new Vt;var et;(function(r){r[r.Random=0]="Random",r[r.Loop=1]="Loop",r[r.PingPong=2]="PingPong",r[r.Burst=3]="Burst"})(et||(et={}));function ci(r,e,t,n){let i;switch(et.Random===r?e=Math.random():et.Burst===r&&n.isBursting&&(e=n.burstParticleIndex/n.burstParticleCount),t>0?i=Math.floor(e/t)*t:i=e,r){case et.Loop:i=i%1;break;case et.PingPong:i=Math.abs(i%2-1);break}return i}class Cn{constructor(e,t,n,i){this.p=[e,t,n,i]}genValue(e){const t=e*e,n=e*e*e,i=1-e,s=i*i,a=s*i;return this.p[0]*a+this.p[1]*s*e*3+this.p[2]*i*t*3+this.p[3]*n}derivativeCoefficients(e){const t=[];for(let n=e,i=n.length-1;i>0;i--){const s=[];for(let a=0;a<i;a++){const o=i*(n[a+1]-n[a]);s.push(o)}t.push(s),n=s}return t}getSlope(e){const t=this.derivativeCoefficients(this.p)[0],n=1-e,i=n*n,s=n*e*2,a=e*e;return i*t[0]+s*t[1]+a*t[2]}controlCurve(e,t){this.p[1]=e/3+this.p[0],this.p[2]=this.p[3]-t/3}hull(e){let t=this.p,n=[],i,s=0,a=0,o=0;const c=[];for(c[s++]=t[0],c[s++]=t[1],c[s++]=t[2],c[s++]=t[3];t.length>1;){for(n=[],a=0,o=t.length-1;a<o;a++)i=e*t[a]+(1-e)*t[a+1],c[s++]=i,n.push(i);t=n}return c}split(e){const t=this.hull(e);return{left:new Cn(t[0],t[4],t[7],t[9]),right:new Cn(t[9],t[8],t[6],t[3]),span:t}}clone(){return new Cn(this.p[0],this.p[1],this.p[2],this.p[3])}toJSON(){return{p0:this.p[0],p1:this.p[1],p2:this.p[2],p3:this.p[3]}}static fromJSON(e){return new Cn(e.p0,e.p1,e.p2,e.p3)}}const li=r=>({r:r.x,g:r.y,b:r.z,a:r.w}),ui=r=>new ot(r.r,r.g,r.b,r.a),Ph=(r,e)=>{switch(e){case"Vector3":return new G(r.x,r.y,r.z);case"Vector4":return new ot(r.x,r.y,r.z,r.w);case"Color":return new G(r.r,r.g,r.b);case"Number":return r;default:return r}},kh=(r,e)=>{switch(e){case"Vector3":return{x:r.x,y:r.y,z:r.z};case"Vector4":return{x:r.x,y:r.y,z:r.z,w:r.w};case"Color":return{r:r.x,g:r.y,b:r.z};case"Number":return r;default:return r}};class Kr{constructor(e,t){this.a=e,this.b=t,this.type="value"}startGen(e){}genColor(e,t){const n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:"RandomColor",a:li(this.a),b:li(this.b)}}static fromJSON(e){return new Kr(ui(e.a),ui(e.b))}clone(){return new Kr(this.a.clone(),this.b.clone())}}class Xn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:"ColorRange",a:li(this.a),b:li(this.b)}}static fromJSON(e){return new Xn(ui(e.a),ui(e.b))}clone(){return new Xn(this.a.clone(),this.b.clone())}}class hn{constructor(e,t){this.subType=t,this.type="function",this.keys=e}findKey(e){let t=0,n=0,i=this.keys.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.getStartX(s)&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1<this.keys.length?this.keys[e+1][1]:1}genValue(e,t){const n=this.findKey(t);return this.subType==="Number"?n===-1?this.keys[0][0]:n+1>=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:"CLinearFunction",subType:this.subType,keys:this.keys.map(([e,t])=>({value:kh(e,this.subType),pos:t}))}}static fromJSON(e){return new hn(e.keys.map(t=>[Ph(t.value,e.subType),t.pos]),e.subType)}clone(){return this.subType==="Number"?new hn(this.keys.map(([e,t])=>[e,t]),this.subType):new hn(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}}const xr=new G;class Rn{constructor(e=[[new G(0,0,0),0],[new G(1,1,1),0]],t=[[1,0],[1,1]]){this.type="function",this.color=new hn(e,"Color"),this.alpha=new hn(t,"Number")}genColor(e,t,n){return this.color.genValue(xr,n),t.set(xr.x,xr.y,xr.z,this.alpha.genValue(1,n))}toJSON(){return{type:"Gradient",color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(e){if(e.functions){const t=e.functions.map(n=>[Xn.fromJSON(n.function).a,n.start]);return e.functions.length>0&&t.push([Xn.fromJSON(e.functions[e.functions.length-1].function).b,1]),new Rn(t.map(n=>[new G(n[0].x,n[0].y,n[0].z),n[1]]),t.map(n=>[n[0].w,n[1]]))}else{const t=new Rn;return t.alpha=hn.fromJSON(e.alpha),t.color=hn.fromJSON(e.color),t}}clone(){const e=new Rn;return e.alpha=this.alpha.clone(),e.color=this.color.clone(),e}startGen(e){}}const Vs=new ot;class Qr{constructor(e,t){this.indexCount=0,this.type="function",this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,Vs,n),e&&e[this.indexCount]!==void 0?t.lerp(Vs,e[this.indexCount]):t.lerp(Vs,Math.random()),t}toJSON(){return{type:"RandomColorBetweenGradient",gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(e){return new Qr(Rn.fromJSON(e.gradient1),Rn.fromJSON(e.gradient2))}clone(){return new Qr(this.gradient1.clone(),this.gradient2.clone())}}class En{constructor(e){this.color=e,this.type="value"}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:"ConstantColor",color:li(this.color)}}static fromJSON(e){return new En(ui(e.color))}clone(){return new En(this.color.clone())}}function js(r){switch(r.type){case"ConstantColor":return En.fromJSON(r);case"ColorRange":return Xn.fromJSON(r);case"RandomColor":return Kr.fromJSON(r);case"Gradient":return Rn.fromJSON(r);case"RandomColorBetweenGradient":return Qr.fromJSON(r);default:return new En(new ot(1,1,1,1))}}class ne{constructor(e){this.value=e,this.type="value"}startGen(e){}genValue(e){return this.value}toJSON(){return{type:"ConstantValue",value:this.value}}static fromJSON(e){return new ne(e.value)}clone(){return new ne(this.value)}}class Pn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),Nn.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:"IntervalValue",a:this.a,b:this.b}}static fromJSON(e){return new Pn(e.a,e.b)}clone(){return new Pn(this.a,this.b)}}class Rh{constructor(){this.functions=new Array}findFunction(e){let t=0,n=0,i=this.functions.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.functions[s][1]&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1<this.functions.length?this.functions[e+1][1]:1}setEndX(e,t){e+1<this.functions.length&&(this.functions[e+1][1]=t)}insertFunction(e,t){const n=this.findFunction(e);this.functions.splice(n+1,0,[t,e])}removeFunction(e){return this.functions.splice(e,1)[0][0]}getFunction(e){return this.functions[e][0]}setFunction(e,t){this.functions[e][0]=t}get numOfFunctions(){return this.functions.length}}class Mi extends Rh{constructor(e=[[new Cn(0,1/3,1/3*2,1),0]]){super(),this.type="function",this.functions=e}genValue(e,t=0){const n=this.findFunction(t);return n===-1?0:this.functions[n][0].genValue((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toSVG(e,t){if(t<1)return"";let n=["M",0,this.functions[0][0].p[0]].join(" ");for(let i=1/t;i<=1;i+=1/t)n=[n,"L",i*e,this.genValue(void 0,i)].join(" ");return n}toJSON(){return{type:"PiecewiseBezier",functions:this.functions.map(([e,t])=>({function:e.toJSON(),start:t}))}}static fromJSON(e){return new Mi(e.functions.map(t=>[Cn.fromJSON(t.function),t.start]))}clone(){return new Mi(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}}function Q(r){switch(r.type){case"ConstantValue":return ne.fromJSON(r);case"IntervalValue":return Pn.fromJSON(r);case"PiecewiseBezier":return Mi.fromJSON(r);default:return new ne(0)}}class Ci{constructor(){this.indexCount=0,this.type="rotation"}startGen(e){this.indexCount=e.length,e.push(new re);let t,n,i,s,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,i=t*t+n*n;while(i>1);do s=Math.random()*2-1,a=Math.random()*2-1,o=s*s+a*a;while(o>1);const c=Math.sqrt((1-i)/o);e[this.indexCount].set(t,n,c*s,c*a)}genValue(e,t,n,i){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:"RandomQuat"}}static fromJSON(e){return new Ci}clone(){return new Ci}}class Ei{constructor(e,t){this.axis=e,this.angle=t,this.type="rotation"}startGen(e){this.angle.startGen(e)}genValue(e,t,n,i){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,i)*n)}toJSON(){return{type:"AxisAngle",axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(e){return new Ei(new G(e.axis.x,e.axis.y,e.axis.z),Q(e.angle))}clone(){return new Ei(this.axis.clone(),this.angle.clone())}}class $r{constructor(e,t,n,i){this.angleX=e,this.angleY=t,this.angleZ=n,this.type="rotation",this.eular=new Ti(0,0,0,i)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,i){return this.eular.set(this.angleX.genValue(e,i)*n,this.angleY.genValue(e,i)*n,this.angleZ.genValue(e,i)*n),t.setFromEuler(this.eular)}toJSON(){return{type:"Euler",angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(e){return new $r(Q(e.angleX),Q(e.angleY),Q(e.angleZ),e.eulerOrder)}clone(){return new $r(this.angleX,this.angleY,this.angleZ,this.eular.order)}}function Fc(r){switch(r.type){case"AxisAngle":return Ei.fromJSON(r);case"Euler":return $r.fromJSON(r);case"RandomQuat":return Ci.fromJSON(r);default:return new Ci}}class kn{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="vec3function"}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:"Vector3Function",x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new kn(Q(e.x),Q(e.y),Q(e.z))}clone(){return new kn(this.x,this.y,this.z)}}function Ah(r){return r.type==="Vector3Function"?kn.fromJSON(r):new kn(new ne(0),new ne(0),new ne(0))}function wr(r){switch(r.type){case"ConstantValue":case"IntervalValue":case"PiecewiseBezier":return Q(r);case"AxisAngle":case"RandomQuat":case"Euler":return Fc(r);case"Vector3Function":return Ah(r);default:return new ne(0)}}class Pi{constructor(e={}){var t,n,i,s,a,o,c;this.type="cone",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.angle=(s=e.angle)!==null&&s!==void 0?s:Math.PI/6,this.mode=(a=e.mode)!==null&&a!==void 0?a:et.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ne(1),this.memory=[]}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ci(this.mode,this.currentValue,this.spread,t),i=Nn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc,a=Math.sqrt(i),o=Math.sin(s),c=Math.cos(s);e.position.x=a*c,e.position.y=a*o,e.position.z=0;const l=this.angle*a;e.velocity.set(0,0,Math.cos(l)).addScaledVector(e.position,Math.sin(l)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:"cone",radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Pi({radius:e.radius,arc:e.arc,thickness:e.thickness,angle:e.angle,mode:e.mode,speed:e.speed?Q(e.speed):void 0,spread:e.spread})}clone(){return new Pi({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class ki{constructor(e={}){var t,n,i,s,a,o;this.type="circle",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){const n=ci(this.mode,this.currentValue,this.spread,t),i=Nn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc;e.position.x=Math.cos(s),e.position.y=Math.sin(s),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i)}toJSON(){return{type:"circle",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new ki({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Q(e.speed):void 0,spread:e.spread})}clone(){return new ki({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}function _r(r,e){return Math.floor(Math.random()*(e-r))+r}const Tr=new G(0,1,0),Mr=new G(0,0,0),Oh=new G(1,1,1),Vc=new G(0,0,1);class Ri{constructor(e={}){var t,n,i,s,a,o,c;this.type="donut",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.donutRadius=(s=e.donutRadius)!==null&&s!==void 0?s:this.radius*.2,this.mode=(a=e.mode)!==null&&a!==void 0?a:et.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ne(1),this.memory=[],this._m1=new It}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ci(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Nn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=i*Math.PI*2,c=Math.sin(a),l=Math.cos(a);e.position.x=this.radius*l,e.position.y=this.radius*c,e.position.z=0,e.velocity.z=this.donutRadius*s*Math.sin(o),e.velocity.x=this.donutRadius*s*Math.cos(o)*l,e.velocity.y=this.donutRadius*s*Math.cos(o)*c,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.velocity,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"donut",radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Ri({radius:e.radius,arc:e.arc,thickness:e.thickness,donutRadius:e.donutRadius,mode:e.mode,speed:e.speed?Q(e.speed):void 0,spread:e.spread})}clone(){return new Ri({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Ai{constructor(){this.type="point",this._m1=new It}update(e,t){}initialize(e){const t=Math.random(),n=Math.random(),i=t*Math.PI*2,s=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(i),c=Math.cos(i),l=Math.sin(s),u=Math.cos(s);e.velocity.x=a*l*c,e.velocity.y=a*l*o,e.velocity.z=a*u,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"point"}}static fromJSON(e){return new Ai}clone(){return new Ai}}class Yn{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[],this._m1=new It}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ci(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Nn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*i-1),c=Math.sin(a),l=Math.cos(a),u=Math.sin(o),p=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=p,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"sphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Yn({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Q(e.speed):void 0,spread:e.spread})}clone(){return new Yn({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Oi{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:et.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[],this._m1=new It}update(e,t){et.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=ci(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Nn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(i),c=Math.sin(a),l=Math.cos(a),u=Math.sin(o),p=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=p,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"hemisphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Oi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?Q(e.speed):void 0,spread:e.spread})}clone(){return new Oi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Ii{constructor(e={}){var t,n,i,s;this.type="grid",this.width=(t=e.width)!==null&&t!==void 0?t:1,this.height=(n=e.height)!==null&&n!==void 0?n:1,this.column=(i=e.column)!==null&&i!==void 0?i:10,this.row=(s=e.row)!==null&&s!==void 0?s:10}initialize(e){const t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:"grid",width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(e){return new Ii(e)}clone(){return new Ii({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}}const Js={circle:{type:"circle",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:ki,loadJSON:ki.fromJSON},cone:{type:"cone",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Pi,loadJSON:Pi.fromJSON},donut:{type:"donut",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["donutRadius",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Ri,loadJSON:Ri.fromJSON},point:{type:"point",params:[],constructor:Ai,loadJSON:Ai.fromJSON},sphere:{type:"sphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Yn,loadJSON:Yn.fromJSON},hemisphere:{type:"hemisphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Oi,loadJSON:Oi.fromJSON},grid:{type:"grid",params:[["width",["number"]],["height",["number"]],["rows",["number"]],["column",["number"]]],constructor:Ii,loadJSON:Ii.fromJSON}};function Ih(r,e){return Js[r.type].loadJSON(r,e)}class Bi{constructor(e){this.color=e,this.type="ColorOverLife"}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(e){return new Bi(js(e.color))}clone(){return new Bi(this.color.clone())}reset(){}}class zi{constructor(e){this.angularVelocity=e,this.type="RotationOverLife"}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation=="number"&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new zi(Q(e.angularVelocity))}frameUpdate(e){}clone(){return new zi(this.angularVelocity.clone())}reset(){}}class Ni{constructor(e){this.angularVelocity=e,this.type="Rotation3DOverLife",this.tempQuat=new re,this.tempQuat2=new re}initialize(e){e.rotation instanceof re&&(e.angularVelocity=new re,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof re&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Ni(Fc(e.angularVelocity))}frameUpdate(e){}clone(){return new Ni(this.angularVelocity.clone())}reset(){}}class Ui{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="ForceOverLife",this._temp=new G,this._tempScale=new G,this._tempQ=new re}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace?e.velocity.addScaledVector(this._temp,t):(this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t))}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new Ui(Q(e.x),Q(e.y),Q(e.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){const t=this._temp,n=this._tempQ,i=this._tempScale;this.ps.emitter.matrixWorld.decompose(t,n,i),n.invert(),i.set(1/i.x,1/i.y,1/i.z)}}clone(){return new Ui(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}}class Di{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type="SizeOverLife"}update(e){this.size instanceof kn?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(e){return new Di(wr(e.size))}frameUpdate(e){}clone(){return new Di(this.size.clone())}reset(){}}class Li{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type="SpeedOverLife"}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(e){return new Li(Q(e.speed))}frameUpdate(e){}clone(){return new Li(this.speed.clone())}reset(){}}class Fi{constructor(e){this.frame=e,this.type="FrameOverLife"}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof Mi&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(e){return new Fi(Q(e.frame))}clone(){return new Fi(this.frame.clone())}reset(){}}class Vi{constructor(e,t=new G(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type="OrbitOverLife",this.temp=new G,this.rotation=new re}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(e){return new Vi(Q(e.orbitSpeed),e.axis?new G(e.axis[0],e.axis[1],e.axis[2]):void 0)}clone(){return new Vi(this.orbitSpeed.clone())}reset(){}}class Gs{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}}class Bh{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){const e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){const e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){const t=new Gs(e);this.tail||(this.tail=t),this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){const t=new Gs(e);this.head||(this.head=t),this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){const n=new Gs(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}}class zh{constructor(){this.startSpeed=0,this.startColor=new ot,this.startSize=new G(1,1,1),this.position=new G,this.velocity=new G,this.age=0,this.life=1,this.size=new G(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new ot,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}}class Nh{constructor(e,t,n){this.position=e,this.size=t,this.color=n}}class Cr{constructor(){this.startSpeed=0,this.startColor=new ot,this.startSize=new G(1,1,1),this.position=new G,this.velocity=new G,this.age=0,this.life=1,this.size=new G(1,1,1),this.length=100,this.speedModifier=1,this.color=new ot,this.previous=new Bh,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new Nh(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}}class ji{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type="WidthOverLength"}update(e){if(e instanceof Cr){const t=e.previous.values();for(let n=0;n<e.previous.length;n++){const i=t.next();i.value.size=this.width.genValue(e.memory,(e.previous.length-n)/e.length)}}}frameUpdate(e){}toJSON(){return{type:this.type,width:this.width.toJSON()}}static fromJSON(e){return new ji(Q(e.width))}clone(){return new ji(this.width.clone())}reset(){}}class Ji{constructor(e,t){this.direction=e,this.magnitude=t,this.type="ApplyForce",this.memory={data:[],dataCount:0},this.magnitudeValue=this.magnitude.genValue(this.memory)}initialize(e){}update(e,t){e.velocity.addScaledVector(this.direction,this.magnitudeValue*t)}frameUpdate(e){this.magnitudeValue=this.magnitude.genValue(this.memory)}toJSON(){return{type:this.type,direction:[this.direction.x,this.direction.y,this.direction.z],magnitude:this.magnitude.toJSON()}}static fromJSON(e){var t;return new Ji(new G(e.direction[0],e.direction[1],e.direction[2]),Q((t=e.magnitude)!==null&&t!==void 0?t:e.force))}clone(){return new Ji(this.direction.clone(),this.magnitude.clone())}reset(){}}class Gi{constructor(e,t){this.center=e,this.magnitude=t,this.type="GravityForce",this.temp=new G}initialize(e){}update(e,t){this.temp.copy(this.center).sub(e.position).normalize(),e.velocity.addScaledVector(this.temp,this.magnitude/e.position.distanceToSquared(this.center)*t)}frameUpdate(e){}toJSON(){return{type:this.type,center:[this.center.x,this.center.y,this.center.z],magnitude:this.magnitude}}static fromJSON(e){return new Gi(new G(e.center[0],e.center[1],e.center[2]),e.magnitude)}clone(){return new Gi(this.center.clone(),this.magnitude)}reset(){}}class Wi{constructor(e){this.angle=e,this.type="ChangeEmitDirection",this._temp=new G,this._q=new re,this.memory={data:[],dataCount:0}}initialize(e){const t=e.velocity.length();t!=0&&(e.velocity.normalize(),e.velocity.x===0&&e.velocity.y===0?this._temp.set(0,e.velocity.z,0):this._temp.set(-e.velocity.y,e.velocity.x,0),this.angle.startGen(this.memory),this._q.setFromAxisAngle(this._temp.normalize(),this.angle.genValue(this.memory)),this._temp.copy(e.velocity),e.velocity.applyQuaternion(this._q),this._q.setFromAxisAngle(this._temp,Math.random()*Math.PI*2),e.velocity.applyQuaternion(this._q),e.velocity.setLength(t))}update(e,t){}frameUpdate(e){}toJSON(){return{type:this.type,angle:this.angle.toJSON()}}static fromJSON(e){return new Wi(Q(e.angle))}clone(){return new Wi(this.angle)}reset(){}}var Dn;(function(r){r[r.Death=0]="Death",r[r.Birth=1]="Birth",r[r.Frame=2]="Frame"})(Dn||(Dn={}));class Hi{constructor(e,t,n,i=Dn.Frame,s=1){this.particleSystem=e,this.useVelocityAsBasis=t,this.subParticleSystem=n,this.mode=i,this.emitProbability=s,this.type="EmitSubParticleSystem",this.q_=new re,this.v_=new G,this.v2_=new G,this.subEmissions=new Array,this.subParticleSystem&&this.subParticleSystem.system&&(this.subParticleSystem.system.onlyUsedByOther=!0)}initialize(e){}update(e,t){this.mode===Dn.Frame?this.emit(e,t):this.mode===Dn.Birth&&e.age===0?this.emit(e,t):this.mode===Dn.Death&&e.age+t>=e.life&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;const n=new It;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t<this.subEmissions.length;t++)if(this.subEmissions[t].time>=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{const n=this.subEmissions[t];n.particle&&n.particle.age<n.particle.life?this.setMatrixFromParticle(n.matrix,n.particle):n.particle=void 0,this.subParticleSystem.system.emit(e,n,n.matrix)}}toJSON(){return{type:this.type,subParticleSystem:this.subParticleSystem?this.subParticleSystem.uuid:"",useVelocityAsBasis:this.useVelocityAsBasis,mode:this.mode,emitProbability:this.emitProbability}}static fromJSON(e,t){return new Hi(t,e.useVelocityAsBasis,e.subParticleSystem,e.mode,e.emitProbability)}clone(){return new Hi(this.particleSystem,this.useVelocityAsBasis,this.subParticleSystem,this.mode,this.emitProbability)}reset(){}setMatrixFromParticle(e,t){let n;if(t.rotation===void 0||this.useVelocityAsBasis)if(t.velocity.x===0&&t.velocity.y===0&&(t.velocity.z===1||t.velocity.z===0))e.set(1,0,0,t.position.x,0,1,0,t.position.y,0,0,1,t.position.z,0,0,0,1);else{this.v_.copy(Vc).cross(t.velocity),this.v2_.copy(t.velocity).cross(this.v_);const i=this.v_.length(),s=this.v2_.length();e.set(this.v_.x/i,this.v2_.x/s,t.velocity.x,t.position.x,this.v_.y/i,this.v2_.y/s,t.velocity.y,t.position.y,this.v_.z/i,this.v2_.z/s,t.velocity.z,t.position.z,0,0,0,1)}else t.rotation instanceof re?n=t.rotation:(this.q_.setFromAxisAngle(Vc,t.rotation),n=this.q_),e.compose(t.position,n,Oh);this.particleSystem.worldSpace||e.multiplyMatrices(this.particleSystem.emitter.matrixWorld,e)}}const Uh=.5*(Math.sqrt(3)-1),hi=(3-Math.sqrt(3))/6,Dh=1/3,Lt=1/6,Lh=(Math.sqrt(5)-1)/4,Le=(5-Math.sqrt(5))/20,Oe=new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),Te=new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);class jc{constructor(e=Math.random){const t=typeof e=="function"?e:Vh(e);this.p=Fh(t),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(let n=0;n<512;n++)this.perm[n]=this.p[n&255],this.permMod12[n]=this.perm[n]%12}noise2D(e,t){const n=this.permMod12,i=this.perm;let s=0,a=0,o=0;const c=(e+t)*Uh,l=Math.floor(e+c),u=Math.floor(t+c),p=(l+u)*hi,m=l-p,f=u-p,x=e-m,_=t-f;let g,v;x>_?(g=1,v=0):(g=0,v=1);const w=x-g+hi,S=_-v+hi,T=x-1+2*hi,M=_-1+2*hi,E=l&255,P=u&255;let O=.5-x*x-_*_;if(O>=0){const I=n[E+i[P]]*3;O*=O,s=O*O*(Oe[I]*x+Oe[I+1]*_)}let A=.5-w*w-S*S;if(A>=0){const I=n[E+g+i[P+v]]*3;A*=A,a=A*A*(Oe[I]*w+Oe[I+1]*S)}let R=.5-T*T-M*M;if(R>=0){const I=n[E+1+i[P+1]]*3;R*=R,o=R*R*(Oe[I]*T+Oe[I+1]*M)}return 70*(s+a+o)}noise3D(e,t,n){const i=this.permMod12,s=this.perm;let a,o,c,l;const u=(e+t+n)*Dh,p=Math.floor(e+u),m=Math.floor(t+u),f=Math.floor(n+u),x=(p+m+f)*Lt,_=p-x,g=m-x,v=f-x,w=e-_,S=t-g,T=n-v;let M,E,P,O,A,R;w>=S?S>=T?(M=1,E=0,P=0,O=1,A=1,R=0):w>=T?(M=1,E=0,P=0,O=1,A=0,R=1):(M=0,E=0,P=1,O=1,A=0,R=1):S<T?(M=0,E=0,P=1,O=0,A=1,R=1):w<T?(M=0,E=1,P=0,O=0,A=1,R=1):(M=0,E=1,P=0,O=1,A=1,R=0);const I=w-M+Lt,B=S-E+Lt,U=T-P+Lt,L=w-O+2*Lt,j=S-A+2*Lt,W=T-R+2*Lt,ee=w-1+3*Lt,H=S-1+3*Lt,pe=T-1+3*Lt,ie=p&255,he=m&255,oe=f&255;let le=.6-w*w-S*S-T*T;if(le<0)a=0;else{const se=i[ie+s[he+s[oe]]]*3;le*=le,a=le*le*(Oe[se]*w+Oe[se+1]*S+Oe[se+2]*T)}let xe=.6-I*I-B*B-U*U;if(xe<0)o=0;else{const se=i[ie+M+s[he+E+s[oe+P]]]*3;xe*=xe,o=xe*xe*(Oe[se]*I+Oe[se+1]*B+Oe[se+2]*U)}let ge=.6-L*L-j*j-W*W;if(ge<0)c=0;else{const se=i[ie+O+s[he+A+s[oe+R]]]*3;ge*=ge,c=ge*ge*(Oe[se]*L+Oe[se+1]*j+Oe[se+2]*W)}let de=.6-ee*ee-H*H-pe*pe;if(de<0)l=0;else{const se=i[ie+1+s[he+1+s[oe+1]]]*3;de*=de,l=de*de*(Oe[se]*ee+Oe[se+1]*H+Oe[se+2]*pe)}return 32*(a+o+c+l)}noise4D(e,t,n,i){const s=this.perm;let a,o,c,l,u;const p=(e+t+n+i)*Lh,m=Math.floor(e+p),f=Math.floor(t+p),x=Math.floor(n+p),_=Math.floor(i+p),g=(m+f+x+_)*Le,v=m-g,w=f-g,S=x-g,T=_-g,M=e-v,E=t-w,P=n-S,O=i-T;let A=0,R=0,I=0,B=0;M>E?A++:R++,M>P?A++:I++,M>O?A++:B++,E>P?R++:I++,E>O?R++:B++,P>O?I++:B++;const U=A>=3?1:0,L=R>=3?1:0,j=I>=3?1:0,W=B>=3?1:0,ee=A>=2?1:0,H=R>=2?1:0,pe=I>=2?1:0,ie=B>=2?1:0,he=A>=1?1:0,oe=R>=1?1:0,le=I>=1?1:0,xe=B>=1?1:0,ge=M-U+Le,de=E-L+Le,se=P-j+Le,Xe=O-W+Le,ze=M-ee+2*Le,Ee=E-H+2*Le,at=P-pe+2*Le,Ne=O-ie+2*Le,ve=M-he+3*Le,ue=E-oe+3*Le,pt=P-le+3*Le,Pe=O-xe+3*Le,fe=M-1+4*Le,nt=E-1+4*Le,wt=P-1+4*Le,_t=O-1+4*Le,it=m&255,Tt=f&255,ft=x&255,mt=_&255;let ct=.6-M*M-E*E-P*P-O*O;if(ct<0)a=0;else{const $=s[it+s[Tt+s[ft+s[mt]]]]%32*4;ct*=ct,a=ct*ct*(Te[$]*M+Te[$+1]*E+Te[$+2]*P+Te[$+3]*O)}let ke=.6-ge*ge-de*de-se*se-Xe*Xe;if(ke<0)o=0;else{const $=s[it+U+s[Tt+L+s[ft+j+s[mt+W]]]]%32*4;ke*=ke,o=ke*ke*(Te[$]*ge+Te[$+1]*de+Te[$+2]*se+Te[$+3]*Xe)}let Ye=.6-ze*ze-Ee*Ee-at*at-Ne*Ne;if(Ye<0)c=0;else{const $=s[it+ee+s[Tt+H+s[ft+pe+s[mt+ie]]]]%32*4;Ye*=Ye,c=Ye*Ye*(Te[$]*ze+Te[$+1]*Ee+Te[$+2]*at+Te[$+3]*Ne)}let lt=.6-ve*ve-ue*ue-pt*pt-Pe*Pe;if(lt<0)l=0;else{const $=s[it+he+s[Tt+oe+s[ft+le+s[mt+xe]]]]%32*4;lt*=lt,l=lt*lt*(Te[$]*ve+Te[$+1]*ue+Te[$+2]*pt+Te[$+3]*Pe)}let Ze=.6-fe*fe-nt*nt-wt*wt-_t*_t;if(Ze<0)u=0;else{const $=s[it+1+s[Tt+1+s[ft+1+s[mt+1]]]]%32*4;Ze*=Ze,u=Ze*Ze*(Te[$]*fe+Te[$+1]*nt+Te[$+2]*wt+Te[$+3]*_t)}return 27*(a+o+c+l+u)}}function Fh(r){const e=new Uint8Array(256);for(let t=0;t<256;t++)e[t]=t;for(let t=0;t<255;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}return e}function Vh(r){let e=0,t=0,n=0,i=1;const s=jh();return e=s(" "),t=s(" "),n=s(" "),e-=s(r),e<0&&(e+=1),t-=s(r),t<0&&(t+=1),n-=s(r),n<0&&(n+=1),function(){const a=2091639*e+i*23283064365386963e-26;return e=t,t=n,n=a-(i=a|0)}}function jh(){let r=4022871197;return function(e){e=e.toString();for(let t=0;t<e.length;t++){r+=e.charCodeAt(t);let n=.02519603282416938*r;r=n>>>0,n-=r,n*=r,r=n>>>0,n-=r,r+=n*4294967296}return(r>>>0)*23283064365386963e-26}}class qi{constructor(e,t,n,i){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=i,this.type="TurbulenceField",this.generator=new jc,this.timeOffset=new G,this.temp=new G,this.temp2=new G,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){const n=e.position.x/this.scale.x,i=e.position.y/this.scale.y,s=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let o=0;o<this.octaves;o++)this.temp2.set(this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.x*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.y*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.z*a)/a),this.temp.add(this.temp2),a*=2;this.temp.multiply(this.velocityMultiplier),e.velocity.addScaledVector(this.temp,t)}toJSON(){return{type:this.type,scale:[this.scale.x,this.scale.y,this.scale.z],octaves:this.octaves,velocityMultiplier:[this.velocityMultiplier.x,this.velocityMultiplier.y,this.velocityMultiplier.z],timeScale:[this.timeScale.x,this.timeScale.y,this.timeScale.z]}}frameUpdate(e){this.timeOffset.x+=e*this.timeScale.x,this.timeOffset.y+=e*this.timeScale.y,this.timeOffset.z+=e*this.timeScale.z}static fromJSON(e){return new qi(new G(e.scale[0],e.scale[1],e.scale[2]),e.octaves,new G(e.velocityMultiplier[0],e.velocityMultiplier[1],e.velocityMultiplier[2]),new G(e.timeScale[0],e.timeScale[1],e.timeScale[2]))}clone(){return new qi(this.scale.clone(),this.octaves,this.velocityMultiplier.clone(),this.timeScale.clone())}reset(){}}const Ft=[],Ws=new G,Hs=new re;class Xi{constructor(e,t,n=new ne(1),i=new ne(0)){if(this.frequency=e,this.power=t,this.positionAmount=n,this.rotationAmount=i,this.type="Noise",this.duration=0,Ft.length===0)for(let s=0;s<100;s++)Ft.push(new jc)}initialize(e){e.lastPosNoise=new G,typeof e.rotation=="number"?e.lastRotNoise=0:e.lastRotNoise=new re,e.generatorIndex=[_r(0,100),_r(0,100),_r(0,100),_r(0,100)],this.positionAmount.startGen(e.memory),this.rotationAmount.startGen(e.memory),this.frequency.startGen(e.memory),this.power.startGen(e.memory)}update(e,t){let n=this.frequency.genValue(e.memory,e.age/e.life),i=this.power.genValue(e.memory,e.age/e.life),s=this.positionAmount.genValue(e.memory,e.age/e.life),a=this.rotationAmount.genValue(e.memory,e.age/e.life);s>0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),Ws.set(Ft[e.generatorIndex[0]].noise2D(0,e.age*n)*i*s,Ft[e.generatorIndex[1]].noise2D(0,e.age*n)*i*s,Ft[e.generatorIndex[2]].noise2D(0,e.age*n)*i*s),e.position.add(Ws),e.lastPosNoise.copy(Ws)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation=="number"?(e.rotation-=e.lastRotNoise,e.rotation+=Ft[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*i*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),Hs.set(Ft[e.generatorIndex[0]].noise2D(0,e.age*n)*i*a,Ft[e.generatorIndex[1]].noise2D(0,e.age*n)*i*a,Ft[e.generatorIndex[2]].noise2D(0,e.age*n)*i*a,Ft[e.generatorIndex[3]].noise2D(0,e.age*n)*i*a).normalize(),e.rotation.multiply(Hs),e.lastRotNoise.copy(Hs)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(e){return new Xi(Q(e.frequency),Q(e.power),Q(e.positionAmount),Q(e.rotationAmount))}clone(){return new Xi(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}}class Yi{constructor(e,t){this.color=e,this.speedRange=t,this.type="ColorBySpeed"}initialize(e){this.color.startGen(e.memory)}update(e,t){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Yi(js(e.color),Pn.fromJSON(e.speedRange))}clone(){return new Yi(this.color.clone(),this.speedRange.clone())}reset(){}}class Zi{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type="SizeBySpeed"}update(e){const t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof kn?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Zi(wr(e.size),Pn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Zi(this.size.clone(),this.speedRange.clone())}reset(){}}class Ki{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type="RotationBySpeed",this.tempQuat=new re}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation=="number"){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Ki(Q(e.angularVelocity),Pn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Ki(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}}class Qi{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type="LimitSpeedOverLife"}update(e,t){let n=e.velocity.length(),i=this.speed.genValue(e.memory,e.age/e.life);if(n>i){const s=(n-i)/n;e.velocity.multiplyScalar(1-s*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(e){return new Qi(Q(e.speed),e.dampen)}frameUpdate(e){}clone(){return new Qi(this.speed.clone(),this.dampen)}reset(){}}const Er={ApplyForce:{type:"ApplyForce",constructor:Ji,params:[["direction",["vec3"]],["magnitude",["value"]]],loadJSON:Ji.fromJSON},Noise:{type:"Noise",constructor:Xi,params:[["frequency",["value"]],["power",["value"]],["positionAmount",["value"]],["rotationAmount",["value"]]],loadJSON:Xi.fromJSON},TurbulenceField:{type:"TurbulenceField",constructor:qi,params:[["scale",["vec3"]],["octaves",["number"]],["velocityMultiplier",["vec3"]],["timeScale",["vec3"]]],loadJSON:qi.fromJSON},GravityForce:{type:"GravityForce",constructor:Gi,params:[["center",["vec3"]],["magnitude",["number"]]],loadJSON:Gi.fromJSON},ColorOverLife:{type:"ColorOverLife",constructor:Bi,params:[["color",["colorFunc"]]],loadJSON:Bi.fromJSON},RotationOverLife:{type:"RotationOverLife",constructor:zi,params:[["angularVelocity",["value","valueFunc"]]],loadJSON:zi.fromJSON},Rotation3DOverLife:{type:"Rotation3DOverLife",constructor:Ni,params:[["angularVelocity",["rotationFunc"]]],loadJSON:Ni.fromJSON},SizeOverLife:{type:"SizeOverLife",constructor:Di,params:[["size",["value","valueFunc","vec3Func"]]],loadJSON:Di.fromJSON},ColorBySpeed:{type:"ColorBySpeed",constructor:Yi,params:[["color",["colorFunc"]],["speedRange",["range"]]],loadJSON:Yi.fromJSON},RotationBySpeed:{type:"RotationBySpeed",constructor:Ki,params:[["angularVelocity",["value","valueFunc"]],["speedRange",["range"]]],loadJSON:Ki.fromJSON},SizeBySpeed:{type:"SizeBySpeed",constructor:Zi,params:[["size",["value","valueFunc","vec3Func"]],["speedRange",["range"]]],loadJSON:Zi.fromJSON},SpeedOverLife:{type:"SpeedOverLife",constructor:Li,params:[["speed",["value","valueFunc"]]],loadJSON:Li.fromJSON},FrameOverLife:{type:"FrameOverLife",constructor:Fi,params:[["frame",["value","valueFunc"]]],loadJSON:Fi.fromJSON},ForceOverLife:{type:"ForceOverLife",constructor:Ui,params:[["x",["value","valueFunc"]],["y",["value","valueFunc"]],["z",["value","valueFunc"]]],loadJSON:Ui.fromJSON},OrbitOverLife:{type:"OrbitOverLife",constructor:Vi,params:[["orbitSpeed",["value","valueFunc"]],["axis",["vec3"]]],loadJSON:Vi.fromJSON},WidthOverLength:{type:"WidthOverLength",constructor:ji,params:[["width",["value","valueFunc"]]],loadJSON:ji.fromJSON},ChangeEmitDirection:{type:"ChangeEmitDirection",constructor:Wi,params:[["angle",["value"]]],loadJSON:Wi.fromJSON},EmitSubParticleSystem:{type:"EmitSubParticleSystem",constructor:Hi,params:[["particleSystem",["self"]],["useVelocityAsBasis",["boolean"]],["subParticleSystem",["particleSystem"]],["mode",["number"]],["emitProbability",["number"]]],loadJSON:Hi.fromJSON},LimitSpeedOverLife:{type:"LimitSpeedOverLife",constructor:Qi,params:[["speed",["value","valueFunc"]],["dampen",["number"]]],loadJSON:Qi.fromJSON}};function Jh(r,e){return Er[r.type]?Er[r.type].loadJSON(r,e):null}const Gh=[];function Wh(r){if(!Gh.find(e=>e.id===r.id)){for(const e of r.emitterShapes)Js[e.type]||(Js[e.type]=e);for(const e of r.behaviors)Er[e.type]||(Er[e.type]=e)}}var Hh=`
79
+ #ifdef SOFT_PARTICLES
80
+
81
+ /* #ifdef LOGDEPTH
82
+ float distSample = linearize_depth_log(sampleDepth, near, far);
83
+ #else
84
+ float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far);
85
+ #endif */
86
+
87
+ vec2 p2 = projPosition.xy / projPosition.w;
88
+
89
+ p2 = 0.5 * p2 + 0.5;
90
+
91
+ float readDepth = texture2D(depthTexture, p2.xy).r;
92
+ float viewDepth = linearize_depth(readDepth);
93
+
94
+ float softParticlesFade = saturate(SOFT_INV_FADE_DISTANCE * ((viewDepth - SOFT_NEAR_FADE) - linearDepth));
95
+
96
+ gl_FragColor *= softParticlesFade;
97
+
98
+ //gl_FragColor = vec4(softParticlesFade , 0, 0, 1);
99
+ #endif
100
+ `,qh=`
101
+ #ifdef SOFT_PARTICLES
102
+
103
+ uniform sampler2D depthTexture;
104
+ uniform vec4 projParams;
105
+ uniform vec2 softParams;
106
+
107
+ varying vec4 projPosition;
108
+ varying float linearDepth;
109
+
110
+ #define SOFT_NEAR_FADE softParams.x
111
+ #define SOFT_INV_FADE_DISTANCE softParams.y
112
+
113
+ #define zNear projParams.x
114
+ #define zFar projParams.y
115
+
116
+ float linearize_depth(float d)
117
+ {
118
+ return (zFar * zNear) / (zFar - d * (zFar - zNear));
119
+ }
120
+
121
+ #endif
122
+ `,Xh=`
123
+ #ifdef SOFT_PARTICLES
124
+ varying vec4 projPosition;
125
+ varying float linearDepth;
126
+ #endif
127
+ `,Yh=`
128
+ #ifdef SOFT_PARTICLES
129
+ projPosition = gl_Position;
130
+ linearDepth = -mvPosition.z;
131
+ #endif
132
+ `,Zh=`
133
+ #ifdef USE_MAP
134
+ vec4 texelColor = texture2D( map, vUv);
135
+ #ifdef TILE_BLEND
136
+ texelColor = mix( texelColor, texture2D( map, vUvNext ), vUvBlend );
137
+ #endif
138
+ diffuseColor *= texelColor;
139
+ #endif
140
+ `,Kh=`
141
+ #if defined( USE_UV ) || defined( USE_ANISOTROPY )
142
+
143
+ varying vec2 vUv;
144
+ #ifdef TILE_BLEND
145
+ varying vec2 vUvNext;
146
+ varying float vUvBlend;
147
+ #endif
148
+
149
+ #endif
150
+ #ifdef USE_MAP
151
+
152
+ uniform mat3 mapTransform;
153
+ varying vec2 vMapUv;
154
+ #ifdef TILE_BLEND
155
+ varying vec2 vMapUvNext;
156
+ #endif
157
+
158
+ #endif
159
+ #ifdef USE_ALPHAMAP
160
+
161
+ uniform mat3 alphaMapTransform;
162
+ varying vec2 vAlphaMapUv;
163
+
164
+ #endif
165
+ #ifdef USE_LIGHTMAP
166
+
167
+ uniform mat3 lightMapTransform;
168
+ varying vec2 vLightMapUv;
169
+
170
+ #endif
171
+ #ifdef USE_AOMAP
172
+
173
+ uniform mat3 aoMapTransform;
174
+ varying vec2 vAoMapUv;
175
+
176
+ #endif
177
+ #ifdef USE_BUMPMAP
178
+
179
+ uniform mat3 bumpMapTransform;
180
+ varying vec2 vBumpMapUv;
181
+
182
+ #endif
183
+ #ifdef USE_NORMALMAP
184
+
185
+ uniform mat3 normalMapTransform;
186
+ varying vec2 vNormalMapUv;
187
+
188
+ #endif
189
+ #ifdef USE_DISPLACEMENTMAP
190
+
191
+ uniform mat3 displacementMapTransform;
192
+ varying vec2 vDisplacementMapUv;
193
+
194
+ #endif
195
+ #ifdef USE_EMISSIVEMAP
196
+
197
+ uniform mat3 emissiveMapTransform;
198
+ varying vec2 vEmissiveMapUv;
199
+
200
+ #endif
201
+ #ifdef USE_METALNESSMAP
202
+
203
+ uniform mat3 metalnessMapTransform;
204
+ varying vec2 vMetalnessMapUv;
205
+
206
+ #endif
207
+ #ifdef USE_ROUGHNESSMAP
208
+
209
+ uniform mat3 roughnessMapTransform;
210
+ varying vec2 vRoughnessMapUv;
211
+
212
+ #endif
213
+ #ifdef USE_ANISOTROPYMAP
214
+
215
+ uniform mat3 anisotropyMapTransform;
216
+ varying vec2 vAnisotropyMapUv;
217
+
218
+ #endif
219
+ #ifdef USE_CLEARCOATMAP
220
+
221
+ uniform mat3 clearcoatMapTransform;
222
+ varying vec2 vClearcoatMapUv;
223
+
224
+ #endif
225
+ #ifdef USE_CLEARCOAT_NORMALMAP
226
+
227
+ uniform mat3 clearcoatNormalMapTransform;
228
+ varying vec2 vClearcoatNormalMapUv;
229
+
230
+ #endif
231
+ #ifdef USE_CLEARCOAT_ROUGHNESSMAP
232
+
233
+ uniform mat3 clearcoatRoughnessMapTransform;
234
+ varying vec2 vClearcoatRoughnessMapUv;
235
+
236
+ #endif
237
+ #ifdef USE_SHEEN_COLORMAP
238
+
239
+ uniform mat3 sheenColorMapTransform;
240
+ varying vec2 vSheenColorMapUv;
241
+
242
+ #endif
243
+ #ifdef USE_SHEEN_ROUGHNESSMAP
244
+
245
+ uniform mat3 sheenRoughnessMapTransform;
246
+ varying vec2 vSheenRoughnessMapUv;
247
+
248
+ #endif
249
+ #ifdef USE_IRIDESCENCEMAP
250
+
251
+ uniform mat3 iridescenceMapTransform;
252
+ varying vec2 vIridescenceMapUv;
253
+
254
+ #endif
255
+ #ifdef USE_IRIDESCENCE_THICKNESSMAP
256
+
257
+ uniform mat3 iridescenceThicknessMapTransform;
258
+ varying vec2 vIridescenceThicknessMapUv;
259
+
260
+ #endif
261
+ #ifdef USE_SPECULARMAP
262
+
263
+ uniform mat3 specularMapTransform;
264
+ varying vec2 vSpecularMapUv;
265
+
266
+ #endif
267
+ #ifdef USE_SPECULAR_COLORMAP
268
+
269
+ uniform mat3 specularColorMapTransform;
270
+ varying vec2 vSpecularColorMapUv;
271
+
272
+ #endif
273
+ #ifdef USE_SPECULAR_INTENSITYMAP
274
+
275
+ uniform mat3 specularIntensityMapTransform;
276
+ varying vec2 vSpecularIntensityMapUv;
277
+
278
+ #endif
279
+ #ifdef USE_TRANSMISSIONMAP
280
+
281
+ uniform mat3 transmissionMapTransform;
282
+ varying vec2 vTransmissionMapUv;
283
+
284
+ #endif
285
+ #ifdef USE_THICKNESSMAP
286
+
287
+ uniform mat3 thicknessMapTransform;
288
+ varying vec2 vThicknessMapUv;
289
+
290
+ #endif
291
+ `,Qh=`
292
+ #ifdef UV_TILE
293
+ attribute float uvTile;
294
+ uniform vec2 tileCount;
295
+
296
+ mat3 makeTileTransform(float uvTile) {
297
+ float col = mod(uvTile, tileCount.x);
298
+ float row = (tileCount.y - floor(uvTile / tileCount.x) - 1.0);
299
+
300
+ return mat3(
301
+ 1.0 / tileCount.x, 0.0, 0.0,
302
+ 0.0, 1.0 / tileCount.y, 0.0,
303
+ col / tileCount.x, row / tileCount.y, 1.0);
304
+ }
305
+ #else
306
+ mat3 makeTileTransform(float uvTile) {
307
+ return mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);
308
+ }
309
+ #endif
310
+
311
+ #if defined( USE_UV ) || defined( USE_ANISOTROPY )
312
+
313
+ varying vec2 vUv;
314
+ #ifdef TILE_BLEND
315
+ varying vec2 vUvNext;
316
+ varying float vUvBlend;
317
+ #endif
318
+
319
+ #endif
320
+ #ifdef USE_MAP
321
+
322
+ uniform mat3 mapTransform;
323
+ varying vec2 vMapUv;
324
+ #ifdef TILE_BLEND
325
+ varying vec2 vMapUvNext;
326
+ #endif
327
+
328
+ #endif
329
+ #ifdef USE_ALPHAMAP
330
+
331
+ uniform mat3 alphaMapTransform;
332
+ varying vec2 vAlphaMapUv;
333
+
334
+ #endif
335
+ #ifdef USE_LIGHTMAP
336
+
337
+ uniform mat3 lightMapTransform;
338
+ varying vec2 vLightMapUv;
339
+
340
+ #endif
341
+ #ifdef USE_AOMAP
342
+
343
+ uniform mat3 aoMapTransform;
344
+ varying vec2 vAoMapUv;
345
+
346
+ #endif
347
+ #ifdef USE_BUMPMAP
348
+
349
+ uniform mat3 bumpMapTransform;
350
+ varying vec2 vBumpMapUv;
351
+
352
+ #endif
353
+ #ifdef USE_NORMALMAP
354
+
355
+ uniform mat3 normalMapTransform;
356
+ varying vec2 vNormalMapUv;
357
+
358
+ #endif
359
+ #ifdef USE_DISPLACEMENTMAP
360
+
361
+ uniform mat3 displacementMapTransform;
362
+ varying vec2 vDisplacementMapUv;
363
+
364
+ #endif
365
+ #ifdef USE_EMISSIVEMAP
366
+
367
+ uniform mat3 emissiveMapTransform;
368
+ varying vec2 vEmissiveMapUv;
369
+
370
+ #endif
371
+ #ifdef USE_METALNESSMAP
372
+
373
+ uniform mat3 metalnessMapTransform;
374
+ varying vec2 vMetalnessMapUv;
375
+
376
+ #endif
377
+ #ifdef USE_ROUGHNESSMAP
378
+
379
+ uniform mat3 roughnessMapTransform;
380
+ varying vec2 vRoughnessMapUv;
381
+
382
+ #endif
383
+ #ifdef USE_ANISOTROPYMAP
384
+
385
+ uniform mat3 anisotropyMapTransform;
386
+ varying vec2 vAnisotropyMapUv;
387
+
388
+ #endif
389
+ #ifdef USE_CLEARCOATMAP
390
+
391
+ uniform mat3 clearcoatMapTransform;
392
+ varying vec2 vClearcoatMapUv;
393
+
394
+ #endif
395
+ #ifdef USE_CLEARCOAT_NORMALMAP
396
+
397
+ uniform mat3 clearcoatNormalMapTransform;
398
+ varying vec2 vClearcoatNormalMapUv;
399
+
400
+ #endif
401
+ #ifdef USE_CLEARCOAT_ROUGHNESSMAP
402
+
403
+ uniform mat3 clearcoatRoughnessMapTransform;
404
+ varying vec2 vClearcoatRoughnessMapUv;
405
+
406
+ #endif
407
+ #ifdef USE_SHEEN_COLORMAP
408
+
409
+ uniform mat3 sheenColorMapTransform;
410
+ varying vec2 vSheenColorMapUv;
411
+
412
+ #endif
413
+ #ifdef USE_SHEEN_ROUGHNESSMAP
414
+
415
+ uniform mat3 sheenRoughnessMapTransform;
416
+ varying vec2 vSheenRoughnessMapUv;
417
+
418
+ #endif
419
+ #ifdef USE_IRIDESCENCEMAP
420
+
421
+ uniform mat3 iridescenceMapTransform;
422
+ varying vec2 vIridescenceMapUv;
423
+
424
+ #endif
425
+ #ifdef USE_IRIDESCENCE_THICKNESSMAP
426
+
427
+ uniform mat3 iridescenceThicknessMapTransform;
428
+ varying vec2 vIridescenceThicknessMapUv;
429
+
430
+ #endif
431
+ #ifdef USE_SPECULARMAP
432
+
433
+ uniform mat3 specularMapTransform;
434
+ varying vec2 vSpecularMapUv;
435
+
436
+ #endif
437
+ #ifdef USE_SPECULAR_COLORMAP
438
+
439
+ uniform mat3 specularColorMapTransform;
440
+ varying vec2 vSpecularColorMapUv;
441
+
442
+ #endif
443
+ #ifdef USE_SPECULAR_INTENSITYMAP
444
+
445
+ uniform mat3 specularIntensityMapTransform;
446
+ varying vec2 vSpecularIntensityMapUv;
447
+
448
+ #endif
449
+ #ifdef USE_TRANSMISSIONMAP
450
+
451
+ uniform mat3 transmissionMapTransform;
452
+ varying vec2 vTransmissionMapUv;
453
+
454
+ #endif
455
+ #ifdef USE_THICKNESSMAP
456
+
457
+ uniform mat3 thicknessMapTransform;
458
+ varying vec2 vThicknessMapUv;
459
+
460
+ #endif
461
+ `,$h=`
462
+ #ifdef UV_TILE
463
+ mat3 tileTransform = makeTileTransform(floor(uvTile));
464
+ #ifdef TILE_BLEND
465
+ mat3 nextTileTransform = makeTileTransform(ceil(uvTile));
466
+ vUvBlend = fract(uvTile);
467
+ #endif
468
+ #else
469
+ mat3 tileTransform = makeTileTransform(0.0);
470
+ #endif
471
+
472
+ #if defined( USE_UV ) || defined( USE_ANISOTROPY )
473
+
474
+ vUv = (tileTransform *vec3( uv, 1 )).xy;
475
+ #if defined( TILE_BLEND ) && defined( UV_TILE )
476
+ vUvNext = (nextTileTransform *vec3( uv, 1 )).xy;
477
+ #endif
478
+
479
+ #endif
480
+ #ifdef USE_MAP
481
+
482
+ vMapUv = ( tileTransform * (mapTransform * vec3( MAP_UV, 1 ) )).xy;
483
+ #if defined( TILE_BLEND ) && defined( UV_TILE )
484
+ vMapUvNext = (nextTileTransform * (mapTransform * vec3( MAP_UV, 1 ))).xy;
485
+ #endif
486
+
487
+ #endif
488
+ #ifdef USE_ALPHAMAP
489
+
490
+ vAlphaMapUv = ( tileTransform * (alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) )).xy;
491
+
492
+ #endif
493
+ #ifdef USE_LIGHTMAP
494
+
495
+ vLightMapUv = ( tileTransform * (lightMapTransform * vec3( LIGHTMAP_UV, 1 ) )).xy;
496
+
497
+ #endif
498
+ #ifdef USE_AOMAP
499
+
500
+ vAoMapUv = ( tileTransform * (aoMapTransform * vec3( AOMAP_UV, 1 ) )).xy;
501
+
502
+ #endif
503
+ #ifdef USE_BUMPMAP
504
+
505
+ vBumpMapUv = ( tileTransform * (bumpMapTransform * vec3( BUMPMAP_UV, 1 ) )).xy;
506
+
507
+ #endif
508
+ #ifdef USE_NORMALMAP
509
+
510
+ vNormalMapUv = ( tileTransform * (normalMapTransform * vec3( NORMALMAP_UV, 1 ) )).xy;
511
+
512
+ #endif
513
+ #ifdef USE_DISPLACEMENTMAP
514
+
515
+ vDisplacementMapUv = ( tileTransform * (displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) )).xy;
516
+
517
+ #endif
518
+ #ifdef USE_EMISSIVEMAP
519
+
520
+ vEmissiveMapUv = ( tileTransform * (emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) )).xy;
521
+
522
+ #endif
523
+ #ifdef USE_METALNESSMAP
524
+
525
+ vMetalnessMapUv = ( tileTransform * (metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) )).xy;
526
+
527
+ #endif
528
+ #ifdef USE_ROUGHNESSMAP
529
+
530
+ vRoughnessMapUv = ( tileTransform * (roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) )).xy;
531
+
532
+ #endif
533
+ #ifdef USE_ANISOTROPYMAP
534
+
535
+ vAnisotropyMapUv = ( tileTransform * (anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) )).xy;
536
+
537
+ #endif
538
+ #ifdef USE_CLEARCOATMAP
539
+
540
+ vClearcoatMapUv = ( tileTransform * (clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) )).xy;
541
+
542
+ #endif
543
+ #ifdef USE_CLEARCOAT_NORMALMAP
544
+
545
+ vClearcoatNormalMapUv = ( tileTransform * (clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) )).xy;
546
+
547
+ #endif
548
+ #ifdef USE_CLEARCOAT_ROUGHNESSMAP
549
+
550
+ vClearcoatRoughnessMapUv = ( tileTransform * (clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) )).xy;
551
+
552
+ #endif
553
+ #ifdef USE_IRIDESCENCEMAP
554
+
555
+ vIridescenceMapUv = ( tileTransform * (iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) )).xy;
556
+
557
+ #endif
558
+ #ifdef USE_IRIDESCENCE_THICKNESSMAP
559
+
560
+ vIridescenceThicknessMapUv = ( tileTransform * (iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) )).xy;
561
+
562
+ #endif
563
+ #ifdef USE_SHEEN_COLORMAP
564
+
565
+ vSheenColorMapUv = ( tileTransform * (sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) )).xy;
566
+
567
+ #endif
568
+ #ifdef USE_SHEEN_ROUGHNESSMAP
569
+
570
+ vSheenRoughnessMapUv = ( tileTransform * (sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) )).xy;
571
+
572
+ #endif
573
+ #ifdef USE_SPECULARMAP
574
+
575
+ vSpecularMapUv = ( tileTransform * (specularMapTransform * vec3( SPECULARMAP_UV, 1 ) )).xy;
576
+
577
+ #endif
578
+ #ifdef USE_SPECULAR_COLORMAP
579
+
580
+ vSpecularColorMapUv = ( tileTransform * (specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) )).xy;
581
+
582
+ #endif
583
+ #ifdef USE_SPECULAR_INTENSITYMAP
584
+
585
+ vSpecularIntensityMapUv = ( tileTransform * (specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) )).xy;
586
+
587
+ #endif
588
+ #ifdef USE_TRANSMISSIONMAP
589
+
590
+ vTransmissionMapUv = ( tileTransform * transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) )).xy;
591
+
592
+ #endif
593
+ #ifdef USE_THICKNESSMAP
594
+
595
+ vThicknessMapUv = ( tileTransform * thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) )).xy;
596
+
597
+ #endif
598
+
599
+ `;const on=Jl;function ed(){on.tile_pars_vertex=Qh,on.tile_vertex=$h,on.tile_pars_fragment=Kh,on.tile_fragment=Zh,on.soft_pars_vertex=Xh,on.soft_vertex=Yh,on.soft_pars_fragment=qh,on.soft_fragment=Hh}class td extends Qo{constructor(e){super(),this.type="ParticleEmitter",this.system=e}clone(){const e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}toJSON(e,t={}){const n=this.children;this.children=this.children.filter(s=>s.type!=="ParticleSystemPreview");const i=super.toJSON(e);return this.children=n,this.system!==null&&(i.object.ps=this.system.toJSON(e,t)),i}}var V;(function(r){r[r.BillBoard=0]="BillBoard",r[r.StretchedBillBoard=1]="StretchedBillBoard",r[r.Mesh=2]="Mesh",r[r.Trail=3]="Trail",r[r.HorizontalBillBoard=4]="HorizontalBillBoard",r[r.VerticalBillBoard=5]="VerticalBillBoard"})(V||(V={}));class Jc extends ys{constructor(e){super(),this.type="VFXBatch",this.maxParticles=1e3,this.systems=new Set;const t=new ar;t.mask=e.layers.mask;const n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){const t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}}const nd=new G(0,0,1),qs=new re,id=new G,rd=new G;new G;const Gc=60,sd=new Ko(1,1,1,1);class es{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=V.Trail&&e===V.Trail||this.rendererSettings.renderMode==V.Trail&&e!==V.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case V.Trail:this.rendererEmitterSettings={startLength:new ne(30),followLocalOrigin:!1};break;case V.Mesh:this.rendererEmitterSettings={geometry:new Ko(1,1)},this.startRotation=new Ei(new G(0,1,0),new ne(0));break;case V.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===V.Mesh&&(this.startRotation=new ne(0));break;case V.BillBoard:case V.VerticalBillBoard:case V.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===V.Mesh&&(this.startRotation=new ne(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){var t,n,i,s,a,o,c,l,u,p,m,f,x,_,g,v,w,S,T,M,E,P,O,A,R,I;if(this.temp=new G,this.travelDistance=0,this.normalMatrix=new Vt,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=(t=e.duration)!==null&&t!==void 0?t:1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=(n=e.startLife)!==null&&n!==void 0?n:new ne(5),this.startSpeed=(i=e.startSpeed)!==null&&i!==void 0?i:new ne(0),this.startRotation=(s=e.startRotation)!==null&&s!==void 0?s:new ne(0),this.startSize=(a=e.startSize)!==null&&a!==void 0?a:new ne(1),this.startColor=(o=e.startColor)!==null&&o!==void 0?o:new En(new ot(1,1,1,1)),this.emissionOverTime=(c=e.emissionOverTime)!==null&&c!==void 0?c:new ne(10),this.emissionOverDistance=(l=e.emissionOverDistance)!==null&&l!==void 0?l:new ne(0),this.emissionBursts=(u=e.emissionBursts)!==null&&u!==void 0?u:[],this.onlyUsedByOther=(p=e.onlyUsedByOther)!==null&&p!==void 0?p:!1,this.emitterShape=(m=e.shape)!==null&&m!==void 0?m:new Yn,this.behaviors=(f=e.behaviors)!==null&&f!==void 0?f:new Array,this.worldSpace=(x=e.worldSpace)!==null&&x!==void 0?x:!1,this.rendererEmitterSettings=(_=e.rendererEmitterSettings)!==null&&_!==void 0?_:{},e.renderMode===V.StretchedBillBoard){const B=this.rendererEmitterSettings;e.speedFactor!==void 0&&(B.speedFactor=e.speedFactor),B.speedFactor=(g=B.speedFactor)!==null&&g!==void 0?g:0,B.lengthFactor=(v=B.lengthFactor)!==null&&v!==void 0?v:0}this.rendererSettings={instancingGeometry:(w=e.instancingGeometry)!==null&&w!==void 0?w:sd,renderMode:(S=e.renderMode)!==null&&S!==void 0?S:V.BillBoard,renderOrder:(T=e.renderOrder)!==null&&T!==void 0?T:0,material:e.material,uTileCount:(M=e.uTileCount)!==null&&M!==void 0?M:1,vTileCount:(E=e.vTileCount)!==null&&E!==void 0?E:1,blendTiles:(P=e.blendTiles)!==null&&P!==void 0?P:!1,softParticles:(O=e.softParticles)!==null&&O!==void 0?O:!1,softNearFade:(A=e.softNearFade)!==null&&A!==void 0?A:0,softFarFade:(R=e.softFarFade)!==null&&R!==void 0?R:0,layers:(I=e.layers)!==null&&I!==void 0?I:new ar},this.neededToUpdateRender=!0,this.particles=new Array,this.startTileIndex=e.startTileIndex||new ne(0),this.emitter=new td(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(B=>B.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){qs.setFromRotationMatrix(n);const i=id,s=qs,a=rd;n.decompose(i,s,a);for(let o=0;o<e;o++){for(t.burstParticleIndex=o,this.particleNum++;this.particles.length<this.particleNum;)this.rendererSettings.renderMode===V.Trail?this.particles.push(new Cr):this.particles.push(new zh);const c=this.particles[this.particleNum-1];if(c.reset(),c.speedModifier=1,this.startColor.startGen(c.memory),this.startColor.genColor(c.memory,c.startColor,this.emissionState.time),c.color.copy(c.startColor),this.startSpeed.startGen(c.memory),c.startSpeed=this.startSpeed.genValue(c.memory,t.time/this.duration),this.startLife.startGen(c.memory),c.life=this.startLife.genValue(c.memory,t.time/this.duration),c.age=0,this.startSize.startGen(c.memory),this.startSize.type==="vec3function")this.startSize.genValue(c.memory,c.startSize,t.time/this.duration);else{const l=this.startSize.genValue(c.memory,t.time/this.duration);c.startSize.set(l,l,l)}if(this.startTileIndex.startGen(c.memory),c.uvTile=this.startTileIndex.genValue(c.memory),c.size.copy(c.startSize),this.rendererSettings.renderMode===V.Mesh||this.rendererSettings.renderMode===V.BillBoard||this.rendererSettings.renderMode===V.VerticalBillBoard||this.rendererSettings.renderMode===V.HorizontalBillBoard||this.rendererSettings.renderMode===V.StretchedBillBoard){const l=c;this.startRotation.startGen(c.memory),this.rendererSettings.renderMode===V.Mesh?(l.rotation instanceof re||(l.rotation=new re),this.startRotation.type==="rotation"?this.startRotation.genValue(c.memory,l.rotation,1,t.time/this.duration):l.rotation.setFromAxisAngle(nd,this.startRotation.genValue(l.memory,t.time/this.duration))):this.startRotation.type==="rotation"?l.rotation=0:l.rotation=this.startRotation.genValue(l.memory,t.time/this.duration)}else if(this.rendererSettings.renderMode===V.Trail){const l=c;this.rendererEmitterSettings.startLength.startGen(l.memory),l.length=this.rendererEmitterSettings.startLength.genValue(l.memory,t.time/this.duration)}if(this.emitterShape.initialize(c,t),this.rendererSettings.renderMode===V.Trail&&this.rendererEmitterSettings.followLocalOrigin){const l=c;l.localPosition=new G().copy(l.position)}this.worldSpace?(c.position.applyMatrix4(n),c.startSize.multiply(a).abs(),c.size.copy(c.startSize),c.velocity.multiply(a).applyMatrix3(this.normalMatrix),c.rotation&&c.rotation instanceof re&&c.rotation.multiplyQuaternions(qs,c.rotation)):this.onlyUsedByOther&&(c.parentMatrix=n);for(let l=0;l<this.behaviors.length;l++)this.behaviors[l].initialize(c,this)}}endEmit(){this.emitEnded=!0,this.autoDestroy&&(this.markForDestroy=!0),this.fire({type:"emitEnd",particleSystem:this})}dispose(){this._renderer&&this._renderer.deleteSystem(this),this.emitter.dispose(),this.emitter.parent&&this.emitter.parent.remove(this.emitter),this.fire({type:"destroy",particleSystem:this})}restart(){this.memory.length=0,this.paused=!1,this.particleNum=0,this.emissionState.isBursting=!1,this.emissionState.burstIndex=0,this.emissionState.burstWaveIndex=0,this.emissionState.time=0,this.emissionState.waitEmiting=0,this.behaviors.forEach(e=>{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!=="Scene"){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let n=0;n<this.duration*Gc;n++)this.update(1/Gc)}e>.1&&(e=.1),this.neededToUpdateRender&&(this._renderer&&this._renderer.updateSystem(this),this.neededToUpdateRender=!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let n=0;n<this.behaviors.length;n++){this.behaviors[n].frameUpdate(e);for(let i=0;i<this.particleNum;i++)this.particles[i].died||this.behaviors[n].update(this.particles[i],e)}for(let n=0;n<this.particleNum;n++)this.rendererEmitterSettings.followLocalOrigin&&this.particles[n].localPosition?(this.particles[n].position.copy(this.particles[n].localPosition),this.particles[n].parentMatrix?this.particles[n].position.applyMatrix4(this.particles[n].parentMatrix):this.particles[n].position.applyMatrix4(this.emitter.matrixWorld)):this.particles[n].position.addScaledVector(this.particles[n].velocity,e*this.particles[n].speedModifier),this.particles[n].age+=e;if(this.rendererSettings.renderMode===V.Trail)for(let n=0;n<this.particleNum;n++)this.particles[n].update();for(let n=0;n<this.particleNum;n++){const i=this.particles[n];i.died&&(!(i instanceof Cr)||i.previous.length===0)&&(this.particles[n]=this.particles[this.particleNum-1],this.particles[this.particleNum-1]=i,this.particleNum--,n--,this.fire({type:"particleDied",particleSystem:this,particle:i}))}}emit(e,t,n){t.time>this.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(s=>{s.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);const i=Math.ceil(t.waitEmiting);for(this.spawn(i,t,n),t.waitEmiting-=i;t.burstIndex<this.emissionBursts.length&&this.emissionBursts[t.burstIndex].time<=t.time;){if(Math.random()<this.emissionBursts[t.burstIndex].probability){const s=this.emissionBursts[t.burstIndex].count.genValue(this.memory,this.time);t.isBursting=!0,t.burstParticleCount=s,this.spawn(s,t,n),t.isBursting=!1}t.burstIndex++}if(!this.emitEnded&&(t.waitEmiting+=e*this.emissionOverTime.genValue(this.memory,t.time/this.duration),t.previousWorldPos!=null)){this.temp.set(n.elements[12],n.elements[13],n.elements[14]),t.travelDistance+=t.previousWorldPos.distanceTo(this.temp);const s=this.emissionOverDistance.genValue(this.memory,t.time/this.duration);if(t.travelDistance*s>0){const a=Math.floor(t.travelDistance*s);t.travelDistance-=a/s,t.waitEmiting+=a}}t.previousWorldPos===void 0&&(t.previousWorldPos=new G),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){var n;if((e===void 0||typeof e=="string")&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&((n=this.texture)===null||n===void 0?void 0:n.source)!==void 0){const a=this.texture.source;e.images[a.uuid]={uuid:a.uuid,url:this.texture.image.url}}let i;this.renderMode===V.Trail?i={startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===V.Mesh?i={}:this.renderMode===V.StretchedBillBoard?i={speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:i={};const s=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[s.uuid]&&(e.geometries[s.uuid]=s.toJSON()),{version:"3.0",autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(a=>({time:a.time,count:a.count.toJSON(),probability:a.probability,interval:a.interval,cycle:a.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:i,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(a=>a.toJSON()),worldSpace:this.worldSpace}}static fromJSON(e,t,n){var i,s;const a=Ih(e.shape,t);let o;if(e.renderMode===V.Trail){const u=e.rendererEmitterSettings;o={startLength:u.startLength!=null?Q(u.startLength):new ne(30),followLocalOrigin:u.followLocalOrigin}}else e.renderMode===V.Mesh?o={}:e.renderMode===V.StretchedBillBoard?(o=e.rendererEmitterSettings,e.speedFactor!=null&&(o.speedFactor=e.speedFactor)):o={};const c=new ar;e.layers&&(c.mask=e.layers);const l=new es({autoDestroy:e.autoDestroy,looping:e.looping,prewarm:e.prewarm,duration:e.duration,shape:a,startLife:Q(e.startLife),startSpeed:Q(e.startSpeed),startRotation:wr(e.startRotation),startSize:wr(e.startSize),startColor:js(e.startColor),emissionOverTime:Q(e.emissionOverTime),emissionOverDistance:Q(e.emissionOverDistance),emissionBursts:(i=e.emissionBursts)===null||i===void 0?void 0:i.map(u=>{var p,m,f;return{time:u.time,count:typeof u.count=="number"?new ne(u.count):Q(u.count),probability:(p=u.probability)!==null&&p!==void 0?p:1,interval:(m=u.interval)!==null&&m!==void 0?m:.1,cycle:(f=u.cycle)!==null&&f!==void 0?f:1}}),onlyUsedByOther:e.onlyUsedByOther,instancingGeometry:t.geometries[e.instancingGeometry],renderMode:e.renderMode,rendererEmitterSettings:o,renderOrder:e.renderOrder,layers:c,material:e.material?t.materials[e.material]:e.texture?new $o({map:t.textures[e.texture],transparent:(s=e.transparent)!==null&&s!==void 0?s:!0,blending:e.blending,side:fs}):new $o({color:16777215,transparent:!0,blending:ea,side:fs}),startTileIndex:typeof e.startTileIndex=="number"?new ne(e.startTileIndex):Q(e.startTileIndex),uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softFarFade:e.softFarFade,softNearFade:e.softNearFade,behaviors:[],worldSpace:e.worldSpace});return l.behaviors=e.behaviors.map(u=>{const p=Jh(u,l);return p.type==="EmitSubParticleSystem"&&(n[u.subParticleSystem]=p),p}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){const n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){const e=[];for(const s of this.emissionBursts){const a={};Object.assign(a,s),e.push(a)}const t=[];for(const s of this.behaviors)t.push(s.clone());let n;this.renderMode===V.Trail?n={startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===V.StretchedBillBoard?n={lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:n={};const i=new ar;return i.mask=this.layers.mask,new es({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:e,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:n,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:t,worldSpace:this.worldSpace,layers:i})}}var Xs=`
600
+
601
+ #include <common>
602
+ #include <color_pars_fragment>
603
+ #include <map_pars_fragment>
604
+ #include <logdepthbuf_pars_fragment>
605
+ #include <clipping_planes_pars_fragment>
606
+ #include <alphatest_pars_fragment>
607
+
608
+ #include <tile_pars_fragment>
609
+ #include <soft_pars_fragment>
610
+
611
+ void main() {
612
+
613
+ #include <clipping_planes_fragment>
614
+
615
+ vec3 outgoingLight = vec3( 0.0 );
616
+ vec4 diffuseColor = vColor;
617
+
618
+ #include <logdepthbuf_fragment>
619
+
620
+ #include <tile_fragment>
621
+ #include <alphatest_fragment>
622
+
623
+ outgoingLight = diffuseColor.rgb;
624
+
625
+ #ifdef USE_COLOR_AS_ALPHA
626
+ gl_FragColor = vec4( outgoingLight, diffuseColor.r );
627
+ #else
628
+ gl_FragColor = vec4( outgoingLight, diffuseColor.a );
629
+ #endif
630
+
631
+ #include <soft_fragment>
632
+ #include <tonemapping_fragment>
633
+ }
634
+ `,Ys=`
635
+ #define STANDARD
636
+
637
+ #ifdef PHYSICAL
638
+ #define IOR
639
+ #define USE_SPECULAR
640
+ #endif
641
+
642
+ uniform vec3 diffuse;
643
+ uniform vec3 emissive;
644
+ uniform float roughness;
645
+ uniform float metalness;
646
+ uniform float opacity;
647
+
648
+ #ifdef IOR
649
+ uniform float ior;
650
+ #endif
651
+
652
+ #ifdef USE_SPECULAR
653
+ uniform float specularIntensity;
654
+ uniform vec3 specularColor;
655
+
656
+ #ifdef USE_SPECULAR_COLORMAP
657
+ uniform sampler2D specularColorMap;
658
+ #endif
659
+
660
+ #ifdef USE_SPECULAR_INTENSITYMAP
661
+ uniform sampler2D specularIntensityMap;
662
+ #endif
663
+ #endif
664
+
665
+ #ifdef USE_CLEARCOAT
666
+ uniform float clearcoat;
667
+ uniform float clearcoatRoughness;
668
+ #endif
669
+
670
+ #ifdef USE_DISPERSION
671
+ uniform float dispersion;
672
+ #endif
673
+
674
+ #ifdef USE_IRIDESCENCE
675
+ uniform float iridescence;
676
+ uniform float iridescenceIOR;
677
+ uniform float iridescenceThicknessMinimum;
678
+ uniform float iridescenceThicknessMaximum;
679
+ #endif
680
+
681
+ #ifdef USE_SHEEN
682
+ uniform vec3 sheenColor;
683
+ uniform float sheenRoughness;
684
+
685
+ #ifdef USE_SHEEN_COLORMAP
686
+ uniform sampler2D sheenColorMap;
687
+ #endif
688
+
689
+ #ifdef USE_SHEEN_ROUGHNESSMAP
690
+ uniform sampler2D sheenRoughnessMap;
691
+ #endif
692
+ #endif
693
+
694
+ #ifdef USE_ANISOTROPY
695
+ uniform vec2 anisotropyVector;
696
+
697
+ #ifdef USE_ANISOTROPYMAP
698
+ uniform sampler2D anisotropyMap;
699
+ #endif
700
+ #endif
701
+
702
+ varying vec3 vViewPosition;
703
+
704
+ #include <common>
705
+ #include <packing>
706
+ #include <dithering_pars_fragment>
707
+ #include <color_pars_fragment>
708
+ #include <uv_pars_fragment>
709
+ #include <map_pars_fragment>
710
+ #include <alphamap_pars_fragment>
711
+ #include <alphatest_pars_fragment>
712
+ #include <alphahash_pars_fragment>
713
+ #include <aomap_pars_fragment>
714
+ #include <lightmap_pars_fragment>
715
+ #include <emissivemap_pars_fragment>
716
+ #include <iridescence_fragment>
717
+ #include <cube_uv_reflection_fragment>
718
+ #include <envmap_common_pars_fragment>
719
+ #include <envmap_physical_pars_fragment>
720
+ #include <fog_pars_fragment>
721
+ #include <lights_pars_begin>
722
+ #include <normal_pars_fragment>
723
+ #include <lights_physical_pars_fragment>
724
+ #include <transmission_pars_fragment>
725
+ #include <shadowmap_pars_fragment>
726
+ #include <bumpmap_pars_fragment>
727
+ #include <normalmap_pars_fragment>
728
+ #include <clearcoat_pars_fragment>
729
+ #include <iridescence_pars_fragment>
730
+ #include <roughnessmap_pars_fragment>
731
+ #include <metalnessmap_pars_fragment>
732
+ #include <logdepthbuf_pars_fragment>
733
+ #include <clipping_planes_pars_fragment>
734
+
735
+ void main() {
736
+
737
+ vec4 diffuseColor = vec4( diffuse, opacity );
738
+ #include <clipping_planes_fragment>
739
+
740
+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
741
+ vec3 totalEmissiveRadiance = emissive;
742
+
743
+ #include <logdepthbuf_fragment>
744
+ #include <map_fragment>
745
+ #include <color_fragment>
746
+ #include <alphamap_fragment>
747
+ #include <alphatest_fragment>
748
+ #include <alphahash_fragment>
749
+ #include <roughnessmap_fragment>
750
+ #include <metalnessmap_fragment>
751
+ #include <normal_fragment_begin>
752
+ #include <normal_fragment_maps>
753
+ #include <clearcoat_normal_fragment_begin>
754
+ #include <clearcoat_normal_fragment_maps>
755
+ #include <emissivemap_fragment>
756
+
757
+ // accumulation
758
+ #include <lights_physical_fragment>
759
+ #include <lights_fragment_begin>
760
+ #include <lights_fragment_maps>
761
+ #include <lights_fragment_end>
762
+
763
+ // modulation
764
+ #include <aomap_fragment>
765
+
766
+ vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
767
+ vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
768
+
769
+ #include <transmission_fragment>
770
+
771
+ vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
772
+
773
+ #ifdef USE_SHEEN
774
+
775
+ // Sheen energy compensation approximation calculation can be found at the end of
776
+ // https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
777
+ float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
778
+
779
+ outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;
780
+
781
+ #endif
782
+
783
+ #ifdef USE_CLEARCOAT
784
+
785
+ float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );
786
+
787
+ vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
788
+
789
+ outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;
790
+
791
+ #endif
792
+
793
+ #include <opaque_fragment>
794
+ #include <tonemapping_fragment>
795
+ #include <colorspace_fragment>
796
+ #include <fog_fragment>
797
+ #include <premultiplied_alpha_fragment>
798
+ #include <dithering_fragment>
799
+ }`,od=`
800
+ #include <common>
801
+ #include <color_pars_vertex>
802
+ #include <logdepthbuf_pars_vertex>
803
+ #include <clipping_planes_pars_vertex>
804
+
805
+ #include <tile_pars_vertex>
806
+ #include <soft_pars_vertex>
807
+
808
+ attribute vec3 offset;
809
+ attribute float rotation;
810
+ attribute vec3 size;
811
+
812
+ void main() {
813
+
814
+ vec2 alignedPosition = position.xy * size.xy;
815
+
816
+ vec2 rotatedPosition;
817
+ rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
818
+ rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
819
+ #ifdef HORIZONTAL
820
+ vec4 mvPosition = modelMatrix * vec4( offset, 1.0 );
821
+ mvPosition.x += rotatedPosition.x;
822
+ mvPosition.z -= rotatedPosition.y;
823
+ mvPosition = viewMatrix * mvPosition;
824
+ #elif defined(VERTICAL)
825
+ vec4 mvPosition = modelMatrix * vec4( offset, 1.0 );
826
+ mvPosition.y += rotatedPosition.y;
827
+ mvPosition = viewMatrix * mvPosition;
828
+ mvPosition.x += rotatedPosition.x;
829
+ #else
830
+ vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 );
831
+ mvPosition.xy += rotatedPosition;
832
+ #endif
833
+
834
+ vColor = color;
835
+
836
+ gl_Position = projectionMatrix * mvPosition;
837
+
838
+ #include <logdepthbuf_vertex>
839
+
840
+ #include <clipping_planes_vertex>
841
+
842
+ #include <tile_vertex>
843
+ #include <soft_vertex>
844
+ }
845
+ `,ad=`
846
+ #include <common>
847
+ #include <color_pars_vertex>
848
+ #include <logdepthbuf_pars_vertex>
849
+ #include <clipping_planes_pars_vertex>
850
+ #include <tile_pars_vertex>
851
+ #include <soft_pars_vertex>
852
+
853
+ attribute vec3 offset;
854
+ attribute vec4 rotation;
855
+ attribute vec3 size;
856
+ // attribute vec4 color;
857
+
858
+ void main() {
859
+
860
+ float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z;
861
+ float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2;
862
+ float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2;
863
+ float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2;
864
+ float sx = size.x, sy = size.y, sz = size.z;
865
+
866
+ mat4 matrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column
867
+ ( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column
868
+ ( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column
869
+ offset.x, offset.y, offset.z, 1.0);
870
+
871
+ vec4 mvPosition = modelViewMatrix * (matrix * vec4( position, 1.0 ));
872
+
873
+ vColor = color;
874
+
875
+ gl_Position = projectionMatrix * mvPosition;
876
+
877
+ #include <logdepthbuf_vertex>
878
+ #include <clipping_planes_vertex>
879
+ #include <tile_vertex>
880
+ #include <soft_vertex>
881
+ }
882
+ `,Zs=`
883
+ #define STANDARD
884
+ varying vec3 vViewPosition;
885
+ #ifdef USE_TRANSMISSION
886
+ varying vec3 vWorldPosition;
887
+ #endif
888
+ #include <common>
889
+
890
+ attribute vec3 offset;
891
+ attribute vec4 rotation;
892
+ attribute vec3 size;
893
+ #include <tile_pars_vertex>
894
+ #include <displacementmap_pars_vertex>
895
+ #include <color_pars_vertex>
896
+ #include <fog_pars_vertex>
897
+ #include <normal_pars_vertex>
898
+ #include <morphtarget_pars_vertex>
899
+ #include <skinning_pars_vertex>
900
+ #include <shadowmap_pars_vertex>
901
+ #include <logdepthbuf_pars_vertex>
902
+ #include <clipping_planes_pars_vertex>
903
+
904
+ void main() {
905
+
906
+ #include <tile_vertex>
907
+ float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z;
908
+ float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2;
909
+ float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2;
910
+ float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2;
911
+ float sx = size.x, sy = size.y, sz = size.z;
912
+
913
+ mat4 particleMatrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column
914
+ ( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column
915
+ ( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column
916
+ offset.x, offset.y, offset.z, 1.0);
917
+
918
+ #include <color_vertex>
919
+ #include <morphinstance_vertex>
920
+ #include <morphcolor_vertex>
921
+ #include <batching_vertex>
922
+
923
+ #include <beginnormal_vertex>
924
+ #include <morphnormal_vertex>
925
+ #include <skinbase_vertex>
926
+ #include <skinnormal_vertex>
927
+
928
+ // replace defaultnormal_vertex
929
+ vec3 transformedNormal = objectNormal;
930
+ mat3 m = mat3( particleMatrix );
931
+ transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
932
+ transformedNormal = m * transformedNormal;
933
+ transformedNormal = normalMatrix * transformedNormal;
934
+ #ifdef FLIP_SIDED
935
+ transformedNormal = - transformedNormal;
936
+ #endif
937
+ #ifdef USE_TANGENT
938
+ vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
939
+ #ifdef FLIP_SIDED
940
+ transformedTangent = - transformedTangent;
941
+ #endif
942
+ #endif
943
+
944
+ #include <normal_vertex>
945
+ #include <begin_vertex>
946
+ #include <morphtarget_vertex>
947
+ #include <skinning_vertex>
948
+ #include <displacementmap_vertex>
949
+
950
+ // replace include <project_vertex>
951
+ vec4 mvPosition = vec4( transformed, 1.0 );
952
+ mvPosition = modelViewMatrix * (particleMatrix * mvPosition);
953
+ gl_Position = projectionMatrix * mvPosition;
954
+
955
+ #include <logdepthbuf_vertex>
956
+ #include <clipping_planes_vertex>
957
+
958
+ vViewPosition = - mvPosition.xyz;
959
+
960
+ #include <worldpos_vertex>
961
+ #include <shadowmap_vertex>
962
+ #include <fog_vertex>
963
+ #ifdef USE_TRANSMISSION
964
+ vWorldPosition = worldPosition.xyz;
965
+ #endif
966
+ }
967
+ `,cd=`
968
+ #include <common>
969
+ #include <color_pars_vertex>
970
+ #include <logdepthbuf_pars_vertex>
971
+ #include <clipping_planes_pars_vertex>
972
+
973
+ #include <tile_pars_vertex>
974
+ #include <soft_pars_vertex>
975
+
976
+ attribute vec3 offset;
977
+ attribute float rotation;
978
+ attribute vec3 size;
979
+ attribute vec4 velocity;
980
+
981
+ uniform float speedFactor;
982
+
983
+ void main() {
984
+ float lengthFactor = velocity.w;
985
+ float avgSize = (size.x + size.y) * 0.5;
986
+ #ifdef USE_SKEW
987
+ vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 );
988
+ vec3 viewVelocity = normalMatrix * velocity.xyz;
989
+
990
+ vec3 scaledPos = vec3(position.xy * size.xy, position.z);
991
+ float vlength = length(viewVelocity);
992
+ vec3 projVelocity = dot(scaledPos, viewVelocity) * viewVelocity / vlength;
993
+ mvPosition.xyz += scaledPos + projVelocity * (speedFactor / avgSize + lengthFactor / vlength);
994
+ #else
995
+ vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 );
996
+ vec3 viewVelocity = normalMatrix * velocity.xyz;
997
+ float vlength = length(viewVelocity);
998
+ mvPosition.xyz += position.y * normalize(cross(mvPosition.xyz, viewVelocity)) * avgSize; // switch the cross to match unity implementation
999
+ mvPosition.xyz -= (position.x + 0.5) * viewVelocity * (1.0 + lengthFactor / vlength) * avgSize; // minus position.x to match unity implementation
1000
+ #endif
1001
+ vColor = color;
1002
+ gl_Position = projectionMatrix * mvPosition;
1003
+ #include <logdepthbuf_vertex>
1004
+ #include <clipping_planes_vertex>
1005
+ #include <tile_vertex>
1006
+ #include <soft_vertex>
1007
+ }
1008
+ `;function Ks(r){return r===0?"uv":`uv${r}`}class ld extends Wl{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=Zs,e.fragmentShader=Ys}}class ud extends Hl{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=Zs,e.fragmentShader=Ys}}class hd extends Jc{constructor(e){super(e),this.vector_=new G,this.vector2_=new G,this.vector3_=new G,this.quaternion_=new re,this.quaternion2_=new re,this.quaternion3_=new re,this.rotationMat_=new Vt,this.rotationMat2_=new Vt,this.maxParticles=1e3,this.setupBuffers(),this.rebuildMaterial()}buildExpandableBuffers(){this.offsetBuffer=new fn(new Float32Array(this.maxParticles*3),3),this.offsetBuffer.setUsage(Qe),this.geometry.setAttribute("offset",this.offsetBuffer),this.colorBuffer=new fn(new Float32Array(this.maxParticles*4),4),this.colorBuffer.setUsage(Qe),this.geometry.setAttribute("color",this.colorBuffer),this.settings.renderMode===V.Mesh?(this.rotationBuffer=new fn(new Float32Array(this.maxParticles*4),4),this.rotationBuffer.setUsage(Qe),this.geometry.setAttribute("rotation",this.rotationBuffer)):(this.settings.renderMode===V.BillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.StretchedBillBoard)&&(this.rotationBuffer=new fn(new Float32Array(this.maxParticles),1),this.rotationBuffer.setUsage(Qe),this.geometry.setAttribute("rotation",this.rotationBuffer)),this.sizeBuffer=new fn(new Float32Array(this.maxParticles*3),3),this.sizeBuffer.setUsage(Qe),this.geometry.setAttribute("size",this.sizeBuffer),this.uvTileBuffer=new fn(new Float32Array(this.maxParticles),1),this.uvTileBuffer.setUsage(Qe),this.geometry.setAttribute("uvTile",this.uvTileBuffer),this.settings.renderMode===V.StretchedBillBoard&&(this.velocityBuffer=new fn(new Float32Array(this.maxParticles*4),4),this.velocityBuffer.setUsage(Qe),this.geometry.setAttribute("velocity",this.velocityBuffer))}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new Gl,this.geometry.setIndex(this.settings.instancingGeometry.getIndex()),this.settings.instancingGeometry.hasAttribute("normal")&&this.geometry.setAttribute("normal",this.settings.instancingGeometry.getAttribute("normal")),this.geometry.setAttribute("position",this.settings.instancingGeometry.getAttribute("position")),this.geometry.setAttribute("uv",this.settings.instancingGeometry.getAttribute("uv")),this.buildExpandableBuffers()}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={},t={};this.settings.material.type!=="MeshStandardMaterial"&&this.settings.material.type!=="MeshPhysicalMaterial"&&(e.map=new Pt(this.settings.material.map)),this.settings.material.alphaTest&&(t.USE_ALPHATEST="",e.alphaTest=new Pt(this.settings.material.alphaTest)),t.USE_UV="";const n=this.settings.uTileCount,i=this.settings.vTileCount;(n>1||i>1)&&(t.UV_TILE="",e.tileCount=new Pt(new qn(n,i))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.material.normalMap&&(t.USE_NORMALMAP="",t.NORMALMAP_UV=Ks(this.settings.material.normalMap.channel),e.normalMapTransform=new Pt(new Vt().copy(this.settings.material.normalMap.matrix))),this.settings.material.map&&(t.USE_MAP="",this.settings.blendTiles&&(t.TILE_BLEND=""),t.MAP_UV=Ks(this.settings.material.map.channel),e.mapTransform=new Pt(new Vt().copy(this.settings.material.map.matrix))),t.USE_COLOR_ALPHA="";let s;if(this.settings.softParticles){t.SOFT_PARTICLES="";const o=this.settings.softNearFade,c=1/(this.settings.softFarFade-this.settings.softNearFade);e.softParams=new Pt(new qn(o,c)),e.depthTexture=new Pt(null);const l=e.projParams=new Pt(new ot);s=(u,p,m)=>{l.value.set(m.near,m.far,0,0)}}let a=!1;if(this.settings.renderMode===V.BillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.Mesh){let o,c;this.settings.renderMode===V.Mesh?this.settings.material.type==="MeshStandardMaterial"||this.settings.material.type==="MeshPhysicalMaterial"?(t.USE_COLOR="",o=Zs,c=Ys,a=!0):(o=ad,c=Xs):(o=od,c=Xs),this.settings.renderMode===V.VerticalBillBoard?t.VERTICAL="":this.settings.renderMode===V.HorizontalBillBoard&&(t.HORIZONTAL="");let l=!1;this.settings.renderMode===V.Mesh&&(this.settings.material.type==="MeshStandardMaterial"?(this.material=new ld({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0):this.settings.material.type==="MeshPhysicalMaterial"&&(this.material=new ud({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0)),l||(this.material=new ms({uniforms:e,defines:t,vertexShader:o,fragmentShader:c,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest,lights:a}))}else if(this.settings.renderMode===V.StretchedBillBoard)e.speedFactor=new Pt(1),this.material=new ms({uniforms:e,defines:t,vertexShader:cd,fragmentShader:Xs,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest});else throw new Error("render mode unavailable");this.material&&s&&(this.material.onBeforeRender=s)}update(){let e=0,t=0;this.systems.forEach(n=>{t+=n.particleNum}),t>this.maxParticles&&this.expandBuffers(t),this.systems.forEach(n=>{n.emitter.updateMatrixWorld&&(n.emitter.updateWorldMatrix(!0,!1),n.emitter.updateMatrixWorld(!0));const i=n.particles,s=n.particleNum,a=this.quaternion2_,o=this.vector2_,c=this.vector3_;n.emitter.matrixWorld.decompose(o,a,c),this.rotationMat_.setFromMatrix4(n.emitter.matrixWorld);for(let l=0;l<s;l++,e++){const u=i[l];if(this.settings.renderMode===V.Mesh){let m;if(n.worldSpace)m=u.rotation;else{let f;u.parentMatrix?f=this.quaternion3_.setFromRotationMatrix(u.parentMatrix):f=a,m=this.quaternion_,m.copy(f).multiply(u.rotation)}this.rotationBuffer.setXYZW(e,m.x,m.y,m.z,m.w)}else(this.settings.renderMode===V.StretchedBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.BillBoard)&&this.rotationBuffer.setX(e,u.rotation);let p;if(n.worldSpace?p=u.position:(p=this.vector_,u.parentMatrix?p.copy(u.position).applyMatrix4(u.parentMatrix):p.copy(u.position).applyMatrix4(n.emitter.matrixWorld)),this.offsetBuffer.setXYZ(e,p.x,p.y,p.z),this.colorBuffer.setXYZW(e,u.color.x,u.color.y,u.color.z,u.color.w),n.worldSpace?this.sizeBuffer.setXYZ(e,u.size.x,u.size.y,u.size.z):u.parentMatrix?this.sizeBuffer.setXYZ(e,u.size.x,u.size.y,u.size.z):this.sizeBuffer.setXYZ(e,u.size.x*Math.abs(c.x),u.size.y*Math.abs(c.y),u.size.z*Math.abs(c.z)),this.uvTileBuffer.setX(e,u.uvTile),this.settings.renderMode===V.StretchedBillBoard&&this.velocityBuffer){let m=n.rendererEmitterSettings.speedFactor;m===0&&(m=.001);const f=n.rendererEmitterSettings.lengthFactor;let x;n.worldSpace?x=u.velocity:(x=this.vector_,u.parentMatrix?(this.rotationMat2_.setFromMatrix4(u.parentMatrix),x.copy(u.velocity).applyMatrix3(this.rotationMat2_)):x.copy(u.velocity).applyMatrix3(this.rotationMat_)),this.velocityBuffer.setXYZW(e,x.x*m,x.y*m,x.z*m,f)}}}),this.geometry.instanceCount=e,e>0&&(this.offsetBuffer.clearUpdateRanges(),this.offsetBuffer.addUpdateRange(0,e*3),this.offsetBuffer.needsUpdate=!0,this.sizeBuffer.clearUpdateRanges(),this.sizeBuffer.addUpdateRange(0,e*3),this.sizeBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.uvTileBuffer.clearUpdateRanges(),this.uvTileBuffer.addUpdateRange(0,e),this.uvTileBuffer.needsUpdate=!0,this.settings.renderMode===V.StretchedBillBoard&&this.velocityBuffer&&(this.velocityBuffer.clearUpdateRanges(),this.velocityBuffer.addUpdateRange(0,e*4),this.velocityBuffer.needsUpdate=!0),this.settings.renderMode===V.Mesh?(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e*4),this.rotationBuffer.needsUpdate=!0):(this.settings.renderMode===V.StretchedBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.BillBoard)&&(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e),this.rotationBuffer.needsUpdate=!0))}dispose(){this.geometry.dispose()}}var dd=`
1009
+
1010
+ #include <common>
1011
+ #include <tile_pars_fragment>
1012
+ #include <map_pars_fragment>
1013
+ #include <fog_pars_fragment>
1014
+ #include <logdepthbuf_pars_fragment>
1015
+ #include <clipping_planes_pars_fragment>
1016
+
1017
+ uniform sampler2D alphaMap;
1018
+ uniform float useAlphaMap;
1019
+ uniform float visibility;
1020
+ uniform float alphaTest;
1021
+
1022
+ varying vec4 vColor;
1023
+
1024
+ void main() {
1025
+ #include <clipping_planes_fragment>
1026
+ #include <logdepthbuf_fragment>
1027
+
1028
+ vec4 diffuseColor = vColor;
1029
+
1030
+ #ifdef USE_MAP
1031
+ #include <tile_fragment>
1032
+ #ifndef USE_COLOR_AS_ALPHA
1033
+ #endif
1034
+ #endif
1035
+ if( useAlphaMap == 1. ) diffuseColor.a *= texture2D( alphaMap, vUv).a;
1036
+ if( diffuseColor.a < alphaTest ) discard;
1037
+ gl_FragColor = diffuseColor;
1038
+
1039
+ #include <fog_fragment>
1040
+ #include <tonemapping_fragment>
1041
+ }`,pd=`
1042
+ #include <common>
1043
+ #include <tile_pars_vertex>
1044
+ #include <color_pars_vertex>
1045
+ #include <clipping_planes_pars_vertex>
1046
+ #include <logdepthbuf_pars_vertex>
1047
+ #include <fog_pars_vertex>
1048
+
1049
+ attribute vec3 previous;
1050
+ attribute vec3 next;
1051
+ attribute float side;
1052
+ attribute float width;
1053
+
1054
+ uniform vec2 resolution;
1055
+ uniform float lineWidth;
1056
+ uniform float sizeAttenuation;
1057
+
1058
+ vec2 fix(vec4 i, float aspect) {
1059
+ vec2 res = i.xy / i.w;
1060
+ res.x *= aspect;
1061
+ return res;
1062
+ }
1063
+
1064
+ void main() {
1065
+
1066
+ #include <tile_vertex>
1067
+
1068
+ float aspect = resolution.x / resolution.y;
1069
+
1070
+ vColor = color;
1071
+
1072
+ mat4 m = projectionMatrix * modelViewMatrix;
1073
+ vec4 finalPosition = m * vec4( position, 1.0 );
1074
+ vec4 prevPos = m * vec4( previous, 1.0 );
1075
+ vec4 nextPos = m * vec4( next, 1.0 );
1076
+
1077
+ vec2 currentP = fix( finalPosition, aspect );
1078
+ vec2 prevP = fix( prevPos, aspect );
1079
+ vec2 nextP = fix( nextPos, aspect );
1080
+
1081
+ float w = lineWidth * width;
1082
+
1083
+ vec2 dir;
1084
+ if( nextP == currentP ) dir = normalize( currentP - prevP );
1085
+ else if( prevP == currentP ) dir = normalize( nextP - currentP );
1086
+ else {
1087
+ vec2 dir1 = normalize( currentP - prevP );
1088
+ vec2 dir2 = normalize( nextP - currentP );
1089
+ dir = normalize( dir1 + dir2 );
1090
+
1091
+ vec2 perp = vec2( -dir1.y, dir1.x );
1092
+ vec2 miter = vec2( -dir.y, dir.x );
1093
+ //w = clamp( w / dot( miter, perp ), 0., 4., * lineWidth * width );
1094
+
1095
+ }
1096
+
1097
+ //vec2 normal = ( cross( vec3( dir, 0. ) vec3( 0., 0., 1. ) ) ).xy;
1098
+ vec4 normal = vec4( -dir.y, dir.x, 0., 1. );
1099
+ normal.xy *= .5 * w;
1100
+ normal *= projectionMatrix;
1101
+ if( sizeAttenuation == 0. ) {
1102
+ normal.xy *= finalPosition.w;
1103
+ normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy;
1104
+ }
1105
+
1106
+ finalPosition.xy += normal.xy * side;
1107
+
1108
+ gl_Position = finalPosition;
1109
+
1110
+ #include <logdepthbuf_vertex>
1111
+ #include <clipping_planes_vertex>
1112
+
1113
+ vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
1114
+
1115
+ #include <fog_vertex>
1116
+ }`;class fd extends Jc{constructor(e){super(e),this.vector_=new G,this.vector2_=new G,this.vector3_=new G,this.quaternion_=new re,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new $n,this.indexBuffer=new ut(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(Qe),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new ut(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(Qe),this.geometry.setAttribute("position",this.positionBuffer),this.previousBuffer=new ut(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(Qe),this.geometry.setAttribute("previous",this.previousBuffer),this.nextBuffer=new ut(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(Qe),this.geometry.setAttribute("next",this.nextBuffer),this.widthBuffer=new ut(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(Qe),this.geometry.setAttribute("width",this.widthBuffer),this.sideBuffer=new ut(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(Qe),this.geometry.setAttribute("side",this.sideBuffer),this.uvBuffer=new ut(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(Qe),this.geometry.setAttribute("uv",this.uvBuffer),this.colorBuffer=new ut(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(Qe),this.geometry.setAttribute("color",this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new qn(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV="",t.USE_COLOR_ALPHA="",this.settings.material.map&&(t.USE_MAP="",t.MAP_UV=Ks(this.settings.material.map.channel),e.map=new Pt(this.settings.material.map),e.mapTransform=new Pt(new Vt().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.renderMode===V.Trail)this.material=new ms({uniforms:e,defines:t,vertexShader:pd,fragmentShader:dd,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||ea,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw new Error("render mode unavailable")}update(){let e=0,t=0,n=0;this.systems.forEach(i=>{for(let s=0;s<i.particleNum;s++)n+=i.particles[s].previous.length*2}),n>this.maxParticles&&this.expandBuffers(n),this.systems.forEach(i=>{i.emitter.updateMatrixWorld&&(i.emitter.updateWorldMatrix(!0,!1),i.emitter.updateMatrixWorld(!0));const s=this.quaternion_,a=this.vector2_,o=this.vector3_;i.emitter.matrixWorld.decompose(a,s,o);const c=i.particles,l=i.particleNum,u=this.settings.uTileCount,p=this.settings.vTileCount,m=1/u,f=1/p;for(let x=0;x<l;x++){const _=c[x],g=_.uvTile%p,v=Math.floor(_.uvTile/p+.001),w=_.previous.values();let S=w.next(),T=S.value,M=T;S.done||(S=w.next());let E;S.value!==void 0?E=S.value:E=M;for(let P=0;P<_.previous.length;P++,e+=2){if(this.positionBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.positionBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z),i.worldSpace?(this.positionBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.positionBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z)):(_.parentMatrix?this.vector_.copy(M.position).applyMatrix4(_.parentMatrix):this.vector_.copy(M.position).applyMatrix4(i.emitter.matrixWorld),this.positionBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.positionBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.previousBuffer.setXYZ(e,T.position.x,T.position.y,T.position.z),this.previousBuffer.setXYZ(e+1,T.position.x,T.position.y,T.position.z)):(_.parentMatrix?this.vector_.copy(T.position).applyMatrix4(_.parentMatrix):this.vector_.copy(T.position).applyMatrix4(i.emitter.matrixWorld),this.previousBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.previousBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.nextBuffer.setXYZ(e,E.position.x,E.position.y,E.position.z),this.nextBuffer.setXYZ(e+1,E.position.x,E.position.y,E.position.z)):(_.parentMatrix?this.vector_.copy(E.position).applyMatrix4(_.parentMatrix):this.vector_.copy(E.position).applyMatrix4(i.emitter.matrixWorld),this.nextBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.nextBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),this.sideBuffer.setX(e,-1),this.sideBuffer.setX(e+1,1),i.worldSpace)this.widthBuffer.setX(e,M.size),this.widthBuffer.setX(e+1,M.size);else if(_.parentMatrix)this.widthBuffer.setX(e,M.size),this.widthBuffer.setX(e+1,M.size);else{const O=(Math.abs(o.x)+Math.abs(o.y)+Math.abs(o.z))/3;this.widthBuffer.setX(e,M.size*O),this.widthBuffer.setX(e+1,M.size*O)}this.uvBuffer.setXY(e,(P/_.previous.length+g)*m,(p-v-1)*f),this.uvBuffer.setXY(e+1,(P/_.previous.length+g)*m,(p-v)*f),this.colorBuffer.setXYZW(e,M.color.x,M.color.y,M.color.z,M.color.w),this.colorBuffer.setXYZW(e+1,M.color.x,M.color.y,M.color.z,M.color.w),P+1<_.previous.length&&(this.indexBuffer.setX(t*3,e),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+2),t++,this.indexBuffer.setX(t*3,e+2),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+3),t++),T=M,M=E,S.done||(S=w.next(),S.value!==void 0&&(E=S.value))}}}),this.positionBuffer.clearUpdateRanges(),this.positionBuffer.addUpdateRange(0,e*3),this.positionBuffer.needsUpdate=!0,this.previousBuffer.clearUpdateRanges(),this.previousBuffer.addUpdateRange(0,e*3),this.previousBuffer.needsUpdate=!0,this.nextBuffer.clearUpdateRanges(),this.nextBuffer.addUpdateRange(0,e*3),this.nextBuffer.needsUpdate=!0,this.sideBuffer.clearUpdateRanges(),this.sideBuffer.addUpdateRange(0,e),this.sideBuffer.needsUpdate=!0,this.widthBuffer.clearUpdateRanges(),this.widthBuffer.addUpdateRange(0,e),this.widthBuffer.needsUpdate=!0,this.uvBuffer.clearUpdateRanges(),this.uvBuffer.addUpdateRange(0,e*2),this.uvBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.indexBuffer.clearUpdateRanges(),this.indexBuffer.addUpdateRange(0,t*3),this.indexBuffer.needsUpdate=!0,this.geometry.setDrawRange(0,t*3)}dispose(){this.geometry.dispose()}}class $i{get geometry(){return this._geometry}set geometry(e){if(this._geometry=e,e===void 0||typeof e=="string")return;const t=new mn;this._triangleIndexToArea.length=0;let n=0;if(!e.getIndex())return;const i=e.getIndex().array,s=i.length/3;this._triangleIndexToArea.push(0);for(let a=0;a<s;a++)t.setFromAttributeAndIndices(e.getAttribute("position"),i[a*3],i[a*3+1],i[a*3+2]),n+=t.getArea(),this._triangleIndexToArea.push(n);e.userData.triangleIndexToArea=this._triangleIndexToArea}constructor(e){this.type="mesh_surface",this._triangleIndexToArea=[],this._tempA=new q,this._tempB=new q,this._tempC=new q,e&&(this.geometry=e)}initialize(e){const t=this._geometry;if(!t||t.getIndex()===null){e.position.set(0,0,0),e.velocity.set(0,0,1).multiplyScalar(e.startSpeed);return}const n=this._triangleIndexToArea.length-1;let i=0,s=n;const a=Math.random()*this._triangleIndexToArea[n];for(;i+1<s;){const f=Math.floor((i+s)/2);a<this._triangleIndexToArea[f]?s=f:i=f}let o=Math.random(),c=Math.random();o+c>1&&(o=1-o,c=1-c);const l=t.getIndex().array[i*3],u=t.getIndex().array[i*3+1],p=t.getIndex().array[i*3+2],m=t.getAttribute("position");this._tempA.fromBufferAttribute(m,l),this._tempB.fromBufferAttribute(m,u),this._tempC.fromBufferAttribute(m,p),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,c),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:"mesh_surface",mesh:this._geometry?this._geometry.uuid:""}}static fromJSON(e,t){return new $i(t.geometries[e.geometry])}clone(){return new $i(this._geometry)}update(e,t){}}Wh({id:"three.quarks",emitterShapes:[{type:"mesh_surface",params:[["geometry",["geometry"]]],constructor:$i,loadJSON:$i.fromJSON}],behaviors:[]});class Eo extends Qo{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type="BatchedRenderer",this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(e){e._renderer=this;const t=e.getRendererSettings();for(let i=0;i<this.batches.length;i++)if(Eo.equals(this.batches[i].settings,t)){this.batches[i].addSystem(e),this.systemToBatchIndex.set(e,i);return}let n;switch(t.renderMode){case V.Trail:n=new fd(t);break;case V.Mesh:case V.BillBoard:case V.VerticalBillBoard:case V.HorizontalBillBoard:case V.StretchedBillBoard:n=new hd(t);break}this.depthTexture&&n.applyDepthTexture(this.depthTexture),n.addSystem(e),this.batches.push(n),this.systemToBatchIndex.set(e,this.batches.length-1),this.add(n)}deleteSystem(e){const t=this.systemToBatchIndex.get(e);t!=null&&(this.batches[t].removeSystem(e),this.systemToBatchIndex.delete(e))}setDepthTexture(e){this.depthTexture=e;for(const t of this.batches)t.applyDepthTexture(e)}updateSystem(e){this.deleteSystem(e),this.addSystem(e)}update(e){this.systemToBatchIndex.forEach((t,n)=>{n.update(e)});for(let t=0;t<this.batches.length;t++)this.batches[t].update()}}const md=Eo;ed(),console.log("%c Particle system powered by three.quarks. https://quarks.art/","font-size: 14px; font-weight: bold;");const Wc=Math.sqrt(5),yd=(Wc-1)/4,Fe=(5-Wc)/20,Pr=r=>Math.floor(r)|0,kr=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function gd(r=Math.random){const e=vd(r),t=new Float64Array(e).map(a=>kr[a%32*4]),n=new Float64Array(e).map(a=>kr[a%32*4+1]),i=new Float64Array(e).map(a=>kr[a%32*4+2]),s=new Float64Array(e).map(a=>kr[a%32*4+3]);return function(a,o,c,l){let u,p,m,f,x;const _=(a+o+c+l)*yd,g=Pr(a+_),v=Pr(o+_),w=Pr(c+_),S=Pr(l+_),T=(g+v+w+S)*Fe,M=g-T,E=v-T,P=w-T,O=S-T,A=a-M,R=o-E,I=c-P,B=l-O;let U=0,L=0,j=0,W=0;A>R?U++:L++,A>I?U++:j++,A>B?U++:W++,R>I?L++:j++,R>B?L++:W++,I>B?j++:W++;const ee=U>=3?1:0,H=L>=3?1:0,pe=j>=3?1:0,ie=W>=3?1:0,he=U>=2?1:0,oe=L>=2?1:0,le=j>=2?1:0,xe=W>=2?1:0,ge=U>=1?1:0,de=L>=1?1:0,se=j>=1?1:0,Xe=W>=1?1:0,ze=A-ee+Fe,Ee=R-H+Fe,at=I-pe+Fe,Ne=B-ie+Fe,ve=A-he+2*Fe,ue=R-oe+2*Fe,pt=I-le+2*Fe,Pe=B-xe+2*Fe,fe=A-ge+3*Fe,nt=R-de+3*Fe,wt=I-se+3*Fe,_t=B-Xe+3*Fe,it=A-1+4*Fe,Tt=R-1+4*Fe,ft=I-1+4*Fe,mt=B-1+4*Fe,ct=g&255,ke=v&255,Ye=w&255,lt=S&255;let Ze=.6-A*A-R*R-I*I-B*B;if(Ze<0)u=0;else{const ae=ct+e[ke+e[Ye+e[lt]]];Ze*=Ze,u=Ze*Ze*(t[ae]*A+n[ae]*R+i[ae]*I+s[ae]*B)}let $=.6-ze*ze-Ee*Ee-at*at-Ne*Ne;if($<0)p=0;else{const ae=ct+ee+e[ke+H+e[Ye+pe+e[lt+ie]]];$*=$,p=$*$*(t[ae]*ze+n[ae]*Ee+i[ae]*at+s[ae]*Ne)}let Mt=.6-ve*ve-ue*ue-pt*pt-Pe*Pe;if(Mt<0)m=0;else{const ae=ct+he+e[ke+oe+e[Ye+le+e[lt+xe]]];Mt*=Mt,m=Mt*Mt*(t[ae]*ve+n[ae]*ue+i[ae]*pt+s[ae]*Pe)}let jt=.6-fe*fe-nt*nt-wt*wt-_t*_t;if(jt<0)f=0;else{const ae=ct+ge+e[ke+de+e[Ye+se+e[lt+Xe]]];jt*=jt,f=jt*jt*(t[ae]*fe+n[ae]*nt+i[ae]*wt+s[ae]*_t)}let Ct=.6-it*it-Tt*Tt-ft*ft-mt*mt;if(Ct<0)x=0;else{const ae=ct+1+e[ke+1+e[Ye+1+e[lt+1]]];Ct*=Ct,x=Ct*Ct*(t[ae]*it+n[ae]*Tt+i[ae]*ft+s[ae]*mt)}return 27*(u+p+m+f+x)}}function vd(r){const e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Sd=Object.defineProperty,bd=(r,e,t)=>e in r?Sd(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Me=(r,e,t)=>(bd(r,typeof e!="symbol"?e+"":e,t),t);(function(){class r{}class e extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class t extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class n extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class i extends r{constructor(d,y="unrestricted"){super(),Me(this,"type"),Me(this,"value"),this.value=d,this.type=y}}class s extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class a extends r{}class o extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class c extends r{}class l extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class u extends r{constructor(d,y="integer"){super(),Me(this,"value"),Me(this,"type"),this.value=d,this.type=y}}class p extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class m extends r{constructor(d,y,b){super(),Me(this,"value"),Me(this,"type"),Me(this,"unit"),this.value=d,this.type=y,this.unit=b}}class f extends r{}class x extends r{}class _ extends r{}class g extends r{}class v extends r{}class w extends r{}class S extends r{}class T extends r{}class M extends r{}class E extends r{}class P extends r{}class O extends r{}class A{constructor(d){Me(this,"input"),Me(this,"index",0),this.input=d}consume(){const d=this.input.codePointAt(this.index);return d!==void 0&&(this.index+=String.fromCodePoint(d).length),d}reconsume(d){d!==void 0&&(this.index-=String.fromCodePoint(d).length)}peek(){const d=[];let y=this.index;for(let b=0;b<3&&y<this.input.length;b++){const C=this.input.codePointAt(y);d.push(C),y+=String.fromCodePoint(C).length}return d}}function R(h){return h===10}function I(h){return R(h)||h===8192||h===32}function B(h){return h>=48&&h<=57}function U(h){return B(h)||h>=65&&h<=70||h>=97&&h<=102}function L(h){return function(d){return function(y){return y>=65&&y<=90}(d)||function(y){return y>=97&&y<=122}(d)}(h)||function(d){return d>=128}(h)||h===95}function j(h){return L(h)||B(h)||h===45}function W(h){return h>=0&&h<=8||h===11||h>=14&&h<=31||h===127}function ee(h,d){return h===92&&!R(d)}function H(h,d,y){return h===45?L(d)||d===45||ee(d,y):!!L(h)||h===92&&ee(h,d)}function pe(h,d,y){return h===43||h===45?B(d)||d===46&&B(y):B(h===46?d:h)}function ie(h){const d=h.consume();if(U(d)){let y=[d];for(;U(...h.peek())&&y.length<5;)y.push(h.consume());I(...h.peek())&&h.consume();const b=parseInt(String.fromCodePoint(...y),16);return b===0||b>1114111?65533:b}return d===void 0?65533:d}function he(h,d){const y=new s("");for(;;){const b=h.consume();if(b===d||b===void 0)return y;if(b===10)return h.reconsume(b),new a;if(b===92){const C=h.peek()[0];C===void 0||(R(C)?h.consume():y.value+=String.fromCodePoint(ie(h)))}else y.value+=String.fromCodePoint(b)}}function oe(h){let d="";for(;;){const y=h.consume();if(j(y))d+=String.fromCodePoint(y);else{if(!ee(...h.peek()))return h.reconsume(y),d;d+=String.fromCodePoint(ie(h))}}}function le(h){let d=function(y){let b="integer",C="";for([43,45].includes(y.peek()[0])&&(C+=String.fromCodePoint(y.consume()));B(...y.peek());)C+=String.fromCodePoint(y.consume());if(y.peek()[0]===46&&B(y.peek()[1]))for(C+=String.fromCodePoint(y.consume(),y.consume()),b="number";B(...y.peek());)C+=String.fromCodePoint(y.consume());return[69,101].includes(y.peek()[0])&&([45,43].includes(y.peek()[1])&&B(y.peek()[2])?(C+=String.fromCodePoint(y.consume(),y.consume(),y.consume()),b="number"):B(y.peek()[1])&&(C+=String.fromCodePoint(y.consume(),y.consume()),b="number")),{value:parseFloat(C),type:b}}(h);return H(...h.peek())?new m(d.value,d.type,oe(h)):h.peek()[0]===37?(h.consume(),new p(d.value)):new u(d.value,d.type)}function xe(h){for(;;){const d=h.consume();if(d===41||d===void 0)return;ee(...h.peek())&&ie(h)}}function ge(h){const d=oe(h);if(d.match(/url/i)&&h.peek()[0]===40){for(h.consume();I(h.peek()[0])&&I(h.peek()[1]);)h.consume();return[34,39].includes(h.peek()[0])||I(h.peek()[0])&&[34,39].includes(h.peek()[1])?new t(d):function(y){const b=new o("");for(;I(...y.peek());)y.consume();for(;;){const C=y.consume();if(C===41||C===void 0)return b;if(I(C)){for(;I(...y.peek());)y.consume();return y.peek()[0]===41||y.peek()[0]===void 0?(y.consume(),b):(xe(y),new c)}if([34,39,40].includes(C)||W(C))return xe(y),new c;if(C===92){if(!ee(...y.peek()))return xe(y),new c;b.value+=ie(y)}else b.value+=String.fromCodePoint(C)}}(h)}return h.peek()[0]===40?(h.consume(),new t(d)):new e(d)}function de(h){const d=h.consume(),y=h.peek();if(I(d)){for(;I(...h.peek());)h.consume();return new f}if(d===34)return he(h,d);if(d===35){if(j(y[0])||ee(...y)){const b=new i;return H(...y)&&(b.type="id"),b.value=oe(h),b}return new l(String.fromCodePoint(d))}return d===39?he(h,d):d===40?new M:d===41?new E:d===43?pe(...y)?(h.reconsume(d),le(h)):new l(String.fromCodePoint(d)):d===44?new w:d===45?pe(...h.peek())?(h.reconsume(d),le(h)):h.peek()[0]===45&&h.peek()[1]===62?(h.consume(),h.consume(),new _):H(...h.peek())?(h.reconsume(d),ge(h)):new l(String.fromCodePoint(d)):d===46?pe(...h.peek())?(h.reconsume(d),le(h)):new l(String.fromCodePoint(d)):d===58?new g:d===59?new v:d===60?y[0]===33&&y[1]===45&&y[2]===45?(h.consume(),h.consume(),h.consume(),new x):new l(String.fromCodePoint(d)):d===64?H(...y)?new n(oe(h)):new l(String.fromCodePoint(d)):d===91?new S:d===92?ee(...y)?(h.reconsume(d),ge(h)):new l(String.fromCodePoint(d)):d===93?new T:d===123?new P:d===125?new O:B(d)?(h.reconsume(d),le(h)):L(d)?(h.reconsume(d),ge(h)):d===void 0?void 0:new l(String.fromCodePoint(d))}const se=new Set(["px","deg","s","hz","dppx","number","fr"]);function Xe(h){return se.has(h.toLowerCase())}function ze(h,d){if(["x","y"].includes(h))return h;if(!d)throw new Error("To determine the normalized axis the computedStyle of the source is required.");const y=d.writingMode=="horizontal-tb";if(h==="block")h=y?"y":"x";else{if(h!=="inline")throw new TypeError(`Invalid axis \u201C${h}\u201D`);h=y?"x":"y"}return h}function Ee(h){const d=[];let y=0;function b(){let k=0;const z=y;for(;y<h.length;){const D=h.slice(y,y+1);if(/\s/.test(D)&&k===0)break;if(D==="(")k+=1;else if(D===")"&&(k-=1,k===0)){y++;break}y++}return h.slice(z,y)}function C(){for(;/\s/.test(h.slice(y,y+1));)y++}for(;y<h.length;){const k=h.slice(y,y+1);/\s/.test(k)?C():d.push(b())}return d}function at(h,d){return h.reduce((y,b)=>(y.has(b[d])?y.get(b[d]).push(b):y.set(b[d],[b]),y),new Map)}function Ne(h,d){const y=[],b=[];for(const C of h)d(C)?y.push(C):b.push(C);return[y,b]}function ve(h,d={}){function y(b){return Array.from(b).map(C=>ve(C,d))}if(h instanceof CSSUnitValue){if(h.unit==="percent"&&d.percentageReference){const C=h.value/100*d.percentageReference.value,k=d.percentageReference.unit;return new CSSUnitValue(C,k)}const b=h.toSum();if(b&&b.values.length===1&&(h=b.values[0]),h instanceof CSSUnitValue&&h.unit==="em"&&d.fontSize&&(h=new CSSUnitValue(h.value*d.fontSize.value,d.fontSize.unit)),h instanceof CSSKeywordValue){if(h.value==="e")return new CSSUnitValue(Math.E,"number");if(h.value==="pi")return new CSSUnitValue(Math.PI,"number")}return h}if(!h.operator)return h;switch(h.operator){case"sum":h=new CSSMathSum(...y(h.values));break;case"product":h=new CSSMathProduct(...y(h.values));break;case"negate":h=new CSSMathNegate(ve(h.value,d));break;case"clamp":h=new CSSMathClamp(ve(h.lower,d),ve(h.value,d),ve(h.upper,d));break;case"invert":h=new CSSMathInvert(ve(h.value,d));break;case"min":h=new CSSMathMin(...y(h.values));break;case"max":h=new CSSMathMax(...y(h.values))}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const b=Array.from(h.values);if(b.every(C=>C instanceof CSSUnitValue&&C.unit!=="percent"&&Xe(C.unit)&&C.unit===b[0].unit)){const C=Math[h.operator].apply(Math,b.map(({value:k})=>k));return new CSSUnitValue(C,b[0].unit)}}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const b=Array.from(h.values),[C,k]=Ne(b,D=>D instanceof CSSUnitValue&&D.unit!=="percent"),z=Array.from(at(C,"unit").values());if(z.some(D=>D.length>0)){const D=z.map(N=>{const F=Math[h.operator].apply(Math,N.map(({value:X})=>X));return new CSSUnitValue(F,N[0].unit)});h=h instanceof CSSMathMin?new CSSMathMin(...D,...k):new CSSMathMax(...D,...k)}return b.length===1?b[0]:h}if(h instanceof CSSMathNegate)return h.value instanceof CSSUnitValue?new CSSUnitValue(0-h.value.value,h.value.unit):h.value instanceof CSSMathNegate?h.value.value:h;if(h instanceof CSSMathInvert)return h.value instanceof CSSMathInvert?h.value.value:h;if(h instanceof CSSMathSum){let b=function(k){const z=k.filter(D=>D instanceof CSSUnitValue);return[...k.filter(D=>!(D instanceof CSSUnitValue)),...Array.from(at(z,"unit").entries()).map(([D,N])=>{const F=N.reduce((X,{value:Z})=>X+Z,0);return new CSSUnitValue(F,D)})]},C=[];for(const k of h.values)k instanceof CSSMathSum?C.push(...k.values):C.push(k);return C=b(C),C.length===1?C[0]:new CSSMathSum(...C)}if(h instanceof CSSMathProduct){let b=[];for(const z of h.values)z instanceof CSSMathProduct?b.push(...z.values):b.push(z);const[C,k]=Ne(b,z=>z instanceof CSSUnitValue&&z.unit==="number");if(C.length>1){const z=C.reduce((D,{value:N})=>D*N,1);b=[new CSSUnitValue(z,"number"),...k]}if(b.length===2){let z,D;for(const N of b)N instanceof CSSUnitValue&&N.unit==="number"?z=N:N instanceof CSSMathSum&&[...N.values].every(F=>F instanceof CSSUnitValue)&&(D=N);if(z&&D)return new CSSMathSum(...[...D.values].map(N=>new CSSUnitValue(N.value*z.value,N.unit)))}if(b.every(z=>z instanceof CSSUnitValue&&Xe(z.unit)||z instanceof CSSMathInvert&&z.value instanceof CSSUnitValue&&Xe(z.value.unit))){const z=new CSSMathProduct(...b).toSum();if(z&&z.values.length===1)return z.values[0]}return new CSSMathProduct(...b)}return h}const ue=null,pt=["percent","length","angle","time","frequency","resolution","flex"],Pe={fontRelativeLengths:{units:new Set(["em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh"])},viewportRelativeLengths:{units:new Set(["vw","lvw","svw","dvw","vh","lvh","svh","dvh","vi","lvi","svi","dvi","vb","lvb","svb","dvb","vmin","lvmin","svmin","dvmin","vmax","lvmax","svmax","dvmax"])},absoluteLengths:{units:new Set(["cm","mm","Q","in","pt","pc","px"]),compatible:!0,canonicalUnit:"px",ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set(["deg","grad","rad","turn"]),compatible:!0,canonicalUnit:"deg",ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set(["s","ms"]),compatible:!0,canonicalUnit:"s",ratios:{s:1,ms:.001}},frequency:{units:new Set(["hz","khz"]),compatible:!0,canonicalUnit:"hz",ratios:{hz:1,khz:1e3}},resolution:{units:new Set(["dpi","dpcm","dppx"]),compatible:!0,canonicalUnit:"dppx",ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},fe=new Map;for(const h of Object.values(Pe))if(h.compatible)for(const d of h.units)fe.set(d,h);function nt(h){return fe.get(h)}function wt(h,d){const y={...h};for(const b of Object.keys(d))y[b]?y[b]+=d[b]:y[b]=d[b];return y}function _t(h){return h==="number"?{}:h==="percent"?{percent:1}:Pe.absoluteLengths.units.has(h)||Pe.fontRelativeLengths.units.has(h)||Pe.viewportRelativeLengths.units.has(h)?{length:1}:Pe.angle.units.has(h)?{angle:1}:Pe.time.units.has(h)?{time:1}:Pe.frequency.units.has(h)?{frequency:1}:Pe.resolution.units.has(h)?{resolution:1}:h==="fr"?{flex:1}:ue}function it(h){if(h instanceof CSSUnitValue){let{unit:d,value:y}=h;const b=nt(h.unit);return b&&d!==b.canonicalUnit&&(y*=b.ratios[d],d=b.canonicalUnit),d==="number"?[[y,{}]]:[[y,{[d]:1}]]}if(h instanceof CSSMathInvert){if(!(h.value instanceof CSSUnitValue))throw new Error("Not implemented");const d=it(h.value);if(d===ue||d.length>1)return ue;const y=d[0],b={};for(const[C,k]of Object.entries(y[1]))b[C]=-1*k;return d[0]=[1/y[0],b],d}if(h instanceof CSSMathProduct){let d=[[1,{}]];for(const y of h.values){const b=it(y),C=[];if(b===ue)return ue;for(const k of d)for(const z of b)C.push([k[0]*z[0],wt(k[1],z[1])]);d=C}return d}throw new Error("Not implemented")}function Tt(h,d){if(_t(d)===ue)throw new SyntaxError("The string did not match the expected pattern.");const y=it(h);if(!y)throw new TypeError;if(y.length>1)throw new TypeError("Sum has more than one item");const b=function(C,k){const z=C.unit,D=C.value,N=nt(z),F=nt(k);return!F||N!==F?ue:new CSSUnitValue(D*F.ratios[z]/F.ratios[k],k)}(ft(y[0]),d);if(b===ue)throw new TypeError;return b}function ft(h){const[d,y]=h,b=Object.entries(y);if(b.length>1)return ue;if(b.length===0)return new CSSUnitValue(d,"number");const C=b[0];return C[1]!==1?ue:new CSSUnitValue(d,C[0])}function mt(h,...d){if(d&&d.length)throw new Error("Not implemented");const y=it(h).map(b=>ft(b));if(y.some(b=>b===ue))throw new TypeError("Type error");return new CSSMathSum(...y)}function ct(h,d){if(h.percentHint&&d.percentHint&&h.percentHint!==d.percentHint)return ue;const y={...h,percentHint:h.percentHint??d.percentHint};for(const b of pt)d[b]&&(y[b]??(y[b]=0),y[b]+=d[b]);return y}class ke{constructor(d,y){Me(this,"name"),Me(this,"values"),this.name=d,this.values=y}}class Ye{constructor(d,y){Me(this,"value"),Me(this,"associatedToken"),this.value=d,this.associatedToken=y}}function lt(h){if(Array.isArray(h))return h;if(typeof h=="string")return function(d){const y=new A(d),b=[];for(;;){const C=de(y);if(C===void 0)return b;b.push(C)}}(h);throw new TypeError("Invalid input type "+typeof h)}function Ze(h){const d=h.shift();return d instanceof P||d instanceof S||d instanceof M?function(y,b){let C;if(b instanceof P)C=O;else if(b instanceof M)C=E;else{if(!(b instanceof S))return;C=T}const k=new Ye([],b);for(;;){const z=y.shift();if(z instanceof C||z===void 0)return k;y.unshift(z),k.value.push(Ze(y))}}(h,d):d instanceof t?function(y,b){const C=new ke(y.value,[]);for(;;){const k=b.shift();if(k instanceof E||k===void 0)return C;b.unshift(k),C.values.push(Ze(b))}}(d,h):d}function $(h){if(h instanceof M||h instanceof E)return 6;if(h instanceof l)switch(h.value){case"*":case"/":return 4;case"+":case"-":return 2}}function Mt(h){return h[h.length-1]}function jt(h,d,y){const b=["+","-"].includes(h.value)?"ADDITION":"MULTIPLICATION",C=d.type===b?d.values:[d],k=y.type===b?y.values:[y];return h.value==="-"?k[0]={type:"NEGATE",value:k[0]}:h.value==="/"&&(k[0]={type:"INVERT",value:k[0]}),{type:b,values:[...C,...k]}}function Ct(h){if(h.type==="ADDITION")return new CSSMathSum(...h.values.map(d=>Ct(d)));if(h.type==="MULTIPLICATION")return new CSSMathProduct(...h.values.map(d=>Ct(d)));if(h.type==="NEGATE")return new CSSMathNegate(Ct(h.value));if(h.type==="INVERT")return new CSSMathInvert(Ct(h.value));if(h instanceof Ye)return ae(new ke("calc",h.value));if(h instanceof e){if(h.value==="e")return new CSSUnitValue(Math.E,"number");if(h.value==="pi")return new CSSUnitValue(Math.PI,"number");throw new SyntaxError("Invalid math expression")}return Po(h)}function ae(h){if(h.name==="min"||h.name==="max"){const b=h.values.filter(C=>!(C instanceof f||C instanceof w)).map(C=>ve(ae(new ke("calc",C))));return h.name==="min"?new CSSMathMin(...b):new CSSMathMax(...b)}if(h.name!=="calc")return null;const d=Ct(function(b){const C=[],k=[];for(;b.length;){const z=b.shift();if(z instanceof u||z instanceof m||z instanceof p||z instanceof ke||z instanceof Ye||z instanceof e)k.push(z);else if(z instanceof l&&["*","/","+","-"].includes(z.value)){for(;C.length&&!(Mt(C)instanceof M)&&$(Mt(C))>$(z);){const D=C.pop(),N=k.pop(),F=k.pop();k.push(jt(D,F,N))}C.push(z)}else if(z instanceof M)C.push(z);else if(z instanceof E){if(!C.length)return null;for(;!(Mt(C)instanceof M);){const D=C.pop(),N=k.pop(),F=k.pop();k.push(jt(D,F,N))}if(!(Mt(C)instanceof M))return null;C.pop()}else if(!(z instanceof f))return null}for(;C.length;){if(Mt(C)instanceof M)return null;const z=C.pop(),D=k.pop(),N=k.pop();k.push(jt(z,N,D))}return k[0]}([...h.values]));let y;try{y=ve(d)}catch{new CSSStyleSheet().insertRule("error",0)}return y instanceof CSSUnitValue?new CSSMathSum(y):y}function Po(h){return h instanceof ke&&["calc","min","max","clamp"].includes(h.name)?ae(h):h instanceof u&&h.value===0&&!h.unit?new CSSUnitValue(0,"px"):h instanceof u?new CSSUnitValue(h.value,"number"):h instanceof p?new CSSUnitValue(h.value,"percent"):h instanceof m?new CSSUnitValue(h.value,h.unit):void 0}function Ml(h){const d=function(y){const b=lt(y);for(;b[0]instanceof f;)b.shift();if(b[0]===void 0)return null;const C=Ze(b);for(;b[0]instanceof f;)b.shift();return b[0]===void 0?C:null}(h);return d===null&&new CSSStyleSheet().insertRule("error",0),d instanceof u||d instanceof p||d instanceof m||d instanceof ke||new CSSStyleSheet().insertRule("error",0),d instanceof m&&_t(d.unit)===null&&new CSSStyleSheet().insertRule("error",0),Po(d)}(function(){let h=new WeakMap;function d(k){const z=[];for(let N=0;N<k.length;N++)z[N]=typeof(D=k[N])=="number"?new CSSUnitValue(D,"number"):D;var D;return z}class y{static parse(z){return z instanceof y?z:ve(Ml(z),{})}}class b extends y{constructor(z,D,N,F){super(),h.set(this,{values:d(z),operator:D,name:N||D,delimiter:F||", "})}get operator(){return h.get(this).operator}get values(){return h.get(this).values}toString(){const z=h.get(this);return`${z.name}(${z.values.join(z.delimiter)})`}}const C={CSSNumericValue:y,CSSMathValue:b,CSSUnitValue:class extends y{constructor(k,z){super(),h.set(this,{value:k,unit:z})}get value(){return h.get(this).value}set value(k){h.get(this).value=k}get unit(){return h.get(this).unit}to(k){return Tt(this,k)}toSum(...k){return mt(this,...k)}type(){return _t(h.get(this).unit)}toString(){const k=h.get(this);return`${k.value}${function(z){switch(z){case"percent":return"%";case"number":return"";default:return z.toLowerCase()}}(k.unit)}`}},CSSKeywordValue:class{constructor(k){this.value=k}toString(){return this.value.toString()}},CSSMathSum:class extends b{constructor(k){super(arguments,"sum","calc"," + ")}},CSSMathProduct:class extends b{constructor(k){super(arguments,"product","calc"," * ")}toSum(...k){return mt(this,...k)}type(){return h.get(this).values.map(k=>k.type()).reduce(ct)}},CSSMathNegate:class extends b{constructor(k){super([arguments[0]],"negate","-")}get value(){return h.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends b{constructor(k){super([1,arguments[0]],"invert","calc"," / ")}get value(){return h.get(this).values[1]}type(){return function(k){const z={};for(const D of pt)z[D]=-1*k[D];return z}(h.get(this).values[1].type())}},CSSMathMax:class extends b{constructor(){super(arguments,"max")}},CSSMathMin:class extends b{constructor(){super(arguments,"min")}}};if(!window.CSS&&!Reflect.defineProperty(window,"CSS",{value:{}}))throw Error("Error installing CSSOM support");window.CSSUnitValue||["number","percent","em","ex","px","cm","mm","in","pt","pc","Q","vw","vh","vmin","vmax","rems","ch","deg","rad","grad","turn","ms","s","Hz","kHz","dppx","dpi","dpcm","fr"].forEach(k=>{if(!Reflect.defineProperty(CSS,k,{value:z=>new CSSUnitValue(z,k)}))throw Error(`Error installing CSS.${k}`)});for(let[k,z]of Object.entries(C))if(!(k in window)&&!Reflect.defineProperty(window,k,{value:z}))throw Error(`Error installing CSSOM support for ${k}`)})();const ko="block";let Ge=new WeakMap,Jt=new WeakMap;const er=["entry","exit","cover","contain","entry-crossing","exit-crossing"];function Ro(h){return h===document.scrollingElement?document:h}function dn(h){ns(h);let d=Ge.get(h).animations;if(d.length===0)return;let y=h.currentTime;for(let b=0;b<d.length;b++)d[b].tickAnimation(y)}function Ao(h,d){if(!h)return null;const y=Jt.get(h).sourceMeasurements,b=getComputedStyle(h);let C=y.scrollTop;return ze(d,b)==="x"&&(C=Math.abs(y.scrollLeft)),C}function ts(h,d){const y=ve(h,d);if(y instanceof CSSUnitValue){if(y.unit==="px")return y.value;throw TypeError("Unhandled unit type "+y.unit)}throw TypeError("Unsupported value type: "+typeof h)}function ns(h){if(!(h instanceof An))return void function(y){const b=Ge.get(y);if(!b.anonymousSource)return;const C=Io(b.anonymousSource,b.anonymousTarget);Zn(y,C)}(h);const d=h.subject;if(!d||getComputedStyle(d).display=="none")return void Zn(h,null);Zn(h,cs(d))}function Oo(h){return["block","inline","x","y"].includes(h)}function is(h){const d=getComputedStyle(h);return{scrollLeft:h.scrollLeft,scrollTop:h.scrollTop,scrollWidth:h.scrollWidth,scrollHeight:h.scrollHeight,clientWidth:h.clientWidth,clientHeight:h.clientHeight,writingMode:d.writingMode,direction:d.direction,scrollPaddingTop:d.scrollPaddingTop,scrollPaddingBottom:d.scrollPaddingBottom,scrollPaddingLeft:d.scrollPaddingLeft,scrollPaddingRight:d.scrollPaddingRight}}function rs(h,d){if(!h||!d)return;let y=0,b=0,C=d;const k=h.offsetParent;for(;C&&C!=k;)b+=C.offsetLeft,y+=C.offsetTop,C=C.offsetParent;b-=h.offsetLeft+h.clientLeft,y-=h.offsetTop+h.clientTop;const z=getComputedStyle(d);return{top:y,left:b,offsetWidth:d.offsetWidth,offsetHeight:d.offsetHeight,fontSize:z.fontSize}}function tr(h){let d=Jt.get(h);d.sourceMeasurements=is(h);for(const y of d.timelineRefs){const b=y.deref();b instanceof An&&(Ge.get(b).subjectMeasurements=rs(h,b.subject))}d.updateScheduled||(setTimeout(()=>{for(const y of d.timelineRefs){const b=y.deref();b&&dn(b)}d.updateScheduled=!1}),d.updateScheduled=!0)}function Zn(h,d){const y=Ge.get(h),b=y.source;if(b!=d){if(b){const C=Jt.get(b);if(C){C.timelineRefs.delete(h);const k=Array.from(C.timelineRefs).filter(z=>z.deref()===void 0);for(const z of k)C.timelineRefs.delete(z);C.timelineRefs.size===0&&(C.disconnect(),Jt.delete(b))}}if(y.source=d,d){let C=Jt.get(d);if(!C){C={timelineRefs:new Set,sourceMeasurements:is(d)},Jt.set(d,C);const k=new ResizeObserver(N=>{for(const F of N)tr(y.source)});k.observe(d);for(const N of d.children)k.observe(N);const z=new MutationObserver(N=>{for(const F of N)tr(F.target)});z.observe(d,{attributes:!0,attributeFilter:["style","class"]});const D=()=>{C.sourceMeasurements.scrollLeft=d.scrollLeft,C.sourceMeasurements.scrollTop=d.scrollTop;for(const N of C.timelineRefs){const F=N.deref();F&&dn(F)}};Ro(d).addEventListener("scroll",D),C.disconnect=()=>{k.disconnect(),z.disconnect(),Ro(d).removeEventListener("scroll",D)}}C.timelineRefs.add(new WeakRef(h))}}}function ss(h,d){let y=Ge.get(h).animations;for(let b=0;b<y.length;b++)y[b].animation==d&&y.splice(b,1)}function os(h,d,y){let b=Ge.get(h).animations;for(let C=0;C<b.length;C++)if(b[C].animation==d)return;b.push({animation:d,tickAnimation:y}),queueMicrotask(()=>{dn(h)})}class Ke{constructor(d){if(Ge.set(this,{source:null,axis:ko,anonymousSource:d?d.anonymousSource:null,anonymousTarget:d?d.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),Zn(this,d&&d.source!==void 0?d.source:document.scrollingElement),d&&d.axis!==void 0&&d.axis!=ko){if(!Oo(d.axis))throw TypeError("Invalid axis");Ge.get(this).axis=d.axis}dn(this)}set source(d){Zn(this,d),dn(this)}get source(){return Ge.get(this).source}set axis(d){if(!Oo(d))throw TypeError("Invalid axis");Ge.get(this).axis=d,dn(this)}get axis(){return Ge.get(this).axis}get duration(){return CSS.percent(100)}get phase(){const d=this.source;if(!d)return"inactive";let y=getComputedStyle(d);return y.display=="none"?"inactive":d==document.scrollingElement||y.overflow!="visible"&&y.overflow!="clip"?"active":"inactive"}get currentTime(){const d=this.source;if(!d||!d.isConnected||this.phase=="inactive")return null;const y=getComputedStyle(d);if(y.display==="inline"||y.display==="none")return null;const b=this.axis,C=Ao(d,b),k=function(z,D){const N=Jt.get(z).sourceMeasurements,F=getComputedStyle(z).writingMode=="horizontal-tb";return D==="block"?D=F?"y":"x":D==="inline"&&(D=F?"x":"y"),D==="y"?N.scrollHeight-N.clientHeight:D==="x"?N.scrollWidth-N.clientWidth:void 0}(d,b);return k>0?CSS.percent(100*C/k):CSS.percent(100)}get __polyfill(){return!0}}function as(h,d){let y=h.parentElement;for(;y!=null;){if(d(y))return y;y=y.parentElement}}function Io(h,d){switch(h){case"root":return document.scrollingElement;case"nearest":return cs(d);case"self":return d;default:throw new TypeError("Invalid ScrollTimeline Source Type.")}}function Cl(h){switch(getComputedStyle(h).display){case"block":case"inline-block":case"list-item":case"table":case"table-caption":case"flow-root":case"flex":case"grid":return!0}return!1}function Bo(h){const d=getComputedStyle(h);return d.transform!="none"||d.perspective!="none"||d.willChange=="transform"||d.willChange=="perspective"||d.filter!="none"||d.willChange=="filter"||d.backdropFilter!="none"}function El(h){return getComputedStyle(h).position!="static"||Bo(h)}function Pl(h){switch(getComputedStyle(h).position){case"static":case"relative":case"sticky":return as(h,Cl);case"absolute":return as(h,El);case"fixed":return as(h,Bo)}}function cs(h){if(h&&h.isConnected){for(;h=Pl(h);)switch(getComputedStyle(h)["overflow-x"]){case"auto":case"scroll":case"hidden":return h==document.body&&getComputedStyle(document.scrollingElement).overflow=="visible"?document.scrollingElement:h}return document.scrollingElement}}function Kn(h,d){const y=Ge.get(h),b=y.subjectMeasurements,C=Jt.get(y.source).sourceMeasurements;return h.phase==="inactive"?null:h instanceof An?ls(d,C,b,y.axis,y.inset):null}function ls(h,d,y,b,C){const k=d.direction=="rtl"||d.writingMode=="vertical-rl";let z,D,N={fontSize:y.fontSize};ze(b,d)==="x"?(z=y.offsetWidth,D=y.left,N.scrollPadding=[d.scrollPaddingLeft,d.scrollPaddingRight],k&&(D+=d.scrollWidth-d.clientWidth,N.scrollPadding=[d.scrollPaddingRight,d.scrollPaddingLeft]),N.containerSize=d.clientWidth):(z=y.offsetHeight,D=y.top,N.scrollPadding=[d.scrollPaddingTop,d.scrollPaddingBottom],N.containerSize=d.clientHeight);const F=function(ps,or){const Fl={start:0,end:0};if(!ps)return Fl;const[Vl,jl]=[ps.start,ps.end].map((Yo,Zo)=>Yo==="auto"?or.scrollPadding[Zo]==="auto"?0:parseFloat(or.scrollPadding[Zo]):ts(Yo,{percentageReference:CSS.px(or.containerSize),fontSize:CSS.px(parseFloat(or.fontSize))}));return{start:Vl,end:jl}}(C,N),X=D-N.containerSize+F.end,Z=D+z-F.start,K=X+z,me=Z-z,_e=Math.min(K,me),rt=Math.max(K,me);let Et,yt;const Xo=z>N.containerSize-F.start-F.end;switch(h){case"cover":Et=X,yt=Z;break;case"contain":Et=_e,yt=rt;break;case"entry":Et=X,yt=_e;break;case"exit":Et=rt,yt=Z;break;case"entry-crossing":Et=X,yt=Xo?rt:_e;break;case"exit-crossing":Et=Xo?_e:rt,yt=Z}return{start:Et,end:yt}}function zo(h,d){if(h instanceof An){const{rangeName:y,offset:b}=d;return No(Kn(h,y),b,Kn(h,"cover"),h.subject)}if(h instanceof Ke){const{axis:y,source:b}=h,{sourceMeasurements:C}=Jt.get(b);let k;return k=ze(y,C)==="x"?C.scrollWidth-C.clientWidth:C.scrollHeight-C.clientHeight,ts(d,{percentageReference:CSS.px(k)})/k}unsupportedTimeline(h)}function No(h,d,y,b){if(!h||!y)return 0;let C=getComputedStyle(b);return(ts(d,{percentageReference:CSS.px(h.end-h.start),fontSize:CSS.px(parseFloat(C.fontSize))})+h.start-y.start)/(y.end-y.start)}let An=class extends Ke{constructor(h){super(h);const d=Ge.get(this);d.subject=h&&h.subject?h.subject:void 0,h&&h.inset&&(d.inset=function(y){if(!y)return{start:0,end:0};let b;if(b=typeof y=="string"?Ee(y).map(C=>{if(C==="auto")return"auto";try{return CSSNumericValue.parse(C)}catch{throw TypeError(`Could not parse inset "${y}"`)}}):Array.isArray(y)?y:[y],b.length===0||b.length>2)throw TypeError("Invalid inset");for(const C of b){if(C==="auto")continue;const k=C.type();if(k.length!==1&&k.percent!==1)throw TypeError("Invalid inset")}return{start:b[0],end:b[1]??b[0]}}(h.inset)),d.subject&&(new ResizeObserver(()=>{tr(d.source)}).observe(d.subject),new MutationObserver(()=>{tr(d.source)}).observe(d.subject,{attributes:!0,attributeFilter:["class","style"]})),ns(this),d.subjectMeasurements=rs(d.source,d.subject),dn(this)}get source(){return ns(this),Ge.get(this).source}set source(h){throw new Error("Cannot set the source of a view timeline")}get subject(){return Ge.get(this).subject}get axis(){return Ge.get(this).axis}get currentTime(){const h=Ao(this.source,this.axis);if(h==null)return null;const d=Kn(this,"cover");if(!d)return null;const y=(h-d.start)/(d.end-d.start);return CSS.percent(100*y)}get startOffset(){return CSS.px(Kn(this,"cover").start)}get endOffset(){return CSS.px(Kn(this,"cover").end)}};const kl=document.getAnimations,Rl=window.Element.prototype.getAnimations,Al=window.Element.prototype.animate,Uo=window.Animation;class On{constructor(){this.state="pending",this.nativeResolve=this.nativeReject=null,this.promise=new Promise((d,y)=>{this.nativeResolve=d,this.nativeReject=y})}resolve(d){this.state="resolved",this.nativeResolve(d)}reject(d){this.state="rejected",this.promise.catch(()=>{}),this.nativeReject(d)}}function Qn(h){h.readyPromise=new On,requestAnimationFrame(()=>{var d;(((d=h.timeline)==null?void 0:d.currentTime)??null)!==null&&(nr(h),h.pendingTask!=="play"||h.startTime===null&&h.holdTime===null?h.pendingTask==="pause"&&Fo(h):Lo(h))})}function Do(){return new DOMException("The user aborted a request","AbortError")}function pn(h,d){if(d===null)return d;if(typeof d!="number")throw new DOMException(`Unexpected value: ${d}. Cannot convert to CssNumberish`,"InvalidStateError");const y=h.rangeDuration??100,b=Wt(h),C=b?y*d/b:0;return CSS.percent(C)}function Se(h,d){if(h.timeline){if(d===null)return d;if(d.unit==="percent"){const y=h.rangeDuration??100,b=Wt(h);return d.value*b/y}throw new DOMException("CSSNumericValue must be a percentage for progress based animations.","NotSupportedError")}{if(d==null||typeof d=="number")return d;const y=d.to("ms");if(y)return y.value;throw new DOMException("CSSNumericValue must be either a number or a time value for time based animations.","InvalidStateError")}}function Lo(h){const d=Se(h,h.timeline.currentTime);if(h.holdTime!=null)Bt(h),h.animation.playbackRate==0?h.startTime=d:(h.startTime=d-h.holdTime/h.animation.playbackRate,h.holdTime=null);else if(h.startTime!==null&&h.pendingPlaybackRate!==null){const y=(d-h.startTime)*h.animation.playbackRate;Bt(h);const b=h.animation.playbackRate;b==0?(h.holdTime=null,h.startTime=d):h.startTime=d-y/b}h.readyPromise&&h.readyPromise.state=="pending"&&h.readyPromise.resolve(h.proxy),Gt(h,!1,!1),Ht(h),h.pendingTask=null}function Fo(h){const d=Se(h,h.timeline.currentTime);h.startTime!=null&&h.holdTime==null&&(h.holdTime=(d-h.startTime)*h.animation.playbackRate),Bt(h),h.startTime=null,h.readyPromise.resolve(h.proxy),Gt(h,!1,!1),Ht(h),h.pendingTask=null}function Vo(h){if(!h.finishedPromise||h.finishedPromise.state!="pending"||h.proxy.playState!="finished")return;h.finishedPromise.resolve(h.proxy),h.animation.pause();const d=new CustomEvent("finish",{detail:{currentTime:h.proxy.currentTime,timelineTime:h.proxy.timeline.currentTime}});Object.defineProperty(d,"currentTime",{get:function(){return this.detail.currentTime}}),Object.defineProperty(d,"timelineTime",{get:function(){return this.detail.timelineTime}}),requestAnimationFrame(()=>{queueMicrotask(()=>{h.animation.dispatchEvent(d)})})}function In(h){return h.pendingPlaybackRate!==null?h.pendingPlaybackRate:h.animation.playbackRate}function Bt(h){h.pendingPlaybackRate!==null&&(h.animation.playbackRate=h.pendingPlaybackRate,h.pendingPlaybackRate=null)}function jo(h){if(!h.timeline)return null;const d=Se(h,h.timeline.currentTime);if(d===null||h.startTime===null)return null;let y=(d-h.startTime)*h.animation.playbackRate;return y==-0&&(y=0),y}function Gt(h,d,y){if(!h.timeline)return;let b=d?Se(h,h.proxy.currentTime):jo(h);if(b&&h.startTime!=null&&!h.proxy.pending){const C=In(h),k=Wt(h);let z=h.previousCurrentTime;C>0&&b>=k&&h.previousCurrentTime!=null?((z===null||z<k)&&(z=k),h.holdTime=d?b:z):C<0&&b<=0?((z==null||z>0)&&(z=0),h.holdTime=d?b:z):C!=0&&(d&&h.holdTime!==null&&(h.startTime=function(D,N){if(!D.timeline)return null;const F=Se(D,D.timeline.currentTime);return F==null?null:F-N/D.animation.playbackRate}(h,h.holdTime)),h.holdTime=null)}Ht(h),h.previousCurrentTime=Se(h,h.proxy.currentTime),h.proxy.playState=="finished"?(h.finishedPromise||(h.finishedPromise=new On),h.finishedPromise.state=="pending"&&(y?Vo(h):Promise.resolve().then(()=>{Vo(h)}))):(h.finishedPromise&&h.finishedPromise.state=="resolved"&&(h.finishedPromise=new On),h.animation.playState!="paused"&&h.animation.pause())}function Wt(h){const d=function(b){const C=b.proxy.effect.getTiming();return b.normalizedTiming||C}(h),y=d.delay+d.endDelay+d.iterations*d.duration;return Math.max(0,y)}function Ht(h){if(h.timeline)if(h.startTime!==null){const d=h.timeline.currentTime;if(d==null)return;us(h,(Se(h,d)-h.startTime)*h.animation.playbackRate)}else h.holdTime!==null&&us(h,h.holdTime)}function us(h,d){const y=h.timeline,b=h.animation.playbackRate,C=y.currentTime&&y.currentTime.value==(b<0?0:100)?b<0?.001:-.001:0;h.animation.currentTime=d+C}function hs(h,d){if(!h.timeline)return;const y=h.proxy.playState=="paused"&&h.proxy.pending;let b=!1,C=Se(h,h.proxy.currentTime);In(h)==0&&C==null&&(h.holdTime=0),C==null&&(h.autoAlignStartTime=!0),(h.proxy.playState==="finished"||y)&&(h.holdTime=null,h.startTime=null,h.autoAlignStartTime=!0),h.holdTime&&(h.startTime=null),h.pendingTask&&(h.pendingTask=null,b=!0),(h.holdTime!==null||h.autoAlignStartTime||y||h.pendingPlaybackRate!==null)&&(h.readyPromise&&!b&&(h.readyPromise=null),Ht(h),h.readyPromise||Qn(h),h.pendingTask="play",os(h.timeline,h.animation,ds.bind(h.proxy)),Gt(h,!1,!1))}function ds(h){const d=Y.get(this);if(!d)return;if(h==null)return void(d.proxy.playState!=="paused"&&d.animation.playState!="idle"&&d.animation.cancel());nr(d),d.pendingTask&&requestAnimationFrame(()=>{d.pendingTask!=="play"||d.startTime===null&&d.holdTime===null?d.pendingTask==="pause"&&Fo(d):Lo(d)});const y=this.playState;if(y=="running"||y=="finished"){const b=Se(d,h);us(d,(b-Se(d,this.startTime))*this.playbackRate),Gt(d,!1,!1)}}function Jo(h){h.specifiedTiming=null}let Y=new WeakMap;window.addEventListener("pagehide",h=>{Y=new WeakMap},!1);let Go=new WeakMap;function nr(h){if(!h.autoAlignStartTime||!h.timeline||!h.timeline.currentTime||h.proxy.playState==="idle"||h.proxy.playState==="paused"&&h.holdTime!==null)return;const d=h.rangeDuration;let y,b;try{y=CSS.percent(100*function(k){if(!k.animationRange)return 0;const z=k.animationRange.start==="normal"?Wo(k.timeline):k.animationRange.start;return zo(k.timeline,z)}(h))}catch(k){y=CSS.percent(0),h.animationRange.start="normal",console.warn("Exception when calculating start offset",k)}try{b=CSS.percent(100*(1-function(k){if(!k.animationRange)return 0;const z=k.animationRange.end==="normal"?Ho(k.timeline):k.animationRange.end;return 1-zo(k.timeline,z)}(h)))}catch(k){b=CSS.percent(100),h.animationRange.end="normal",console.warn("Exception when calculating end offset",k)}h.rangeDuration=b.value-y.value;const C=In(h);h.startTime=Se(h,C>=0?y:b),h.holdTime=null,h.rangeDuration!==d&&Jo(h)}function ir(h){throw new Error("Unsupported timeline class")}function Wo(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(0)}:h instanceof Ke?CSS.percent(0):void ir()}function Ho(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(100)}:h instanceof Ke?CSS.percent(100):void ir()}function Ol(h,d){if(!d)return{start:"normal",end:"normal"};const y={start:Wo(h),end:Ho(h)};if(h instanceof ViewTimeline){const b=Ee(d),C=[],k=[];if(b.forEach(z=>{if(er.includes(z))C.push(z);else try{k.push(CSSNumericValue.parse(z))}catch{throw TypeError(`Could not parse range "${d}"`)}}),C.length>2||k.length>2||k.length==1)throw TypeError("Invalid time range or unsupported time range format.");return C.length&&(y.start.rangeName=C[0],y.end.rangeName=C.length>1?C[1]:C[0]),k.length>1&&(y.start.offset=k[0],y.end.offset=k[1]),y}if(h instanceof Ke){const b=d.split(" ");if(b.length!=2)throw TypeError("Invalid time range or unsupported time range format.");return y.start=CSSNumericValue.parse(b[0]),y.end=CSSNumericValue.parse(b[1]),y}ir()}function rr(h,d,y){if(!d||d==="normal")return"normal";if(h instanceof ViewTimeline){let b="cover",C=y==="start"?CSS.percent(0):CSS.percent(100);if(d instanceof Object)d.rangeName!==void 0&&(b=d.rangeName),d.offset!==void 0&&(C=d.offset);else{const k=Ee(d);k.length===1?er.includes(k[0])?b=k[0]:C=ve(CSSNumericValue.parse(k[0]),{}):k.length===2&&(b=k[0],C=ve(CSSNumericValue.parse(k[1]),{}))}if(!er.includes(b))throw TypeError("Invalid range name");return{rangeName:b,offset:C}}if(h instanceof Ke)return CSSNumericValue.parse(d);ir()}class sr{constructor(d,y,b={}){const C=y instanceof Ke,k=d instanceof Uo?d:new Uo(d,C?void 0:y);Go.set(k,this),Y.set(this,{animation:k,timeline:C?y:void 0,playState:C?"idle":null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:C?Ol(y,b["animation-range"]):null,proxy:this})}get effect(){const d=Y.get(this);return d.timeline?(d.effect||(d.effect=function(y){const b=y.animation.effect,C=b.updateTiming,k={apply:function(F){b.getTiming();const X=F.apply(b);if(y.timeline){const Z=y.duration??100;X.localTime=pn(y,X.localTime),X.endTime=pn(y,X.endTime),X.activeDuration=pn(y,X.activeDuration);const K=Wt(y),me=X.iterations?(K-X.delay-X.endDelay)/X.iterations:0;X.duration=K?CSS.percent(Z*me/K):CSS.percent(0),y.timeline.currentTime===void 0&&(X.localTime=null)}return X}},z={apply:function(F,X){if(y.specifiedTiming)return y.specifiedTiming;y.specifiedTiming=F.apply(b);let Z,K=Object.assign({},y.specifiedTiming);if(K.duration===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");return(K.duration===null||K.duration==="auto"||y.autoDurationEffect)&&y.timeline&&(y.autoDurationEffect=!0,K.delay=0,K.endDelay=0,Z=K.iterations?1e5:0,K.duration=K.iterations?(Z-K.delay-K.endDelay)/K.iterations:0,K.duration<0&&(K.duration=0,K.endDelay=Z-K.delay),C.apply(b,[K])),y.normalizedTiming=K,y.specifiedTiming}},D={apply:function(F,X,Z){if(Z&&Z.length){if(y.timeline&&Z[0]){const K=Z[0],me=K.duration;if(me===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");if(K.iterations===1/0)throw TypeError("Effect iterations cannot be Infinity when used with Scroll Timelines");me!==void 0&&me!=="auto"&&(y.autoDurationEffect=null)}y.specifiedTiming&&F.apply(b,[y.specifiedTiming]),F.apply(b,Z),Jo(y)}}},N=new Proxy(b,{get:function(F,X){const Z=F[X];return typeof Z=="function"?Z.bind(b):Z},set:function(F,X,Z){return F[X]=Z,!0}});return N.getComputedTiming=new Proxy(b.getComputedTiming,k),N.getTiming=new Proxy(b.getTiming,z),N.updateTiming=new Proxy(b.updateTiming,D),N}(d)),d.effect):d.animation.effect}set effect(d){const y=Y.get(this);y.animation.effect=d,y.effect=null,y.autoDurationEffect=null}get timeline(){const d=Y.get(this);return d.timeline||d.animation.timeline}set timeline(d){const y=Y.get(this),b=this.timeline;if(b==d)return;const C=this.playState,k=this.currentTime;let z,D=Wt(y);z=k===null?null:D===0?0:Se(y,k)/D;const N=b instanceof Ke,F=d instanceof Ke,X=this.pending;if(N&&ss(y.timeline,y.animation),F)return y.timeline=d,Bt(y),y.autoAlignStartTime=!0,y.startTime=null,y.holdTime=null,C!=="running"&&C!=="finished"||(y.readyPromise&&y.readyPromise.state!=="resolved"||Qn(y),y.pendingTask="play",os(y.timeline,y.animation,ds.bind(this))),C==="paused"&&z!==null&&(y.holdTime=z*D),X&&(y.readyPromise&&y.readyPromise.state!="resolved"||Qn(y),y.pendingTask=C=="paused"?"pause":"play"),y.startTime!==null&&(y.holdTime=null),void Gt(y,!1,!1);if(y.animation.timeline!=d)throw TypeError("Unsupported timeline: "+d);if(ss(y.timeline,y.animation),y.timeline=null,N)switch(k!==null&&(y.animation.currentTime=z*Wt(y)),C){case"paused":y.animation.pause();break;case"running":case"finished":y.animation.play()}}get startTime(){const d=Y.get(this);return d.timeline?pn(d,d.startTime):d.animation.startTime}set startTime(d){const y=Y.get(this);if(d=Se(y,d),!y.timeline)return void(y.animation.startTime=d);y.autoAlignStartTime=!1,Se(y,y.timeline.currentTime)==null&&y.startTime!=null&&(y.holdTime=null,Ht(y));const b=Se(y,this.currentTime);Bt(y),y.startTime=d,y.startTime!==null&&y.animation.playbackRate!=0?y.holdTime=null:y.holdTime=b,y.pendingTask&&(y.pendingTask=null,y.readyPromise.resolve(this)),Gt(y,!0,!1),Ht(y)}get currentTime(){const d=Y.get(this);return d.timeline?d.holdTime!=null?pn(d,d.holdTime):pn(d,jo(d)):d.animation.currentTime}set currentTime(d){const y=Y.get(this);y.timeline?(function(b,C){if(C==null&&b.currentTime!==null)throw new TypeError;C=Se(b,C),b.autoAlignStartTime=!1,b.holdTime!==null||b.startTime===null||b.timeline.phase==="inactive"||b.animation.playbackRate===0?b.holdTime=C:b.startTime=Se(b,b.timeline.currentTime)-C/b.animation.playbackRate,b.timeline.phase==="inactive"&&(b.startTime=null),b.previousCurrentTime=null}(y,d),y.pendingTask=="pause"&&(y.holdTime=Se(y,d),Bt(y),y.startTime=null,y.pendingTask=null,y.readyPromise.resolve(this)),Gt(y,!0,!1)):y.animation.currentTime=d}get playbackRate(){return Y.get(this).animation.playbackRate}set playbackRate(d){const y=Y.get(this);if(!y.timeline)return void(y.animation.playbackRate=d);y.pendingPlaybackRate=null;const b=this.currentTime;y.animation.playbackRate=d,b!==null&&(this.currentTime=b)}get playState(){const d=Y.get(this);if(!d.timeline)return d.animation.playState;const y=Se(d,this.currentTime);return y===null&&d.startTime===null&&d.pendingTask==null?"idle":d.pendingTask=="pause"||d.startTime===null&&d.pendingTask!="play"?"paused":y!=null&&(d.animation.playbackRate>0&&y>=Wt(d)||d.animation.playbackRate<0&&y<=0)?"finished":"running"}get rangeStart(){var d;return((d=Y.get(this).animationRange)==null?void 0:d.start)??"normal"}set rangeStart(d){const y=Y.get(this);if(!y.timeline)return y.animation.rangeStart=d;y.timeline instanceof Ke&&(y.animationRange.start=rr(y.timeline,d,"start"),nr(y),Ht(y))}get rangeEnd(){var d;return((d=Y.get(this).animationRange)==null?void 0:d.end)??"normal"}set rangeEnd(d){const y=Y.get(this);if(!y.timeline)return y.animation.rangeEnd=d;y.timeline instanceof Ke&&(y.animationRange.end=rr(y.timeline,d,"end"),nr(y),Ht(y))}get replaceState(){return Y.get(this).animation.pending}get pending(){const d=Y.get(this);return d.timeline?!!d.readyPromise&&d.readyPromise.state=="pending":d.animation.pending}finish(){const d=Y.get(this);if(!d.timeline)return void d.animation.finish();const y=In(d),b=Wt(d);if(y==0)throw new DOMException("Cannot finish Animation with a playbackRate of 0.","InvalidStateError");if(y>0&&b==1/0)throw new DOMException("Cannot finish Animation with an infinite target effect end.","InvalidStateError");Bt(d);const C=y<0?0:b;this.currentTime=pn(d,C);const k=Se(d,d.timeline.currentTime);d.startTime===null&&k!==null&&(d.startTime=k-C/d.animation.playbackRate),d.pendingTask=="pause"&&d.startTime!==null&&(d.holdTime=null,d.pendingTask=null,d.readyPromise.resolve(this)),d.pendingTask=="play"&&d.startTime!==null&&(d.pendingTask=null,d.readyPromise.resolve(this)),Gt(d,!0,!0)}play(){const d=Y.get(this);d.timeline?hs(d):d.animation.play()}pause(){const d=Y.get(this);d.timeline?this.playState!="paused"&&(d.animation.currentTime===null&&(d.autoAlignStartTime=!0),d.pendingTask=="play"?d.pendingTask=null:d.readyPromise=null,d.readyPromise||Qn(d),d.pendingTask="pause",os(d.timeline,d.animation,ds.bind(d.proxy))):d.animation.pause()}reverse(){const d=Y.get(this),y=In(d),b=Se(d,this.currentTime),C=Wt(d)==1/0,k=y!=0&&(y<0||b>0||!C);if(!d.timeline||!k)return k&&(d.pendingPlaybackRate=-In(d)),void d.animation.reverse();if(d.timeline.phase=="inactive")throw new DOMException("Cannot reverse an animation with no active timeline","InvalidStateError");this.updatePlaybackRate(-y),hs(d)}updatePlaybackRate(d){const y=Y.get(this);if(y.pendingPlaybackRate=d,!y.timeline)return void y.animation.updatePlaybackRate(d);const b=this.playState;if(!y.readyPromise||y.readyPromise.state!="pending")switch(b){case"idle":case"paused":Bt(y);break;case"finished":const C=Se(y,y.timeline.currentTime),k=C!==null?(C-y.startTime)*y.animation.playbackRate:null;y.startTime=d==0?C:C!=null&&k!=null?(C-k)/d:null,Bt(y),Gt(y,!1,!1),Ht(y);break;default:hs(y)}}persist(){Y.get(this).animation.persist()}get id(){return Y.get(this).animation.id}set id(d){Y.get(this).animation.id=d}cancel(){const d=Y.get(this);d.timeline?(this.playState!="idle"&&(function(y){y.pendingTask&&(y.pendingTask=null,Bt(y),y.readyPromise.reject(Do()),Qn(y),y.readyPromise.resolve(y.proxy))}(d),d.finishedPromise&&d.finishedPromise.state=="pending"&&d.finishedPromise.reject(Do()),d.finishedPromise=new On,d.animation.cancel()),d.startTime=null,d.holdTime=null,ss(d.timeline,d.animation)):d.animation.cancel()}get onfinish(){return Y.get(this).animation.onfinish}set onfinish(d){Y.get(this).animation.onfinish=d}get oncancel(){return Y.get(this).animation.oncancel}set oncancel(d){Y.get(this).animation.oncancel=d}get onremove(){return Y.get(this).animation.onremove}set onremove(d){Y.get(this).animation.onremove=d}get finished(){const d=Y.get(this);return d.timeline?(d.finishedPromise||(d.finishedPromise=new On),d.finishedPromise.promise):d.animation.finished}get ready(){const d=Y.get(this);return d.timeline?(d.readyPromise||(d.readyPromise=new On,d.readyPromise.resolve(this)),d.readyPromise.promise):d.animation.ready}addEventListener(d,y,b){Y.get(this).animation.addEventListener(d,y,b)}removeEventListener(d,y,b){Y.get(this).animation.removeEventListener(d,y,b)}dispatchEvent(d){Y.get(this).animation.dispatchEvent(d)}}function Il(h,d){const y=d.timeline;y instanceof Ke&&delete d.timeline;const b=Al.apply(this,[h,d]),C=new sr(b,y);return y instanceof Ke&&(b.pause(),Y.get(C).animationRange={start:rr(y,d.rangeStart,"start"),end:rr(y,d.rangeEnd,"end")},C.play()),C}function qo(h){for(let d=0;d<h.length;++d){let y=Go.get(h[d]);y&&(h[d]=y)}return h}function Bl(h){return qo(Rl.apply(this,[h]))}function zl(h){return qo(kl.apply(this,[h]))}const Re={IDENTIFIER:/[\w\\\@_-]+/g,WHITE_SPACE:/\s*/g,TIME:/^[0-9]+(s|ms)/,SCROLL_TIMELINE:/scroll-timeline\s*:([^;}]+)/,SCROLL_TIMELINE_NAME:/scroll-timeline-name\s*:([^;}]+)/,SCROLL_TIMELINE_AXIS:/scroll-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE:/view-timeline\s*:([^;}]+)/,VIEW_TIMELINE_NAME:/view-timeline-name\s*:([^;}]+)/,VIEW_TIMELINE_AXIS:/view-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE_INSET:/view-timeline-inset\s*:([^;}]+)/,ANIMATION_TIMELINE:/animation-timeline\s*:([^;}]+)/,ANIMATION_TIME_RANGE:/animation-range\s*:([^;}]+)/,ANIMATION_NAME:/animation-name\s*:([^;}]+)/,ANIMATION:/animation\s*:([^;}]+)/,ANONYMOUS_SCROLL_TIMELINE:/scroll\(([^)]*)\)/,ANONYMOUS_VIEW_TIMELINE:/view\(([^)]*)\)/},Bn=["block","inline","x","y"],Nl=["nearest","root","self"],tn=new class{constructor(){this.cssRulesWithTimelineName=[],this.nextAnonymousTimelineNameIndex=0,this.anonymousScrollTimelineOptions=new Map,this.anonymousViewTimelineOptions=new Map,this.sourceSelectorToScrollTimeline=[],this.subjectSelectorToViewTimeline=[],this.keyframeNamesSelectors=new Map}transpileStyleSheet(h,d,y){const b={sheetSrc:h,index:0,name:y};for(;b.index<b.sheetSrc.length&&(this.eatWhitespace(b),!(b.index>=b.sheetSrc.length));){if(this.lookAhead("/*",b)){for(;this.lookAhead("/*",b);)this.eatComment(b),this.eatWhitespace(b);continue}const C=this.parseQualifiedRule(b);C&&(d?this.parseKeyframesAndSaveNameMapping(C,b):this.handleScrollTimelineProps(C,b))}return b.sheetSrc}getAnimationTimelineOptions(h,d){for(let y=this.cssRulesWithTimelineName.length-1;y>=0;y--){const b=this.cssRulesWithTimelineName[y];try{if(d.matches(b.selector)&&(!b["animation-name"]||b["animation-name"]==h))return{"animation-timeline":b["animation-timeline"],"animation-range":b["animation-range"]}}catch{}}return null}getAnonymousScrollTimelineOptions(h,d){const y=this.anonymousScrollTimelineOptions.get(h);return y?{anonymousSource:y.source,anonymousTarget:d,source:Io(y.source??"nearest",d),axis:y.axis?y.axis:"block"}:null}getScrollTimelineOptions(h,d){const y=this.getAnonymousScrollTimelineOptions(h,d);if(y)return y;for(let b=this.sourceSelectorToScrollTimeline.length-1;b>=0;b--){const C=this.sourceSelectorToScrollTimeline[b];if(C.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,C.selector);if(k)return{source:k,...C.axis?{axis:C.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(h,d){let y=h;for(;y;){if(y.matches(d))return y;y=y.previousElementSibling||y.parentElement}return null}getAnonymousViewTimelineOptions(h,d){const y=this.anonymousViewTimelineOptions.get(h);return y?{subject:d,axis:y.axis?y.axis:"block",inset:y.inset?y.inset:"auto"}:null}getViewTimelineOptions(h,d){const y=this.getAnonymousViewTimelineOptions(h,d);if(y)return y;for(let b=this.subjectSelectorToViewTimeline.length-1;b>=0;b--){const C=this.subjectSelectorToViewTimeline[b];if(C.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,C.selector);if(k)return{subject:k,axis:C.axis,inset:C.inset}}}return null}handleScrollTimelineProps(h,d){if(h.selector.includes("@keyframes"))return;const y=h.block.contents.includes("animation-name:"),b=h.block.contents.includes("animation-timeline:"),C=h.block.contents.includes("animation:");if(this.saveSourceSelectorToScrollTimeline(h),this.saveSubjectSelectorToViewTimeline(h),!b&&!y&&!C)return;let k=[],z=[],D=!1;b&&(k=this.extractScrollTimelineNames(h.block.contents)),y&&(z=this.extractMatches(h.block.contents,Re.ANIMATION_NAME)),b&&y||(C&&this.extractMatches(h.block.contents,Re.ANIMATION).forEach(N=>{const F=this.extractAnimationName(N);F&&b&&z.push(F),b&&(this.hasDuration(N)||(this.hasAutoDuration(N)&&(h.block.contents=h.block.contents.replace("auto"," ")),h.block.contents=h.block.contents.replace(N," 1s "+N),D=!0))}),D&&this.replacePart(h.block.startIndex,h.block.endIndex,h.block.contents,d)),this.saveRelationInList(h,k,z)}saveSourceSelectorToScrollTimeline(h){const d=h.block.contents.includes("scroll-timeline:"),y=h.block.contents.includes("scroll-timeline-name:"),b=h.block.contents.includes("scroll-timeline-axis:");if(!d&&!y)return;let C=[];if(d){const z=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE);for(const D of z){const N=this.split(D);let F={selector:h.selector,name:""};N.length==1?F.name=N[0]:N.length==2&&(Bn.includes(N[0])?(F.axis=N[0],F.name=N[1]):(F.axis=N[1],F.name=N[0])),C.push(F)}}if(y){const z=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE_NAME);for(let D=0;D<z.length;D++)if(D<C.length)C[D].name=z[D];else{let N={selector:h.selector,name:z[D]};C.push(N)}}let k=[];if(b){const z=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE_AXIS);if(k=z.filter(D=>Bn.includes(D)),k.length!=z.length)throw new Error("Invalid axis")}for(let z=0;z<C.length;z++)k.length&&(C[z].axis=k[z%C.length]);this.sourceSelectorToScrollTimeline.push(...C)}saveSubjectSelectorToViewTimeline(h){const d=h.block.contents.includes("view-timeline:"),y=h.block.contents.includes("view-timeline-name:"),b=h.block.contents.includes("view-timeline-axis:"),C=h.block.contents.includes("view-timeline-inset:");if(!d&&!y)return;let k=[];if(d){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE);for(let F of N){const X=this.split(F);let Z={selector:h.selector,name:"",inset:null};X.length==1?Z.name=X[0]:X.length==2&&(Bn.includes(X[0])?(Z.axis=X[0],Z.name=X[1]):(Z.axis=X[1],Z.name=X[0])),k.push(Z)}}if(y){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_NAME);for(let F=0;F<N.length;F++)if(F<k.length)k[F].name=N[F];else{let X={selector:h.selector,name:N[F],inset:null};k.push(X)}}let z=[],D=[];if(C&&(z=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_INSET)),b){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_AXIS);if(D=N.filter(F=>Bn.includes(F)),D.length!=N.length)throw new Error("Invalid axis")}for(let N=0;N<k.length;N++)z.length&&(k[N].inset=z[N%k.length]),D.length&&(k[N].axis=D[N%k.length]);this.subjectSelectorToViewTimeline.push(...k)}hasDuration(h){return h.split(" ").filter(d=>{return y=d,Re.TIME.exec(y);var y}).length>=1}hasAutoDuration(h){return h.split(" ").filter(d=>d==="auto").length>=1}saveRelationInList(h,d,y){let b=[];h.block.contents.includes("animation-range:")&&(b=this.extractMatches(h.block.contents,Re.ANIMATION_TIME_RANGE));const C=Math.max(d.length,y.length,b.length);for(let k=0;k<C;k++)this.cssRulesWithTimelineName.push({selector:h.selector,"animation-timeline":d[k%d.length],...y.length?{"animation-name":y[k%y.length]}:{},...b.length?{"animation-range":b[k%b.length]}:{}})}extractScrollTimelineNames(h){const d=Re.ANIMATION_TIMELINE.exec(h)[1].trim(),y=[];return d.split(",").map(b=>b.trim()).forEach(b=>{if(function(C){return(C.startsWith("scroll")||C.startsWith("view"))&&C.includes("(")}(b)){const C=this.saveAnonymousTimelineName(b);y.push(C)}else y.push(b)}),y}saveAnonymousTimelineName(h){const d=":t"+this.nextAnonymousTimelineNameIndex++;return h.startsWith("scroll(")?this.anonymousScrollTimelineOptions.set(d,this.parseAnonymousScrollTimeline(h)):this.anonymousViewTimelineOptions.set(d,this.parseAnonymousViewTimeline(h)),d}parseAnonymousScrollTimeline(h){const d=Re.ANONYMOUS_SCROLL_TIMELINE.exec(h);if(!d)return null;const y=d[1],b={};return y.split(" ").forEach(C=>{Bn.includes(C)?b.axis=C:Nl.includes(C)&&(b.source=C)}),b}parseAnonymousViewTimeline(h){const d=Re.ANONYMOUS_VIEW_TIMELINE.exec(h);if(!d)return null;const y=d[1],b={};return y.split(" ").forEach(C=>{Bn.includes(C)?b.axis=C:b.inset=b.inset?`${b.inset} ${C}`:C}),b}extractAnimationName(h){return this.findMatchingEntryInContainer(h,this.keyframeNamesSelectors)}findMatchingEntryInContainer(h,d){const y=h.split(" ").filter(b=>d.has(b));return y?y[0]:null}parseIdentifier(h){Re.IDENTIFIER.lastIndex=h.index;const d=Re.IDENTIFIER.exec(h.sheetSrc);if(!d)throw this.parseError(h,"Expected an identifier");return h.index+=d[0].length,d[0]}parseKeyframesAndSaveNameMapping(h,d){if(h.selector.startsWith("@keyframes")){const y=this.replaceKeyframesAndGetMapping(h,d);h.selector.split(" ").forEach((b,C)=>{C>0&&this.keyframeNamesSelectors.set(b,y)})}}replaceKeyframesAndGetMapping(h,d){function y(N){return er.some(F=>N.startsWith(F))}const b=h.block.contents,C=function(N){let F=0,X=-1,Z=-1;const K=[];for(let me=0;me<N.length;me++)N[me]=="{"?F++:N[me]=="}"&&F--,F==1&&N[me]!="{"&&N[me]!="}"&&X==-1&&(X=me),F==2&&N[me]=="{"&&(Z=me,K.push({start:X,end:Z}),X=Z=-1);return K}(b);if(C.length==0)return new Map;const k=new Map;let z=!1;const D=[];D.push(b.substring(0,C[0].start));for(let N=0;N<C.length;N++){const F=b.substring(C[N].start,C[N].end);let X=[];F.split(",").forEach(Z=>{const K=Z.split(" ").map(_e=>_e.trim()).filter(_e=>_e!="").join(" "),me=k.size;k.set(me,K),X.push(`${me}%`),y(K)&&(z=!0)}),D.push(X.join(",")),N==C.length-1?D.push(b.substring(C[N].end)):D.push(b.substring(C[N].end,C[N+1].start))}return z?(h.block.contents=D.join(""),this.replacePart(h.block.startIndex,h.block.endIndex,h.block.contents,d),k):new Map}parseQualifiedRule(h){const d=h.index,y=this.parseSelector(h).trim();if(y)return{selector:y,block:this.eatBlock(h),startIndex:d,endIndex:h.index}}removeEnclosingDoubleQuotes(h){let d=h[0]=='"'?1:0,y=h[h.length-1]=='"'?h.length-1:h.length;return h.substring(d,y)}assertString(h,d){if(h.sheetSrc.substr(h.index,d.length)!=d)throw this.parseError(h,`Did not find expected sequence ${d}`);h.index+=d.length}replacePart(h,d,y,b){if(b.sheetSrc=b.sheetSrc.slice(0,h)+y+b.sheetSrc.slice(d),b.index>=d){const C=b.index-d;b.index=h+y.length+C}}eatComment(h){this.assertString(h,"/*"),this.eatUntil("*/",h,!0),this.assertString(h,"*/")}eatBlock(h){const d=h.index;this.assertString(h,"{");let y=1;for(;y!=0;)this.lookAhead("/*",h)?this.eatComment(h):(h.sheetSrc[h.index]==="{"?y++:h.sheetSrc[h.index]==="}"&&y--,this.advance(h));const b=h.index;return{startIndex:d,endIndex:b,contents:h.sheetSrc.slice(d,b)}}advance(h){if(h.index++,h.index>h.sheetSrc.length)throw this.parseError(h,"Advanced beyond the end")}parseError(h,d){return Error(`(${h.name?h.name:"<anonymous file>"}): ${d}`)}eatUntil(h,d,y=!1){const b=d.index;for(;!this.lookAhead(h,d);)this.advance(d);return y&&(d.sheetSrc=d.sheetSrc.slice(0,b)+" ".repeat(d.index-b)+d.sheetSrc.slice(d.index)),d.sheetSrc.slice(b,d.index)}parseSelector(h){let d=h.index;if(this.eatUntil("{",h),d===h.index)throw Error("Empty selector");return h.sheetSrc.slice(d,h.index)}eatWhitespace(h){Re.WHITE_SPACE.lastIndex=h.index;const d=Re.WHITE_SPACE.exec(h.sheetSrc);d&&(h.index+=d[0].length)}lookAhead(h,d){return d.sheetSrc.substr(d.index,h.length)==h}peek(h){return h.sheetSrc[h.index]}extractMatches(h,d,y=","){return d.exec(h)[1].trim().split(y).map(b=>b.trim())}split(h){return h.split(" ").map(d=>d.trim()).filter(d=>d!="")}};function Ul(h,d,y,b,C,k){const z=is(d),D=rs(d,y);return No(ls(h,z,D,b,C),k,ls("cover",z,D,b,C),y)}function Dl(h,d,y){const b=tn.getAnimationTimelineOptions(d,y);if(!b)return null;const C=b["animation-timeline"];if(!C)return null;let k=tn.getScrollTimelineOptions(C,y)||tn.getViewTimelineOptions(C,y);return k?(k.subject&&function(z,D){const N=cs(D.subject),F=D.axis||D.axis;function X(K,me){let _e=null;for(const[rt,Et]of K)if(rt==100*me.offset){if(Et=="from")_e=0;else if(Et=="to")_e=100;else{const yt=Et.split(" ");_e=yt.length==1?parseFloat(yt[0]):100*Ul(yt[0],N,D.subject,F,D.inset,CSS.percent(parseFloat(yt[1])))}break}return _e}const Z=tn.keyframeNamesSelectors.get(z.animationName);if(Z&&Z.size){const K=[];z.effect.getKeyframes().forEach(_e=>{const rt=X(Z,_e);rt!==null&&rt>=0&&rt<=100&&(_e.offset=rt/100,K.push(_e))});const me=K.sort((_e,rt)=>_e.offset<rt.offset?-1:_e.affset>rt.offset?1:0);z.effect.setKeyframes(me)}}(h,k),{timeline:k.source?new Ke(k):new An(k),animOptions:b}):null}function Ll(){if(CSS.supports("animation-timeline: --works"))return!0;(function(){function d(b){if(b.innerHTML.trim().length===0||"aphrodite"in b.dataset)return;let C=tn.transpileStyleSheet(b.innerHTML,!0);C=tn.transpileStyleSheet(C,!1),b.innerHTML=C}function y(b){b.type!="text/css"&&b.rel!="stylesheet"||!b.href||new URL(b.href,document.baseURI).origin==location.origin&&fetch(b.getAttribute("href")).then(async C=>{const k=await C.text();let z=tn.transpileStyleSheet(k,!0);if(z=tn.transpileStyleSheet(k,!1),z!=k){const D=new Blob([z],{type:"text/css"}),N=URL.createObjectURL(D);b.setAttribute("href",N)}})}new MutationObserver(b=>{for(const C of b)for(const k of C.addedNodes)k instanceof HTMLStyleElement&&d(k),k instanceof HTMLLinkElement&&y(k)}).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll("style").forEach(b=>d(b)),document.querySelectorAll("link").forEach(b=>y(b))})();const h=CSS.supports;CSS.supports=d=>(d=d.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,"--supported-property:"),h(d)),window.addEventListener("animationstart",d=>{d.target.getAnimations().filter(y=>y.animationName===d.animationName).forEach(y=>{const b=Dl(y,y.animationName,d.target);if(b)if(!b.timeline||y instanceof sr)y.timeline=b.timeline;else{const C=new sr(y,b.timeline,b.animOptions);y.pause(),C.play()}})})}(function(){if(!Ll()){if(!Reflect.defineProperty(window,"ScrollTimeline",{value:Ke}))throw Error("Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window");if(!Reflect.defineProperty(window,"ViewTimeline",{value:An}))throw Error("Error installing ViewTimeline polyfill: could not attach ViewTimeline to window");if(!Reflect.defineProperty(Element.prototype,"animate",{value:Il}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element");if(!Reflect.defineProperty(window,"Animation",{value:sr}))throw Error("Error installing Animation constructor.");if(!Reflect.defineProperty(Element.prototype,"getAnimations",{value:Bl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element");if(!Reflect.defineProperty(document,"getAnimations",{value:zl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document")}})()})();class xd{constructor(e,t){if(this._retries=0,!Number.isInteger(e)||e<0)throw new Error("Base must be a positive integer or zero");if(t!==void 0&&(!Number.isInteger(t)||t<0))throw new Error("ExpMax must be a undefined, a positive integer or zero");this.base=e,this.expMax=t,this.i=0}get retries(){return this._retries}get current(){return this.base*Math.pow(2,this.i)}next(){return this._retries++,this.i=this.expMax===void 0?this.i+1:Math.min(this.i+1,this.expMax),this.current}reset(){this._retries=0,this.i=0}}var ce;(function(r){r.open="open",r.close="close",r.error="error",r.message="message",r.retry="retry",r.reconnect="reconnect"})(ce||(ce={}));class Hc{constructor(e,t,n){var i,s,a,o,c,l,u,p,m,f,x,_,g,v,w;this._closedByUser=!1,this.handleOpenEvent=S=>this.handleEvent(ce.open,S),this.handleErrorEvent=S=>this.handleEvent(ce.error,S),this.handleCloseEvent=S=>this.handleEvent(ce.close,S),this.handleMessageEvent=S=>this.handleEvent(ce.message,S),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:(i=n?.retry)===null||i===void 0?void 0:i.maxRetries,instantReconnect:(s=n?.retry)===null||s===void 0?void 0:s.instantReconnect,backoff:(a=n?.retry)===null||a===void 0?void 0:a.backoff},listeners:{open:[...(c=(o=n?.listeners)===null||o===void 0?void 0:o.open)!==null&&c!==void 0?c:[]],close:[...(u=(l=n?.listeners)===null||l===void 0?void 0:l.close)!==null&&u!==void 0?u:[]],error:[...(m=(p=n?.listeners)===null||p===void 0?void 0:p.error)!==null&&m!==void 0?m:[]],message:[...(x=(f=n?.listeners)===null||f===void 0?void 0:f.message)!==null&&x!==void 0?x:[]],retry:[...(g=(_=n?.listeners)===null||_===void 0?void 0:_.retry)!==null&&g!==void 0?g:[]],reconnect:[...(w=(v=n?.listeners)===null||v===void 0?void 0:v.reconnect)!==null&&w!==void 0?w:[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){const i=s=>s.listener!==t||s.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(i)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){const n=this._options.listeners[e],i=[];n.forEach(({listener:s,options:a})=>{s(this,t),(a===void 0||a.once===void 0||!a.once)&&i.push({listener:s,options:a})}),this._options.listeners[e]=i}handleEvent(e,t){switch(e){case ce.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case ce.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){const n={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},i=new CustomEvent(ce.reconnect,{detail:n});this.dispatchEvent(ce.reconnect,i),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case ce.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;const e=n=>{const i=new CustomEvent(ce.retry,{detail:n});this.handleEvent(ce.retry,i)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}}class wd{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{maxRetries:e})}),this}get maxRetries(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.maxRetries}withInstantReconnect(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{instantReconnect:e})}),this}get instantReconnect(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.instantReconnect}withBackoff(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{backoff:e})}),this}get backoff(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){var e;return(e=this._options)===null||e===void 0?void 0:e.buffer}onOpen(e,t){return this.addListener(ce.open,e,t),this}onClose(e,t){return this.addListener(ce.close,e,t),this}onError(e,t){return this.addListener(ce.error,e,t),this}onMessage(e,t){return this.addListener(ce.message,e,t),this}onRetry(e,t){return this.addListener(ce.retry,e,t),this}onReconnect(e,t){return this.addListener(ce.reconnect,e,t),this}build(){return new Hc(this._url,this._protocols,this._options)}addListener(e,t,n){var i,s,a,o,c,l,u,p,m,f,x,_,g,v,w,S,T,M,E,P,O;return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:(a=(s=(i=this._options)===null||i===void 0?void 0:i.listeners)===null||s===void 0?void 0:s.open)!==null&&a!==void 0?a:[],close:(l=(c=(o=this._options)===null||o===void 0?void 0:o.listeners)===null||c===void 0?void 0:c.close)!==null&&l!==void 0?l:[],error:(m=(p=(u=this._options)===null||u===void 0?void 0:u.listeners)===null||p===void 0?void 0:p.error)!==null&&m!==void 0?m:[],message:(_=(x=(f=this._options)===null||f===void 0?void 0:f.listeners)===null||x===void 0?void 0:x.message)!==null&&_!==void 0?_:[],retry:(w=(v=(g=this._options)===null||g===void 0?void 0:g.listeners)===null||v===void 0?void 0:v.retry)!==null&&w!==void 0?w:[],reconnect:(M=(T=(S=this._options)===null||S===void 0?void 0:S.listeners)===null||T===void 0?void 0:T.reconnect)!==null&&M!==void 0?M:[],[e]:[...(O=(P=(E=this._options)===null||E===void 0?void 0:E.listeners)===null||P===void 0?void 0:P[e])!==null&&O!==void 0?O:[],{listener:t,options:n}]}}),this}}const _d=Object.freeze(Object.defineProperty({__proto__:null,ExponentialBackoff:xd,Websocket:Hc,WebsocketBuilder:wd,get WebsocketEvent(){return ce}},Symbol.toStringTag,{value:"Module"})),Qs=0,qc=1,Xc=2,$s=2,eo=1.25,Yc=1,tt=32,Ie=tt/4,Zc=65535,Td=Math.pow(2,-24),to=Symbol("SKIP_GENERATION");function Md(r){return r.index?r.index.count:r.attributes.position.count}function vn(r){return Md(r)/3}function Cd(r,e=ArrayBuffer){return r>65535?new Uint32Array(new e(4*r)):new Uint16Array(new e(2*r))}function Ed(r,e){if(!r.index){const t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Cd(t,n);r.setIndex(new ut(i,1));for(let s=0;s<t;s++)i[s]=s}}function Kc(r,e){const t=vn(r),n=e||r.drawRange,i=n.start/3,s=(n.start+n.count)/3,a=Math.max(0,i),o=Math.min(t,s)-a;return[{offset:Math.floor(a),count:Math.floor(o)}]}function Qc(r,e){if(!r.groups||!r.groups.length)return Kc(r,e);const t=[],n=e||r.drawRange,i=n.start/3,s=(n.start+n.count)/3,a=vn(r),o=[];for(const u of r.groups){const{start:p,count:m}=u,f=p/3,x=isFinite(m)?m:a*3-p,_=(p+x)/3;f<s&&_>i&&(o.push({pos:Math.max(i,f),isStart:!0}),o.push({pos:Math.min(s,_),isStart:!1}))}o.sort((u,p)=>u.pos!==p.pos?u.pos-p.pos:u.type==="end"?-1:1);let c=0,l=null;for(const u of o){const p=u.pos;c!==0&&p!==l&&t.push({offset:l,count:p-l}),c+=u.isStart?1:-1,l=p}return t}function no(r,e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,u=-1/0,p=1/0,m=1/0,f=1/0,x=-1/0,_=-1/0,g=-1/0;const v=r.offset||0;for(let w=(e-v)*6,S=(e+t-v)*6;w<S;w+=6){const T=r[w+0],M=r[w+1],E=T-M,P=T+M;E<s&&(s=E),P>c&&(c=P),T<p&&(p=T),T>x&&(x=T);const O=r[w+2],A=r[w+3],R=O-A,I=O+A;R<a&&(a=R),I>l&&(l=I),O<m&&(m=O),O>_&&(_=O);const B=r[w+4],U=r[w+5],L=B-U,j=B+U;L<o&&(o=L),j>u&&(u=j),B<f&&(f=B),B>g&&(g=B)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=u,i[0]=p,i[1]=m,i[2]=f,i[3]=x,i[4]=_,i[5]=g}function $c(r,e,t=null,n=null,i=null){const s=r.attributes.position,a=r.index?r.index.array:null,o=s.normalized;if(i===null)i=new Float32Array(t*6),i.offset=e;else if(e<0||t+e>i.length/6)throw new Error("MeshBVH: compute triangle bounds range is invalid.");const c=s.array,l=s.offset||0;let u=3;s.isInterleavedBufferAttribute&&(u=s.data.stride);const p=["getX","getY","getZ"],m=i.offset;for(let f=e,x=e+t;f<x;f++){const _=(n?n[f]:f)*3,g=(f-m)*6;let v=_+0,w=_+1,S=_+2;a&&(v=a[v],w=a[w],S=a[S]),o||(v=v*u+l,w=w*u+l,S=S*u+l);for(let T=0;T<3;T++){let M,E,P;o?(M=s[p[T]](v),E=s[p[T]](w),P=s[p[T]](S)):(M=c[v+T],E=c[w+T],P=c[S+T]);let O=M;E<O&&(O=E),P<O&&(O=P);let A=M;E>A&&(A=E),P>A&&(A=P);const R=(A-O)/2,I=T*2;i[g+I+0]=O+R,i[g+I+1]=R+(Math.abs(O)+R)*Td}}return i}function be(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function el(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){const i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function tl(r,e){e.set(r)}function nl(r,e,t){let n,i;for(let s=0;s<3;s++){const a=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[a],i=e[a],t[a]=n>i?n:i}}function Rr(r,e,t){for(let n=0;n<3;n++){const i=e[r+2*n],s=e[r+2*n+1],a=i-s,o=i+s;a<t[n]&&(t[n]=a),o>t[n+3]&&(t[n+3]=o)}}function di(r){const e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}const Kt=32,Pd=(r,e)=>r.candidate-e.candidate,an=new Array(Kt).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ar=new Float32Array(6);function kd(r,e,t,n,i,s){let a=-1,o=0;if(s===Qs)a=el(e),a!==-1&&(o=(e[a]+e[a+3])/2);else if(s===qc)a=el(r),a!==-1&&(o=Rd(t,n,i,a));else if(s===Xc){const c=di(r);let l=eo*i;const u=t.offset||0,p=(n-u)*6,m=(n+i-u)*6;for(let f=0;f<3;f++){const x=e[f],_=(e[f+3]-x)/Kt;if(i<Kt/4){const g=[...an];g.length=i;let v=0;for(let S=p;S<m;S+=6,v++){const T=g[v];T.candidate=t[S+2*f],T.count=0;const{bounds:M,leftCacheBounds:E,rightCacheBounds:P}=T;for(let O=0;O<3;O++)P[O]=1/0,P[O+3]=-1/0,E[O]=1/0,E[O+3]=-1/0,M[O]=1/0,M[O+3]=-1/0;Rr(S,t,M)}g.sort(Pd);let w=i;for(let S=0;S<w;S++){const T=g[S];for(;S+1<w&&g[S+1].candidate===T.candidate;)g.splice(S+1,1),w--}for(let S=p;S<m;S+=6){const T=t[S+2*f];for(let M=0;M<w;M++){const E=g[M];T>=E.candidate?Rr(S,t,E.rightCacheBounds):(Rr(S,t,E.leftCacheBounds),E.count++)}}for(let S=0;S<w;S++){const T=g[S],M=T.count,E=i-T.count,P=T.leftCacheBounds,O=T.rightCacheBounds;let A=0;M!==0&&(A=di(P)/c);let R=0;E!==0&&(R=di(O)/c);const I=Yc+eo*(A*M+R*E);I<l&&(a=f,l=I,o=T.candidate)}}else{for(let w=0;w<Kt;w++){const S=an[w];S.count=0,S.candidate=x+_+w*_;const T=S.bounds;for(let M=0;M<3;M++)T[M]=1/0,T[M+3]=-1/0}for(let w=p;w<m;w+=6){let S=~~((t[w+2*f]-x)/_);S>=Kt&&(S=Kt-1);const T=an[S];T.count++,Rr(w,t,T.bounds)}const g=an[Kt-1];tl(g.bounds,g.rightCacheBounds);for(let w=Kt-2;w>=0;w--){const S=an[w],T=an[w+1];nl(S.bounds,T.rightCacheBounds,S.rightCacheBounds)}let v=0;for(let w=0;w<Kt-1;w++){const S=an[w],T=S.count,M=S.bounds,E=an[w+1].rightCacheBounds;T!==0&&(v===0?tl(M,Ar):nl(M,Ar,Ar)),v+=T;let P=0,O=0;v!==0&&(P=di(Ar)/c);const A=i-v;A!==0&&(O=di(E)/c);const R=Yc+eo*(P*v+O*A);R<l&&(a=f,l=R,o=S.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function Rd(r,e,t,n){let i=0;const s=r.offset;for(let a=e,o=e+t;a<o;a++)i+=r[(a-s)*6+n*2];return i/t}class io{constructor(){this.boundingData=new Float32Array(6)}}function Ad(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2,u=t.offset||0;for(;;){for(;a<=o&&t[(a-u)*6+l]<c;)a++;for(;a<=o&&t[(o-u)*6+l]>=c;)o--;if(a<o){for(let p=0;p<3;p++){let m=e[a*3+p];e[a*3+p]=e[o*3+p],e[o*3+p]=m}for(let p=0;p<6;p++){const m=a-u,f=o-u,x=t[m*6+p];t[m*6+p]=t[f*6+p],t[f*6+p]=x}a++,o--}else return a}}function Od(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2,u=t.offset||0;for(;;){for(;a<=o&&t[(a-u)*6+l]<c;)a++;for(;a<=o&&t[(o-u)*6+l]>=c;)o--;if(a<o){let p=r[a];r[a]=r[o],r[o]=p;for(let m=0;m<6;m++){const f=a-u,x=o-u,_=t[f*6+m];t[f*6+m]=t[x*6+m],t[x*6+m]=_}a++,o--}else return a}}let il,Or,ro,rl;const Id=Math.pow(2,32);function so(r){return"count"in r?1:1+so(r.left)+so(r.right)}function Bd(r,e,t){return il=new Float32Array(t),Or=new Uint32Array(t),ro=new Uint16Array(t),rl=new Uint8Array(t),oo(r,e)}function oo(r,e){const t=r/4,n=r/2,i="count"in e,s=e.boundingData;for(let a=0;a<6;a++)il[t+a]=s[a];if(i)return e.buffer?(rl.set(new Uint8Array(e.buffer),r),r+e.buffer.byteLength):(Or[t+6]=e.offset,ro[n+14]=e.count,ro[n+15]=Zc,r+tt);{const{left:a,right:o,splitAxis:c}=e,l=r+tt;let u=oo(l,a);const p=r/tt,m=u/tt-p;if(m>Id)throw new Error("MeshBVH: Cannot store relative child node offset greater than 32 bits.");return Or[t+6]=m,Or[t+7]=c,oo(u,o)}}function zd(r,e,t){const n=(r.index?r.index.count:r.attributes.position.count)/3>65536,i=t.reduce((l,u)=>l+u.count,0),s=n?4:2,a=e?new SharedArrayBuffer(i*s):new ArrayBuffer(i*s),o=n?new Uint32Array(a):new Uint16Array(a);let c=0;for(let l=0;l<t.length;l++){const{offset:u,count:p}=t[l];for(let m=0;m<p;m++)o[c+m]=u+m;c+=p}return o}function Nd(r,e,t,n,i){const{maxDepth:s,verbose:a,maxLeafTris:o,strategy:c,onProgress:l,indirect:u}=i,p=r._indirectBuffer,m=r.geometry,f=m.index?m.index.array:null,x=u?Od:Ad,_=vn(m),g=new Float32Array(6);let v=!1;const w=new io;return no(e,t,n,w.boundingData,g),T(w,t,n,g),w;function S(M){l&&l(M/_)}function T(M,E,P,O=null,A=0){if(!v&&A>=s&&(v=!0,a&&(console.warn(`MeshBVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`),console.warn(m))),P<=o||A>=s)return S(E+P),M.offset=E,M.count=P,M;const R=kd(M.boundingData,O,e,E,P,c);if(R.axis===-1)return S(E+P),M.offset=E,M.count=P,M;const I=x(p,f,e,E,P,R);if(I===E||I===E+P)S(E+P),M.offset=E,M.count=P;else{M.splitAxis=R.axis;const B=new io,U=E,L=I-E;M.left=B,no(e,U,L,B.boundingData,g),T(B,U,L,g,A+1);const j=new io,W=I,ee=P-L;M.right=j,no(e,W,ee,j.boundingData,g),T(j,W,ee,g,A+1)}return M}}function Ud(r,e){const t=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,n=r.geometry;let i,s;if(e.indirect){const a=Qc(n,e.range),o=zd(n,e.useSharedArrayBuffer,a);r._indirectBuffer=o,i=$c(n,0,o.length,o),s=[{offset:0,count:o.length}]}else{Ed(n,e);const a=Kc(n,e.range)[0];i=$c(n,a.offset,a.count),s=Qc(n,e.range)}r._roots=s.map(a=>{const o=Nd(r,i,a.offset,a.count,e),c=so(o),l=new t(tt*c);return Bd(0,o,l),l})}class Qt{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,a=e.length;s<a;s++){const o=e[s][t];n=o<n?o:n,i=o>i?o:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,a=t.length;s<a;s++){const o=t[s],c=e.dot(o);n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}}Qt.prototype.setFromBox=function(){const r=new q;return function(e,t){const n=t.min,i=t.max;let s=1/0,a=-1/0;for(let o=0;o<=1;o++)for(let c=0;c<=1;c++)for(let l=0;l<=1;l++){r.x=n.x*o+i.x*(1-o),r.y=n.y*c+i.y*(1-c),r.z=n.z*l+i.z*(1-l);const u=e.dot(r);s=Math.min(u,s),a=Math.max(u,a)}this.min=s,this.max=a}}();const Dd=function(){const r=new q,e=new q,t=new q;return function(n,i,s){const a=n.start,o=r,c=i.start,l=e;t.subVectors(a,c),r.subVectors(n.end,n.start),e.subVectors(i.end,i.start);const u=t.dot(l),p=l.dot(o),m=l.dot(l),f=t.dot(o),x=o.dot(o)*m-p*p;let _,g;x!==0?_=(u*p-f*m)/x:_=0,g=(u+_*p)/m,s.x=_,s.y=g}}(),ao=function(){const r=new nn,e=new q,t=new q;return function(n,i,s,a){Dd(n,i,r);let o=r.x,c=r.y;if(o>=0&&o<=1&&c>=0&&c<=1){n.at(o,s),i.at(c,a);return}else if(o>=0&&o<=1){c<0?i.at(0,a):i.at(1,a),n.closestPointToPoint(a,!0,s);return}else if(c>=0&&c<=1){o<0?n.at(0,s):n.at(1,s),i.closestPointToPoint(s,!0,a);return}else{let l;o<0?l=n.start:l=n.end;let u;c<0?u=i.start:u=i.end;const p=e,m=t;if(n.closestPointToPoint(u,!0,e),i.closestPointToPoint(l,!0,t),p.distanceToSquared(u)<=m.distanceToSquared(l)){s.copy(p),a.copy(u);return}else{s.copy(l),a.copy(m);return}}}}(),Ld=function(){const r=new q,e=new q,t=new ta,n=new qt;return function(i,s){const{radius:a,center:o}=i,{a:c,b:l,c:u}=s;if(n.start=c,n.end=l,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a||(n.start=c,n.end=u,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a)||(n.start=l,n.end=u,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a))return!0;const p=s.getPlane(t);if(Math.abs(p.distanceToPoint(o))<=a){const m=p.projectPoint(o,e);if(s.containsPoint(m))return!0}return!1}}(),Fd=["x","y","z"],$t=1e-15,sl=$t*$t;function gt(r){return Math.abs(r)<$t}class vt extends mn{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new q),this.satBounds=new Array(4).fill().map(()=>new Qt),this.points=[this.a,this.b,this.c],this.plane=new ta,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new qt,this.needsUpdate=!0}intersectsSphere(e){return Ld(e,this)}update(){const e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);const l=s[1],u=a[1];l.subVectors(e,t),u.setFromPoints(l,i);const p=s[2],m=a[2];p.subVectors(t,n),m.setFromPoints(p,i);const f=s[3],x=a[3];f.subVectors(n,e),x.setFromPoints(f,i);const _=l.length(),g=p.length(),v=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,_<$t?g<$t||v<$t?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(e),this.degenerateSegment.end.copy(n)):g<$t?v<$t?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(t),this.degenerateSegment.end.copy(e)):v<$t&&(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(n),this.degenerateSegment.end.copy(t)),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}vt.prototype.closestPointToSegment=function(){const r=new q,e=new q,t=new qt;return function(n,i=null,s=null){const{start:a,end:o}=n,c=this.points;let l,u=1/0;for(let p=0;p<3;p++){const m=(p+1)%3;t.start.copy(c[p]),t.end.copy(c[m]),ao(t,n,r,e),l=r.distanceToSquared(e),l<u&&(u=l,i&&i.copy(r),s&&s.copy(e))}return this.closestPointToPoint(a,r),l=a.distanceToSquared(r),l<u&&(u=l,i&&i.copy(r),s&&s.copy(a)),this.closestPointToPoint(o,r),l=o.distanceToSquared(r),l<u&&(u=l,i&&i.copy(r),s&&s.copy(o)),Math.sqrt(u)}}(),vt.prototype.intersectsTriangle=function(){const r=new vt,e=new Qt,t=new Qt,n=new q,i=new q,s=new q,a=new q,o=new qt,c=new qt,l=new q,u=new nn,p=new nn;function m(S,T,M,E){const P=n;!S.isDegenerateIntoPoint&&!S.isDegenerateIntoSegment?P.copy(S.plane.normal):P.copy(T.plane.normal);const O=S.satBounds,A=S.satAxes;for(let B=1;B<4;B++){const U=O[B],L=A[B];if(e.setFromPoints(L,T.points),U.isSeparated(e)||(a.copy(P).cross(L),e.setFromPoints(a,S.points),t.setFromPoints(a,T.points),e.isSeparated(t)))return!1}const R=T.satBounds,I=T.satAxes;for(let B=1;B<4;B++){const U=R[B],L=I[B];if(e.setFromPoints(L,S.points),U.isSeparated(e)||(a.crossVectors(P,L),e.setFromPoints(a,S.points),t.setFromPoints(a,T.points),e.isSeparated(t)))return!1}return M&&(E||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),M.start.set(0,0,0),M.end.set(0,0,0)),!0}function f(S,T,M,E,P,O,A,R,I,B,U){let L=A/(A-R);B.x=E+(P-E)*L,U.start.subVectors(T,S).multiplyScalar(L).add(S),L=A/(A-I),B.y=E+(O-E)*L,U.end.subVectors(M,S).multiplyScalar(L).add(S)}function x(S,T,M,E,P,O,A,R,I,B,U){if(P>0)f(S.c,S.a,S.b,E,T,M,I,A,R,B,U);else if(O>0)f(S.b,S.a,S.c,M,T,E,R,A,I,B,U);else if(R*I>0||A!=0)f(S.a,S.b,S.c,T,M,E,A,R,I,B,U);else if(R!=0)f(S.b,S.a,S.c,M,T,E,R,A,I,B,U);else if(I!=0)f(S.c,S.a,S.b,E,T,M,I,A,R,B,U);else return!0;return!1}function _(S,T,M,E){const P=T.degenerateSegment,O=S.plane.distanceToPoint(P.start),A=S.plane.distanceToPoint(P.end);return gt(O)?gt(A)?m(S,T,M,E):(M&&(M.start.copy(P.start),M.end.copy(P.start)),S.containsPoint(P.start)):gt(A)?(M&&(M.start.copy(P.end),M.end.copy(P.end)),S.containsPoint(P.end)):S.plane.intersectLine(P,n)!=null?(M&&(M.start.copy(n),M.end.copy(n)),S.containsPoint(n)):!1}function g(S,T,M){const E=T.a;return gt(S.plane.distanceToPoint(E))&&S.containsPoint(E)?(M&&(M.start.copy(E),M.end.copy(E)),!0):!1}function v(S,T,M){const E=S.degenerateSegment,P=T.a;return E.closestPointToPoint(P,!0,n),P.distanceToSquared(n)<sl?(M&&(M.start.copy(P),M.end.copy(P)),!0):!1}function w(S,T,M,E){if(S.isDegenerateIntoSegment)if(T.isDegenerateIntoSegment){const P=S.degenerateSegment,O=T.degenerateSegment,A=i,R=s;P.delta(A),O.delta(R);const I=n.subVectors(O.start,P.start),B=A.x*R.y-A.y*R.x;if(gt(B))return!1;const U=(I.x*R.y-I.y*R.x)/B,L=-(A.x*I.y-A.y*I.x)/B;if(U<0||U>1||L<0||L>1)return!1;const j=P.start.z+A.z*U,W=O.start.z+R.z*L;return gt(j-W)?(M&&(M.start.copy(P.start).addScaledVector(A,U),M.end.copy(P.start).addScaledVector(A,U)),!0):!1}else return T.isDegenerateIntoPoint?v(S,T,M):_(T,S,M,E);else{if(S.isDegenerateIntoPoint)return T.isDegenerateIntoPoint?T.a.distanceToSquared(S.a)<sl?(M&&(M.start.copy(S.a),M.end.copy(S.a)),!0):!1:T.isDegenerateIntoSegment?v(T,S,M):g(T,S,M);if(T.isDegenerateIntoPoint)return g(S,T,M);if(T.isDegenerateIntoSegment)return _(S,T,M,E)}}return function(S,T=null,M=!1){this.needsUpdate&&this.update(),S.isExtendedTriangle?S.needsUpdate&&S.update():(r.copy(S),r.update(),S=r);const E=w(this,S,T,M);if(E!==void 0)return E;const P=this.plane,O=S.plane;let A=O.distanceToPoint(this.a),R=O.distanceToPoint(this.b),I=O.distanceToPoint(this.c);gt(A)&&(A=0),gt(R)&&(R=0),gt(I)&&(I=0);const B=A*R,U=A*I;if(B>0&&U>0)return!1;let L=P.distanceToPoint(S.a),j=P.distanceToPoint(S.b),W=P.distanceToPoint(S.c);gt(L)&&(L=0),gt(j)&&(j=0),gt(W)&&(W=0);const ee=L*j,H=L*W;if(ee>0&&H>0)return!1;i.copy(P.normal),s.copy(O.normal);const pe=i.cross(s);let ie=0,he=Math.abs(pe.x);const oe=Math.abs(pe.y);oe>he&&(he=oe,ie=1),Math.abs(pe.z)>he&&(ie=2);const le=Fd[ie],xe=this.a[le],ge=this.b[le],de=this.c[le],se=S.a[le],Xe=S.b[le],ze=S.c[le];if(x(this,xe,ge,de,B,U,A,R,I,u,o))return m(this,S,T,M);if(x(S,se,Xe,ze,ee,H,L,j,W,p,c))return m(this,S,T,M);if(u.y<u.x){const Ee=u.y;u.y=u.x,u.x=Ee,l.copy(o.start),o.start.copy(o.end),o.end.copy(l)}if(p.y<p.x){const Ee=p.y;p.y=p.x,p.x=Ee,l.copy(c.start),c.start.copy(c.end),c.end.copy(l)}return u.y<p.x||p.y<u.x?!1:(T&&(p.x>u.x?T.start.copy(c.start):T.start.copy(o.start),p.y<u.y?T.end.copy(c.end):T.end.copy(o.end)),!0)}}(),vt.prototype.distanceToPoint=function(){const r=new q;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}(),vt.prototype.distanceToTriangle=function(){const r=new q,e=new q,t=["a","b","c"],n=new qt,i=new qt;return function(s,a=null,o=null){const c=a||o?n:null;if(this.intersectsTriangle(s,c))return(a||o)&&(a&&c.getCenter(a),o&&c.getCenter(o)),0;let l=1/0;for(let u=0;u<3;u++){let p;const m=t[u],f=s[m];this.closestPointToPoint(f,r),p=f.distanceToSquared(r),p<l&&(l=p,a&&a.copy(r),o&&o.copy(f));const x=this[m];s.closestPointToPoint(x,r),p=x.distanceToSquared(r),p<l&&(l=p,a&&a.copy(x),o&&o.copy(r))}for(let u=0;u<3;u++){const p=t[u],m=t[(u+1)%3];n.set(this[p],this[m]);for(let f=0;f<3;f++){const x=t[f],_=t[(f+1)%3];i.set(s[x],s[_]),ao(n,i,r,e);const g=r.distanceToSquared(e);g<l&&(l=g,a&&a.copy(r),o&&o.copy(e))}}return Math.sqrt(l)}}();class qe{constructor(e,t,n){this.isOrientedBox=!0,this.min=new q,this.max=new q,this.matrix=new kt,this.invMatrix=new kt,this.points=new Array(8).fill().map(()=>new q),this.satAxes=new Array(3).fill().map(()=>new q),this.satBounds=new Array(3).fill().map(()=>new Qt),this.alignedSatBounds=new Array(3).fill().map(()=>new Qt),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}qe.prototype.update=function(){return function(){const r=this.matrix,e=this.min,t=this.max,n=this.points;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){const p=1*c|2*l|4*u,m=n[p];m.x=c?t.x:e.x,m.y=l?t.y:e.y,m.z=u?t.z:e.z,m.applyMatrix4(r)}const i=this.satBounds,s=this.satAxes,a=n[0];for(let c=0;c<3;c++){const l=s[c],u=i[c],p=1<<c,m=n[p];l.subVectors(a,m),u.setFromPoints(l,n)}const o=this.alignedSatBounds;o[0].setFromPointsField(n,"x"),o[1].setFromPointsField(n,"y"),o[2].setFromPointsField(n,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}(),qe.prototype.intersectsBox=function(){const r=new Qt;return function(e){this.needsUpdate&&this.update();const t=e.min,n=e.max,i=this.satBounds,s=this.satAxes,a=this.alignedSatBounds;if(r.min=t.x,r.max=n.x,a[0].isSeparated(r)||(r.min=t.y,r.max=n.y,a[1].isSeparated(r))||(r.min=t.z,r.max=n.z,a[2].isSeparated(r)))return!1;for(let o=0;o<3;o++){const c=s[o],l=i[o];if(r.setFromBox(c,e),l.isSeparated(r))return!1}return!0}}(),qe.prototype.intersectsTriangle=function(){const r=new vt,e=new Array(3),t=new Qt,n=new Qt,i=new q;return function(s){this.needsUpdate&&this.update(),s.isExtendedTriangle?s.needsUpdate&&s.update():(r.copy(s),r.update(),s=r);const a=this.satBounds,o=this.satAxes;e[0]=s.a,e[1]=s.b,e[2]=s.c;for(let p=0;p<3;p++){const m=a[p],f=o[p];if(t.setFromPoints(f,e),m.isSeparated(t))return!1}const c=s.satBounds,l=s.satAxes,u=this.points;for(let p=0;p<3;p++){const m=c[p],f=l[p];if(t.setFromPoints(f,u),m.isSeparated(t))return!1}for(let p=0;p<3;p++){const m=o[p];for(let f=0;f<4;f++){const x=l[f];if(i.crossVectors(m,x),t.setFromPoints(i,e),n.setFromPoints(i,u),t.isSeparated(n))return!1}}return!0}}(),qe.prototype.closestPointToPoint=function(){return function(r,e){return this.needsUpdate&&this.update(),e.copy(r).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}(),qe.prototype.distanceToPoint=function(){const r=new q;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}(),qe.prototype.distanceToBox=function(){const r=["x","y","z"],e=new Array(12).fill().map(()=>new qt),t=new Array(12).fill().map(()=>new qt),n=new q,i=new q;return function(s,a=0,o=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(o||c)&&(s.getCenter(i),this.closestPointToPoint(i,n),s.closestPointToPoint(n,i),o&&o.copy(n),c&&c.copy(i)),0;const l=a*a,u=s.min,p=s.max,m=this.points;let f=1/0;for(let _=0;_<8;_++){const g=m[_];i.copy(g).clamp(u,p);const v=g.distanceToSquared(i);if(v<f&&(f=v,o&&o.copy(g),c&&c.copy(i),v<l))return Math.sqrt(v)}let x=0;for(let _=0;_<3;_++)for(let g=0;g<=1;g++)for(let v=0;v<=1;v++){const w=(_+1)%3,S=(_+2)%3,T=g<<w|v<<S,M=1<<_|g<<w|v<<S,E=m[T],P=m[M];e[x].set(E,P);const O=r[_],A=r[w],R=r[S],I=t[x],B=I.start,U=I.end;B[O]=u[O],B[A]=g?u[A]:p[A],B[R]=v?u[R]:p[A],U[O]=p[O],U[A]=g?u[A]:p[A],U[R]=v?u[R]:p[A],x++}for(let _=0;_<=1;_++)for(let g=0;g<=1;g++)for(let v=0;v<=1;v++){i.x=_?p.x:u.x,i.y=g?p.y:u.y,i.z=v?p.z:u.z,this.closestPointToPoint(i,n);const w=i.distanceToSquared(n);if(w<f&&(f=w,o&&o.copy(n),c&&c.copy(i),w<l))return Math.sqrt(w)}for(let _=0;_<12;_++){const g=e[_];for(let v=0;v<12;v++){const w=t[v];ao(g,w,n,i);const S=n.distanceToSquared(i);if(S<f&&(f=S,o&&o.copy(n),c&&c.copy(i),S<l))return Math.sqrt(S)}}return Math.sqrt(f)}}();class co{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){const e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}}class Vd extends co{constructor(){super(()=>new vt)}}const St=new Vd;function Be(r,e){return e[r+15]===Zc}function dt(r,e){return e[r+6]}function bt(r,e){return e[r+14]}function Ve(r){return r+Ie}function je(r,e){const t=e[r+6];return r+t*Ie}function lo(r,e){return e[r+7]}class jd{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const ye=new jd;let cn,Ln;const Fn=[],Ir=new co(()=>new zt);function Jd(r,e,t,n,i,s){cn=Ir.getPrimitive(),Ln=Ir.getPrimitive(),Fn.push(cn,Ln),ye.setBuffer(r._roots[e]);const a=uo(0,r.geometry,t,n,i,s);ye.clearBuffer(),Ir.releasePrimitive(cn),Ir.releasePrimitive(Ln),Fn.pop(),Fn.pop();const o=Fn.length;return o>0&&(Ln=Fn[o-1],cn=Fn[o-2]),a}function uo(r,e,t,n,i=null,s=0,a=0){const{float32Array:o,uint16Array:c,uint32Array:l}=ye;let u=r*2;if(Be(u,c)){const p=dt(r,l),m=bt(u,c);return be(r,o,cn),n(p,m,!1,a,s+r/Ie,cn)}else{let p=function(I){const{uint16Array:B,uint32Array:U}=ye;let L=I*2;for(;!Be(L,B);)I=Ve(I),L=I*2;return dt(I,U)},m=function(I){const{uint16Array:B,uint32Array:U}=ye;let L=I*2;for(;!Be(L,B);)I=je(I,U),L=I*2;return dt(I,U)+bt(L,B)};const f=Ve(r),x=je(r,l);let _=f,g=x,v,w,S,T;if(i&&(S=cn,T=Ln,be(_,o,S),be(g,o,T),v=i(S),w=i(T),w<v)){_=x,g=f;const I=v;v=w,w=I,S=T}S||(S=cn,be(_,o,S));const M=Be(_*2,c),E=t(S,M,v,a+1,s+_/Ie);let P;if(E===$s){const I=p(_),B=m(_)-I;P=n(I,B,!0,a+1,s+_/Ie,S)}else P=E&&uo(_,e,t,n,i,s,a+1);if(P)return!0;T=Ln,be(g,o,T);const O=Be(g*2,c),A=t(T,O,w,a+1,s+g/Ie);let R;if(A===$s){const I=p(g),B=m(g)-I;R=n(I,B,!0,a+1,s+g/Ie,T)}else R=A&&uo(g,e,t,n,i,s,a+1);return!!R}}const pi=new q,ho=new q;function Gd(r,e,t={},n=0,i=1/0){const s=n*n,a=i*i;let o=1/0,c=null;if(r.shapecast({boundsTraverseOrder:u=>(pi.copy(e).clamp(u.min,u.max),pi.distanceToSquared(e)),intersectsBounds:(u,p,m)=>m<o&&m<a,intersectsTriangle:(u,p)=>{u.closestPointToPoint(e,pi);const m=e.distanceToSquared(pi);return m<o&&(ho.copy(pi),o=m,c=p),m<s}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(ho):t.point=ho.clone(),t.distance=l,t.faceIndex=c,t}const Br=parseInt(na)>=169,Wd=parseInt(na)<=161,Sn=new q,bn=new q,xn=new q,zr=new nn,Nr=new nn,Ur=new nn,ol=new q,al=new q,cl=new q,fi=new q;function Hd(r,e,t,n,i,s,a,o){let c;if(s===ql?c=r.intersectTriangle(n,t,e,!0,i):c=r.intersectTriangle(e,t,n,s!==fs,i),c===null)return null;const l=r.origin.distanceTo(i);return l<a||l>o?null:{distance:l,point:i.clone()}}function ll(r,e,t,n,i,s,a,o,c,l,u){Sn.fromBufferAttribute(e,s),bn.fromBufferAttribute(e,a),xn.fromBufferAttribute(e,o);const p=Hd(r,Sn,bn,xn,fi,c,l,u);if(p){if(n){zr.fromBufferAttribute(n,s),Nr.fromBufferAttribute(n,a),Ur.fromBufferAttribute(n,o),p.uv=new nn;const f=mn.getInterpolation(fi,Sn,bn,xn,zr,Nr,Ur,p.uv);Br||(p.uv=f)}if(i){zr.fromBufferAttribute(i,s),Nr.fromBufferAttribute(i,a),Ur.fromBufferAttribute(i,o),p.uv1=new nn;const f=mn.getInterpolation(fi,Sn,bn,xn,zr,Nr,Ur,p.uv1);Br||(p.uv1=f),Wd&&(p.uv2=p.uv1)}if(t){ol.fromBufferAttribute(t,s),al.fromBufferAttribute(t,a),cl.fromBufferAttribute(t,o),p.normal=new q;const f=mn.getInterpolation(fi,Sn,bn,xn,ol,al,cl,p.normal);p.normal.dot(r.direction)>0&&p.normal.multiplyScalar(-1),Br||(p.normal=f)}const m={a:s,b:a,c:o,normal:new q,materialIndex:0};if(mn.getNormal(Sn,bn,xn,m.normal),p.face=m,p.faceIndex=s,Br){const f=new q;mn.getBarycoord(fi,Sn,bn,xn,f),p.barycoord=f}}return p}function ul(r){return r&&r.isMaterial?r.side:r}function Dr(r,e,t,n,i,s,a){const o=n*3;let c=o+0,l=o+1,u=o+2;const{index:p,groups:m}=r;r.index&&(c=p.getX(c),l=p.getX(l),u=p.getX(u));const{position:f,normal:x,uv:_,uv1:g}=r.attributes;if(Array.isArray(e)){const v=n*3;for(let w=0,S=m.length;w<S;w++){const{start:T,count:M,materialIndex:E}=m[w];if(v>=T&&v<T+M){const P=ul(e[E]),O=ll(t,f,x,_,g,c,l,u,P,s,a);if(O)if(O.faceIndex=n,O.face.materialIndex=E,i)i.push(O);else return O}}}else{const v=ul(e),w=ll(t,f,x,_,g,c,l,u,v,s,a);if(w)if(w.faceIndex=n,w.face.materialIndex=0,i)i.push(w);else return w}return null}function Ce(r,e,t,n){const i=r.a,s=r.b,a=r.c;let o=e,c=e+1,l=e+2;t&&(o=t.getX(o),c=t.getX(c),l=t.getX(l)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l)}function qd(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,p=n+i;u<p;u++)Dr(c,e,t,u,s,a,o)}function Xd(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let p=n,m=n+i;p<m;p++){let f;f=Dr(o,e,t,p,null,s,a),f&&f.distance<l&&(u=f,l=f.distance)}return u}function Yd(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,p=e+r;u<p;u++){let m;if(m=u,Ce(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function Zd(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const u=r._roots;for(let m=0,f=u.length;m<f;m++)s=u[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),p(0,l),l+=s.byteLength;function p(m,f,x=!1){const _=m*2;if(Be(_,o)){const g=a[m+6],v=o[_+14];let w=1/0,S=1/0,T=1/0,M=-1/0,E=-1/0,P=-1/0;for(let O=3*g,A=3*(g+v);O<A;O++){let R=n[O];const I=i.getX(R),B=i.getY(R),U=i.getZ(R);I<w&&(w=I),I>M&&(M=I),B<S&&(S=B),B>E&&(E=B),U<T&&(T=U),U>P&&(P=U)}return c[m+0]!==w||c[m+1]!==S||c[m+2]!==T||c[m+3]!==M||c[m+4]!==E||c[m+5]!==P?(c[m+0]=w,c[m+1]=S,c[m+2]=T,c[m+3]=M,c[m+4]=E,c[m+5]=P,!0):!1}else{const g=Ve(m),v=je(m,a);let w=x,S=!1,T=!1;if(e){if(!w){const R=g/Ie+f/tt,I=v/Ie+f/tt;S=e.has(R),T=e.has(I),w=!S&&!T}}else S=!0,T=!0;const M=w||S,E=w||T;let P=!1;M&&(P=p(g,f,w));let O=!1;E&&(O=p(v,f,w));const A=P||O;if(A)for(let R=0;R<3;R++){const I=g+R,B=v+R,U=c[I],L=c[I+3],j=c[B],W=c[B+3];c[m+R]=U<j?U:j,c[m+R+3]=L>W?L:W}return A}}}function ln(r,e,t,n,i){let s,a,o,c,l,u;const p=1/t.direction.x,m=1/t.direction.y,f=1/t.direction.z,x=t.origin.x,_=t.origin.y,g=t.origin.z;let v=e[r],w=e[r+3],S=e[r+1],T=e[r+3+1],M=e[r+2],E=e[r+3+2];return p>=0?(s=(v-x)*p,a=(w-x)*p):(s=(w-x)*p,a=(v-x)*p),m>=0?(o=(S-_)*m,c=(T-_)*m):(o=(T-_)*m,c=(S-_)*m),s>c||o>a||((o>s||isNaN(s))&&(s=o),(c<a||isNaN(a))&&(a=c),f>=0?(l=(M-g)*f,u=(E-g)*f):(l=(E-g)*f,u=(M-g)*f),s>u||l>a)?!1:((l>s||s!==s)&&(s=l),(u<a||a!==a)&&(a=u),s<=i&&a>=n)}function Kd(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,p=n+i;u<p;u++){let m=l?l[u]:u;Dr(c,e,t,m,s,a,o)}}function Qd(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let p=n,m=n+i;p<m;p++){let f;f=Dr(o,e,t,c?c[p]:p,null,s,a),f&&f.distance<l&&(u=f,l=f.distance)}return u}function $d(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,p=e+r;u<p;u++){let m;if(m=t.resolveTriangleIndex(u),Ce(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function ep(r,e,t,n,i,s,a){ye.setBuffer(r._roots[e]),po(0,r,t,n,i,s,a),ye.clearBuffer()}function po(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=ye,u=r*2;if(Be(u,c)){const p=dt(r,l),m=bt(u,c);qd(e,t,n,p,m,i,s,a)}else{const p=Ve(r);ln(p,o,n,s,a)&&po(p,e,t,n,i,s,a);const m=je(r,l);ln(m,o,n,s,a)&&po(m,e,t,n,i,s,a)}}const tp=["x","y","z"];function np(r,e,t,n,i,s){ye.setBuffer(r._roots[e]);const a=fo(0,r,t,n,i,s);return ye.clearBuffer(),a}function fo(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=ye;let l=r*2;if(Be(l,o)){const u=dt(r,c),p=bt(l,o);return Xd(e,t,n,u,p,i,s)}else{const u=lo(r,c),p=tp[u],m=n.direction[p]>=0;let f,x;m?(f=Ve(r),x=je(r,c)):(f=je(r,c),x=Ve(r));const _=ln(f,a,n,i,s)?fo(f,e,t,n,i,s):null;if(_){const v=_.point[p];if(m?v<=a[x+u]:v>=a[x+u+3])return _}const g=ln(x,a,n,i,s)?fo(x,e,t,n,i,s):null;return _&&g?_.distance<=g.distance?_:g:_||g||null}}const Lr=new zt,Vn=new vt,jn=new vt,mi=new kt,hl=new qe,Fr=new qe;function ip(r,e,t,n){ye.setBuffer(r._roots[e]);const i=mo(0,r,t,n);return ye.clearBuffer(),i}function mo(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=ye;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),hl.set(t.boundingBox.min,t.boundingBox.max,n),i=hl),Be(c,a)){const l=e.geometry,u=l.index,p=l.attributes.position,m=t.index,f=t.attributes.position,x=dt(r,o),_=bt(c,a);if(mi.copy(n).invert(),t.boundsTree)return be(r,s,Fr),Fr.matrix.copy(mi),Fr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:g=>Fr.intersectsBox(g),intersectsTriangle:g=>{g.a.applyMatrix4(n),g.b.applyMatrix4(n),g.c.applyMatrix4(n),g.needsUpdate=!0;for(let v=x*3,w=(_+x)*3;v<w;v+=3)if(Ce(jn,v,u,p),jn.needsUpdate=!0,g.intersectsTriangle(jn))return!0;return!1}});{const g=vn(t);for(let v=x*3,w=(_+x)*3;v<w;v+=3){Ce(Vn,v,u,p),Vn.a.applyMatrix4(mi),Vn.b.applyMatrix4(mi),Vn.c.applyMatrix4(mi),Vn.needsUpdate=!0;for(let S=0,T=g*3;S<T;S+=3)if(Ce(jn,S,m,f),jn.needsUpdate=!0,Vn.intersectsTriangle(jn))return!0}}}else{const l=Ve(r),u=je(r,o);return be(l,s,Lr),!!(i.intersectsBox(Lr)&&mo(l,e,t,n,i)||(be(u,s,Lr),i.intersectsBox(Lr)&&mo(u,e,t,n,i)))}}const Vr=new kt,yo=new qe,yi=new qe,rp=new q,sp=new q,op=new q,ap=new q;function cp(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),yo.set(e.boundingBox.min,e.boundingBox.max,t),yo.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,p=e.index,m=St.getPrimitive(),f=St.getPrimitive();let x=rp,_=sp,g=null,v=null;i&&(g=op,v=ap);let w=1/0,S=null,T=null;return Vr.copy(t).invert(),yi.matrix.copy(Vr),r.shapecast({boundsTraverseOrder:M=>yo.distanceToBox(M),intersectsBounds:(M,E,P)=>P<w&&P<a?(E&&(yi.min.copy(M.min),yi.max.copy(M.max),yi.needsUpdate=!0),!0):!1,intersectsRange:(M,E)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:P=>yi.distanceToBox(P),intersectsBounds:(P,O,A)=>A<w&&A<a,intersectsRange:(P,O)=>{for(let A=P,R=P+O;A<R;A++){Ce(f,3*A,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let I=M,B=M+E;I<B;I++){Ce(m,3*I,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(f,x,g);if(U<w&&(_.copy(x),v&&v.copy(g),w=U,S=I,T=A),U<s)return!0}}}});{const P=vn(e);for(let O=0,A=P;O<A;O++){Ce(f,3*O,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let R=M,I=M+E;R<I;R++){Ce(m,3*R,l,c),m.needsUpdate=!0;const B=m.distanceToTriangle(f,x,g);if(B<w&&(_.copy(x),v&&v.copy(g),w=B,S=R,T=O),B<s)return!0}}}}}),St.releasePrimitive(m),St.releasePrimitive(f),w===1/0?null:(n.point?n.point.copy(_):n.point=_.clone(),n.distance=w,n.faceIndex=S,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(Vr),_.applyMatrix4(Vr),i.distance=_.sub(i.point).length(),i.faceIndex=T),n)}function lp(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const u=r._roots;for(let m=0,f=u.length;m<f;m++)s=u[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),p(0,l),l+=s.byteLength;function p(m,f,x=!1){const _=m*2;if(Be(_,o)){const g=a[m+6],v=o[_+14];let w=1/0,S=1/0,T=1/0,M=-1/0,E=-1/0,P=-1/0;for(let O=g,A=g+v;O<A;O++){const R=3*r.resolveTriangleIndex(O);for(let I=0;I<3;I++){let B=R+I;B=n?n[B]:B;const U=i.getX(B),L=i.getY(B),j=i.getZ(B);U<w&&(w=U),U>M&&(M=U),L<S&&(S=L),L>E&&(E=L),j<T&&(T=j),j>P&&(P=j)}}return c[m+0]!==w||c[m+1]!==S||c[m+2]!==T||c[m+3]!==M||c[m+4]!==E||c[m+5]!==P?(c[m+0]=w,c[m+1]=S,c[m+2]=T,c[m+3]=M,c[m+4]=E,c[m+5]=P,!0):!1}else{const g=Ve(m),v=je(m,a);let w=x,S=!1,T=!1;if(e){if(!w){const R=g/Ie+f/tt,I=v/Ie+f/tt;S=e.has(R),T=e.has(I),w=!S&&!T}}else S=!0,T=!0;const M=w||S,E=w||T;let P=!1;M&&(P=p(g,f,w));let O=!1;E&&(O=p(v,f,w));const A=P||O;if(A)for(let R=0;R<3;R++){const I=g+R,B=v+R,U=c[I],L=c[I+3],j=c[B],W=c[B+3];c[m+R]=U<j?U:j,c[m+R+3]=L>W?L:W}return A}}}function up(r,e,t,n,i,s,a){ye.setBuffer(r._roots[e]),go(0,r,t,n,i,s,a),ye.clearBuffer()}function go(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=ye,u=r*2;if(Be(u,c)){const p=dt(r,l),m=bt(u,c);Kd(e,t,n,p,m,i,s,a)}else{const p=Ve(r);ln(p,o,n,s,a)&&go(p,e,t,n,i,s,a);const m=je(r,l);ln(m,o,n,s,a)&&go(m,e,t,n,i,s,a)}}const hp=["x","y","z"];function dp(r,e,t,n,i,s){ye.setBuffer(r._roots[e]);const a=vo(0,r,t,n,i,s);return ye.clearBuffer(),a}function vo(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=ye;let l=r*2;if(Be(l,o)){const u=dt(r,c),p=bt(l,o);return Qd(e,t,n,u,p,i,s)}else{const u=lo(r,c),p=hp[u],m=n.direction[p]>=0;let f,x;m?(f=Ve(r),x=je(r,c)):(f=je(r,c),x=Ve(r));const _=ln(f,a,n,i,s)?vo(f,e,t,n,i,s):null;if(_){const v=_.point[p];if(m?v<=a[x+u]:v>=a[x+u+3])return _}const g=ln(x,a,n,i,s)?vo(x,e,t,n,i,s):null;return _&&g?_.distance<=g.distance?_:g:_||g||null}}const jr=new zt,Jn=new vt,Gn=new vt,gi=new kt,dl=new qe,Jr=new qe;function pp(r,e,t,n){ye.setBuffer(r._roots[e]);const i=So(0,r,t,n);return ye.clearBuffer(),i}function So(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=ye;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),dl.set(t.boundingBox.min,t.boundingBox.max,n),i=dl),Be(c,a)){const l=e.geometry,u=l.index,p=l.attributes.position,m=t.index,f=t.attributes.position,x=dt(r,o),_=bt(c,a);if(gi.copy(n).invert(),t.boundsTree)return be(r,s,Jr),Jr.matrix.copy(gi),Jr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:g=>Jr.intersectsBox(g),intersectsTriangle:g=>{g.a.applyMatrix4(n),g.b.applyMatrix4(n),g.c.applyMatrix4(n),g.needsUpdate=!0;for(let v=x,w=_+x;v<w;v++)if(Ce(Gn,3*e.resolveTriangleIndex(v),u,p),Gn.needsUpdate=!0,g.intersectsTriangle(Gn))return!0;return!1}});{const g=vn(t);for(let v=x,w=_+x;v<w;v++){const S=e.resolveTriangleIndex(v);Ce(Jn,3*S,u,p),Jn.a.applyMatrix4(gi),Jn.b.applyMatrix4(gi),Jn.c.applyMatrix4(gi),Jn.needsUpdate=!0;for(let T=0,M=g*3;T<M;T+=3)if(Ce(Gn,T,m,f),Gn.needsUpdate=!0,Jn.intersectsTriangle(Gn))return!0}}}else{const l=Ve(r),u=je(r,o);return be(l,s,jr),!!(i.intersectsBox(jr)&&So(l,e,t,n,i)||(be(u,s,jr),i.intersectsBox(jr)&&So(u,e,t,n,i)))}}const Gr=new kt,bo=new qe,vi=new qe,fp=new q,mp=new q,yp=new q,gp=new q;function vp(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),bo.set(e.boundingBox.min,e.boundingBox.max,t),bo.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,p=e.index,m=St.getPrimitive(),f=St.getPrimitive();let x=fp,_=mp,g=null,v=null;i&&(g=yp,v=gp);let w=1/0,S=null,T=null;return Gr.copy(t).invert(),vi.matrix.copy(Gr),r.shapecast({boundsTraverseOrder:M=>bo.distanceToBox(M),intersectsBounds:(M,E,P)=>P<w&&P<a?(E&&(vi.min.copy(M.min),vi.max.copy(M.max),vi.needsUpdate=!0),!0):!1,intersectsRange:(M,E)=>{if(e.boundsTree){const P=e.boundsTree;return P.shapecast({boundsTraverseOrder:O=>vi.distanceToBox(O),intersectsBounds:(O,A,R)=>R<w&&R<a,intersectsRange:(O,A)=>{for(let R=O,I=O+A;R<I;R++){const B=P.resolveTriangleIndex(R);Ce(f,3*B,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let U=M,L=M+E;U<L;U++){const j=r.resolveTriangleIndex(U);Ce(m,3*j,l,c),m.needsUpdate=!0;const W=m.distanceToTriangle(f,x,g);if(W<w&&(_.copy(x),v&&v.copy(g),w=W,S=U,T=R),W<s)return!0}}}})}else{const P=vn(e);for(let O=0,A=P;O<A;O++){Ce(f,3*O,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let R=M,I=M+E;R<I;R++){const B=r.resolveTriangleIndex(R);Ce(m,3*B,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(f,x,g);if(U<w&&(_.copy(x),v&&v.copy(g),w=U,S=R,T=O),U<s)return!0}}}}}),St.releasePrimitive(m),St.releasePrimitive(f),w===1/0?null:(n.point?n.point.copy(_):n.point=_.clone(),n.distance=w,n.faceIndex=S,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(Gr),_.applyMatrix4(Gr),i.distance=_.sub(i.point).length(),i.faceIndex=T),n)}function Sp(){return typeof SharedArrayBuffer<"u"}const Si=new ye.constructor,Wr=new ye.constructor,un=new co(()=>new zt),Wn=new zt,Hn=new zt,xo=new zt,wo=new zt;let _o=!1;function bp(r,e,t,n){if(_o)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");_o=!0;const i=r._roots,s=e._roots;let a,o=0,c=0;const l=new kt().copy(t).invert();for(let u=0,p=i.length;u<p;u++){Si.setBuffer(i[u]),c=0;const m=un.getPrimitive();be(0,Si.float32Array,m),m.applyMatrix4(l);for(let f=0,x=s.length;f<x&&(Wr.setBuffer(s[f]),a=Ot(0,0,t,l,n,o,c,0,0,m),Wr.clearBuffer(),c+=s[f].byteLength/tt,!a);f++);if(un.releasePrimitive(m),Si.clearBuffer(),o+=i[u].byteLength/tt,a)break}return _o=!1,a}function Ot(r,e,t,n,i,s=0,a=0,o=0,c=0,l=null,u=!1){let p,m;u?(p=Wr,m=Si):(p=Si,m=Wr);const f=p.float32Array,x=p.uint32Array,_=p.uint16Array,g=m.float32Array,v=m.uint32Array,w=m.uint16Array,S=r*2,T=e*2,M=Be(S,_),E=Be(T,w);let P=!1;if(E&&M)u?P=i(dt(e,v),bt(e*2,w),dt(r,x),bt(r*2,_),c,a+e/Ie,o,s+r/Ie):P=i(dt(r,x),bt(r*2,_),dt(e,v),bt(e*2,w),o,s+r/Ie,c,a+e/Ie);else if(E){const O=un.getPrimitive();be(e,g,O),O.applyMatrix4(t);const A=Ve(r),R=je(r,x);be(A,f,Wn),be(R,f,Hn);const I=O.intersectsBox(Wn),B=O.intersectsBox(Hn);P=I&&Ot(e,A,n,t,i,a,s,c,o+1,O,!u)||B&&Ot(e,R,n,t,i,a,s,c,o+1,O,!u),un.releasePrimitive(O)}else{const O=Ve(e),A=je(e,v);be(O,g,xo),be(A,g,wo);const R=l.intersectsBox(xo),I=l.intersectsBox(wo);if(R&&I)P=Ot(r,O,t,n,i,s,a,o,c+1,l,u)||Ot(r,A,t,n,i,s,a,o,c+1,l,u);else if(R)if(M)P=Ot(r,O,t,n,i,s,a,o,c+1,l,u);else{const B=un.getPrimitive();B.copy(xo).applyMatrix4(t);const U=Ve(r),L=je(r,x);be(U,f,Wn),be(L,f,Hn);const j=B.intersectsBox(Wn),W=B.intersectsBox(Hn);P=j&&Ot(O,U,n,t,i,a,s,c,o+1,B,!u)||W&&Ot(O,L,n,t,i,a,s,c,o+1,B,!u),un.releasePrimitive(B)}else if(I)if(M)P=Ot(r,A,t,n,i,s,a,o,c+1,l,u);else{const B=un.getPrimitive();B.copy(wo).applyMatrix4(t);const U=Ve(r),L=je(r,x);be(U,f,Wn),be(L,f,Hn);const j=B.intersectsBox(Wn),W=B.intersectsBox(Hn);P=j&&Ot(A,U,n,t,i,a,s,c,o+1,B,!u)||W&&Ot(A,L,n,t,i,a,s,c,o+1,B,!u),un.releasePrimitive(B)}}return P}const Hr=new qe,pl=new zt,xp={strategy:Qs,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null};class _i{static serialize(e,t={}){t={cloneBuffers:!0,...t};const n=e.geometry,i=e._roots,s=e._indirectBuffer,a=n.getIndex(),o={version:1,roots:null,index:null,indirectBuffer:null};return t.cloneBuffers?(o.roots=i.map(c=>c.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=s?s.slice():null):(o.roots=i,o.index=a?a.array:null,o.indirectBuffer=s),o}static deserialize(e,t,n={}){n={setIndex:!0,indirect:!!e.indirectBuffer,...n};const{index:i,roots:s,indirectBuffer:a}=e;e.version||(console.warn("MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data."),c(s));const o=new _i(t,{...n,[to]:!0});if(o._roots=s,o._indirectBuffer=a||null,n.setIndex){const l=t.getIndex();if(l===null){const u=new ut(e.index,1,!1);t.setIndex(u)}else l.array!==i&&(l.array.set(i),l.needsUpdate=!0)}return o;function c(l){for(let u=0;u<l.length;u++){const p=l[u],m=new Uint32Array(p),f=new Uint16Array(p);for(let x=0,_=p.byteLength/tt;x<_;x++){const g=Ie*x,v=2*g;Be(v,f)||(m[g+6]=m[g+6]/Ie-x)}}}}get indirect(){return!!this._indirectBuffer}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({...xp,[to]:!1},t),t.useSharedArrayBuffer&&!Sp())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=e,this._roots=null,this._indirectBuffer=null,t[to]||(Ud(this,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new zt))),this.resolveTriangleIndex=t.indirect?n=>this._indirectBuffer[n]:n=>n}shiftTriangleOffsets(e){const t=this._indirectBuffer;if(t)for(let n=0,i=t.length;n<i;n++)t[n]+=e;else{const n=this._roots;for(let i=0;i<n.length;i++){const s=n[i],a=new Uint32Array(s),o=new Uint16Array(s),c=s.byteLength/tt;for(let l=0;l<c;l++){const u=Ie*l,p=2*u;Be(p,o)&&(a[u+6]+=e)}}}}refit(e=null){return(this.indirect?lp:Zd)(this,e)}traverse(e,t=0){const n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){const l=o*2,u=Be(l,s);if(u){const p=i[o+6],m=s[l+14];e(c,u,new Float32Array(n,o*4,6),p,m)}else{const p=Ve(o),m=je(o,i),f=lo(o,i);e(c,u,new Float32Array(n,o*4,6),f)||(a(p,c+1),a(m,c+1))}}}raycast(e,t=ia,n=0,i=1/0){const s=this._roots,a=[],o=this.indirect?up:ep;for(let c=0,l=s.length;c<l;c++)o(this,c,t,e,a,n,i);return a}raycastFirst(e,t=ia,n=0,i=1/0){const s=this._roots;let a=null;const o=this.indirect?dp:np;for(let c=0,l=s.length;c<l;c++){const u=o(this,c,t,e,n,i);u!=null&&(a==null||u.distance<a.distance)&&(a=u)}return a}intersectsGeometry(e,t){let n=!1;const i=this._roots,s=this.indirect?pp:ip;for(let a=0,o=i.length;a<o&&(n=s(this,a,e,t),!n);a++);return n}shapecast(e){const t=St.getPrimitive(),n=this.indirect?$d:Yd;let{boundsTraverseOrder:i,intersectsBounds:s,intersectsRange:a,intersectsTriangle:o}=e;if(a&&o){const p=a;a=(m,f,x,_,g)=>p(m,f,x,_,g)?!0:n(m,f,this,o,x,_,t)}else a||(o?a=(p,m,f,x)=>n(p,m,this,o,f,x,t):a=(p,m,f)=>f);let c=!1,l=0;const u=this._roots;for(let p=0,m=u.length;p<m;p++){const f=u[p];if(c=Jd(this,p,s,a,i,l),c)break;l+=f.byteLength/tt}return St.releasePrimitive(t),c}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n;const a=St.getPrimitive(),o=this.geometry.index,c=this.geometry.attributes.position,l=this.indirect?x=>{const _=this.resolveTriangleIndex(x);Ce(a,_*3,o,c)}:x=>{Ce(a,x*3,o,c)},u=St.getPrimitive(),p=e.geometry.index,m=e.geometry.attributes.position,f=e.indirect?x=>{const _=e.resolveTriangleIndex(x);Ce(u,_*3,p,m)}:x=>{Ce(u,x*3,p,m)};if(s){const x=(_,g,v,w,S,T,M,E)=>{for(let P=v,O=v+w;P<O;P++){f(P),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let A=_,R=_+g;A<R;A++)if(l(A),a.needsUpdate=!0,s(a,u,A,P,S,T,M,E))return!0}return!1};if(i){const _=i;i=function(g,v,w,S,T,M,E,P){return _(g,v,w,S,T,M,E,P)?!0:x(g,v,w,S,T,M,E,P)}}else i=x}return bp(this,e,t,i)}intersectsBox(e,t){return Hr.set(e.min,e.max,t),Hr.needsUpdate=!0,this.shapecast({intersectsBounds:n=>Hr.intersectsBox(n),intersectsTriangle:n=>Hr.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,a=1/0){return(this.indirect?vp:cp)(this,e,t,n,i,s,a)}closestPointToPoint(e,t={},n=0,i=1/0){return Gd(this,e,t,n,i)}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{be(0,new Float32Array(t),pl),e.union(pl)}),e}}function fl(r,e,t){return r===null?null:(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r)}const qr=new Zl,ml=new q,yl=new kt,wp=ys.prototype.raycast,_p=Yl.prototype.raycast,gl=new q,Je=new ys,Xr=[];function Tp(r,e){this.isBatchedMesh?Mp.call(this,r,e):Cp.call(this,r,e)}function Mp(r,e){if(this.boundsTrees){const t=this.boundsTrees,n=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,s=this.matrixWorld;Je.material=this.material,Je.geometry=this.geometry;const a=Je.geometry.boundsTree,o=Je.geometry.drawRange;Je.geometry.boundingSphere===null&&(Je.geometry.boundingSphere=new Xl);for(let c=0,l=n.length;c<l;c++){if(!this.getVisibleAt(c))continue;const u=n[c].geometryIndex;if(Je.geometry.boundsTree=t[u],this.getMatrixAt(c,Je.matrixWorld).premultiply(s),!Je.geometry.boundsTree){this.getBoundingBoxAt(u,Je.geometry.boundingBox),this.getBoundingSphereAt(u,Je.geometry.boundingSphere);const p=i[u];Je.geometry.setDrawRange(p.start,p.count)}Je.raycast(r,Xr);for(let p=0,m=Xr.length;p<m;p++){const f=Xr[p];f.object=this,f.batchId=c,e.push(f)}Xr.length=0}Je.geometry.boundsTree=a,Je.geometry.drawRange=o,Je.material=null,Je.geometry=null}else _p.call(this,r,e)}function Cp(r,e){if(this.geometry.boundsTree){if(this.material===void 0)return;yl.copy(this.matrixWorld).invert(),qr.copy(r.ray).applyMatrix4(yl),gl.setFromMatrixScale(this.matrixWorld),ml.copy(qr.direction).multiply(gl);const t=ml.length(),n=r.near/t,i=r.far/t,s=this.geometry.boundsTree;if(r.firstHitOnly===!0){const a=fl(s.raycastFirst(qr,this.material,n,i),this,r);a&&e.push(a)}else{const a=s.raycast(qr,this.material,n,i);for(let o=0,c=a.length;o<c;o++){const l=fl(a[o],this,r);l&&e.push(l)}}}else wp.call(this,r,e)}function Ep(r={}){return this.boundsTree=new _i(this,r),this.boundsTree}const wn=new q,_n=new q,Tn=new q,vl=new gs,Yr=new q,To=new q,Sl=new gs,bl=new gs,Zr=new kt,xl=new kt;function bi(r,e){if(!r&&!e)return;const t=r.count===e.count,n=r.normalized===e.normalized,i=r.array.constructor===e.array.constructor,s=r.itemSize===e.itemSize;if(!t||!n||!i||!s)throw new Error}function xi(r,e=null){const t=r.array.constructor,n=r.normalized,i=r.itemSize,s=e===null?r.count:e;return new ut(new t(i*s),i,n)}function wl(r,e,t=0){if(r.isInterleavedBufferAttribute){const n=r.itemSize;for(let i=0,s=r.count;i<s;i++){const a=i+t;e.setX(a,r.getX(i)),n>=2&&e.setY(a,r.getY(i)),n>=3&&e.setZ(a,r.getZ(i)),n>=4&&e.setW(a,r.getW(i))}}else{const n=e.array,i=n.constructor,s=n.BYTES_PER_ELEMENT*r.itemSize*t;new i(n.buffer,s,r.array.length).set(r.array)}}function Pp(r,e,t){const n=r.elements,i=e.elements;for(let s=0,a=i.length;s<a;s++)n[s]+=i[s]*t}function _l(r,e,t){const n=r.skeleton,i=r.geometry,s=n.bones,a=n.boneInverses;Sl.fromBufferAttribute(i.attributes.skinIndex,e),bl.fromBufferAttribute(i.attributes.skinWeight,e),Zr.elements.fill(0);for(let o=0;o<4;o++){const c=bl.getComponent(o);if(c!==0){const l=Sl.getComponent(o);xl.multiplyMatrices(s[l].matrixWorld,a[l]),Pp(Zr,xl,c)}}return Zr.multiply(r.bindMatrix).premultiply(r.bindMatrixInverse),t.transformDirection(Zr),t}function Mo(r,e,t,n,i){Yr.set(0,0,0);for(let s=0,a=r.length;s<a;s++){const o=e[s],c=r[s];o!==0&&(To.fromBufferAttribute(c,n),t?Yr.addScaledVector(To,o):Yr.addScaledVector(To.sub(i),o))}i.add(Yr)}function kp(r,e={useGroups:!1,updateIndex:!1,skipAttributes:[]},t=new $n){const n=r[0].index!==null,{useGroups:i=!1,updateIndex:s=!1,skipAttributes:a=[]}=e,o=new Set(Object.keys(r[0].attributes)),c={};let l=0;t.clearGroups();for(let u=0;u<r.length;++u){const p=r[u];let m=0;if(n!==(p.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const f in p.attributes){if(!o.has(f))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.');c[f]===void 0&&(c[f]=[]),c[f].push(p.attributes[f]),m++}if(m!==o.size)throw new Error("StaticGeometryGenerator: Make sure all geometries have the same number of attributes.");if(i){let f;if(n)f=p.index.count;else if(p.attributes.position!==void 0)f=p.attributes.position.count;else throw new Error("StaticGeometryGenerator: The geometry must have either an index or a position attribute");t.addGroup(l,f,u),l+=f}}if(n){let u=!1;if(!t.index){let p=0;for(let m=0;m<r.length;++m)p+=r[m].index.count;t.setIndex(new ut(new Uint32Array(p),1,!1)),u=!0}if(s||u){const p=t.index;let m=0,f=0;for(let x=0;x<r.length;++x){const _=r[x],g=_.index;if(a[x]!==!0)for(let v=0;v<g.count;++v)p.setX(m,g.getX(v)+f),m++;f+=_.attributes.position.count}}}for(const u in c){const p=c[u];if(!(u in t.attributes)){let x=0;for(const _ in p)x+=p[_].count;t.setAttribute(u,xi(c[u][0],x))}const m=t.attributes[u];let f=0;for(let x=0,_=p.length;x<_;x++){const g=p[x];a[x]!==!0&&wl(g,m,f),f+=g.count}}return t}function Rp(r,e){if(r===null||e===null)return r===e;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;t++)if(r[t]!==e[t])return!1;return!0}function Ap(r){const{index:e,attributes:t}=r;if(e)for(let n=0,i=e.count;n<i;n+=3){const s=e.getX(n),a=e.getX(n+2);e.setX(n,a),e.setX(n+2,s)}else for(const n in t){const i=t[n],s=i.itemSize;for(let a=0,o=i.count;a<o;a+=3)for(let c=0;c<s;c++){const l=i.getComponent(a,c),u=i.getComponent(a+2,c);i.setComponent(a,c,u),i.setComponent(a+2,c,l)}}return r}class Op{constructor(e){this.matrixWorld=new kt,this.geometryHash=null,this.boneMatrices=null,this.primitiveCount=-1,this.mesh=e,this.update()}update(){const e=this.mesh,t=e.geometry,n=e.skeleton,i=(t.index?t.index.count:t.attributes.position.count)/3;if(this.matrixWorld.copy(e.matrixWorld),this.geometryHash=t.attributes.position.version,this.primitiveCount=i,n){n.boneTexture||n.computeBoneTexture(),n.update();const s=n.boneMatrices;!this.boneMatrices||this.boneMatrices.length!==s.length?this.boneMatrices=s.slice():this.boneMatrices.set(s)}else this.boneMatrices=null}didChange(){const e=this.mesh,t=e.geometry,n=(t.index?t.index.count:t.attributes.position.count)/3;return!(this.matrixWorld.equals(e.matrixWorld)&&this.geometryHash===t.attributes.position.version&&Rp(e.skeleton&&e.skeleton.boneMatrices||null,this.boneMatrices)&&this.primitiveCount===n)}}class Ip{constructor(e){Array.isArray(e)||(e=[e]);const t=[];e.forEach(n=>{n.traverseVisible(i=>{i.isMesh&&t.push(i)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Array(t.length).fill().map(()=>new $n),this._diffMap=new WeakMap}getMaterials(){const e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new $n){let t=[];const{meshes:n,useGroups:i,_intermediateGeometry:s,_diffMap:a}=this;for(let o=0,c=n.length;o<c;o++){const l=n[o],u=s[o],p=a.get(l);!p||p.didChange(l)?(this._convertToStaticGeometry(l,u),t.push(!1),p?p.update():a.set(l,new Op(l))):t.push(!0)}if(s.length===0){e.setIndex(null);const o=e.attributes;for(const c in o)e.deleteAttribute(c);for(const c in this.attributes)e.setAttribute(this.attributes[c],new ut(new Float32Array(0),4,!1))}else kp(s,{useGroups:i,skipAttributes:t},e);for(const o in e.attributes)e.attributes[o].needsUpdate=!0;return e}_convertToStaticGeometry(e,t=new $n){const n=e.geometry,i=this.applyWorldTransforms,s=this.attributes.includes("normal"),a=this.attributes.includes("tangent"),o=n.attributes,c=t.attributes;!t.index&&n.index&&(t.index=n.index.clone()),c.position||t.setAttribute("position",xi(o.position)),s&&!c.normal&&o.normal&&t.setAttribute("normal",xi(o.normal)),a&&!c.tangent&&o.tangent&&t.setAttribute("tangent",xi(o.tangent)),bi(n.index,t.index),bi(o.position,c.position),s&&bi(o.normal,c.normal),a&&bi(o.tangent,c.tangent);const l=o.position,u=s?o.normal:null,p=a?o.tangent:null,m=n.morphAttributes.position,f=n.morphAttributes.normal,x=n.morphAttributes.tangent,_=n.morphTargetsRelative,g=e.morphTargetInfluences,v=new Kl;v.getNormalMatrix(e.matrixWorld),n.index&&t.index.array.set(n.index.array);for(let w=0,S=o.position.count;w<S;w++)wn.fromBufferAttribute(l,w),u&&_n.fromBufferAttribute(u,w),p&&(vl.fromBufferAttribute(p,w),Tn.fromBufferAttribute(p,w)),g&&(m&&Mo(m,g,_,w,wn),f&&Mo(f,g,_,w,_n),x&&Mo(x,g,_,w,Tn)),e.isSkinnedMesh&&(e.applyBoneTransform(w,wn),u&&_l(e,w,_n),p&&_l(e,w,Tn)),i&&wn.applyMatrix4(e.matrixWorld),c.position.setXYZ(w,wn.x,wn.y,wn.z),u&&(i&&_n.applyNormalMatrix(v),c.normal.setXYZ(w,_n.x,_n.y,_n.z)),p&&(i&&Tn.transformDirection(e.matrixWorld),c.tangent.setXYZW(w,Tn.x,Tn.y,Tn.z,vl.w));for(const w in this.attributes){const S=this.attributes[w];S==="position"||S==="tangent"||S==="normal"||!(S in o)||(c[S]||t.setAttribute(S,xi(o[S])),bi(o[S],c[S]),wl(o[S],c[S]))}return e.matrixWorld.determinant()<0&&Ap(t),t}}const Bp=Object.freeze(Object.defineProperty({__proto__:null,AVERAGE:qc,CENTER:Qs,CONTAINED:$s,ExtendedTriangle:vt,MeshBVH:_i,OrientedBox:qe,SAH:Xc,StaticGeometryGenerator:Ip,acceleratedRaycast:Tp,computeBoundsTree:Ep},Symbol.toStringTag,{value:"Module"}));class zp{constructor(e){this.name="WorkerBase",this.running=!1,this.worker=e,this.worker.onerror=t=>{throw t.message?new Error(`${this.name}: Could not create Web Worker with error "${t.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}}const xt={node:"node",material:"material",camera:"camera",light:"light"},Mn="KHR_animation_pointer",Np={CUBICSPLINE:void 0,LINEAR:ra,STEP:$l};class Up{constructor(e){this.name=Mn,this.parser=e,this.animationPointerResolver=null}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}loadAnimationTargetFromChannel(e){const t=e.target,n=t.node!==void 0?t.node:t.id;return this.parser.getDependency("node",n)}loadAnimationTargetFromChannelWithAnimationPointer(e){Lp();const t=e.target,n=t.extensions&&t.extensions[Mn]&&t.path&&t.path==="pointer";if(!n)return null;let i,s=xt.node,a;if(n){const c=t.extensions[Mn];let l=c.pointer;if(!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?s=xt.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?s=xt.light:l.startsWith("/cameras/")&&(s=xt.camera),a=this._tryResolveTargetId(l,s),a===null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,l);return}switch(s){case xt.material:const u=("/materials/"+a.toString()+"/").length,p=l.substring(0,u);switch(i=l.substring(u),i){case"pbrMetallicRoughness/baseColorFactor":i="color";break;case"pbrMetallicRoughness/roughnessFactor":i="roughness";break;case"pbrMetallicRoughness/metallicFactor":i="metalness";break;case"emissiveFactor":i="emissive";break;case"alphaCutoff":i="alphaTest";break;case"occlusionTexture/strength":i="aoMapIntensity";break;case"normalTexture/scale":i="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":i="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":i="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":i="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":i="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":i="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":i="transmission";break;case"extensions/KHR_materials_ior/ior":i="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":i="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":i="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":i="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":i="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":i="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":i="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":i="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":i="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":i="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":i="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":i="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":i="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":i="specularColor";break}l=p+i;break;case xt.node:const m=("/nodes/"+a.toString()+"/").length,f=l.substring(0,m);switch(i=l.substring(m),i){case"translation":i="position";break;case"rotation":i="quaternion";break;case"scale":i="scale";break;case"weights":i="morphTargetInfluences";break;case"extensions/KHR_node_visibility/visible":i="visible";break}l=f+i;break;case xt.light:const x=("/extensions/KHR_lights_punctual/lights/"+a.toString()+"/").length;switch(i=l.substring(x),i){case"color":break;case"intensity":break;case"spot/innerConeAngle":i="penumbra";break;case"spot/outerConeAngle":i="angle";break;case"range":i="distance";break}l="/lights/"+a.toString()+"/"+i;break;case xt.camera:const _=("/cameras/"+a.toString()+"/").length,g=l.substring(0,_);switch(i=l.substring(_),i){case"perspective/yfov":i="fov";break;case"perspective/znear":case"orthographic/znear":i="near";break;case"perspective/zfar":case"orthographic/zfar":i="far";break;case"perspective/aspect":i="aspect";break;case"orthographic/xmag":i="zoom";break;case"orthographic/ymag":i="zoom";break}l=g+i;break}this.animationPointerResolver?.resolvePath&&(l=this.animationPointerResolver.resolvePath(l)),t.extensions[Mn].pointer=l}if(a==null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,t);return}let o;return s===xt.node?o=this.parser.getDependency("node",a):s===xt.material?o=this.parser.getDependency("material",a):s===xt.light?o=this.parser.getDependency("light",a):s===xt.camera?o=this.parser.getDependency("camera",a):console.error("Unhandled type",s),o}createAnimationTracksWithAnimationPointer(e,t,n,i,s){if(!(s.extensions&&s.extensions[Mn]&&s.path&&s.path==="pointer"))return null;let a=s.extensions[Mn].pointer;if(!a)return null;const o=[];a=a.replaceAll("/",".");const c=a.split(".");var l=e.name!==void 0&&e.name!==null?e.name:e.uuid;if(c[2]=l,c[3]==="morphTargetInfluences"&&e.type==="Group"){for(const m of e.children)m instanceof Ql&&m.morphTargetInfluences&&(c[3]=m.name,c[4]="morphTargetInfluences",p(this.parser));return o}p(this.parser);function u(m,f){try{const x=f.split(".").filter(Boolean),_=x[x.length-1].replace(/\[.*\]$/,"");return _ in m?typeof m[_]=="boolean":!1}catch{return!1}}function p(m){a=c.join(".");let f,x=!1;switch(n.itemSize){case 1:Object.prototype.toString.call(n.array)==="[object Uint8Array]"&&u(e,a)?(f=ru,x=!0):f=su;break;case 2:case 3:f=iu;break;case 4:a.endsWith(".quaternion")?f=tu:f=nu;break}if(!f){console.warn("Unsupported output accessor format",n);return}const _=i.interpolation!==void 0?Np[i.interpolation]:ra;let g=m._getArrayFromAccessor(n);a.endsWith(".fov")&&(g=g.map(w=>w/Math.PI*180)),x&&(g=g.map(w=>w>0));const v=new f(a,t.array,g,_);if(_==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),o.push(v),a&&n.itemSize===4&&a.startsWith(".materials.")&&a.endsWith(".color")){const w=new Float32Array(g.length/4);for(let T=0,M=g.length/4;T<M;T+=1)w[T]=g[T*4+3];const S=new f(a.replace(".color",".opacity"),t.array,w,_);_==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),o.push(S)}}return o}_tryResolveTargetId(e,t){let n="";return t==="node"?n=e.substring(7):t==="material"?n=e.substring(11):t==="light"?n=e.substring(39):t==="camera"&&(n=e.substring(9)),n=n.substring(0,n.indexOf("/")),Number.parseInt(n)}loadAnimation(e){const t=this,n=this.parser.json,i=this.parser,s=n.animations[e],a=s.name?s.name:"animation_"+e,o=[],c=[],l=[],u=[],p=[];for(let m=0,f=s.channels.length;m<f;m++){const x=s.channels[m],_=s.samplers[x.sampler],g=x.target,v=s.parameters!==void 0?s.parameters[_.input]:_.input,w=s.parameters!==void 0?s.parameters[_.output]:_.output;let S=t.loadAnimationTargetFromChannelWithAnimationPointer(x);S||(S=t.loadAnimationTargetFromChannel(x)),o.push(S),c.push(i.getDependency("accessor",v)),l.push(i.getDependency("accessor",w)),u.push(_),p.push(g)}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(u),Promise.all(p)]).then(function(m){const f=m[0],x=m[1],_=m[2],g=m[3],v=m[4],w=[];for(let S=0,T=f.length;S<T;S++){const M=f[S],E=x[S],P=_[S],O=g[S],A=v[S];if(M===void 0)continue;M.updateMatrix&&(M.updateMatrix(),M.matrixAutoUpdate=!0);let R=t.createAnimationTracksWithAnimationPointer(M,E,P,O,A);if(R||(R=i._createAnimationTracks(M,E,P,O,A)),R)for(let I=0;I<R.length;I++)w.push(R[I])}return new eu(a,void 0,w)})}}let Tl=!1,Dp=null;function Lp(){if(Tl)return;Tl=!0;const r=Dp||=sa.findNode;sa.findNode=function(e,t){if(!t)return r(e,t);if(t.startsWith(".materials.")){const n=t.substring(11).substring(t.indexOf(".")),i=n.indexOf("."),s=i<0?n:n.substring(0,i);let a=null;return e.traverse(o=>{a!==null||o.type!=="Mesh"&&o.type!=="SkinnedMesh"||o.material&&(o.material.uuid===s||o.material.name===s)&&(a=o.material,a!==null&&(n.endsWith(".map")?a=a.map:n.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(t.startsWith(".nodes.")||t.startsWith(".lights.")||t.startsWith(".cameras.")){const n=t.split(".");let i;for(let s=1;s<n.length;s++){const a=n[s];if(a.length==36)i=e.getObjectByProperty("uuid",a);else if(i&&i[a]){const o=Number.parseInt(a);let c=a;o>=0&&(c=o),i=i[c]}else{const o=e.getObjectByName(a);o&&(i=o)}}if(!i){const s=r(e,n[2]);return s||console.warn(Mn+": Property binding not found",t,e,e.name,n),s}return i}return r(e,t)}}const Fp=Object.freeze(Object.defineProperty({__proto__:null,GLTFAnimationPointerExtension:Up},Symbol.toStringTag,{value:"Module"}));export{_c as $70d766613f57b014$export$2e2bcd8739ae039,md as BatchedParticleRenderer,Co as Builder,wi as ByteBuffer,En as ConstantColor,ne as ConstantValue,It as Matrix4,_i as MeshBVH,du as MotionController,es as ParticleSystem,V as RenderMode,aa as SIZE_PREFIX_LENGTH,Cr as TrailParticle,ot as Vector4,zp as WorkerBase,Gu as bundler,gd as createNoise4D,au as fetchProfile,_d as index,Bp as index$1,Fp as index$2,oh as md5,th as v5};