quake2ts 0.0.256 → 0.0.261

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 (74) hide show
  1. package/package.json +1 -1
  2. package/packages/cgame/dist/index.cjs +23 -0
  3. package/packages/cgame/dist/index.cjs.map +1 -1
  4. package/packages/cgame/dist/index.js +24 -1
  5. package/packages/cgame/dist/index.js.map +1 -1
  6. package/packages/client/dist/browser/index.global.js +13 -13
  7. package/packages/client/dist/browser/index.global.js.map +1 -1
  8. package/packages/client/dist/cjs/index.cjs +155 -6
  9. package/packages/client/dist/cjs/index.cjs.map +1 -1
  10. package/packages/client/dist/esm/index.js +174 -25
  11. package/packages/client/dist/esm/index.js.map +1 -1
  12. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  13. package/packages/client/dist/types/hud/icons.d.ts.map +1 -1
  14. package/packages/client/dist/types/hud/statusbar.d.ts.map +1 -1
  15. package/packages/client/dist/types/net/connection.d.ts +2 -0
  16. package/packages/client/dist/types/net/connection.d.ts.map +1 -1
  17. package/packages/engine/dist/browser/index.global.js.map +1 -1
  18. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  19. package/packages/engine/dist/esm/index.js.map +1 -1
  20. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  21. package/packages/game/dist/browser/index.global.js +2 -2
  22. package/packages/game/dist/browser/index.global.js.map +1 -1
  23. package/packages/game/dist/cjs/index.cjs +4118 -2942
  24. package/packages/game/dist/cjs/index.cjs.map +1 -1
  25. package/packages/game/dist/esm/index.js +4117 -2940
  26. package/packages/game/dist/esm/index.js.map +1 -1
  27. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  28. package/packages/game/dist/types/combat/weapons/animation.d.ts +20 -0
  29. package/packages/game/dist/types/combat/weapons/animation.d.ts.map +1 -0
  30. package/packages/game/dist/types/combat/weapons/firing.d.ts.map +1 -1
  31. package/packages/game/dist/types/combat/weapons/frames.d.ts +8 -0
  32. package/packages/game/dist/types/combat/weapons/frames.d.ts.map +1 -0
  33. package/packages/game/dist/types/combat/weapons/projectSource.d.ts +17 -0
  34. package/packages/game/dist/types/combat/weapons/projectSource.d.ts.map +1 -0
  35. package/packages/game/dist/types/combat/weapons/rogue.d.ts +4 -4
  36. package/packages/game/dist/types/combat/weapons/rogue.d.ts.map +1 -1
  37. package/packages/game/dist/types/combat/weapons/state.d.ts +6 -0
  38. package/packages/game/dist/types/combat/weapons/state.d.ts.map +1 -1
  39. package/packages/game/dist/types/combat/weapons/switching.d.ts +11 -0
  40. package/packages/game/dist/types/combat/weapons/switching.d.ts.map +1 -1
  41. package/packages/game/dist/types/entities/entity.d.ts +1 -0
  42. package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
  43. package/packages/game/dist/types/entities/funcs.d.ts +2 -1
  44. package/packages/game/dist/types/entities/funcs.d.ts.map +1 -1
  45. package/packages/game/dist/types/entities/misc.d.ts.map +1 -1
  46. package/packages/game/dist/types/entities/monsters/index.d.ts.map +1 -1
  47. package/packages/game/dist/types/entities/monsters/insane.d.ts +5 -0
  48. package/packages/game/dist/types/entities/monsters/insane.d.ts.map +1 -0
  49. package/packages/game/dist/types/entities/playerStats.d.ts.map +1 -1
  50. package/packages/game/dist/types/entities/projectiles.d.ts +1 -1
  51. package/packages/game/dist/types/entities/projectiles.d.ts.map +1 -1
  52. package/packages/game/dist/types/entities/targets.d.ts.map +1 -1
  53. package/packages/game/dist/types/inventory/ammo.d.ts.map +1 -1
  54. package/packages/game/dist/types/inventory/playerInventory.d.ts +91 -38
  55. package/packages/game/dist/types/inventory/playerInventory.d.ts.map +1 -1
  56. package/packages/server/dist/index.cjs +15 -0
  57. package/packages/server/dist/index.d.cts +1 -0
  58. package/packages/server/dist/index.d.ts +1 -0
  59. package/packages/server/dist/index.js +15 -0
  60. package/packages/shared/dist/browser/index.global.js +1 -1
  61. package/packages/shared/dist/browser/index.global.js.map +1 -1
  62. package/packages/shared/dist/cjs/index.cjs +28 -4
  63. package/packages/shared/dist/cjs/index.cjs.map +1 -1
  64. package/packages/shared/dist/esm/index.js +25 -3
  65. package/packages/shared/dist/esm/index.js.map +1 -1
  66. package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
  67. package/packages/shared/dist/types/protocol/constants.d.ts +1 -0
  68. package/packages/shared/dist/types/protocol/constants.d.ts.map +1 -1
  69. package/packages/shared/dist/types/protocol/index.d.ts +1 -0
  70. package/packages/shared/dist/types/protocol/index.d.ts.map +1 -1
  71. package/packages/shared/dist/types/protocol/stats.d.ts.map +1 -1
  72. package/packages/shared/dist/types/protocol/writeUserCmd.d.ts +4 -0
  73. package/packages/shared/dist/types/protocol/writeUserCmd.d.ts.map +1 -0
  74. package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
- "use strict";var Quake2Client=(()=>{var ia=Object.defineProperty;var Ih=Object.getOwnPropertyDescriptor;var Ch=Object.getOwnPropertyNames;var Ph=Object.prototype.hasOwnProperty;var ra=(e,t)=>{for(var n in t)ia(e,n,{get:t[n],enumerable:!0})},Dh=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ch(t))!Ph.call(e,r)&&r!==n&&ia(e,r,{get:()=>t[r],enumerable:!(i=Ih(t,r))||i.enumerable});return e};var Fh=e=>Dh(ia({},"__esModule",{value:!0}),e);var IT={};ra(IT,{ClientConfigStrings:()=>En,ClientPrediction:()=>rr,InputAction:()=>ea,InputBindings:()=>Ht,InputCommandBuffer:()=>ta,InputController:()=>Tn,ViewEffects:()=>ir,createClient:()=>OT,createDefaultBindings:()=>Nh,interpolatePredictionState:()=>an,normalizeCommand:()=>Si,normalizeInputCode:()=>ec});var q=1e-6,Oe=typeof Float32Array<"u"?Float32Array:Array,aa=Math.random;function bi(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var PT=Math.PI/180,DT=180/Math.PI;var J={};ra(J,{add:()=>bf,adjoint:()=>$h,clone:()=>Bh,copy:()=>Gh,create:()=>Uh,decompose:()=>uf,determinant:()=>Xh,equals:()=>Mf,exactEquals:()=>Tf,frob:()=>Af,fromQuat:()=>hf,fromQuat2:()=>of,fromRotation:()=>nf,fromRotationTranslation:()=>ac,fromRotationTranslationScale:()=>df,fromRotationTranslationScaleOrigin:()=>mf,fromScaling:()=>tf,fromTranslation:()=>ef,fromValues:()=>Hh,fromXRotation:()=>rf,fromYRotation:()=>af,fromZRotation:()=>sf,frustum:()=>ff,getRotation:()=>lf,getScaling:()=>sc,getTranslation:()=>cf,identity:()=>ic,invert:()=>Kh,lookAt:()=>wf,mul:()=>Rf,multiply:()=>rc,multiplyScalar:()=>Ef,multiplyScalarAndAdd:()=>kf,ortho:()=>vf,orthoNO:()=>cc,orthoZO:()=>yf,perspective:()=>_f,perspectiveFromFieldOfView:()=>pf,perspectiveNO:()=>oc,perspectiveZO:()=>gf,rotate:()=>jh,rotateX:()=>qh,rotateY:()=>Jh,rotateZ:()=>Qh,scale:()=>Zh,set:()=>Vh,str:()=>xf,sub:()=>zf,subtract:()=>lc,targetTo:()=>Sf,translate:()=>Yh,transpose:()=>Wh});function Uh(){var e=new Oe(16);return Oe!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Bh(e){var t=new Oe(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Gh(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Hh(e,t,n,i,r,a,s,o,l,c,u,m,d,h,f,y){var p=new Oe(16);return p[0]=e,p[1]=t,p[2]=n,p[3]=i,p[4]=r,p[5]=a,p[6]=s,p[7]=o,p[8]=l,p[9]=c,p[10]=u,p[11]=m,p[12]=d,p[13]=h,p[14]=f,p[15]=y,p}function Vh(e,t,n,i,r,a,s,o,l,c,u,m,d,h,f,y,p){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=m,e[11]=d,e[12]=h,e[13]=f,e[14]=y,e[15]=p,e}function ic(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Wh(e,t){if(e===t){var n=t[1],i=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Kh(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],h=t[11],f=t[12],y=t[13],p=t[14],v=t[15],E=n*o-i*s,w=n*l-r*s,_=n*c-a*s,S=i*l-r*o,A=i*c-a*o,b=r*c-a*l,k=u*y-m*f,T=u*p-d*f,g=u*v-h*f,x=m*p-d*y,M=m*v-h*y,$=d*v-h*p,U=E*$-w*M+_*x+S*g-A*T+b*k;return U?(U=1/U,e[0]=(o*$-l*M+c*x)*U,e[1]=(r*M-i*$-a*x)*U,e[2]=(y*b-p*A+v*S)*U,e[3]=(d*A-m*b-h*S)*U,e[4]=(l*g-s*$-c*T)*U,e[5]=(n*$-r*g+a*T)*U,e[6]=(p*_-f*b-v*w)*U,e[7]=(u*b-d*_+h*w)*U,e[8]=(s*M-o*g+c*k)*U,e[9]=(i*g-n*M-a*k)*U,e[10]=(f*A-y*_+v*E)*U,e[11]=(m*_-u*A-h*E)*U,e[12]=(o*T-s*x-l*k)*U,e[13]=(n*x-i*T+r*k)*U,e[14]=(y*w-f*S-p*E)*U,e[15]=(u*S-m*w+d*E)*U,e):null}function $h(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],h=t[11],f=t[12],y=t[13],p=t[14],v=t[15],E=n*o-i*s,w=n*l-r*s,_=n*c-a*s,S=i*l-r*o,A=i*c-a*o,b=r*c-a*l,k=u*y-m*f,T=u*p-d*f,g=u*v-h*f,x=m*p-d*y,M=m*v-h*y,$=d*v-h*p;return e[0]=o*$-l*M+c*x,e[1]=r*M-i*$-a*x,e[2]=y*b-p*A+v*S,e[3]=d*A-m*b-h*S,e[4]=l*g-s*$-c*T,e[5]=n*$-r*g+a*T,e[6]=p*_-f*b-v*w,e[7]=u*b-d*_+h*w,e[8]=s*M-o*g+c*k,e[9]=i*g-n*M-a*k,e[10]=f*A-y*_+v*E,e[11]=m*_-u*A-h*E,e[12]=o*T-s*x-l*k,e[13]=n*x-i*T+r*k,e[14]=y*w-f*S-p*E,e[15]=u*S-m*w+d*E,e}function Xh(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],m=e[10],d=e[11],h=e[12],f=e[13],y=e[14],p=e[15],v=t*s-n*a,E=t*o-i*a,w=n*o-i*s,_=c*f-u*h,S=c*y-m*h,A=u*y-m*f,b=t*A-n*S+i*_,k=a*A-s*S+o*_,T=c*w-u*E+m*v,g=h*w-f*E+y*v;return l*b-r*k+p*T-d*g}function rc(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=t[8],d=t[9],h=t[10],f=t[11],y=t[12],p=t[13],v=t[14],E=t[15],w=n[0],_=n[1],S=n[2],A=n[3];return e[0]=w*i+_*o+S*m+A*y,e[1]=w*r+_*l+S*d+A*p,e[2]=w*a+_*c+S*h+A*v,e[3]=w*s+_*u+S*f+A*E,w=n[4],_=n[5],S=n[6],A=n[7],e[4]=w*i+_*o+S*m+A*y,e[5]=w*r+_*l+S*d+A*p,e[6]=w*a+_*c+S*h+A*v,e[7]=w*s+_*u+S*f+A*E,w=n[8],_=n[9],S=n[10],A=n[11],e[8]=w*i+_*o+S*m+A*y,e[9]=w*r+_*l+S*d+A*p,e[10]=w*a+_*c+S*h+A*v,e[11]=w*s+_*u+S*f+A*E,w=n[12],_=n[13],S=n[14],A=n[15],e[12]=w*i+_*o+S*m+A*y,e[13]=w*r+_*l+S*d+A*p,e[14]=w*a+_*c+S*h+A*v,e[15]=w*s+_*u+S*f+A*E,e}function Yh(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,h,f,y,p,v;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],m=t[5],d=t[6],h=t[7],f=t[8],y=t[9],p=t[10],v=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=h,e[8]=f,e[9]=y,e[10]=p,e[11]=v,e[12]=s*i+u*r+f*a+t[12],e[13]=o*i+m*r+y*a+t[13],e[14]=l*i+d*r+p*a+t[14],e[15]=c*i+h*r+v*a+t[15]),e}function Zh(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function jh(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),l,c,u,m,d,h,f,y,p,v,E,w,_,S,A,b,k,T,g,x,M,$,U,X;return o<q?null:(o=1/o,r*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,m=t[0],d=t[1],h=t[2],f=t[3],y=t[4],p=t[5],v=t[6],E=t[7],w=t[8],_=t[9],S=t[10],A=t[11],b=r*r*u+c,k=a*r*u+s*l,T=s*r*u-a*l,g=r*a*u-s*l,x=a*a*u+c,M=s*a*u+r*l,$=r*s*u+a*l,U=a*s*u-r*l,X=s*s*u+c,e[0]=m*b+y*k+w*T,e[1]=d*b+p*k+_*T,e[2]=h*b+v*k+S*T,e[3]=f*b+E*k+A*T,e[4]=m*g+y*x+w*M,e[5]=d*g+p*x+_*M,e[6]=h*g+v*x+S*M,e[7]=f*g+E*x+A*M,e[8]=m*$+y*U+w*X,e[9]=d*$+p*U+_*X,e[10]=h*$+v*U+S*X,e[11]=f*$+E*U+A*X,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function qh(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],m=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+c*i,e[5]=s*r+u*i,e[6]=o*r+m*i,e[7]=l*r+d*i,e[8]=c*r-a*i,e[9]=u*r-s*i,e[10]=m*r-o*i,e[11]=d*r-l*i,e}function Jh(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],m=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-c*i,e[1]=s*r-u*i,e[2]=o*r-m*i,e[3]=l*r-d*i,e[8]=a*i+c*r,e[9]=s*i+u*r,e[10]=o*i+m*r,e[11]=l*i+d*r,e}function Qh(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],m=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+c*i,e[1]=s*r+u*i,e[2]=o*r+m*i,e[3]=l*r+d*i,e[4]=c*r-a*i,e[5]=u*r-s*i,e[6]=m*r-o*i,e[7]=d*r-l*i,e}function ef(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function tf(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function nf(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,l,c;return s<q?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=i*i*c+l,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+l,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function rf(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function af(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function sf(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ac(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,l=r+r,c=a+a,u=i*o,m=i*l,d=i*c,h=r*l,f=r*c,y=a*c,p=s*o,v=s*l,E=s*c;return e[0]=1-(h+y),e[1]=m+E,e[2]=d-v,e[3]=0,e[4]=m-E,e[5]=1-(u+y),e[6]=f+p,e[7]=0,e[8]=d+v,e[9]=f-p,e[10]=1-(u+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function of(e,t){var n=new Oe(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+u*i+l*a-c*r)*2/m,n[1]=(l*s+u*r+c*i-o*a)*2/m,n[2]=(c*s+u*a+o*r-l*i)*2/m):(n[0]=(o*s+u*i+l*a-c*r)*2,n[1]=(l*s+u*r+c*i-o*a)*2,n[2]=(c*s+u*a+o*r-l*i)*2),ac(e,t,n),e}function cf(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function sc(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function lf(e,t){var n=new Oe(3);sc(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,l=t[2]*a,c=t[4]*i,u=t[5]*r,m=t[6]*a,d=t[8]*i,h=t[9]*r,f=t[10]*a,y=s+u+f,p=0;return y>0?(p=Math.sqrt(y+1)*2,e[3]=.25*p,e[0]=(m-h)/p,e[1]=(d-l)/p,e[2]=(o-c)/p):s>u&&s>f?(p=Math.sqrt(1+s-u-f)*2,e[3]=(m-h)/p,e[0]=.25*p,e[1]=(o+c)/p,e[2]=(d+l)/p):u>f?(p=Math.sqrt(1+u-s-f)*2,e[3]=(d-l)/p,e[0]=(o+c)/p,e[1]=.25*p,e[2]=(m+h)/p):(p=Math.sqrt(1+f-s-u)*2,e[3]=(o-c)/p,e[0]=(d+l)/p,e[1]=(m+h)/p,e[2]=.25*p),e}function uf(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],l=i[5],c=i[6],u=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+m*m+d*d);var h=1/n[0],f=1/n[1],y=1/n[2],p=r*h,v=a*f,E=s*y,w=o*h,_=l*f,S=c*y,A=u*h,b=m*f,k=d*y,T=p+_+k,g=0;return T>0?(g=Math.sqrt(T+1)*2,e[3]=.25*g,e[0]=(S-b)/g,e[1]=(A-E)/g,e[2]=(v-w)/g):p>_&&p>k?(g=Math.sqrt(1+p-_-k)*2,e[3]=(S-b)/g,e[0]=.25*g,e[1]=(v+w)/g,e[2]=(A+E)/g):_>k?(g=Math.sqrt(1+_-p-k)*2,e[3]=(A-E)/g,e[0]=(v+w)/g,e[1]=.25*g,e[2]=(S+b)/g):(g=Math.sqrt(1+k-p-_)*2,e[3]=(v-w)/g,e[0]=(A+E)/g,e[1]=(S+b)/g,e[2]=.25*g),e}function df(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],l=r+r,c=a+a,u=s+s,m=r*l,d=r*c,h=r*u,f=a*c,y=a*u,p=s*u,v=o*l,E=o*c,w=o*u,_=i[0],S=i[1],A=i[2];return e[0]=(1-(f+p))*_,e[1]=(d+w)*_,e[2]=(h-E)*_,e[3]=0,e[4]=(d-w)*S,e[5]=(1-(m+p))*S,e[6]=(y+v)*S,e[7]=0,e[8]=(h+E)*A,e[9]=(y-v)*A,e[10]=(1-(m+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function mf(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,m=o+o,d=a*c,h=a*u,f=a*m,y=s*u,p=s*m,v=o*m,E=l*c,w=l*u,_=l*m,S=i[0],A=i[1],b=i[2],k=r[0],T=r[1],g=r[2],x=(1-(y+v))*S,M=(h+_)*S,$=(f-w)*S,U=(h-_)*A,X=(1-(d+v))*A,ge=(p+E)*A,Ee=(f+w)*b,ct=(p-E)*b,Ai=(1-(d+y))*b;return e[0]=x,e[1]=M,e[2]=$,e[3]=0,e[4]=U,e[5]=X,e[6]=ge,e[7]=0,e[8]=Ee,e[9]=ct,e[10]=Ai,e[11]=0,e[12]=n[0]+k-(x*k+U*T+Ee*g),e[13]=n[1]+T-(M*k+X*T+ct*g),e[14]=n[2]+g-($*k+ge*T+Ai*g),e[15]=1,e}function hf(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,l=r+r,c=n*s,u=i*s,m=i*o,d=r*s,h=r*o,f=r*l,y=a*s,p=a*o,v=a*l;return e[0]=1-m-f,e[1]=u+v,e[2]=d-p,e[3]=0,e[4]=u-v,e[5]=1-c-f,e[6]=h+y,e[7]=0,e[8]=d+p,e[9]=h-y,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ff(e,t,n,i,r,a,s){var o=1/(n-t),l=1/(r-i),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*l,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function oc(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var _f=oc;function gf(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function pf(e,t,n,i){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+o),c=2/(r+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*l*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function cc(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*l,e[14]=(s+a)*c,e[15]=1,e}var vf=cc;function yf(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*l,e[14]=a*c,e[15]=1,e}function wf(e,t,n,i){var r,a,s,o,l,c,u,m,d,h,f=t[0],y=t[1],p=t[2],v=i[0],E=i[1],w=i[2],_=n[0],S=n[1],A=n[2];return Math.abs(f-_)<q&&Math.abs(y-S)<q&&Math.abs(p-A)<q?ic(e):(u=f-_,m=y-S,d=p-A,h=1/Math.sqrt(u*u+m*m+d*d),u*=h,m*=h,d*=h,r=E*d-w*m,a=w*u-v*d,s=v*m-E*u,h=Math.sqrt(r*r+a*a+s*s),h?(h=1/h,r*=h,a*=h,s*=h):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,h=Math.sqrt(o*o+l*l+c*c),h?(h=1/h,o*=h,l*=h,c*=h):(o=0,l=0,c=0),e[0]=r,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*f+a*y+s*p),e[13]=-(o*f+l*y+c*p),e[14]=-(u*f+m*y+d*p),e[15]=1,e)}function Sf(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],l=i[1],c=i[2],u=r-n[0],m=a-n[1],d=s-n[2],h=u*u+m*m+d*d;h>0&&(h=1/Math.sqrt(h),u*=h,m*=h,d*=h);var f=l*d-c*m,y=c*u-o*d,p=o*m-l*u;return h=f*f+y*y+p*p,h>0&&(h=1/Math.sqrt(h),f*=h,y*=h,p*=h),e[0]=f,e[1]=y,e[2]=p,e[3]=0,e[4]=m*p-d*y,e[5]=d*f-u*p,e[6]=u*y-m*f,e[7]=0,e[8]=u,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function xf(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function Af(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function bf(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function lc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function Ef(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function kf(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function Tf(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Mf(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],m=e[9],d=e[10],h=e[11],f=e[12],y=e[13],p=e[14],v=e[15],E=t[0],w=t[1],_=t[2],S=t[3],A=t[4],b=t[5],k=t[6],T=t[7],g=t[8],x=t[9],M=t[10],$=t[11],U=t[12],X=t[13],ge=t[14],Ee=t[15];return Math.abs(n-E)<=q*Math.max(1,Math.abs(n),Math.abs(E))&&Math.abs(i-w)<=q*Math.max(1,Math.abs(i),Math.abs(w))&&Math.abs(r-_)<=q*Math.max(1,Math.abs(r),Math.abs(_))&&Math.abs(a-S)<=q*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(s-A)<=q*Math.max(1,Math.abs(s),Math.abs(A))&&Math.abs(o-b)<=q*Math.max(1,Math.abs(o),Math.abs(b))&&Math.abs(l-k)<=q*Math.max(1,Math.abs(l),Math.abs(k))&&Math.abs(c-T)<=q*Math.max(1,Math.abs(c),Math.abs(T))&&Math.abs(u-g)<=q*Math.max(1,Math.abs(u),Math.abs(g))&&Math.abs(m-x)<=q*Math.max(1,Math.abs(m),Math.abs(x))&&Math.abs(d-M)<=q*Math.max(1,Math.abs(d),Math.abs(M))&&Math.abs(h-$)<=q*Math.max(1,Math.abs(h),Math.abs($))&&Math.abs(f-U)<=q*Math.max(1,Math.abs(f),Math.abs(U))&&Math.abs(y-X)<=q*Math.max(1,Math.abs(y),Math.abs(X))&&Math.abs(p-ge)<=q*Math.max(1,Math.abs(p),Math.abs(ge))&&Math.abs(v-Ee)<=q*Math.max(1,Math.abs(v),Math.abs(Ee))}var Rf=rc,zf=lc;var te={};ra(te,{add:()=>Cf,angle:()=>r0,bezier:()=>jf,ceil:()=>Pf,clone:()=>Lf,copy:()=>Of,create:()=>uc,cross:()=>$f,dist:()=>m0,distance:()=>_c,div:()=>d0,divide:()=>fc,dot:()=>sa,equals:()=>c0,exactEquals:()=>o0,floor:()=>Df,forEach:()=>g0,fromValues:()=>Nf,hermite:()=>Zf,inverse:()=>Wf,len:()=>f0,length:()=>dc,lerp:()=>Xf,max:()=>Uf,min:()=>Ff,mul:()=>u0,multiply:()=>hc,negate:()=>Vf,normalize:()=>Kf,random:()=>qf,rotateX:()=>t0,rotateY:()=>n0,rotateZ:()=>i0,round:()=>Bf,scale:()=>Gf,scaleAndAdd:()=>Hf,set:()=>If,slerp:()=>Yf,sqrDist:()=>h0,sqrLen:()=>_0,squaredDistance:()=>gc,squaredLength:()=>pc,str:()=>s0,sub:()=>l0,subtract:()=>mc,transformMat3:()=>Qf,transformMat4:()=>Jf,transformQuat:()=>e0,zero:()=>a0});function uc(){var e=new Oe(3);return Oe!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Lf(e){var t=new Oe(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function dc(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Nf(e,t,n){var i=new Oe(3);return i[0]=e,i[1]=t,i[2]=n,i}function Of(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function If(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Cf(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function mc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function hc(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function fc(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function Pf(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Df(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Ff(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function Uf(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function Bf(e,t){return e[0]=bi(t[0]),e[1]=bi(t[1]),e[2]=bi(t[2]),e}function Gf(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Hf(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function _c(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function gc(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function pc(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Vf(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Wf(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Kf(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function sa(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function $f(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function Xf(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Yf(e,t,n,i){var r=Math.acos(Math.min(Math.max(sa(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function Zf(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function jf(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function qf(e,t){t=t===void 0?1:t;var n=aa()*2*Math.PI,i=aa()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Jf(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function Qf(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function e0(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function t0(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function n0(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function i0(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function r0(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&sa(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function a0(e){return e[0]=0,e[1]=0,e[2]=0,e}function s0(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function o0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function c0(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=q*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=q*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=q*Math.max(1,Math.abs(r),Math.abs(o))}var l0=mc,u0=hc,d0=fc,m0=_c,h0=gc,f0=dc,_0=pc,g0=(function(){var e=uc();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var p0=Object.defineProperty,sl=(e,t)=>{for(var n in t)p0(e,n,{get:t[n],enumerable:!0})};var UT=Math.PI/180;var v0=Math.PI/180,BT=180/Math.PI,Mn=v0,y0=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Xe=1,ft=2;var Ia=8,Ca=16,w0=32;var S0=16384;var Gi=65536,ol=1<<17,x0=1<<18,A0=1<<19,b0=1<<20,E0=1<<21,k0=1<<22,T0=1<<23,GT=1<<24,Hi=1<<25,M0=1<<26,HT=1<<27,VT=1<<28,WT=1<<29,Vi=1<<30,KT=1<<31;var $T=1<<25,XT=1<<28,YT=1<<29,ZT=1<<30,jT=1<<31,qT=Xe|ft,JT=Xe|Gi|ft|Hi|Vi,QT=Xe|Gi|ft,eM=Xe|ol|ft|Hi|Vi,tM=w0|Ia|Ca,nM=Xe|Ca|Ia,R0=Xe|Hi|Vi|ft|M0,iM=x0|A0|b0|E0|k0|T0,rM=Xe|Ia|Ca|Hi|Vi,aM=Xe|Gi|ft,sM=Xe|ft,oM=Xe|Gi|ft|ol,cM=R0|S0,lM=Number.MAX_SAFE_INTEGER-1;var cl=256,z0=256,L0=8192,N0=2048,O0=512,I0=256,C0=cl*2,P0=256,oa=32;var ll=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+L0]="Sounds",e[e.Images=e.Sounds+N0]="Images",e[e.Lights=e.Images+O0]="Lights",e[e.ShadowLights=e.Lights+z0]="ShadowLights",e[e.Items=e.ShadowLights+P0]="Items",e[e.PlayerSkins=e.Items+I0]="PlayerSkins",e[e.General=e.PlayerSkins+cl]="General",e[e.WheelWeapons=e.General+C0]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+oa]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+oa]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+oa]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ll||{}),uM=ll.MaxConfigStrings;var D0={};sl(D0,{addReplayFrame:()=>G0,createReplaySession:()=>B0,deserializeReplay:()=>U0,serializeReplay:()=>F0});function F0(e){return JSON.stringify(e,null,2)}function U0(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function B0(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function G0(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var F=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(F||{}),z=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(z||{}),H0=12,V0=9,dM=Math.ceil(H0*V0/16),W0=23,K0=2,mM=Math.ceil(W0*K0/16),$0={};sl($0,{U_ANGLE1:()=>Q0,U_ANGLE2:()=>e1,U_ANGLE3:()=>t1,U_EFFECTS:()=>r1,U_EVENT:()=>o1,U_FRAME:()=>n1,U_MODEL:()=>Y0,U_MODEL2:()=>l1,U_MODEL3:()=>u1,U_MODEL4:()=>d1,U_MOREBITS:()=>c1,U_NUMBER:()=>X0,U_ORIGIN1:()=>j0,U_ORIGIN2:()=>q0,U_ORIGIN3:()=>J0,U_REMOVE:()=>m1,U_RENDERFX:()=>a1,U_SKIN:()=>i1,U_SOLID:()=>s1,U_SOUND:()=>Z0});var X0=1,Y0=2,Z0=4,j0=8,q0=16,J0=32,Q0=64,e1=128,t1=256,n1=512,i1=1024,r1=2048,a1=4096,s1=8192,o1=16384,c1=32768,l1=1,u1=2,d1=4,m1=32768,Aa=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=y0[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ul=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(ul||{}),hM=Object.keys(ul).length/2;function h1(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var fM=h1();var _M=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var f1=19,gM=8+f1*8;var ba=4,ca=7*ba,pM=[{index:0,size:3,type:5126,stride:ca,offset:0},{index:1,size:2,type:5126,stride:ca,offset:3*ba},{index:2,size:2,type:5126,stride:ca,offset:5*ba}];var dl=32;var vM=`#version 300 es
1
+ "use strict";var Quake2Client=(()=>{var ha=Object.defineProperty;var Nf=Object.getOwnPropertyDescriptor;var Of=Object.getOwnPropertyNames;var If=Object.prototype.hasOwnProperty;var fa=(e,t)=>{for(var n in t)ha(e,n,{get:t[n],enumerable:!0})},Cf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Of(t))!If.call(e,i)&&i!==n&&ha(e,i,{get:()=>t[i],enumerable:!(r=Nf(t,i))||r.enumerable});return e};var Pf=e=>Cf(ha({},"__esModule",{value:!0}),e);var v8={};fa(v8,{ClientConfigStrings:()=>Mn,ClientPrediction:()=>di,InputAction:()=>ua,InputBindings:()=>Kt,InputCommandBuffer:()=>da,InputController:()=>zn,ViewEffects:()=>ui,createClient:()=>p8,createDefaultBindings:()=>zf,interpolatePredictionState:()=>cn,normalizeCommand:()=>Mr,normalizeInputCode:()=>Ec});var Q=1e-6,Ce=typeof Float32Array<"u"?Float32Array:Array,_a=Math.random;function Lr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var w8=Math.PI/180,S8=180/Math.PI;var ee={};fa(ee,{add:()=>S0,adjoint:()=>Wf,clone:()=>Ff,copy:()=>Uf,create:()=>Df,decompose:()=>o0,determinant:()=>Kf,equals:()=>E0,exactEquals:()=>k0,frob:()=>w0,fromQuat:()=>u0,fromQuat2:()=>i0,fromRotation:()=>e0,fromRotationTranslation:()=>zc,fromRotationTranslationScale:()=>c0,fromRotationTranslationScaleOrigin:()=>l0,fromScaling:()=>Qf,fromTranslation:()=>Jf,fromValues:()=>Bf,fromXRotation:()=>t0,fromYRotation:()=>n0,fromZRotation:()=>r0,frustum:()=>d0,getRotation:()=>s0,getScaling:()=>Lc,getTranslation:()=>a0,identity:()=>Mc,invert:()=>Vf,lookAt:()=>p0,mul:()=>b0,multiply:()=>Rc,multiplyScalar:()=>A0,multiplyScalarAndAdd:()=>x0,ortho:()=>_0,orthoNO:()=>Oc,orthoZO:()=>g0,perspective:()=>m0,perspectiveFromFieldOfView:()=>f0,perspectiveNO:()=>Nc,perspectiveZO:()=>h0,rotate:()=>Yf,rotateX:()=>Zf,rotateY:()=>jf,rotateZ:()=>qf,scale:()=>Xf,set:()=>Gf,str:()=>y0,sub:()=>T0,subtract:()=>Ic,targetTo:()=>v0,translate:()=>$f,transpose:()=>Hf});function Df(){var e=new Ce(16);return Ce!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Ff(e){var t=new Ce(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Uf(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Bf(e,t,n,r,i,a,s,o,l,c,u,h,m,f,g,S){var y=new Ce(16);return y[0]=e,y[1]=t,y[2]=n,y[3]=r,y[4]=i,y[5]=a,y[6]=s,y[7]=o,y[8]=l,y[9]=c,y[10]=u,y[11]=h,y[12]=m,y[13]=f,y[14]=g,y[15]=S,y}function Gf(e,t,n,r,i,a,s,o,l,c,u,h,m,f,g,S,y){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=h,e[11]=m,e[12]=f,e[13]=g,e[14]=S,e[15]=y,e}function Mc(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Hf(e,t){if(e===t){var n=t[1],r=t[2],i=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[11]=t[14],e[12]=i,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Vf(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],m=t[10],f=t[11],g=t[12],S=t[13],y=t[14],w=t[15],T=n*o-r*s,A=n*l-i*s,p=n*c-a*s,x=r*l-i*o,E=r*c-a*o,b=i*c-a*l,M=u*S-h*g,R=u*y-m*g,v=u*w-f*g,k=h*y-m*S,L=h*w-f*S,Z=m*w-f*y,H=T*Z-A*L+p*k+x*v-E*R+b*M;return H?(H=1/H,e[0]=(o*Z-l*L+c*k)*H,e[1]=(i*L-r*Z-a*k)*H,e[2]=(S*b-y*E+w*x)*H,e[3]=(m*E-h*b-f*x)*H,e[4]=(l*v-s*Z-c*R)*H,e[5]=(n*Z-i*v+a*R)*H,e[6]=(y*p-g*b-w*A)*H,e[7]=(u*b-m*p+f*A)*H,e[8]=(s*L-o*v+c*M)*H,e[9]=(r*v-n*L-a*M)*H,e[10]=(g*E-S*p+w*T)*H,e[11]=(h*p-u*E-f*T)*H,e[12]=(o*R-s*k-l*M)*H,e[13]=(n*k-r*R+i*M)*H,e[14]=(S*A-g*x-y*T)*H,e[15]=(u*x-h*A+m*T)*H,e):null}function Wf(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],m=t[10],f=t[11],g=t[12],S=t[13],y=t[14],w=t[15],T=n*o-r*s,A=n*l-i*s,p=n*c-a*s,x=r*l-i*o,E=r*c-a*o,b=i*c-a*l,M=u*S-h*g,R=u*y-m*g,v=u*w-f*g,k=h*y-m*S,L=h*w-f*S,Z=m*w-f*y;return e[0]=o*Z-l*L+c*k,e[1]=i*L-r*Z-a*k,e[2]=S*b-y*E+w*x,e[3]=m*E-h*b-f*x,e[4]=l*v-s*Z-c*R,e[5]=n*Z-i*v+a*R,e[6]=y*p-g*b-w*A,e[7]=u*b-m*p+f*A,e[8]=s*L-o*v+c*M,e[9]=r*v-n*L-a*M,e[10]=g*E-S*p+w*T,e[11]=h*p-u*E-f*T,e[12]=o*R-s*k-l*M,e[13]=n*k-r*R+i*M,e[14]=S*A-g*x-y*T,e[15]=u*x-h*A+m*T,e}function Kf(e){var t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],h=e[10],m=e[11],f=e[12],g=e[13],S=e[14],y=e[15],w=t*s-n*a,T=t*o-r*a,A=n*o-r*s,p=c*g-u*f,x=c*S-h*f,E=u*S-h*g,b=t*E-n*x+r*p,M=a*E-s*x+o*p,R=c*A-u*T+h*w,v=f*A-g*T+S*w;return l*b-i*M+y*R-m*v}function Rc(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=t[8],m=t[9],f=t[10],g=t[11],S=t[12],y=t[13],w=t[14],T=t[15],A=n[0],p=n[1],x=n[2],E=n[3];return e[0]=A*r+p*o+x*h+E*S,e[1]=A*i+p*l+x*m+E*y,e[2]=A*a+p*c+x*f+E*w,e[3]=A*s+p*u+x*g+E*T,A=n[4],p=n[5],x=n[6],E=n[7],e[4]=A*r+p*o+x*h+E*S,e[5]=A*i+p*l+x*m+E*y,e[6]=A*a+p*c+x*f+E*w,e[7]=A*s+p*u+x*g+E*T,A=n[8],p=n[9],x=n[10],E=n[11],e[8]=A*r+p*o+x*h+E*S,e[9]=A*i+p*l+x*m+E*y,e[10]=A*a+p*c+x*f+E*w,e[11]=A*s+p*u+x*g+E*T,A=n[12],p=n[13],x=n[14],E=n[15],e[12]=A*r+p*o+x*h+E*S,e[13]=A*i+p*l+x*m+E*y,e[14]=A*a+p*c+x*f+E*w,e[15]=A*s+p*u+x*g+E*T,e}function $f(e,t,n){var r=n[0],i=n[1],a=n[2],s,o,l,c,u,h,m,f,g,S,y,w;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],h=t[5],m=t[6],f=t[7],g=t[8],S=t[9],y=t[10],w=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=h,e[6]=m,e[7]=f,e[8]=g,e[9]=S,e[10]=y,e[11]=w,e[12]=s*r+u*i+g*a+t[12],e[13]=o*r+h*i+S*a+t[13],e[14]=l*r+m*i+y*a+t[14],e[15]=c*r+f*i+w*a+t[15]),e}function Xf(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Yf(e,t,n,r){var i=r[0],a=r[1],s=r[2],o=Math.sqrt(i*i+a*a+s*s),l,c,u,h,m,f,g,S,y,w,T,A,p,x,E,b,M,R,v,k,L,Z,H,j;return o<Q?null:(o=1/o,i*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,h=t[0],m=t[1],f=t[2],g=t[3],S=t[4],y=t[5],w=t[6],T=t[7],A=t[8],p=t[9],x=t[10],E=t[11],b=i*i*u+c,M=a*i*u+s*l,R=s*i*u-a*l,v=i*a*u-s*l,k=a*a*u+c,L=s*a*u+i*l,Z=i*s*u+a*l,H=a*s*u-i*l,j=s*s*u+c,e[0]=h*b+S*M+A*R,e[1]=m*b+y*M+p*R,e[2]=f*b+w*M+x*R,e[3]=g*b+T*M+E*R,e[4]=h*v+S*k+A*L,e[5]=m*v+y*k+p*L,e[6]=f*v+w*k+x*L,e[7]=g*v+T*k+E*L,e[8]=h*Z+S*H+A*j,e[9]=m*Z+y*H+p*j,e[10]=f*Z+w*H+x*j,e[11]=g*Z+T*H+E*j,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Zf(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],h=t[10],m=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+c*r,e[5]=s*i+u*r,e[6]=o*i+h*r,e[7]=l*i+m*r,e[8]=c*i-a*r,e[9]=u*i-s*r,e[10]=h*i-o*r,e[11]=m*i-l*r,e}function jf(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],h=t[10],m=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-c*r,e[1]=s*i-u*r,e[2]=o*i-h*r,e[3]=l*i-m*r,e[8]=a*r+c*i,e[9]=s*r+u*i,e[10]=o*r+h*i,e[11]=l*r+m*i,e}function qf(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],h=t[6],m=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+c*r,e[1]=s*i+u*r,e[2]=o*i+h*r,e[3]=l*i+m*r,e[4]=c*i-a*r,e[5]=u*i-s*r,e[6]=h*i-o*r,e[7]=m*i-l*r,e}function Jf(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function Qf(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function e0(e,t,n){var r=n[0],i=n[1],a=n[2],s=Math.sqrt(r*r+i*i+a*a),o,l,c;return s<Q?null:(s=1/s,r*=s,i*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=r*r*c+l,e[1]=i*r*c+a*o,e[2]=a*r*c-i*o,e[3]=0,e[4]=r*i*c-a*o,e[5]=i*i*c+l,e[6]=a*i*c+r*o,e[7]=0,e[8]=r*a*c+i*o,e[9]=i*a*c-r*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function t0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function n0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function r0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function zc(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=r+r,l=i+i,c=a+a,u=r*o,h=r*l,m=r*c,f=i*l,g=i*c,S=a*c,y=s*o,w=s*l,T=s*c;return e[0]=1-(f+S),e[1]=h+T,e[2]=m-w,e[3]=0,e[4]=h-T,e[5]=1-(u+S),e[6]=g+y,e[7]=0,e[8]=m+w,e[9]=g-y,e[10]=1-(u+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function i0(e,t){var n=new Ce(3),r=-t[0],i=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=r*r+i*i+a*a+s*s;return h>0?(n[0]=(o*s+u*r+l*a-c*i)*2/h,n[1]=(l*s+u*i+c*r-o*a)*2/h,n[2]=(c*s+u*a+o*i-l*r)*2/h):(n[0]=(o*s+u*r+l*a-c*i)*2,n[1]=(l*s+u*i+c*r-o*a)*2,n[2]=(c*s+u*a+o*i-l*r)*2),zc(e,t,n),e}function a0(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Lc(e,t){var n=t[0],r=t[1],i=t[2],a=t[4],s=t[5],o=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.sqrt(n*n+r*r+i*i),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function s0(e,t){var n=new Ce(3);Lc(n,t);var r=1/n[0],i=1/n[1],a=1/n[2],s=t[0]*r,o=t[1]*i,l=t[2]*a,c=t[4]*r,u=t[5]*i,h=t[6]*a,m=t[8]*r,f=t[9]*i,g=t[10]*a,S=s+u+g,y=0;return S>0?(y=Math.sqrt(S+1)*2,e[3]=.25*y,e[0]=(h-f)/y,e[1]=(m-l)/y,e[2]=(o-c)/y):s>u&&s>g?(y=Math.sqrt(1+s-u-g)*2,e[3]=(h-f)/y,e[0]=.25*y,e[1]=(o+c)/y,e[2]=(m+l)/y):u>g?(y=Math.sqrt(1+u-s-g)*2,e[3]=(m-l)/y,e[0]=(o+c)/y,e[1]=.25*y,e[2]=(h+f)/y):(y=Math.sqrt(1+g-s-u)*2,e[3]=(o-c)/y,e[0]=(m+l)/y,e[1]=(h+f)/y,e[2]=.25*y),e}function o0(e,t,n,r){t[0]=r[12],t[1]=r[13],t[2]=r[14];var i=r[0],a=r[1],s=r[2],o=r[4],l=r[5],c=r[6],u=r[8],h=r[9],m=r[10];n[0]=Math.sqrt(i*i+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+h*h+m*m);var f=1/n[0],g=1/n[1],S=1/n[2],y=i*f,w=a*g,T=s*S,A=o*f,p=l*g,x=c*S,E=u*f,b=h*g,M=m*S,R=y+p+M,v=0;return R>0?(v=Math.sqrt(R+1)*2,e[3]=.25*v,e[0]=(x-b)/v,e[1]=(E-T)/v,e[2]=(w-A)/v):y>p&&y>M?(v=Math.sqrt(1+y-p-M)*2,e[3]=(x-b)/v,e[0]=.25*v,e[1]=(w+A)/v,e[2]=(E+T)/v):p>M?(v=Math.sqrt(1+p-y-M)*2,e[3]=(E-T)/v,e[0]=(w+A)/v,e[1]=.25*v,e[2]=(x+b)/v):(v=Math.sqrt(1+M-y-p)*2,e[3]=(w-A)/v,e[0]=(E+T)/v,e[1]=(x+b)/v,e[2]=.25*v),e}function c0(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=t[3],l=i+i,c=a+a,u=s+s,h=i*l,m=i*c,f=i*u,g=a*c,S=a*u,y=s*u,w=o*l,T=o*c,A=o*u,p=r[0],x=r[1],E=r[2];return e[0]=(1-(g+y))*p,e[1]=(m+A)*p,e[2]=(f-T)*p,e[3]=0,e[4]=(m-A)*x,e[5]=(1-(h+y))*x,e[6]=(S+w)*x,e[7]=0,e[8]=(f+T)*E,e[9]=(S-w)*E,e[10]=(1-(h+g))*E,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function l0(e,t,n,r,i){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,h=o+o,m=a*c,f=a*u,g=a*h,S=s*u,y=s*h,w=o*h,T=l*c,A=l*u,p=l*h,x=r[0],E=r[1],b=r[2],M=i[0],R=i[1],v=i[2],k=(1-(S+w))*x,L=(f+p)*x,Z=(g-A)*x,H=(f-p)*E,j=(1-(m+w))*E,ve=(y+T)*E,be=(g+A)*b,ut=(y-T)*b,zr=(1-(m+S))*b;return e[0]=k,e[1]=L,e[2]=Z,e[3]=0,e[4]=H,e[5]=j,e[6]=ve,e[7]=0,e[8]=be,e[9]=ut,e[10]=zr,e[11]=0,e[12]=n[0]+M-(k*M+H*R+be*v),e[13]=n[1]+R-(L*M+j*R+ut*v),e[14]=n[2]+v-(Z*M+ve*R+zr*v),e[15]=1,e}function u0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=n+n,o=r+r,l=i+i,c=n*s,u=r*s,h=r*o,m=i*s,f=i*o,g=i*l,S=a*s,y=a*o,w=a*l;return e[0]=1-h-g,e[1]=u+w,e[2]=m-y,e[3]=0,e[4]=u-w,e[5]=1-c-g,e[6]=f+S,e[7]=0,e[8]=m+y,e[9]=f-S,e[10]=1-c-h,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function d0(e,t,n,r,i,a,s){var o=1/(n-t),l=1/(i-r),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(i+r)*l,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function Nc(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=(i+r)*s,e[14]=2*i*r*s}else e[10]=-1,e[14]=-2*r;return e}var m0=Nc;function h0(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=i*s,e[14]=i*r*s}else e[10]=-1,e[14]=-r;return e}function f0(e,t,n,r){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+o),c=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*l*.5),e[9]=(i-a)*c*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}function Oc(e,t,n,r,i,a,s){var o=1/(t-n),l=1/(r-i),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*l,e[14]=(s+a)*c,e[15]=1,e}var _0=Oc;function g0(e,t,n,r,i,a,s){var o=1/(t-n),l=1/(r-i),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*l,e[14]=a*c,e[15]=1,e}function p0(e,t,n,r){var i,a,s,o,l,c,u,h,m,f,g=t[0],S=t[1],y=t[2],w=r[0],T=r[1],A=r[2],p=n[0],x=n[1],E=n[2];return Math.abs(g-p)<Q&&Math.abs(S-x)<Q&&Math.abs(y-E)<Q?Mc(e):(u=g-p,h=S-x,m=y-E,f=1/Math.sqrt(u*u+h*h+m*m),u*=f,h*=f,m*=f,i=T*m-A*h,a=A*u-w*m,s=w*h-T*u,f=Math.sqrt(i*i+a*a+s*s),f?(f=1/f,i*=f,a*=f,s*=f):(i=0,a=0,s=0),o=h*s-m*a,l=m*i-u*s,c=u*a-h*i,f=Math.sqrt(o*o+l*l+c*c),f?(f=1/f,o*=f,l*=f,c*=f):(o=0,l=0,c=0),e[0]=i,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=h,e[7]=0,e[8]=s,e[9]=c,e[10]=m,e[11]=0,e[12]=-(i*g+a*S+s*y),e[13]=-(o*g+l*S+c*y),e[14]=-(u*g+h*S+m*y),e[15]=1,e)}function v0(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=r[0],l=r[1],c=r[2],u=i-n[0],h=a-n[1],m=s-n[2],f=u*u+h*h+m*m;f>0&&(f=1/Math.sqrt(f),u*=f,h*=f,m*=f);var g=l*m-c*h,S=c*u-o*m,y=o*h-l*u;return f=g*g+S*S+y*y,f>0&&(f=1/Math.sqrt(f),g*=f,S*=f,y*=f),e[0]=g,e[1]=S,e[2]=y,e[3]=0,e[4]=h*y-m*S,e[5]=m*g-u*y,e[6]=u*S-h*g,e[7]=0,e[8]=u,e[9]=h,e[10]=m,e[11]=0,e[12]=i,e[13]=a,e[14]=s,e[15]=1,e}function y0(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function w0(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function S0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function Ic(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function A0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function x0(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e[9]=t[9]+n[9]*r,e[10]=t[10]+n[10]*r,e[11]=t[11]+n[11]*r,e[12]=t[12]+n[12]*r,e[13]=t[13]+n[13]*r,e[14]=t[14]+n[14]*r,e[15]=t[15]+n[15]*r,e}function k0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function E0(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],h=e[9],m=e[10],f=e[11],g=e[12],S=e[13],y=e[14],w=e[15],T=t[0],A=t[1],p=t[2],x=t[3],E=t[4],b=t[5],M=t[6],R=t[7],v=t[8],k=t[9],L=t[10],Z=t[11],H=t[12],j=t[13],ve=t[14],be=t[15];return Math.abs(n-T)<=Q*Math.max(1,Math.abs(n),Math.abs(T))&&Math.abs(r-A)<=Q*Math.max(1,Math.abs(r),Math.abs(A))&&Math.abs(i-p)<=Q*Math.max(1,Math.abs(i),Math.abs(p))&&Math.abs(a-x)<=Q*Math.max(1,Math.abs(a),Math.abs(x))&&Math.abs(s-E)<=Q*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(o-b)<=Q*Math.max(1,Math.abs(o),Math.abs(b))&&Math.abs(l-M)<=Q*Math.max(1,Math.abs(l),Math.abs(M))&&Math.abs(c-R)<=Q*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(u-v)<=Q*Math.max(1,Math.abs(u),Math.abs(v))&&Math.abs(h-k)<=Q*Math.max(1,Math.abs(h),Math.abs(k))&&Math.abs(m-L)<=Q*Math.max(1,Math.abs(m),Math.abs(L))&&Math.abs(f-Z)<=Q*Math.max(1,Math.abs(f),Math.abs(Z))&&Math.abs(g-H)<=Q*Math.max(1,Math.abs(g),Math.abs(H))&&Math.abs(S-j)<=Q*Math.max(1,Math.abs(S),Math.abs(j))&&Math.abs(y-ve)<=Q*Math.max(1,Math.abs(y),Math.abs(ve))&&Math.abs(w-be)<=Q*Math.max(1,Math.abs(w),Math.abs(be))}var b0=Rc,T0=Ic;var re={};fa(re,{add:()=>N0,angle:()=>t1,bezier:()=>X0,ceil:()=>O0,clone:()=>M0,copy:()=>z0,create:()=>Cc,cross:()=>V0,dist:()=>l1,distance:()=>Bc,div:()=>c1,divide:()=>Uc,dot:()=>ga,equals:()=>a1,exactEquals:()=>i1,floor:()=>I0,forEach:()=>h1,fromValues:()=>R0,hermite:()=>$0,inverse:()=>G0,len:()=>d1,length:()=>Pc,lerp:()=>W0,max:()=>P0,min:()=>C0,mul:()=>o1,multiply:()=>Fc,negate:()=>B0,normalize:()=>H0,random:()=>Y0,rotateX:()=>J0,rotateY:()=>Q0,rotateZ:()=>e1,round:()=>D0,scale:()=>F0,scaleAndAdd:()=>U0,set:()=>L0,slerp:()=>K0,sqrDist:()=>u1,sqrLen:()=>m1,squaredDistance:()=>Gc,squaredLength:()=>Hc,str:()=>r1,sub:()=>s1,subtract:()=>Dc,transformMat3:()=>j0,transformMat4:()=>Z0,transformQuat:()=>q0,zero:()=>n1});function Cc(){var e=new Ce(3);return Ce!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function M0(e){var t=new Ce(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Pc(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function R0(e,t,n){var r=new Ce(3);return r[0]=e,r[1]=t,r[2]=n,r}function z0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function L0(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function N0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Dc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Fc(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Uc(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function O0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function I0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function C0(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function P0(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function D0(e,t){return e[0]=Lr(t[0]),e[1]=Lr(t[1]),e[2]=Lr(t[2]),e}function F0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function U0(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function Bc(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function Gc(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function Hc(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function B0(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function G0(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function H0(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function ga(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function V0(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=i*l-a*o,e[1]=a*s-r*l,e[2]=r*o-i*s,e}function W0(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function K0(e,t,n,r){var i=Math.acos(Math.min(Math.max(ga(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function $0(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+r[0]*c+i[0]*u,e[1]=t[1]*o+n[1]*l+r[1]*c+i[1]*u,e[2]=t[2]*o+n[2]*l+r[2]*c+i[2]*u,e}function X0(e,t,n,r,i,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,h=3*l*s,m=l*a;return e[0]=t[0]*c+n[0]*u+r[0]*h+i[0]*m,e[1]=t[1]*c+n[1]*u+r[1]*h+i[1]*m,e[2]=t[2]*c+n[2]*u+r[2]*h+i[2]*m,e}function Y0(e,t){t=t===void 0?1:t;var n=_a()*2*Math.PI,r=_a()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function Z0(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function j0(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function q0(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=i*c-a*l,h=a*o-r*c,m=r*l-i*o;return u=u+u,h=h+h,m=m+m,e[0]=o+s*u+i*m-a*h,e[1]=l+s*h+a*u-r*m,e[2]=c+s*m+r*h-i*u,e}function J0(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Q0(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function e1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function t1(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),c=l&&ga(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function n1(e){return e[0]=0,e[1]=0,e[2]=0,e}function r1(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function i1(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function a1(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=Q*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=Q*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=Q*Math.max(1,Math.abs(i),Math.abs(o))}var s1=Dc,o1=Fc,c1=Uc,l1=Bc,u1=Gc,d1=Pc,m1=Hc,h1=(function(){var e=Cc();return function(t,n,r,i,a,s){var o,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,o=r;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var f1=Object.defineProperty,Ll=(e,t)=>{for(var n in t)f1(e,n,{get:t[n],enumerable:!0})};var x8=Math.PI/180;var _1=Math.PI/180,k8=180/Math.PI,Ln=_1,g1=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Ze=1,gt=2;var Wa=8,Ka=16,p1=32;var v1=16384;var Yr=65536,Nl=1<<17,y1=1<<18,w1=1<<19,S1=1<<20,A1=1<<21,x1=1<<22,k1=1<<23,E8=1<<24,Zr=1<<25,E1=1<<26,b8=1<<27,T8=1<<28,M8=1<<29,jr=1<<30,R8=1<<31;var z8=1<<25,L8=1<<28,N8=1<<29,O8=1<<30,I8=1<<31,C8=Ze|gt,P8=Ze|Yr|gt|Zr|jr,D8=Ze|Yr|gt,F8=Ze|Nl|gt|Zr|jr,U8=p1|Wa|Ka,B8=Ze|Ka|Wa,b1=Ze|Zr|jr|gt|E1,G8=y1|w1|S1|A1|x1|k1,H8=Ze|Wa|Ka|Zr|jr,V8=Ze|Yr|gt,W8=Ze|gt,K8=Ze|Yr|gt|Nl,$8=b1|v1,X8=Number.MAX_SAFE_INTEGER-1;var Ol=256,T1=256,M1=8192,R1=2048,z1=512,L1=256,N1=Ol*2,O1=256,pa=32;var Il=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+M1]="Sounds",e[e.Images=e.Sounds+R1]="Images",e[e.Lights=e.Images+z1]="Lights",e[e.ShadowLights=e.Lights+T1]="ShadowLights",e[e.Items=e.ShadowLights+O1]="Items",e[e.PlayerSkins=e.Items+L1]="PlayerSkins",e[e.General=e.PlayerSkins+Ol]="General",e[e.WheelWeapons=e.General+N1]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+pa]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+pa]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+pa]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Il||{}),Y8=Il.MaxConfigStrings;var I1={};Ll(I1,{addReplayFrame:()=>F1,createReplaySession:()=>D1,deserializeReplay:()=>P1,serializeReplay:()=>C1});function C1(e){return JSON.stringify(e,null,2)}function P1(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function D1(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function F1(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var G=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(G||{}),I=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(I||{}),U1=12,B1=9,Z8=Math.ceil(U1*B1/16),G1=23,H1=2,j8=Math.ceil(G1*H1/16),V1={};Ll(V1,{U_ANGLE1:()=>j1,U_ANGLE2:()=>q1,U_ANGLE3:()=>J1,U_EFFECTS:()=>t_,U_EVENT:()=>i_,U_FRAME:()=>Q1,U_MODEL:()=>K1,U_MODEL2:()=>s_,U_MODEL3:()=>o_,U_MODEL4:()=>c_,U_MOREBITS:()=>a_,U_NUMBER:()=>W1,U_ORIGIN1:()=>X1,U_ORIGIN2:()=>Y1,U_ORIGIN3:()=>Z1,U_REMOVE:()=>l_,U_RENDERFX:()=>n_,U_SKIN:()=>e_,U_SOLID:()=>r_,U_SOUND:()=>$1});var W1=1,K1=2,$1=4,X1=8,Y1=16,Z1=32,j1=64,q1=128,J1=256,Q1=512,e_=1024,t_=2048,n_=4096,r_=8192,i_=16384,a_=32768,s_=1,o_=2,c_=4,l_=32768,Oa=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=g1[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Cl=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(Cl||{}),q8=Object.keys(Cl).length/2;function u_(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let r=0;r<8;r+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var J8=u_();var Q8=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var d_=19,eR=8+d_*8;var Ia=4,va=7*Ia,tR=[{index:0,size:3,type:5126,stride:va,offset:0},{index:1,size:2,type:5126,stride:va,offset:3*Ia},{index:2,size:2,type:5126,stride:va,offset:5*Ia}];var Pl=32;var nR=`#version 300 es
2
2
  precision highp float;
3
3
 
4
4
  struct DLight {
@@ -7,7 +7,7 @@ struct DLight {
7
7
  float intensity;
8
8
  };
9
9
 
10
- const int MAX_DLIGHTS = ${dl};
10
+ const int MAX_DLIGHTS = ${Pl};
11
11
 
12
12
  in vec2 v_texCoord;
13
13
  in vec2 v_lightmapCoord;
@@ -114,7 +114,7 @@ void main() {
114
114
  }
115
115
 
116
116
  o_color = finalColor;
117
- }`;var yM=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var wM=`#version 300 es
117
+ }`;var rR=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var iR=`#version 300 es
118
118
  precision highp float;
119
119
 
120
120
  layout(location = 0) in vec3 a_position;
@@ -127,7 +127,7 @@ struct DLight {
127
127
  float intensity;
128
128
  };
129
129
 
130
- const int MAX_DLIGHTS = ${dl};
130
+ const int MAX_DLIGHTS = ${Pl};
131
131
 
132
132
  uniform mat4 u_modelViewProjection;
133
133
  uniform mat4 u_modelMatrix;
@@ -166,15 +166,15 @@ void main() {
166
166
  v_texCoord = a_texCoord;
167
167
  v_position = worldPos.xyz;
168
168
  gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
169
- }`;var ml=class{constructor(){this._position=te.create(),this._angles=te.create(),this._bobAngles=te.create(),this._bobOffset=te.create(),this._kickAngles=te.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=J.create(),this._projectionMatrix=J.create(),this._viewProjectionMatrix=J.create(),this._dirty=!0}get position(){return this._position}set position(e){te.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){te.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){te.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){te.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){te.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=J.create();return J.perspective(t,e*Mn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;J.perspective(this._projectionMatrix,this._fov*Mn,this._aspect,this._near,this._far);let e=J.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*Mn,a=n*Mn,s=i*Mn,o=J.create();J.identity(o),J.rotateZ(o,o,-a),J.rotateY(o,o,-r),J.rotateX(o,o,-s);let l=J.create();J.multiply(l,e,o);let c=te.add(te.create(),this._position,this._bobOffset),u=te.negate(te.create(),c),m=te.create();te.transformMat4(m,u,o);let d=te.fromValues(m[1]||0,m[2]||0,m[0]||0);J.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],J.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var _1=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new Aa(t)}}reset(){this.offset=0}getOffset(){return this.offset}},g1=4,vc=0,yc=1,p1=2;function jt(e){let t=e.length;for(;--t>=0;)e[t]=0}var v1=0,hl=1,y1=2,w1=3,S1=258,Pa=29,Vn=256,Cn=Vn+1+Pa,Xt=30,Da=19,fl=2*Cn+1,kt=15,la=16,x1=7,Fa=256,_l=16,gl=17,pl=18,Ea=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),zi=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),A1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),vl=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),b1=512,tt=new Array((Cn+2)*2);jt(tt);var Nn=new Array(Xt*2);jt(Nn);var Pn=new Array(b1);jt(Pn);var Dn=new Array(S1-w1+1);jt(Dn);var Ua=new Array(Pa);jt(Ua);var Li=new Array(Xt);jt(Li);function ua(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var yl,wl,Sl;function da(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var xl=e=>e<256?Pn[e]:Pn[256+(e>>>7)],Fn=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},ke=(e,t,n)=>{e.bi_valid>la-n?(e.bi_buf|=t<<e.bi_valid&65535,Fn(e,e.bi_buf),e.bi_buf=t>>la-e.bi_valid,e.bi_valid+=n-la):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},We=(e,t,n)=>{ke(e,n[t*2],n[t*2+1])},Al=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},E1=e=>{e.bi_valid===16?(Fn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},k1=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,l=t.stat_desc.max_length,c,u,m,d,h,f,y=0;for(d=0;d<=kt;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<fl;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,y++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,h=0,u>=o&&(h=s[u-o]),f=n[u*2],e.opt_len+=f*(d+h),a&&(e.static_len+=f*(r[u*2+1]+h)));if(y!==0){do{for(d=l-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[l]--,y-=2}while(y>0);for(d=l;d!==0;d--)for(u=e.bl_count[d];u!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==d&&(e.opt_len+=(d-n[m*2+1])*n[m*2],n[m*2+1]=d),u--)}},bl=(e,t,n)=>{let i=new Array(kt+1),r=0,a,s;for(a=1;a<=kt;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Al(i[o]++,o))}},T1=()=>{let e,t,n,i,r,a=new Array(kt+1);for(n=0,i=0;i<Pa-1;i++)for(Ua[i]=n,e=0;e<1<<Ea[i];e++)Dn[n++]=i;for(Dn[n-1]=i,r=0,i=0;i<16;i++)for(Li[i]=r,e=0;e<1<<zi[i];e++)Pn[r++]=i;for(r>>=7;i<Xt;i++)for(Li[i]=r<<7,e=0;e<1<<zi[i]-7;e++)Pn[256+r++]=i;for(t=0;t<=kt;t++)a[t]=0;for(e=0;e<=143;)tt[e*2+1]=8,e++,a[8]++;for(;e<=255;)tt[e*2+1]=9,e++,a[9]++;for(;e<=279;)tt[e*2+1]=7,e++,a[7]++;for(;e<=287;)tt[e*2+1]=8,e++,a[8]++;for(bl(tt,Cn+1,a),e=0;e<Xt;e++)Nn[e*2+1]=5,Nn[e*2]=Al(e,5);yl=new ua(tt,Ea,Vn+1,Cn,kt),wl=new ua(Nn,zi,0,Xt,kt),Sl=new ua(new Array(0),A1,0,Da,x1)},El=e=>{let t;for(t=0;t<Cn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Xt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Da;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Fa*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},kl=e=>{e.bi_valid>8?Fn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},wc=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},ma=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&wc(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!wc(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},Sc=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?We(e,r,t):(s=Dn[r],We(e,s+Vn+1,t),o=Ea[s],o!==0&&(r-=Ua[s],ke(e,r,o)),i--,s=xl(i),We(e,s,n),o=zi[s],o!==0&&(i-=Li[s],ke(e,i,o)));while(a<e.sym_next);We(e,Fa,t)},ka=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=fl,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=l=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)ma(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ma(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,ma(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],k1(e,t),bl(n,l,e.bl_count)},xc=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[_l*2]++):o<=10?e.bl_tree[gl*2]++:e.bl_tree[pl*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},Ac=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)){if(o<c)do We(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(We(e,a,e.bl_tree),o--),We(e,_l,e.bl_tree),ke(e,o-3,2)):o<=10?(We(e,gl,e.bl_tree),ke(e,o-3,3)):(We(e,pl,e.bl_tree),ke(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},M1=e=>{let t;for(xc(e,e.dyn_ltree,e.l_desc.max_code),xc(e,e.dyn_dtree,e.d_desc.max_code),ka(e,e.bl_desc),t=Da-1;t>=3&&e.bl_tree[vl[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},R1=(e,t,n,i)=>{let r;for(ke(e,t-257,5),ke(e,n-1,5),ke(e,i-4,4),r=0;r<i;r++)ke(e,e.bl_tree[vl[r]*2+1],3);Ac(e,e.dyn_ltree,t-1),Ac(e,e.dyn_dtree,n-1)},z1=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return vc;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return yc;for(n=32;n<Vn;n++)if(e.dyn_ltree[n*2]!==0)return yc;return vc},bc=!1,L1=e=>{bc||(T1(),bc=!0),e.l_desc=new da(e.dyn_ltree,yl),e.d_desc=new da(e.dyn_dtree,wl),e.bl_desc=new da(e.bl_tree,Sl),e.bi_buf=0,e.bi_valid=0,El(e)},Tl=(e,t,n,i)=>{ke(e,(v1<<1)+(i?1:0),3),kl(e),Fn(e,n),Fn(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},N1=e=>{ke(e,hl<<1,3),We(e,Fa,tt),E1(e)},O1=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===p1&&(e.strm.data_type=z1(e)),ka(e,e.l_desc),ka(e,e.d_desc),s=M1(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Tl(e,t,n,i):e.strategy===g1||a===r?(ke(e,(hl<<1)+(i?1:0),3),Sc(e,tt,Nn)):(ke(e,(y1<<1)+(i?1:0),3),R1(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Sc(e,e.dyn_ltree,e.dyn_dtree)),El(e),i&&kl(e)},I1=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Dn[n]+Vn+1)*2]++,e.dyn_dtree[xl(t)*2]++),e.sym_next===e.sym_end),C1=L1,P1=Tl,D1=O1,F1=I1,U1=N1,B1={_tr_init:C1,_tr_stored_block:P1,_tr_flush_block:D1,_tr_tally:F1,_tr_align:U1},G1=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},Un=G1,H1=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},V1=new Uint32Array(H1()),W1=(e,t,n,i)=>{let r=V1,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},pe=W1,Rt={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Nt={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:K1,_tr_stored_block:Ta,_tr_flush_block:$1,_tr_tally:dt,_tr_align:X1}=B1,{Z_NO_FLUSH:mt,Z_PARTIAL_FLUSH:Y1,Z_FULL_FLUSH:Z1,Z_FINISH:Ie,Z_BLOCK:Ec,Z_OK:we,Z_STREAM_END:kc,Z_STREAM_ERROR:Ke,Z_DATA_ERROR:j1,Z_BUF_ERROR:ha,Z_DEFAULT_COMPRESSION:q1,Z_FILTERED:J1,Z_HUFFMAN_ONLY:Ei,Z_RLE:Q1,Z_FIXED:e_,Z_DEFAULT_STRATEGY:t_,Z_UNKNOWN:n_,Z_DEFLATED:Wi}=Nt,i_=9,r_=15,a_=8,s_=29,o_=256,Ma=o_+1+s_,c_=30,l_=19,u_=2*Ma+1,d_=15,W=3,ut=258,$e=ut+W+1,m_=32,Yt=42,Ba=57,Ra=69,za=73,La=91,Na=103,Tt=113,zn=666,be=1,qt=2,zt=3,Jt=4,h_=3,Mt=(e,t)=>(e.msg=Rt[t],t),Tc=e=>e*2-(e>4?9:0),lt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},f_=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},__=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,ht=__,Re=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},ze=(e,t)=>{$1(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Re(e.strm)},Y=(e,t)=>{e.pending_buf[e.pending++]=t},Rn=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Oa=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=Un(e.adler,t,r,n):e.state.wrap===2&&(e.adler=pe(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},Ml=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-$e?e.strstart-(e.w_size-$e):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+ut,h=c[i+s-1],f=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==f||c[r+s-1]!==h||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<d);if(a=ut-(d-i),i=d-ut,a>s){if(e.match_start=t,s=a,a>=o)break;h=c[i+s-1],f=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Zt=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-$e)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),f_(e),i+=t),e.strm.avail_in===0)break;if(n=Oa(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=W)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=ht(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=ht(e,e.ins_h,e.window[r+W-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<W)););}while(e.lookahead<$e&&e.strm.avail_in!==0)},Rl=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==Ie||t===mt||i!==r+e.strm.avail_in)))break;s=t===Ie&&i===r+e.strm.avail_in?1:0,Ta(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Re(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(Oa(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?Jt:t!==mt&&t!==Ie&&e.strm.avail_in===0&&e.strstart===e.block_start?qt:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(Oa(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===Ie)&&t!==mt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===Ie&&e.strm.avail_in===0&&i===r?1:0,Ta(e,e.block_start,i,s),e.block_start+=i,Re(e.strm)),s?zt:be)},fa=(e,t)=>{let n,i;for(;;){if(e.lookahead<$e){if(Zt(e),e.lookahead<$e&&t===mt)return be;if(e.lookahead===0)break}if(n=0,e.lookahead>=W&&(e.ins_h=ht(e,e.ins_h,e.window[e.strstart+W-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-$e&&(e.match_length=Ml(e,n)),e.match_length>=W)if(i=dt(e,e.strstart-e.match_start,e.match_length-W),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=W){e.match_length--;do e.strstart++,e.ins_h=ht(e,e.ins_h,e.window[e.strstart+W-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=ht(e,e.ins_h,e.window[e.strstart+1]);else i=dt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(ze(e,!1),e.strm.avail_out===0))return be}return e.insert=e.strstart<W-1?e.strstart:W-1,t===Ie?(ze(e,!0),e.strm.avail_out===0?zt:Jt):e.sym_next&&(ze(e,!1),e.strm.avail_out===0)?be:qt},Wt=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<$e){if(Zt(e),e.lookahead<$e&&t===mt)return be;if(e.lookahead===0)break}if(n=0,e.lookahead>=W&&(e.ins_h=ht(e,e.ins_h,e.window[e.strstart+W-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=W-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-$e&&(e.match_length=Ml(e,n),e.match_length<=5&&(e.strategy===J1||e.match_length===W&&e.strstart-e.match_start>4096)&&(e.match_length=W-1)),e.prev_length>=W&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-W,i=dt(e,e.strstart-1-e.prev_match,e.prev_length-W),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=ht(e,e.ins_h,e.window[e.strstart+W-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=W-1,e.strstart++,i&&(ze(e,!1),e.strm.avail_out===0))return be}else if(e.match_available){if(i=dt(e,0,e.window[e.strstart-1]),i&&ze(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return be}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=dt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<W-1?e.strstart:W-1,t===Ie?(ze(e,!0),e.strm.avail_out===0?zt:Jt):e.sym_next&&(ze(e,!1),e.strm.avail_out===0)?be:qt},g_=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=ut){if(Zt(e),e.lookahead<=ut&&t===mt)return be;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=W&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+ut;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=ut-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=W?(n=dt(e,1,e.match_length-W),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=dt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(ze(e,!1),e.strm.avail_out===0))return be}return e.insert=0,t===Ie?(ze(e,!0),e.strm.avail_out===0?zt:Jt):e.sym_next&&(ze(e,!1),e.strm.avail_out===0)?be:qt},p_=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Zt(e),e.lookahead===0)){if(t===mt)return be;break}if(e.match_length=0,n=dt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(ze(e,!1),e.strm.avail_out===0))return be}return e.insert=0,t===Ie?(ze(e,!0),e.strm.avail_out===0?zt:Jt):e.sym_next&&(ze(e,!1),e.strm.avail_out===0)?be:qt};function Ve(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var Ln=[new Ve(0,0,0,0,Rl),new Ve(4,4,8,4,fa),new Ve(4,5,16,8,fa),new Ve(4,6,32,32,fa),new Ve(4,4,16,16,Wt),new Ve(8,16,32,32,Wt),new Ve(8,16,128,128,Wt),new Ve(8,32,128,256,Wt),new Ve(32,128,258,1024,Wt),new Ve(32,258,258,4096,Wt)],v_=e=>{e.window_size=2*e.w_size,lt(e.head),e.max_lazy_match=Ln[e.level].max_lazy,e.good_match=Ln[e.level].good_length,e.nice_match=Ln[e.level].nice_length,e.max_chain_length=Ln[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=W-1,e.match_available=0,e.ins_h=0};function y_(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Wi,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(u_*2),this.dyn_dtree=new Uint16Array((2*c_+1)*2),this.bl_tree=new Uint16Array((2*l_+1)*2),lt(this.dyn_ltree),lt(this.dyn_dtree),lt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(d_+1),this.heap=new Uint16Array(2*Ma+1),lt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Ma+1),lt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Wn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Yt&&t.status!==Ba&&t.status!==Ra&&t.status!==za&&t.status!==La&&t.status!==Na&&t.status!==Tt&&t.status!==zn?1:0},zl=e=>{if(Wn(e))return Mt(e,Ke);e.total_in=e.total_out=0,e.data_type=n_;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Ba:t.wrap?Yt:Tt,e.adler=t.wrap===2?0:1,t.last_flush=-2,K1(t),we},Ll=e=>{let t=zl(e);return t===we&&v_(e.state),t},w_=(e,t)=>Wn(e)||e.state.wrap!==2?Ke:(e.state.gzhead=t,we),Nl=(e,t,n,i,r,a)=>{if(!e)return Ke;let s=1;if(t===q1&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>i_||n!==Wi||i<8||i>15||t<0||t>9||a<0||a>e_||i===8&&s!==1)return Mt(e,Ke);i===8&&(i=9);let o=new y_;return e.state=o,o.strm=e,o.status=Yt,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+W-1)/W),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,Ll(e)},S_=(e,t)=>Nl(e,t,Wi,r_,a_,t_),x_=(e,t)=>{if(Wn(e)||t>Ec||t<0)return e?Mt(e,Ke):Ke;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===zn&&t!==Ie)return Mt(e,e.avail_out===0?ha:Ke);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Re(e),e.avail_out===0)return n.last_flush=-1,we}else if(e.avail_in===0&&Tc(t)<=Tc(i)&&t!==Ie)return Mt(e,ha);if(n.status===zn&&e.avail_in!==0)return Mt(e,ha);if(n.status===Yt&&n.wrap===0&&(n.status=Tt),n.status===Yt){let r=Wi+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Ei||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=m_),r+=31-r%31,Rn(n,r),n.strstart!==0&&(Rn(n,e.adler>>>16),Rn(n,e.adler&65535)),e.adler=1,n.status=Tt,Re(e),n.pending!==0)return n.last_flush=-1,we}if(n.status===Ba){if(e.adler=0,Y(n,31),Y(n,139),Y(n,8),n.gzhead)Y(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Y(n,n.gzhead.time&255),Y(n,n.gzhead.time>>8&255),Y(n,n.gzhead.time>>16&255),Y(n,n.gzhead.time>>24&255),Y(n,n.level===9?2:n.strategy>=Ei||n.level<2?4:0),Y(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Y(n,n.gzhead.extra.length&255),Y(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=pe(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Ra;else if(Y(n,0),Y(n,0),Y(n,0),Y(n,0),Y(n,0),Y(n,n.level===9?2:n.strategy>=Ei||n.level<2?4:0),Y(n,h_),n.status=Tt,Re(e),n.pending!==0)return n.last_flush=-1,we}if(n.status===Ra){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=pe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,Re(e),n.pending!==0)return n.last_flush=-1,we;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=pe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=za}if(n.status===za){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=pe(e.adler,n.pending_buf,n.pending-r,r)),Re(e),n.pending!==0)return n.last_flush=-1,we;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,Y(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=pe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=La}if(n.status===La){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=pe(e.adler,n.pending_buf,n.pending-r,r)),Re(e),n.pending!==0)return n.last_flush=-1,we;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,Y(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=pe(e.adler,n.pending_buf,n.pending-r,r))}n.status=Na}if(n.status===Na){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Re(e),n.pending!==0))return n.last_flush=-1,we;Y(n,e.adler&255),Y(n,e.adler>>8&255),e.adler=0}if(n.status=Tt,Re(e),n.pending!==0)return n.last_flush=-1,we}if(e.avail_in!==0||n.lookahead!==0||t!==mt&&n.status!==zn){let r=n.level===0?Rl(n,t):n.strategy===Ei?p_(n,t):n.strategy===Q1?g_(n,t):Ln[n.level].func(n,t);if((r===zt||r===Jt)&&(n.status=zn),r===be||r===zt)return e.avail_out===0&&(n.last_flush=-1),we;if(r===qt&&(t===Y1?X1(n):t!==Ec&&(Ta(n,0,0,!1),t===Z1&&(lt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Re(e),e.avail_out===0))return n.last_flush=-1,we}return t!==Ie?we:n.wrap<=0?kc:(n.wrap===2?(Y(n,e.adler&255),Y(n,e.adler>>8&255),Y(n,e.adler>>16&255),Y(n,e.adler>>24&255),Y(n,e.total_in&255),Y(n,e.total_in>>8&255),Y(n,e.total_in>>16&255),Y(n,e.total_in>>24&255)):(Rn(n,e.adler>>>16),Rn(n,e.adler&65535)),Re(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?we:kc)},A_=e=>{if(Wn(e))return Ke;let t=e.state.status;return e.state=null,t===Tt?Mt(e,j1):we},b_=(e,t)=>{let n=t.length;if(Wn(e))return Ke;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==Yt||i.lookahead)return Ke;if(r===1&&(e.adler=Un(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(lt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let l=new Uint8Array(i.w_size);l.set(t.subarray(n-i.w_size,n),0),t=l,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Zt(i);i.lookahead>=W;){let l=i.strstart,c=i.lookahead-(W-1);do i.ins_h=ht(i,i.ins_h,i.window[l+W-1]),i.prev[l&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=l,l++;while(--c);i.strstart=l,i.lookahead=W-1,Zt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=W-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,we},E_=S_,k_=Nl,T_=Ll,M_=zl,R_=w_,z_=x_,L_=A_,N_=b_,O_="pako deflate (from Nodeca project)",On={deflateInit:E_,deflateInit2:k_,deflateReset:T_,deflateResetKeep:M_,deflateSetHeader:R_,deflate:z_,deflateEnd:L_,deflateSetDictionary:N_,deflateInfo:O_},I_=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),C_=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)I_(n,i)&&(e[i]=n[i])}}return e},P_=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},Ki={assign:C_,flattenChunks:P_},Ol=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Ol=!1}var Bn=new Uint8Array(256);for(let e=0;e<256;e++)Bn[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Bn[254]=Bn[254]=1;var D_=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},F_=(e,t)=>{if(t<65534&&e.subarray&&Ol)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},U_=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=Bn[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return F_(a,r)},B_=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Bn[e[n]]>t?n:t},Gn={string2buf:D_,buf2string:U_,utf8border:B_};function G_(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Il=G_,Cl=Object.prototype.toString,{Z_NO_FLUSH:H_,Z_SYNC_FLUSH:V_,Z_FULL_FLUSH:W_,Z_FINISH:K_,Z_OK:Ni,Z_STREAM_END:$_,Z_DEFAULT_COMPRESSION:X_,Z_DEFAULT_STRATEGY:Y_,Z_DEFLATED:Z_}=Nt;function Kn(e){this.options=Ki.assign({level:X_,method:Z_,chunkSize:16384,windowBits:15,memLevel:8,strategy:Y_},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Il,this.strm.avail_out=0;let n=On.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ni)throw new Error(Rt[n]);if(t.header&&On.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Gn.string2buf(t.dictionary):Cl.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=On.deflateSetDictionary(this.strm,i),n!==Ni)throw new Error(Rt[n]);this._dict_set=!0}}Kn.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?K_:H_,typeof e=="string"?n.input=Gn.string2buf(e):Cl.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===V_||a===W_)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=On.deflate(n,a),r===$_)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=On.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Ni;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Kn.prototype.onData=function(e){this.chunks.push(e)};Kn.prototype.onEnd=function(e){e===Ni&&(this.result=Ki.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ga(e,t){let n=new Kn(t);if(n.push(e,!0),n.err)throw n.msg||Rt[n.err];return n.result}function j_(e,t){return t=t||{},t.raw=!0,Ga(e,t)}function q_(e,t){return t=t||{},t.gzip=!0,Ga(e,t)}var J_=Kn,Q_=Ga,eg=j_,tg=q_,ng=Nt,ig={Deflate:J_,deflate:Q_,deflateRaw:eg,gzip:tg,constants:ng},ki=16209,rg=16191,ag=function(t,n){let i,r,a,s,o,l,c,u,m,d,h,f,y,p,v,E,w,_,S,A,b,k,T,g,x=t.state;i=t.next_in,T=t.input,r=i+(t.avail_in-5),a=t.next_out,g=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=x.dmax,c=x.wsize,u=x.whave,m=x.wnext,d=x.window,h=x.hold,f=x.bits,y=x.lencode,p=x.distcode,v=(1<<x.lenbits)-1,E=(1<<x.distbits)-1;e:do{f<15&&(h+=T[i++]<<f,f+=8,h+=T[i++]<<f,f+=8),w=y[h&v];t:for(;;){if(_=w>>>24,h>>>=_,f-=_,_=w>>>16&255,_===0)g[a++]=w&65535;else if(_&16){S=w&65535,_&=15,_&&(f<_&&(h+=T[i++]<<f,f+=8),S+=h&(1<<_)-1,h>>>=_,f-=_),f<15&&(h+=T[i++]<<f,f+=8,h+=T[i++]<<f,f+=8),w=p[h&E];n:for(;;){if(_=w>>>24,h>>>=_,f-=_,_=w>>>16&255,_&16){if(A=w&65535,_&=15,f<_&&(h+=T[i++]<<f,f+=8,f<_&&(h+=T[i++]<<f,f+=8)),A+=h&(1<<_)-1,A>l){t.msg="invalid distance too far back",x.mode=ki;break e}if(h>>>=_,f-=_,_=a-s,A>_){if(_=A-_,_>u&&x.sane){t.msg="invalid distance too far back",x.mode=ki;break e}if(b=0,k=d,m===0){if(b+=c-_,_<S){S-=_;do g[a++]=d[b++];while(--_);b=a-A,k=g}}else if(m<_){if(b+=c+m-_,_-=m,_<S){S-=_;do g[a++]=d[b++];while(--_);if(b=0,m<S){_=m,S-=_;do g[a++]=d[b++];while(--_);b=a-A,k=g}}}else if(b+=m-_,_<S){S-=_;do g[a++]=d[b++];while(--_);b=a-A,k=g}for(;S>2;)g[a++]=k[b++],g[a++]=k[b++],g[a++]=k[b++],S-=3;S&&(g[a++]=k[b++],S>1&&(g[a++]=k[b++]))}else{b=a-A;do g[a++]=g[b++],g[a++]=g[b++],g[a++]=g[b++],S-=3;while(S>2);S&&(g[a++]=g[b++],S>1&&(g[a++]=g[b++]))}}else if((_&64)===0){w=p[(w&65535)+(h&(1<<_)-1)];continue n}else{t.msg="invalid distance code",x.mode=ki;break e}break}}else if((_&64)===0){w=y[(w&65535)+(h&(1<<_)-1)];continue t}else if(_&32){x.mode=rg;break e}else{t.msg="invalid literal/length code",x.mode=ki;break e}break}}while(i<r&&a<o);S=f>>3,i-=S,f-=S<<3,h&=(1<<f)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),x.hold=h,x.bits=f},Kt=15,Mc=852,Rc=592,zc=0,_a=1,Lc=2,sg=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),og=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),cg=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),lg=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),ug=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,h=0,f=0,y=0,p=0,v=0,E=0,w,_,S,A,b,k=null,T,g=new Uint16Array(Kt+1),x=new Uint16Array(Kt+1),M=null,$,U,X;for(c=0;c<=Kt;c++)g[c]=0;for(u=0;u<i;u++)g[t[n+u]]++;for(h=l,d=Kt;d>=1&&g[d]===0;d--);if(h>d&&(h=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<d&&g[m]===0;m++);for(h<m&&(h=m),p=1,c=1;c<=Kt;c++)if(p<<=1,p-=g[c],p<0)return-1;if(p>0&&(e===zc||d!==1))return-1;for(x[1]=0,c=1;c<Kt;c++)x[c+1]=x[c]+g[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[x[t[n+u]]++]=u);if(e===zc?(k=M=s,T=20):e===_a?(k=sg,M=og,T=257):(k=cg,M=lg,T=0),E=0,u=0,c=m,b=a,f=h,y=0,S=-1,v=1<<h,A=v-1,e===_a&&v>Mc||e===Lc&&v>Rc)return 1;for(;;){$=c-y,s[u]+1<T?(U=0,X=s[u]):s[u]>=T?(U=M[s[u]-T],X=k[s[u]-T]):(U=96,X=0),w=1<<c-y,_=1<<f,m=_;do _-=w,r[b+(E>>y)+_]=$<<24|U<<16|X|0;while(_!==0);for(w=1<<c-1;E&w;)w>>=1;if(w!==0?(E&=w-1,E+=w):E=0,u++,--g[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>h&&(E&A)!==S){for(y===0&&(y=h),b+=m,f=c-y,p=1<<f;f+y<d&&(p-=g[f+y],!(p<=0));)f++,p<<=1;if(v+=1<<f,e===_a&&v>Mc||e===Lc&&v>Rc)return 1;S=E&A,r[S]=h<<24|f<<16|b-a|0}}return E!==0&&(r[b+E]=c-y<<24|64<<16|0),o.bits=h,0},In=ug,dg=0,Pl=1,Dl=2,{Z_FINISH:Nc,Z_BLOCK:mg,Z_TREES:Ti,Z_OK:Lt,Z_STREAM_END:hg,Z_NEED_DICT:fg,Z_STREAM_ERROR:Ce,Z_DATA_ERROR:Fl,Z_MEM_ERROR:Ul,Z_BUF_ERROR:_g,Z_DEFLATED:Oc}=Nt,$i=16180,Ic=16181,Cc=16182,Pc=16183,Dc=16184,Fc=16185,Uc=16186,Bc=16187,Gc=16188,Hc=16189,Oi=16190,et=16191,ga=16192,Vc=16193,pa=16194,Wc=16195,Kc=16196,$c=16197,Xc=16198,Mi=16199,Ri=16200,Yc=16201,Zc=16202,jc=16203,qc=16204,Jc=16205,va=16206,Qc=16207,el=16208,ne=16209,Bl=16210,Gl=16211,gg=852,pg=592,vg=15,yg=vg,tl=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function wg(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var Ot=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<$i||t.mode>Gl?1:0},Hl=e=>{if(Ot(e))return Ce;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=$i,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(gg),t.distcode=t.distdyn=new Int32Array(pg),t.sane=1,t.back=-1,Lt},Vl=e=>{if(Ot(e))return Ce;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Hl(e)},Wl=(e,t)=>{let n;if(Ot(e))return Ce;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Ce:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Vl(e))},Kl=(e,t)=>{if(!e)return Ce;let n=new wg;e.state=n,n.strm=e,n.window=null,n.mode=$i;let i=Wl(e,t);return i!==Lt&&(e.state=null),i},Sg=e=>Kl(e,yg),nl=!0,ya,wa,xg=e=>{if(nl){ya=new Int32Array(512),wa=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(In(Pl,e.lens,0,288,ya,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;In(Dl,e.lens,0,32,wa,0,e.work,{bits:5}),nl=!1}e.lencode=ya,e.lenbits=9,e.distcode=wa,e.distbits=5},$l=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},Ag=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,h,f,y,p=0,v,E,w,_,S,A,b,k,T=new Uint8Array(4),g,x,M=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ot(e)||!e.output||!e.input&&e.avail_in!==0)return Ce;n=e.state,n.mode===et&&(n.mode=ga),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,m=o,d=l,k=Lt;e:for(;;)switch(n.mode){case $i:if(n.wrap===0){n.mode=ga;break}for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,T[0]=c&255,T[1]=c>>>8&255,n.check=pe(n.check,T,2,0),c=0,u=0,n.mode=Ic;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ne;break}if((c&15)!==Oc){e.msg="unknown compression method",n.mode=ne;break}if(c>>>=4,u-=4,b=(c&15)+8,n.wbits===0&&(n.wbits=b),b>15||b>n.wbits){e.msg="invalid window size",n.mode=ne;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Hc:et,c=0,u=0;break;case Ic:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==Oc){e.msg="unknown compression method",n.mode=ne;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ne;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(T[0]=c&255,T[1]=c>>>8&255,n.check=pe(n.check,T,2,0)),c=0,u=0,n.mode=Cc;case Cc:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(T[0]=c&255,T[1]=c>>>8&255,T[2]=c>>>16&255,T[3]=c>>>24&255,n.check=pe(n.check,T,4,0)),c=0,u=0,n.mode=Pc;case Pc:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(T[0]=c&255,T[1]=c>>>8&255,n.check=pe(n.check,T,2,0)),c=0,u=0,n.mode=Dc;case Dc:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(T[0]=c&255,T[1]=c>>>8&255,n.check=pe(n.check,T,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=Fc;case Fc:if(n.flags&1024&&(h=n.length,h>o&&(h=o),h&&(n.head&&(b=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+h),b)),n.flags&512&&n.wrap&4&&(n.check=pe(n.check,i,h,a)),o-=h,a+=h,n.length-=h),n.length))break e;n.length=0,n.mode=Uc;case Uc:if(n.flags&2048){if(o===0)break e;h=0;do b=i[a+h++],n.head&&b&&n.length<65536&&(n.head.name+=String.fromCharCode(b));while(b&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=pe(n.check,i,h,a)),o-=h,a+=h,b)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Bc;case Bc:if(n.flags&4096){if(o===0)break e;h=0;do b=i[a+h++],n.head&&b&&n.length<65536&&(n.head.comment+=String.fromCharCode(b));while(b&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=pe(n.check,i,h,a)),o-=h,a+=h,b)break e}else n.head&&(n.head.comment=null);n.mode=Gc;case Gc:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ne;break}c=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=et;break;case Hc:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=tl(c),c=0,u=0,n.mode=Oi;case Oi:if(n.havedict===0)return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,fg;e.adler=n.check=1,n.mode=et;case et:if(t===mg||t===Ti)break e;case ga:if(n.last){c>>>=u&7,u-=u&7,n.mode=va;break}for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=Vc;break;case 1:if(xg(n),n.mode=Mi,t===Ti){c>>>=2,u-=2;break e}break;case 2:n.mode=Kc;break;case 3:e.msg="invalid block type",n.mode=ne}c>>>=2,u-=2;break;case Vc:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ne;break}if(n.length=c&65535,c=0,u=0,n.mode=pa,t===Ti)break e;case pa:n.mode=Wc;case Wc:if(h=n.length,h){if(h>o&&(h=o),h>l&&(h=l),h===0)break e;r.set(i.subarray(a,a+h),s),o-=h,a+=h,l-=h,s+=h,n.length-=h;break}n.mode=et;break;case Kc:for(;u<14;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.nlen=(c&31)+257,c>>>=5,u-=5,n.ndist=(c&31)+1,c>>>=5,u-=5,n.ncode=(c&15)+4,c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ne;break}n.have=0,n.mode=$c;case $c:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[M[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[M[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,g={bits:n.lenbits},k=In(dg,n.lens,0,19,n.lencode,0,n.work,g),n.lenbits=g.bits,k){e.msg="invalid code lengths set",n.mode=ne;break}n.have=0,n.mode=Xc;case Xc:for(;n.have<n.nlen+n.ndist;){for(;p=n.lencode[c&(1<<n.lenbits)-1],v=p>>>24,E=p>>>16&255,w=p&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(w<16)c>>>=v,u-=v,n.lens[n.have++]=w;else{if(w===16){for(x=v+2;u<x;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=v,u-=v,n.have===0){e.msg="invalid bit length repeat",n.mode=ne;break}b=n.lens[n.have-1],h=3+(c&3),c>>>=2,u-=2}else if(w===17){for(x=v+3;u<x;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=v,u-=v,b=0,h=3+(c&7),c>>>=3,u-=3}else{for(x=v+7;u<x;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=v,u-=v,b=0,h=11+(c&127),c>>>=7,u-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ne;break}for(;h--;)n.lens[n.have++]=b}}if(n.mode===ne)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ne;break}if(n.lenbits=9,g={bits:n.lenbits},k=In(Pl,n.lens,0,n.nlen,n.lencode,0,n.work,g),n.lenbits=g.bits,k){e.msg="invalid literal/lengths set",n.mode=ne;break}if(n.distbits=6,n.distcode=n.distdyn,g={bits:n.distbits},k=In(Dl,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,g),n.distbits=g.bits,k){e.msg="invalid distances set",n.mode=ne;break}if(n.mode=Mi,t===Ti)break e;case Mi:n.mode=Ri;case Ri:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,ag(e,d),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===et&&(n.back=-1);break}for(n.back=0;p=n.lencode[c&(1<<n.lenbits)-1],v=p>>>24,E=p>>>16&255,w=p&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(E&&(E&240)===0){for(_=v,S=E,A=w;p=n.lencode[A+((c&(1<<_+S)-1)>>_)],v=p>>>24,E=p>>>16&255,w=p&65535,!(_+v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=_,u-=_,n.back+=_}if(c>>>=v,u-=v,n.back+=v,n.length=w,E===0){n.mode=Jc;break}if(E&32){n.back=-1,n.mode=et;break}if(E&64){e.msg="invalid literal/length code",n.mode=ne;break}n.extra=E&15,n.mode=Yc;case Yc:if(n.extra){for(x=n.extra;u<x;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Zc;case Zc:for(;p=n.distcode[c&(1<<n.distbits)-1],v=p>>>24,E=p>>>16&255,w=p&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((E&240)===0){for(_=v,S=E,A=w;p=n.distcode[A+((c&(1<<_+S)-1)>>_)],v=p>>>24,E=p>>>16&255,w=p&65535,!(_+v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=_,u-=_,n.back+=_}if(c>>>=v,u-=v,n.back+=v,E&64){e.msg="invalid distance code",n.mode=ne;break}n.offset=w,n.extra=E&15,n.mode=jc;case jc:if(n.extra){for(x=n.extra;u<x;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ne;break}n.mode=qc;case qc:if(l===0)break e;if(h=d-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ne;break}h>n.wnext?(h-=n.wnext,f=n.wsize-h):f=n.wnext-h,h>n.length&&(h=n.length),y=n.window}else y=r,f=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do r[s++]=y[f++];while(--h);n.length===0&&(n.mode=Ri);break;case Jc:if(l===0)break e;r[s++]=n.length,l--,n.mode=Ri;break;case va:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=i[a++]<<u,u+=8}if(d-=l,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?pe(n.check,r,d,s-d):Un(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:tl(c))!==n.check){e.msg="incorrect data check",n.mode=ne;break}c=0,u=0}n.mode=Qc;case Qc:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ne;break}c=0,u=0}n.mode=el;case el:k=hg;break e;case ne:k=Fl;break e;case Bl:return Ul;case Gl:default:return Ce}return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,(n.wsize||d!==e.avail_out&&n.mode<ne&&(n.mode<va||t!==Nc))&&$l(e,e.output,e.next_out,d-e.avail_out),m-=e.avail_in,d-=e.avail_out,e.total_in+=m,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?pe(n.check,r,d,e.next_out-d):Un(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===et?128:0)+(n.mode===Mi||n.mode===pa?256:0),(m===0&&d===0||t===Nc)&&k===Lt&&(k=_g),k},bg=e=>{if(Ot(e))return Ce;let t=e.state;return t.window&&(t.window=null),e.state=null,Lt},Eg=(e,t)=>{if(Ot(e))return Ce;let n=e.state;return(n.wrap&2)===0?Ce:(n.head=t,t.done=!1,Lt)},kg=(e,t)=>{let n=t.length,i,r,a;return Ot(e)||(i=e.state,i.wrap!==0&&i.mode!==Oi)?Ce:i.mode===Oi&&(r=1,r=Un(r,t,n,0),r!==i.check)?Fl:(a=$l(e,t,n,n),a?(i.mode=Bl,Ul):(i.havedict=1,Lt))},Tg=Vl,Mg=Wl,Rg=Hl,zg=Sg,Lg=Kl,Ng=Ag,Og=bg,Ig=Eg,Cg=kg,Pg="pako inflate (from Nodeca project)",nt={inflateReset:Tg,inflateReset2:Mg,inflateResetKeep:Rg,inflateInit:zg,inflateInit2:Lg,inflate:Ng,inflateEnd:Og,inflateGetHeader:Ig,inflateSetDictionary:Cg,inflateInfo:Pg};function Dg(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Fg=Dg,Xl=Object.prototype.toString,{Z_NO_FLUSH:Ug,Z_FINISH:Bg,Z_OK:Hn,Z_STREAM_END:Sa,Z_NEED_DICT:xa,Z_STREAM_ERROR:Gg,Z_DATA_ERROR:il,Z_MEM_ERROR:Hg}=Nt;function $n(e){this.options=Ki.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Il,this.strm.avail_out=0;let n=nt.inflateInit2(this.strm,t.windowBits);if(n!==Hn)throw new Error(Rt[n]);if(this.header=new Fg,nt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Gn.string2buf(t.dictionary):Xl.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=nt.inflateSetDictionary(this.strm,t.dictionary),n!==Hn)))throw new Error(Rt[n])}$n.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?Bg:Ug,Xl.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=nt.inflate(n,s),a===xa&&r&&(a=nt.inflateSetDictionary(n,r),a===Hn?a=nt.inflate(n,s):a===il&&(a=xa));n.avail_in>0&&a===Sa&&n.state.wrap>0&&e[n.next_in]!==0;)nt.inflateReset(n),a=nt.inflate(n,s);switch(a){case Gg:case il:case xa:case Hg:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Sa))if(this.options.to==="string"){let l=Gn.utf8border(n.output,n.next_out),c=n.next_out-l,u=Gn.buf2string(n.output,l);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(l,l+c),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Hn&&o===0)){if(a===Sa)return a=nt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};$n.prototype.onData=function(e){this.chunks.push(e)};$n.prototype.onEnd=function(e){e===Hn&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Ki.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ha(e,t){let n=new $n(t);if(n.push(e),n.err)throw n.msg||Rt[n.err];return n.result}function Vg(e,t){return t=t||{},t.raw=!0,Ha(e,t)}var Wg=$n,Kg=Ha,$g=Vg,Xg=Ha,Yg=Nt,Zg={Inflate:Wg,inflate:Kg,inflateRaw:$g,ungzip:Xg,constants:Yg},{Deflate:jg,deflate:qg,deflateRaw:Jg,gzip:Qg}=ig,{Inflate:ep,inflate:tp,inflateRaw:np,ungzip:ip}=Zg,rp=jg,ap=qg,sp=Jg,op=Qg,cp=ep,lp=tp,up=np,dp=ip,mp=Nt,rl={Deflate:rp,deflate:ap,deflateRaw:sp,gzip:op,Inflate:cp,inflate:lp,inflateRaw:up,ungzip:dp,constants:mp},Ii=2023,Va=1,Wa=2,Ka=4,$a=8,Xa=16,Ya=32,Yl=64,hp=128,fp=256,Za=512,ja=1024,qa=2048,Ci=4096,Ja=8192,Pi=16384,_p=32768,Di=65536,Qa=1<<17,Fi=1<<18,Ui=1<<19,es=1<<20,ts=1<<21,ns=1<<22,gp=1<<23,is=1<<24,Bi=1<<25,rs=1<<26,as=1<<27,ss=1<<28,os=1<<29,cs=1<<30,pp=-2147483648,ls=1,us=2,ds=4,vp=1,yp=2,wp=128,$t=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),al=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),ms=class Zl{constructor(t,n){this.protocolVersion=0,this.isDemo=vp,this.stream=t,this.handler=n}translateCommand(t){if(this.protocolVersion===0&&(t===7||t===12))return F.serverdata;if(this.protocolVersion===25){if(t>=7&&t<=15)return t+5;if(t===1)return F.print;if(t===2)return F.stufftext;if(t===3)return F.sound;if(t===4)return F.nop;if(t===5)return F.disconnect;if(t===6)return F.reconnect;if(t===16)return F.temp_entity}return this.protocolVersion===Ii,t}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case F.nop:break;case F.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case F.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case F.print:this.parsePrint();break;case F.serverdata:this.parseServerData();break;case F.configstring:this.parseConfigString();break;case F.spawnbaseline:this.parseSpawnBaseline();break;case F.centerprint:this.parseCenterPrint();break;case F.download:this.parseDownload();break;case F.frame:this.parseFrame();break;case F.packetentities:this.parsePacketEntities(!1);break;case F.deltapacketentities:this.parsePacketEntities(!0);break;case F.playerinfo:this.parsePlayerState();break;case F.stufftext:this.parseStuffText();break;case F.layout:this.parseLayout();break;case F.inventory:this.parseInventory();break;case F.sound:this.parseSound();break;case F.muzzleflash:this.parseMuzzleFlash();break;case F.muzzleflash2:this.parseMuzzleFlash2();break;case F.temp_entity:this.parseTempEntity();break;case F.splitclient:this.parseSplitClient();break;case F.configblast:this.parseConfigBlast();break;case F.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case F.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case F.damage:this.parseDamage();break;case F.locprint:this.parseLocPrint();break;case F.fog:this.parseFog();break;case F.waitingforplayers:this.parseWaitingForPlayers();break;case F.bot_chat:this.parseBotChat();break;case F.poi:this.parsePoi();break;case F.help_path:this.parseHelpPath();break;case F.muzzleflash3:this.parseMuzzleFlash3();break;case F.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===Ii){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let l=0;l<o;l++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=rl.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Aa(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=rl.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Aa(r.buffer),s=new Zl(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let l={x:0,y:0,z:0};this.stream.readPos(l),o=l}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,l=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:l,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,l,c;switch(t){case z.EXPLOSION1:case z.EXPLOSION2:case z.ROCKET_EXPLOSION:case z.GRENADE_EXPLOSION:case z.ROCKET_EXPLOSION_WATER:case z.GRENADE_EXPLOSION_WATER:case z.BFG_EXPLOSION:case z.BFG_BIGEXPLOSION:case z.BOSSTPORT:case z.PLASMA_EXPLOSION:case z.PLAIN_EXPLOSION:case z.CHAINFIST_SMOKE:case z.TRACKER_EXPLOSION:case z.TELEPORT_EFFECT:case z.DBALL_GOAL:case z.NUKEBLAST:case z.WIDOWSPLASH:case z.EXPLOSION1_BIG:case z.EXPLOSION1_NP:this.stream.readPos(n);break;case z.GUNSHOT:case z.BLOOD:case z.BLASTER:case z.SHOTGUN:case z.SPARKS:case z.BULLET_SPARKS:case z.SCREEN_SPARKS:case z.SHIELD_SPARKS:case z.BLASTER2:case z.FLECHETTE:case z.MOREBLOOD:case z.ELECTRIC_SPARKS:case z.HEATBEAM_SPARKS:case z.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case z.SPLASH:case z.LASER_SPARKS:case z.WELDING_SPARKS:case z.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case z.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case z.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case z.RAILTRAIL:case z.BUBBLETRAIL:case z.BFG_LASER:case z.DEBUGTRAIL:case z.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case z.PARASITE_ATTACK:case z.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case z.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case z.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case z.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case z.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case z.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case z.WIDOWBEAMOUT:this.stream.readShort();case z.HEATBEAM:case z.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=$t();this.parseDelta($t(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s!==F.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s}`);let o=this.parsePlayerState();if(this.isDemo===wp){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===yp&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=al(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:al(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=$t();this.parseDelta($t(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&hp&&(t|=this.stream.readByte()<<8),t&_p&&(t|=this.stream.readByte()<<16),t&gp&&(t|=this.stream.readByte()<<24);let n=0;t&pp&&(n=this.stream.readByte());let i;return t&fp?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&qa&&(n.modelindex=this.stream.readByte()),r&es&&(n.modelindex2=this.stream.readByte()),r&ts&&(n.modelindex3=this.stream.readByte()),r&ns&&(n.modelindex4=this.stream.readByte()),r&Xa&&(n.frame=this.stream.readByte()),r&Qa&&(n.frame=this.stream.readShort()),r&Di&&r&Bi?n.skinnum=this.stream.readLong():r&Di?n.skinnum=this.stream.readByte():r&Bi&&(n.skinnum=this.stream.readShort()),r&Pi&&r&Ui?n.effects=this.stream.readLong():r&Pi?n.effects=this.stream.readByte():r&Ui&&(n.effects=this.stream.readShort()),r&Ci&&r&Fi?n.renderfx=this.stream.readLong():r&Ci?n.renderfx=this.stream.readByte():r&Fi&&(n.renderfx=this.stream.readShort()),r&Va&&(n.origin.x=this.stream.readCoord()),r&Wa&&(n.origin.y=this.stream.readCoord()),r&Za&&(n.origin.z=this.stream.readCoord()),r&ja&&(n.angles.x=this.stream.readAngle()),r&Ka&&(n.angles.y=this.stream.readAngle()),r&$a&&(n.angles.z=this.stream.readAngle()),r&is&&this.stream.readPos(n.old_origin),r&rs&&(n.sound=this.stream.readByte()),r&Ya?n.event=this.stream.readByte():n.event=0,r&as&&(n.solid=this.stream.readShort()),r&Ja&&(n.alpha=this.stream.readByte()/255),r&ss&&(n.scale=this.stream.readFloat()),r&os&&(n.instanceBits=this.stream.readLong()),r&cs&&(n.loopVolume=this.stream.readByte()/255),a&ls&&(n.loopAttenuation=this.stream.readByte()/255),a&us&&(n.owner=this.stream.readShort()),a&ds&&(n.oldFrame=this.stream.readShort())}},hs=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(hs||{}),jl=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new _1(e),this.state=0,this.accumulatedTime=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}new ms(t.data,this.handler).parseMessage(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var Sp=Object.defineProperty,ql=(e,t)=>{for(var n in t)Sp(e,n,{get:t[n],enumerable:!0})},_t={x:0,y:0,z:0};var TM=Math.PI/180;function Xn(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function en(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function tn(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function xp(e){return tn(e,e)}function Yi(e){return Math.sqrt(xp(e))}function Jl(e){let t=Yi(e);return t===0?e:en(e,1/t)}var Ql=0,eu=1,tu=2,Ap=Math.PI/180,MM=180/Math.PI;function fs(e,t){switch(t){case Ql:return e.x;case eu:return e.y;case tu:default:return e.z}}function _s(e){return e*Ap}function Qt(e){let t=e%360;return t<0?360+t:t}function ps(e){let t=_s(fs(e,eu)),n=_s(fs(e,Ql)),i=_s(fs(e,tu)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}var Xi=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Ye=1,gt=2;var vs=8,ys=16,bp=32;var Ep=16384;var Zi=65536,nu=1<<17,kp=1<<18,Tp=1<<19,Mp=1<<20,Rp=1<<21,zp=1<<22,Lp=1<<23,RM=1<<24,ji=1<<25,Np=1<<26,zM=1<<27,LM=1<<28,NM=1<<29,qi=1<<30,OM=1<<31;var IM=1<<25,CM=1<<28,PM=1<<29,DM=1<<30,FM=1<<31;var UM=Ye|gt,BM=Ye|Zi|gt|ji|qi,GM=Ye|Zi|gt,HM=Ye|nu|gt|ji|qi,VM=bp|vs|ys,WM=Ye|ys|vs,Op=Ye|ji|qi|gt|Np,KM=kp|Tp|Mp|Rp|zp|Lp,$M=Ye|vs|ys|ji|qi,XM=Ye|Zi|gt,YM=Ye|gt,ZM=Ye|Zi|gt|nu,jM=Op|Ep;var qM=Number.MAX_SAFE_INTEGER-1;var Yn=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Yn||{});var iu=256;var Ip=256,Zn=8192,jn=2048,qn=512,Cp=256,Pp=iu*2,Dp=256,gs=32;var ae=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Zn]="Sounds",e[e.Images=e.Sounds+jn]="Images",e[e.Lights=e.Images+qn]="Lights",e[e.ShadowLights=e.Lights+Ip]="ShadowLights",e[e.Items=e.ShadowLights+Dp]="Items",e[e.PlayerSkins=e.Items+Cp]="PlayerSkins",e[e.General=e.PlayerSkins+iu]="General",e[e.WheelWeapons=e.General+Pp]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+gs]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+gs]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+gs]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ae||{}),JM=ae.MaxConfigStrings;var Fp={};ql(Fp,{addReplayFrame:()=>Hp,createReplaySession:()=>Gp,deserializeReplay:()=>Bp,serializeReplay:()=>Up});function Up(e){return JSON.stringify(e,null,2)}function Bp(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Gp(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Hp(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var It=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(It||{});var Pe=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Pe||{});function it(e,t){return(e&t)!==0}var Ji=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(Ji||{}),Ze=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(Ze||{});function ru(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Yi(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let f=u<l?l:u;m+=f*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let h=d/u;return en(t,h)}function ws(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=tn(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function au(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Math.min(i,30),o=tn(t,n),l=s-o;if(l<=0)return t;let c=r*i*a;return c>l&&(c=l),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function su(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Yi(a);if(s>r){let o=r/s;a=en(a,o),s=r}return{wishdir:s===0?a:Jl(a),wishspeed:s}}function ou(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0};i.upmove>10?a=Xn(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Xn(a,{x:0,y:0,z:i.upmove}):a=Xn(a,{x:0,y:0,z:10});let s=Yi(a);if(s>r){let o=r/s;a=en(a,o),s=r}return s*=.5,{wishdir:s===0?a:Jl(a),wishspeed:s}}function Vp(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Wp(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Ss(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=Vp(n,i),r={...r,x:Wp(r.x)});let a=ps(r);return{viewangles:r,...a}}var cu=200,lu=200,uu=200,du=140,mu=150,hu=3;function Kp(e){let t=Qt(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function fu(e,t){return{x:Kp(e.x+t.x),y:Qt(e.y+t.y),z:Qt(e.z+t.z)}}function _u(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var Ct=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(Ct||{});var gu=0,pu=1,vu=2,yu=3,wu=4,Su=5,xu=6,Au=7,bu=8;var Eu=11,ku=12,Tu=13;function $p(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function Xp(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return($p(e,t,a)&o)>>>s}var xs=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(xs||{}),De=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(De||{}),Yp=12,Zp=9,QM=Math.ceil(Yp*Zp/16),Mu=23,Ru=2,e8=Math.ceil(Mu*Ru/16),jp={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22};function zu(e,t){let n;return typeof t=="number"?n=t:n=jp[t],n===void 0||n<0||n>=Mu?0:Xp(e,41,n,Ru)}var qp={};ql(qp,{U_ANGLE1:()=>rv,U_ANGLE2:()=>av,U_ANGLE3:()=>sv,U_EFFECTS:()=>lv,U_EVENT:()=>mv,U_FRAME:()=>ov,U_MODEL:()=>Qp,U_MODEL2:()=>fv,U_MODEL3:()=>_v,U_MODEL4:()=>gv,U_MOREBITS:()=>hv,U_NUMBER:()=>Jp,U_ORIGIN1:()=>tv,U_ORIGIN2:()=>nv,U_ORIGIN3:()=>iv,U_REMOVE:()=>pv,U_RENDERFX:()=>uv,U_SKIN:()=>cv,U_SOLID:()=>dv,U_SOUND:()=>ev});var Jp=1,Qp=2,ev=4,tv=8,nv=16,iv=32,rv=64,av=128,sv=256,ov=512,cv=1024,lv=2048,uv=4096,dv=8192,mv=16384,hv=32768,fv=1,_v=2,gv=4,pv=32768;var Lu=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=Xi[t];e.x=n[0],e.y=n[1],e.z=n[2]}};var nn=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*Xi[s][0]+t*Xi[s][1]+n*Xi[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}};var Nu=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(Nu||{}),t8=Object.keys(Nu).length/2;var vv=Object.defineProperty,yv=(e,t)=>{for(var n in t)vv(e,n,{get:t[n],enumerable:!0})},er=null,Qi=[1,1,1,1],Ou=["ch1","ch2","ch3"],As=[null,null,null],wv=e=>{for(let t=0;t<Ou.length;t++){let n=Ou[t];try{As[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{As[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
- `)}}}er=As[0]},Sv=(e,t,n)=>{if(er){let i=e.Draw_GetPicSize(er),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,er,{x:Qi[0],y:Qi[1],z:Qi[2]},Qi[3])}},Uu=new Map,xv=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Av=e=>{for(let t of xv)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Uu.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
- `)}},bv=new Map,Ev=["d_left","d_right","d_up","d_down"],kv=e=>{for(let t of Ev)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);bv.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
- `)}},Tv=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Iu=3e3,Cu=5e3,Pu=4,Mv=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Iu}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Cu}),this.notifyMessages.length>Pu&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Iu}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:Cu}),this.notifyMessages.length>Pu&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},Rv=3e3,zv=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:Rv}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},Lv=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},Nv=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=Uu.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},bs=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let l=0;l<o.length;l++){let c=parseInt(o[l]),u=r[c];u&&(s?e.SCR_DrawColorPic(t+l*a,n,u,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+l*a,n,u))}},Ov=(e,t,n,i,r,a)=>{let s=t.stats[De.STAT_HEALTH]||0,o=t.stats[De.STAT_ARMOR]||0,l=t.stats[De.STAT_AMMO]||0,c=t.stats[De.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(bs(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,u),bs(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),bs(e,a.AMMO_X,a.AMMO_Y,l,n,i)),c>0){let m=e.get_configstring(ae.Images+c);if(m){let d=e.Draw_RegisterPic(m);d&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,d)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[De.STAT_SELECTED_ICON]||0;if(m>0){let d=e.get_configstring(ae.Images+m);if(d){let h=e.Draw_RegisterPic(d);h&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,h)}}}},Es=640,rn=480,Iv=(e,t)=>{let n=e/Es,i=t/rn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(rn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(rn-450)*r,AMMO_X:e-(Es-540)*r,AMMO_Y:t-(rn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(rn-450)*r,POWERUP_X:e-(Es-610)*r,POWERUP_Y:t-(rn-450)*r,scale:r}},de=null,Rs=[],Bu=0,zs=new Mv,Gu=new zv;function Cv(e){de=e}function Pv(){if(de){Rs.length=0;for(let e=0;e<10;e++)try{let t=de.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Rs.push(t),e===0&&(Bu=de.Draw_GetPicSize(t).width)}catch{de.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
- `)}wv(de),Av(de),kv(de)}}function Dv(e,t,n,i,r,a,s){if(!de){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=de.CL_ClientTime(),l=Iv(n.width,n.height);if(Lv(de,s,n.width,n.height),Ov(de,s,Rs,Bu,o,l),Nv(de,s,n.width,n.height),Tv(de,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
- `),u=n.height/2-c.length*10;for(let m of c)de.SCR_DrawCenterString(u,m),u+=16}zs.drawCenterPrint(de,o,l),zs.drawNotifications(de,o),Gu.drawSubtitles(de,o),Sv(de,n.width,n.height)}function nr(){return zs}function Fv(){return Gu}function Uv(e,t,n){t>=ae.Models&&t<ae.Models+Zn?e.RegisterModel(n):t>=ae.Sounds&&t<ae.Sounds+jn?e.RegisterSound(n):t>=ae.Images&&t<ae.Images+qn&&e.Draw_RegisterPic(n)}var ks=1e-6,tr=typeof Float32Array<"u"?Float32Array:Array,Du=Math.random;function Ts(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Bv={};yv(Bv,{add:()=>Kv,angle:()=>fy,bezier:()=>sy,ceil:()=>$v,clone:()=>Gv,copy:()=>Vv,create:()=>Hu,cross:()=>ny,dist:()=>xy,distance:()=>Xu,div:()=>Sy,divide:()=>$u,dot:()=>Ls,equals:()=>vy,exactEquals:()=>py,floor:()=>Xv,forEach:()=>ky,fromValues:()=>Hv,hermite:()=>ay,inverse:()=>ey,len:()=>by,length:()=>Vu,lerp:()=>iy,max:()=>Zv,min:()=>Yv,mul:()=>wy,multiply:()=>Ku,negate:()=>Qv,normalize:()=>ty,random:()=>oy,rotateX:()=>dy,rotateY:()=>my,rotateZ:()=>hy,round:()=>jv,scale:()=>qv,scaleAndAdd:()=>Jv,set:()=>Wv,slerp:()=>ry,sqrDist:()=>Ay,sqrLen:()=>Ey,squaredDistance:()=>Yu,squaredLength:()=>Zu,str:()=>gy,sub:()=>yy,subtract:()=>Wu,transformMat3:()=>ly,transformMat4:()=>cy,transformQuat:()=>uy,zero:()=>_y});function Hu(){var e=new tr(3);return tr!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Gv(e){var t=new tr(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Vu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Hv(e,t,n){var i=new tr(3);return i[0]=e,i[1]=t,i[2]=n,i}function Vv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Wv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Kv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Wu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Ku(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function $u(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function $v(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Xv(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Yv(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function Zv(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function jv(e,t){return e[0]=Ts(t[0]),e[1]=Ts(t[1]),e[2]=Ts(t[2]),e}function qv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Jv(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function Xu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function Yu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function Zu(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Qv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function ey(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function ty(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Ls(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function ny(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function iy(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function ry(e,t,n,i){var r=Math.acos(Math.min(Math.max(Ls(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function ay(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function sy(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function oy(e,t){t=t===void 0?1:t;var n=Du()*2*Math.PI,i=Du()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function cy(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function ly(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function uy(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function dy(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function my(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function hy(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function fy(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&Ls(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function _y(e){return e[0]=0,e[1]=0,e[2]=0,e}function gy(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function py(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function vy(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=ks*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=ks*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=ks*Math.max(1,Math.abs(r),Math.abs(o))}var yy=Wu,wy=Ku,Sy=$u,xy=Xu,Ay=Yu,by=Vu,Ey=Zu,ky=(function(){var e=Hu();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var Ty={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function My(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function Ry(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function zy(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Ry(t,i,r),s=e+a,l=it(n,Pe.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var ir=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...Ty,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=ps(Ss({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??_t}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=it(e.pmFlags,Pe.OnGround),s=zy(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=tn(e.velocity,n)*this.settings.runPitch,l=tn(e.velocity,i),c=l<0?-1:1,m=Math.abs(l)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,h=this.bobFracSin*this.settings.bobRoll*r;it(e.pmFlags,Pe.Ducked)&&a&&(d*=6,h*=6),o+=Math.min(d,this.settings.maxBobAngle),h=Math.min(h,this.settings.maxBobAngle),this.bobCycle&1&&(h=-h),m+=h;let f=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),y=0,p=0,v=0,E=0,w=0;if(this.kick&&this.kick.remainingMs>0){let b=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));y+=b*this.kick.pitch,p+=b*this.kick.roll,this.kick.origin&&(v+=b*this.kick.origin.x,E+=b*this.kick.origin.y,w+=b*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let _={x:o+y,y:0,z:m+p},S={x:v,y:E,z:f+w},A={angles:_,offset:My(S),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=A,A}},Ly={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},ju=800,je={x:0,y:0,z:0},Ny=250;function Pt(){return{origin:je,velocity:je,viewAngles:je,onGround:!1,pmFlags:Pe.OnGround,pmType:Ji.Normal,waterLevel:It.None,gravity:ju,deltaAngles:je,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:je,kick_origin:je,gunoffset:je,gunangles:je,gunindex:0,pm_time:0,pm_type:Ji.Normal,pm_flags:Pe.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function Fu(e){return e?{...Pt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:je,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Pt()}function Te(e,t,n){return e+(t-e)*n}function Ms(e,t,n){let i=Qt(t-e);return i>180&&(i-=360),Qt(e+i*n)}function an(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Te(e.origin.x,t.origin.x,i),y:Te(e.origin.y,t.origin.y,i),z:Te(e.origin.z,t.origin.z,i)},velocity:{x:Te(e.velocity.x,t.velocity.x,i),y:Te(e.velocity.y,t.velocity.y,i),z:Te(e.velocity.z,t.velocity.z,i)},viewAngles:{x:Ms(e.viewAngles.x,t.viewAngles.x,i),y:Ms(e.viewAngles.y,t.viewAngles.y,i),z:Ms(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Te(e.damageAlpha,t.damageAlpha,i),blend:[Te(e.blend[0],t.blend[0],i),Te(e.blend[1],t.blend[1],i),Te(e.blend[2],t.blend[2],i),Te(e.blend[3],t.blend[3],i)],health:Te(e.health||0,t.health||0,i),armor:Te(e.armor||0,t.armor||0,i),ammo:Te(e.ammo||0,t.ammo||0,i)}}function Oy(e,t,n,i){let r=Math.min(Math.max(t.msec,0),Ny)/1e3,a=it(e.pmFlags,Pe.OnGround),s=it(e.pmFlags,Pe.OnLadder),o=ru({velocity:e.velocity,frametime:r,onGround:a,groundIsSlick:n.groundIsSlick,onLadder:s,waterlevel:e.waterLevel,pmFriction:n.pmFriction,pmStopSpeed:n.pmStopSpeed,pmWaterFriction:n.pmWaterFriction}),{viewangles:l,forward:c,right:u}=Ss({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??je}),m=e.waterLevel>It.None?ou({forward:c,right:u,cmd:t,maxSpeed:n.pmWaterSpeed}):su({forward:c,right:u,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>It.None)o=ws({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmWaterAccelerate,frametime:r});else if(a||s){let f=it(e.pmFlags,Pe.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,y=m.wishspeed>f?{wishdir:m.wishdir,wishspeed:f}:m;o=ws({velocity:o,wishdir:y.wishdir,wishspeed:y.wishspeed,accel:n.pmAccelerate,frametime:r})}else o=au({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmAirAccelerate,frametime:r}),o={...o,z:o.z-(e.gravity??ju)*r};let h=i(e.origin,Xn(e.origin,en(o,r))).endpos;return{...e,origin:h,velocity:o,viewAngles:l}}var rr=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:Pt()},this.commands=[],this.predicted=Pt(),this.settings={...Ly,...t},this.trace=e,this.predicted=this.baseFrame.state??Pt()}setAuthoritative(e){let t=Fu(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=Fu(this.baseFrame.state);for(let t of this.commands)e=Oy(e,t,this.settings,this.trace);return this.predicted=e,e}},Ae=null;function Iy(){if(!Ae){console.error("CGame Init: cgame imports not set");return}Ae.Com_Print(`===== CGame Initialization =====
175
- `),Cv(Ae),Ae.Com_Print(`CGame initialized
176
- `)}function Cy(){Ae&&Ae.Com_Print(`CGame shutdown
177
- `),Ae=null}function Py(e,t,n,i,r,a,s){Dv(e,t,n,i,r,a,s)}function Dy(){Pv()}function Fy(e){return 0}function Uy(e){return 0}function By(e){return[]}function Gy(e,t){return 0}function Hy(e){return 0}function Vy(e){return 0}function Wy(e){}function Ky(e,t){Ae&&Uv(Ae,e,t)}function $y(e,t,n){if(!Ae)return;nr().setCenterPrint(e,Ae.CL_ClientTime())}function Xy(e,t,n){if(!Ae)return;nr().addNotification(t,n,Ae.CL_ClientTime())}function Yy(e){nr().clearNotifications()}function Zy(e){nr().clearCenterPrint()}function jy(e,t){if(!Ae)return;Fv().addSubtitle(e,Ae.CL_ClientTime())}function qy(e){return{x:0,y:0,z:0}}function Jy(e){return null}function qu(e){return Ae=e,{Init:Iy,Shutdown:Cy,DrawHUD:Py,TouchPics:Dy,LayoutFlags:Fy,GetActiveWeaponWheelWeapon:Uy,GetOwnedWeaponWheelWeapons:By,GetWeaponWheelAmmoCount:Gy,GetPowerupWheelCount:Hy,GetHitMarkerDamage:Vy,Pmove:Wy,ParseConfigString:Ky,ParseCenterPrint:$y,NotifyMessage:Xy,ShowSubtitle:jy,ClearNotify:Yy,ClearCenterprint:Zy,GetMonsterFlashOffset:qy,GetExtension:Jy}}function Ju(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let l=e.host.cvars.get(a);return l||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,m=n.get(u);m&&r()?.drawPic(a,s,m,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let l=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,l)=>e.engine.trace(a,s,o,l)}}var sn=null,pt=0;var Jn=!0,Qn=["ch1","ch2","ch3"],on=[null,null,null],Qu=async(e,t)=>{for(let n=0;n<Qn.length;n++){let i=Qn[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);on[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");on[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}sn=on[0]};var ed=()=>{if(Jn?(pt++,pt>=Qn.length&&(Jn=!1,pt=0)):(Jn=!0,pt=0),Jn){if(sn=on[pt],!sn){let e=!1;for(let t=0;t<Qn.length;t++){let n=(pt+t)%Qn.length;if(on[n]){pt=n,sn=on[n],e=!0;break}}e||(sn=null)}}else sn=null;return Jn?pt:-1};var Qy=Object.defineProperty,dd=(e,t)=>{for(var n in t)Qy(e,n,{get:t[n],enumerable:!0})},G={x:0,y:0,z:0};var h8=Math.PI/180;function ew(e){return{x:e.x,y:e.y,z:e.z}}function H(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function N(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function V(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function md(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function tw(e){return md(e,e)}function _n(e){return Math.sqrt(tw(e))}function D(e){let t=_n(e);return t===0?e:V(e,1/t)}function nw(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function iw(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}var Xs=0,Ys=1,hd=2,rw=Math.PI/180,aw=180/Math.PI;function ti(e,t){switch(t){case Xs:return e.x;case Ys:return e.y;case hd:default:return e.z}}function sr(e){return e*rw}function Fs(e){return e*aw}function Us(e){let t=e%360;return t<0?360+t:t}function Q(e){let t=sr(ti(e,Ys)),n=sr(ti(e,Xs)),i=sr(ti(e,hd)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}function fr(e){let t=ti(e,Xs),n=ti(e,Ys);if(t===0)return n===0?0:n>0?90:270;let i=Fs(Math.atan2(n,t));return i<0?i+360:i}function gn(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=Fs(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=Fs(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var qe=624,sw=397,ow=2567483615,cw=2147483648,lw=2147483647,Ns=4294967296,uw=class{constructor(e=5489){this.state=new Uint32Array(qe),this.index=qe,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<qe;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=qe}nextUint32(){this.index>=qe&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<qe;e++){let t=this.state[e]&cw|this.state[(e+1)%qe]&lw,n=this.state[(e+sw)%qe]^t>>>1;(t&1)!==0&&(n^=ow),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==qe)throw new Error(`Expected ${qe} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},fd=class{constructor(e={}){this.mt=new uw(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/Ns}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=Ns-Ns%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function Zs(e){return new fd(e)}var Me=1,xt=2;var js=8,qs=16,dw=32;var mw=16384;var _r=65536,_d=1<<17,hw=1<<18,fw=1<<19,_w=1<<20,gw=1<<21,pw=1<<22,vw=1<<23,f8=1<<24,Ft=1<<25,gr=1<<26,_8=1<<27,g8=1<<28,p8=1<<29,pn=1<<30,v8=1<<31;var y8=1<<25,w8=1<<28,S8=1<<29,x8=1<<30,A8=1<<31,yw=Me|xt,b8=Me|_r|xt|Ft|pn,E8=Me|_r|xt,cr=Me|_d|xt|Ft|pn,ww=dw|js|qs,k8=Me|qs|js,wt=Me|Ft|pn|xt|gr,T8=hw|fw|_w|gw|pw|vw,M8=Me|js|qs|Ft|pn,R8=Me|_r|xt,z8=Me|xt,L8=Me|_r|xt|_d,N8=wt|mw,O8=Number.MAX_SAFE_INTEGER-1;var gd=256,Sw=256,xw=8192,Aw=2048,bw=512,Ew=256,kw=gd*2,Tw=256,Os=32,pd=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+xw]="Sounds",e[e.Images=e.Sounds+Aw]="Images",e[e.Lights=e.Images+bw]="Lights",e[e.ShadowLights=e.Lights+Sw]="ShadowLights",e[e.Items=e.ShadowLights+Tw]="Items",e[e.PlayerSkins=e.Items+Ew]="PlayerSkins",e[e.General=e.PlayerSkins+gd]="General",e[e.WheelWeapons=e.General+kw]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Os]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Os]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Os]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(pd||{}),I8=pd.MaxConfigStrings,Mw={};dd(Mw,{addReplayFrame:()=>Nw,createReplaySession:()=>Lw,deserializeReplay:()=>zw,serializeReplay:()=>Rw});function Rw(e){return JSON.stringify(e,null,2)}function zw(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Lw(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Nw(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Se=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(Se||{}),xe=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(xe||{});var j=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(j||{});var Ow=12,Iw=9,C8=Math.ceil(Ow*Iw/16),Cw=23,Pw=2,P8=Math.ceil(Cw*Pw/16);var Dw={};dd(Dw,{U_ANGLE1:()=>Ww,U_ANGLE2:()=>Kw,U_ANGLE3:()=>$w,U_EFFECTS:()=>Zw,U_EVENT:()=>Jw,U_FRAME:()=>Xw,U_MODEL:()=>Uw,U_MODEL2:()=>eS,U_MODEL3:()=>tS,U_MODEL4:()=>nS,U_MOREBITS:()=>Qw,U_NUMBER:()=>Fw,U_ORIGIN1:()=>Gw,U_ORIGIN2:()=>Hw,U_ORIGIN3:()=>Vw,U_REMOVE:()=>iS,U_RENDERFX:()=>jw,U_SKIN:()=>Yw,U_SOLID:()=>qw,U_SOUND:()=>Bw});var Fw=1,Uw=2,Bw=4,Gw=8,Hw=16,Vw=32,Ww=64,Kw=128,$w=256,Xw=512,Yw=1024,Zw=2048,jw=4096,qw=8192,Jw=16384,Qw=32768,eS=1,tS=2,nS=4,iS=32768;var I=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="super_shotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="hand_grenade",e.GrenadeLauncher="grenade_launcher",e.RocketLauncher="rocket_launcher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e))(I||{}),B=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(B||{}),D8=Object.keys(B).length/2,ee=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(ee||{});function St(e,t){return(e&t)!==0}var vn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(vn||{}),rS={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function aS(e,t,n){if(e<=0||St(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=rS[n.armorType],r=St(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function sS(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(St(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=Q(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},l=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&l>0){let p={x:o.x/l,y:o.y/l,z:o.z/l};if(p.x*s.x+p.y*s.y+p.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,u=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*u;St(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let h=d/u;St(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let f=Math.max(u,h),y=Math.max(0,r.cellCount-f);return{saved:d,remainingCells:y}}var F8={[ee.Shells]:{id:ee.Shells,ammoType:B.Shells,quantity:10,weaponAmmo:!1},[ee.Bullets]:{id:ee.Bullets,ammoType:B.Bullets,quantity:50,weaponAmmo:!1},[ee.Rockets]:{id:ee.Rockets,ammoType:B.Rockets,quantity:5,weaponAmmo:!1},[ee.Grenades]:{id:ee.Grenades,ammoType:B.Grenades,quantity:5,weaponAmmo:!0},[ee.Cells]:{id:ee.Cells,ammoType:B.Cells,quantity:50,weaponAmmo:!1},[ee.Slugs]:{id:ee.Slugs,ammoType:B.Slugs,quantity:10,weaponAmmo:!1},[ee.MagSlugs]:{id:ee.MagSlugs,ammoType:B.MagSlugs,quantity:10,weaponAmmo:!1},[ee.Flechettes]:{id:ee.Flechettes,ammoType:B.Flechettes,quantity:50,weaponAmmo:!1},[ee.Disruptor]:{id:ee.Disruptor,ammoType:B.Disruptor,quantity:15,weaponAmmo:!1},[ee.Tesla]:{id:ee.Tesla,ammoType:B.Tesla,quantity:5,weaponAmmo:!1},[ee.Trap]:{id:ee.Trap,ammoType:B.Trap,quantity:5,weaponAmmo:!1},[ee.Prox]:{id:ee.Prox,ammoType:B.Prox,quantity:5,weaponAmmo:!1}};var he=(e=>(e.Blue="blue",e.Red="red",e.Green="green",e.Yellow="yellow",e.DataCD="data_cd",e.PowerCube="power_cube",e.ExplosiveCharges="explosive_charges",e.PowerCore="power_core",e.Pyramid="pyramid",e.DataSpinner="data_spinner",e.Pass="pass",e.CommanderHead="commander_head",e.Airstrike="airstrike",e.NukeContainer="nuke_container",e.Nuke="nuke",e.RedFlag="red_flag",e.BlueFlag="blue_flag",e))(he||{});var oS={...G};var U8=Object.freeze({aiflags:0,last_sighting:oS,trail_time:0,pausetime:0});var Js=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],cS=20,lS=440,uS=940,Is=32,dS=1<<24,lr=1;function td(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function At(e,t){let n=td(e),i=td(t),r=iw(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function mS(e){return e<=cS?"melee":e<=lS?"near":e<=uS?"mid":"far"}function ii(e,t){let{forward:n}=Q(e.angles),i=D(N(t.origin,e.origin)),r=md(i,n);return(e.spawnflags&lr)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function yn(e,t,n,i){if((t.flags&dS)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}function hS(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=fr(n)}function vd(e){e.angles.y=Us(e.ideal_yaw)}function fS(e,t,n){e.enemy&&(e.goalentity=e.enemy,hS(e,e.enemy),vd(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function _S(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){fS(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function gS(e,t,n,i){let r=At(e,t),a=mS(r);return a==="far"||t.light_level<=5||!yn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||ii(e,t):a==="mid"?ii(e,t):!0}function pS(e,t,n,i,r){if((e.spawnflags&lr)!==0){if(!yn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=N(t.origin,e.origin);return _n(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=fr(a),vd(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function vS(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&lr)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&lr)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function yS(e){return(e.flags&Is)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&Is)!==0:!!(e.enemy&&(e.enemy.flags&Is)!==0)}function Qs(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=vS(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(yS(a))return!1;if(s){if(!pS(e,a,t,r,i))return!1}else{if(!gS(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return _S(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function yd(e,t){if(t===0)return{x:0,y:0,z:0};let n=sr(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function eo(e,t,n){let i=yd(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function si(e,t){let n=Us(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=Us(n+a)}function ue(e,t){eo(e,e.angles.y,t)}function pr(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=fr(n)}function se(e,t,n){Qs(e,n.targetAwareness,n,n.trace)||si(e,t)}function fe(e,t,n,i){if(!Qs(e,i.targetAwareness,i,i.trace)&&(pr(e,e.goalentity),si(e,n),t!==0&&eo(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&At(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function me(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Qs(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&pr(e,e.enemy??e.goalentity),si(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&wd(e,e.angles.y,t,i)}function wS(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&pr(e,t),si(e,i),n!==0&&eo(e,e.angles.y,n)}function oe(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&pr(e,e.enemy),si(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&wd(e,e.angles.y,t,i)}function SS(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,cr);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&ww?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function xS(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,cr).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,cr).fraction<1))return!0;return!1}function wd(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=yd(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,cr).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!xS(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&SS(e,i),!0)}var AS=Js.filter(e=>e.save||e.type==="callback"),B8=new Map(AS.map(e=>[e.name,e]));var G8=1/40;function bS(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var ES=1;function kS(e,t){if(!e.client)return;let n=bS(e.client.weaponStates,I.Chaingun);!(e.client.buttons&ES)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var H8={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:I.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:I.Shotgun,ammoType:B.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:I.SuperShotgun,ammoType:B.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:I.Machinegun,ammoType:B.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:kS},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:I.Chaingun,ammoType:B.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:I.HandGrenade,ammoType:B.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:I.GrenadeLauncher,ammoType:B.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:I.RocketLauncher,ammoType:B.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:I.HyperBlaster,ammoType:B.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:I.Railgun,ammoType:B.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:I.BFG10K,ammoType:B.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:I.IonRipper,ammoType:B.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:I.Phalanx,ammoType:B.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:I.PlasmaBeam,ammoType:B.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:I.EtfRifle,ammoType:B.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:I.ProxLauncher,ammoType:B.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};function TS(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function MS(e,t,n,i,r){if(St(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=D(n),c=V(o,(t===e?1600:500)*i/s);return e.velocity=H(e.velocity,c),c}function RS(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=sS(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=aS(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function nd(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function _e(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=TS(n,u),h=s*d,f=o*d;if(!St(l,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let p=MS(e,n,i,f,l),[v,E,w,_,S]=RS(e,r,a,h,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&h>0&&(v=e.health+100,E=0,w=0),e.powerArmor&&_!==void 0&&(e.powerArmor.cellCount=_),e.regularArmor&&(e.regularArmor.armorCount=S??e.regularArmor.armorCount);let A=v;A>0&&(e.health-=A,m&&!St(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,Se.temp_entity,xe.BLOOD,r,a));let b=e.health<=0;return b?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,A,r,c):A>0&&e.pain&&e.pain(e,n,o,A,c),{take:A,psave:E,asave:w,knocked:p,killed:b,remainingCells:_,remainingArmor:S}}function to(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=nd(t),h=c.canDamage??(()=>!0);for(let f of e){if(f===r||!f.takedamage||!h(f,t))continue;let y=f.mins&&f.maxs?nw(d,H(f.origin,f.mins),H(f.origin,f.maxs)):nd(f),p=N(d,y),v=_n(p);if(a>0&&v>a)continue;let E=i-.5*v;if(E<=0)continue;let w=f===n?E*.5:E,_=D(N(f.origin,d)),S=_e(f,t,n,_,y,_,w,w,s|1,o,l,u);m.push({target:f,result:S,appliedDamage:w})}return m}var V8=Zs();var vr=.1,ni=80;var Sd=Zs();function zS(){return Sd.frandom()}function xd(e,t){return Math.floor(Sd.frandom()*(t-e+1)+e)}function dn(e,t,n){se(e,vr,n)}function Fe(e,t,n){fe(e,t,vr,n)}function cn(e,t,n){me(e,t,vr,n)}function re(e,t,n){oe(e,t,vr,n)}function P(e,t,n){ue(e,t)}var ri={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function He(e,t){t.sound(e,2,ri.footstep,1,1,0)}function ur(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function LS(e,t){}var no,Ad,NS,bd,OS,IS,CS,PS,DS,Ed,FS;function US(e,t){ur(e,no)}function BS(e,t){e.monsterinfo.aiflags&1||e.enemy||zS()>.15||(ur(e,Ad),t.sound(e,1,ri.idle,1,2,0))}var GS=[{ai:dn,dist:0,think:BS},{ai:dn,dist:0},{ai:dn,dist:0},{ai:dn,dist:0},{ai:dn,dist:0}];no={firstframe:0,lastframe:4,frames:GS,endfunc:null};var HS=Array.from({length:20},()=>({ai:dn,dist:0}));Ad={firstframe:5,lastframe:24,frames:HS,endfunc:US};var VS=[{ai:Fe,dist:9.1},{ai:Fe,dist:6.3},{ai:Fe,dist:4.9},{ai:Fe,dist:6.7,think:He},{ai:Fe,dist:6},{ai:Fe,dist:8.2},{ai:Fe,dist:7.2},{ai:Fe,dist:6.1},{ai:Fe,dist:4.9},{ai:Fe,dist:4.7,think:He},{ai:Fe,dist:4.7}];NS={firstframe:25,lastframe:35,frames:VS,endfunc:null};var WS=[{ai:cn,dist:21},{ai:cn,dist:11,think:He},{ai:cn,dist:21},{ai:cn,dist:25,think:LS},{ai:cn,dist:18,think:He},{ai:cn,dist:19}];bd={firstframe:36,lastframe:41,frames:WS,endfunc:null};function oi(e,t){e.monsterinfo.aiflags&1?ur(e,no):ur(e,bd)}function kd(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=Q(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},l={x:a.x+s.x*ni,y:a.y+s.y*ni,z:a.z+s.z*ni},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(_e(c.ent,e,e,s,c.endpos,c.plane?.normal||G,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function KS(e,t){kd(e,{x:ni,y:0,z:-24},xd(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Td(e,t){t.sound(e,1,ri.punch,1,1,0)}var $S=[{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0,think:Td},{ai:re,dist:0,think:KS},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0}];OS={firstframe:67,lastframe:74,frames:$S,endfunc:oi};function XS(e,t){kd(e,{x:ni,y:0,z:-4},xd(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var YS=[{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0,think:He},{ai:re,dist:0},{ai:re,dist:0,think:Td},{ai:re,dist:0},{ai:re,dist:0,think:XS},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0}];IS={firstframe:75,lastframe:86,frames:YS,endfunc:oi};function ZS(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let l=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-l/i);if(c<=0)continue;let u=Math.max(1,n*c*c),m=r*c*c,d=D(N(o.origin,e.origin));_e(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function io(e,t){t.sound(e,1,ri.thud,1,1,0),t.sound(e,2,ri.explod,.75,1,0);let{forward:n,right:i}=Q(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,Se.temp_entity,xe.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},ZS(e,e,8,165,300,t)}function jS(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,io(e,r))}function ro(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function qS(e,t){if(!e.enemy)return;let n=N(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=D({x:n.x,y:n.y,z:0}),s=gn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,m)=>{jS(l,c,u,m,t),l.groundentity&&(l.frame=104,io(l,t),l.touch=void 0)},ro(e,t)}function JS(e,t){if(ro(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(io(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var QS=[{ai:re,dist:0},{ai:re,dist:0},{ai:P,dist:0,think:qS},{ai:P,dist:0,think:ro},{ai:P,dist:0,think:JS},{ai:P,dist:0,think:He},{ai:P,dist:0},{ai:P,dist:0,think:He},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0,think:He}];CS={firstframe:87,lastframe:109,frames:QS,endfunc:oi};var ex=[{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0}];PS={firstframe:149,lastframe:152,frames:ex,endfunc:oi};var tx=Array.from({length:20},(e,t)=>({ai:P,dist:0,think:t%5===4?He:void 0}));DS={firstframe:153,lastframe:172,frames:tx,endfunc:oi};function Md(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Ed.lastframe,e.nextthink=-1,e.deadflag=2}var nx=[{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0,think:He},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0}];Ed={firstframe:173,lastframe:185,frames:nx,endfunc:Md};var ix=[{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0,think:He},{ai:P,dist:0},{ai:P,dist:0},{ai:P,dist:0}];FS={firstframe:186,lastframe:193,frames:ix,endfunc:Md};function rx(e,t,n,i,r,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&_e(u,c,c.owner,c.velocity,c.origin,m?m.normal:G,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(c.origin,120);to(h,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Se.temp_entity,xe.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function Rd(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let l=c=>{let u=e.findByRadius(c.origin,120);to(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Se.temp_entity,xe.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,m,d)=>{if(u!==c.owner){if(u&&u.takedamage){l(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{l(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function zd(e,t,n,i,r,a,s){let o=e.spawn();s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,m)=>{if(c!==l.owner){if(c&&c.takedamage)_e(c,l,l.owner,l.velocity,l.origin,u?u.normal:G,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=xe.BLASTER;s===58&&(d=xe.BLUEHYPERBLASTER),e.multicast(l.origin,1,Se.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o)}function ax(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,l,c,u)=>{if(l!==o.owner){if(l&&l.takedamage){_e(l,o,o.owner,o.velocity,o.origin,c?c.normal:G,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,Se.temp_entity,xe.WELDING_SPARKS,o.origin,G,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,Se.temp_entity,xe.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,Se.temp_entity,xe.WELDING_SPARKS,o.origin,G,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function sx(e,t,n,i,r,a){zd(e,t,n,i,r,a,58)}function ox(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=D(N(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},l=16,c=[],u=[],m={...r};try{for(let h=0;h<l;h++){let f=e.trace(m,null,null,o,t,Me|Ft|pn|gr);if(!f.ent||f.fraction>=1||(f.ent.takedamage&&f.ent!==t.owner&&_e(f.ent,t,t.owner,s,f.endpos,G,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(f.ent.svflags&4)&&!f.ent.client&&f.ent.classname!=="misc_explobox"))break;c.push(f.ent),u.push(f.ent.solid),f.ent.solid=0,m={...f.endpos}}let d=e.trace(r,null,null,o,t,Me);e.multicast(t.origin,2,Se.temp_entity,xe.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function cx(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,yw).fraction<1||ox(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function lx(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=N(e.origin,r),s=_n(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&_e(i,e,e.owner,e.velocity,r,G,Math.floor(l),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function ux(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,m)=>{if(c===l.owner)return;c&&c.takedamage&&_e(c,l,l.owner,l.velocity,l.origin,u?u.normal:G,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);to(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,Se.temp_entity,xe.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=G,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(h,f)=>lx(h,f),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>cx(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function id(){return 2*Math.random()-1}function dr(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let h=gn(n),{right:f,up:y}=Q(h),p=id()*a,v=id()*s;u={x:n.x+f.x*p+y.x*v,y:n.y+f.y*p+y.y*v,z:n.z+f.z*p+y.z*v},u=D(u)}let m=H(t,V(u,8192)),d=l.trace(t,m,G,G,e,wt);!d.ent||d.fraction===1||_e(d.ent,e,e,u,d.endpos,d.plane?.normal||G,i,r,18,c,l.timeSeconds)}var Dt=dr;function dx(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Dt(e,t,n,i,r,a,s,l,c,u)}function ot(e,t,n,i,r,a,s,o,l=1){zd(o,e,t,n,i,r,l)}function mx(e,t,n,i,r,a,s,o){sx(o,e,t,n,i,r)}function hx(e,t,n,i,r,a,s,o){ax(o,e,t,n,i,r)}function fx(e,t,n,i,r,a,s){Rd(s,e,t,n,i,r)}function ci(e,t,n,i,r,a,s){rx(s,e,t,n,i,120,r)}function Ld(e,t,n,i,r,a,s,o,l){ux(l,e,t,n,i,r,s)}function Nd(e,t,n,i,r,a,s){let o=H(t,V(n,8192)),l=s.trace(t,o,G,G,e,wt);s.multicast(t,2,Se.temp_entity,xe.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&_e(l.ent,e,e,n,l.endpos,G,i,r,6,11,s.timeSeconds)}function li(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=Q(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=H(s,V(a,o)),c=r.trace(s,l,G,G,e,wt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=D(N(c.endpos,s));return _e(c.ent,e,e,u,c.endpos,c.plane?.normal||G,n,i,0,0,r.timeSeconds),!0}return!1}function _x(e,t,n,i,r,a,s,o){ci(e,t,n,i,r,a,o)}function rd(e,t){let n={...e.origin},i=H(n,V(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,G,G,e,Me|Ft|pn|gr);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&_e(c.ent,e,e.owner,e.movedir,c.endpos,G,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,Se.temp_entity,xe.LASER_SPARKS,10,c.endpos,c.plane?.normal||G,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function gx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Bs(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?gx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),rd(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),rd(a,r)}var ao=.1,px={x:0,y:30,z:-15},vx={x:0,y:15,z:0},yx={x:0,y:-15,z:0},wx={x:0,y:-30,z:-15},Sx={x:30,y:20,z:0},xx={x:30,y:-20,z:0};function Ax(e,t,n){se(e,ao,n)}function bx(e,t,n){fe(e,t,ao,n)}function yr(e,t,n){oe(e,t,ao,n)}function so(e,t,n){ue(e,t)}var oo,Od,Id,Ex,Cd,Pd,kx,Tx,Mx,Dd;function Rx(e){e.monsterinfo.current_move=oo}function zx(e){e.monsterinfo.current_move=Od}function ui(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Id:e.monsterinfo.current_move=oo}function Fd(e){e.monsterinfo.current_move=Cd}function Lx(e){e.enemy&&ii(e,e.enemy)&&Math.random()<=.7?Fd(e):e.monsterinfo.current_move=Pd}function Gs(e,t){let{forward:n,right:i,up:r}=Q(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function Nx(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Gs(e,Sx),i=D(N(e.enemy.origin,n));Dt(e,n,i,6,4,.1,.05,0,t,4);let r=Gs(e,xx),a=D(N(e.enemy.origin,r));Dt(e,r,a,6,4,.1,.05,0,t,4)}function Ox(e,t){if(!e.enemy)return;let n=[px,vx,yx,wx],i=n[Math.floor(Math.random()*n.length)],r=Gs(e,i),a=D(N(e.enemy.origin,r));ci(e,r,a,50,500,0,t)}function Ix(e){e.monsterinfo.nextframe=Dd.lastframe,e.nextthink=-1}var Ud=Array.from({length:20},()=>({ai:bx,dist:10}));Od={firstframe:0,lastframe:19,frames:Ud,endfunc:zx};Id={firstframe:0,lastframe:19,frames:Ud,endfunc:ui};var Cx=Array.from({length:21},()=>({ai:Ax,dist:0}));oo={firstframe:29,lastframe:49,frames:Cx,endfunc:Rx};var Px=Array.from({length:9},(e,t)=>({ai:yr,dist:2,think:t===8?Fd:null}));Ex={firstframe:50,lastframe:58,frames:Px,endfunc:null};var Dx=Array.from({length:6},()=>({ai:yr,dist:2,think:Nx}));Cd={firstframe:59,lastframe:64,frames:Dx,endfunc:Lx};var Fx=Array.from({length:4},()=>({ai:yr,dist:2}));Pd={firstframe:65,lastframe:68,frames:Fx,endfunc:ui};var Ux=Array.from({length:21},(e,t)=>({ai:yr,dist:2,think:t===12?Ox:null}));kx={firstframe:69,lastframe:89,frames:Ux,endfunc:ui};var Bx=Array.from({length:18},()=>({ai:so,dist:0}));Tx={firstframe:90,lastframe:107,frames:Bx,endfunc:ui};var Gx=Array.from({length:4},()=>({ai:so,dist:0}));Mx={firstframe:108,lastframe:111,frames:Gx,endfunc:ui};var Hx=Array.from({length:49},()=>({ai:so,dist:0}));Dd={firstframe:112,lastframe:160,frames:Hx,endfunc:Ix};var wr=.1,co=80,Sr=Math.random;function Bd(e,t,n){se(e,wr,n)}function Ue(e,t,n){fe(e,t,wr,n)}function Be(e,t,n){me(e,t,wr,n)}function R(e,t,n){oe(e,t,wr,n)}function O(e,t,n){ue(e,t)}var lo,Vx,Wx,Gd,Hd,Kx,$x,Xx,Yx,Zx,jx,qx,Jx,Qx;function Vd(e){e.monsterinfo.current_move=lo}function bt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=lo:e.monsterinfo.current_move=Gd}function eA(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function tA(e,t){let n={x:co,y:e.maxs.x,z:8};li(e,n,15+Math.floor(Sr()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function nA(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function iA(e,t){let n={x:co,y:e.mins.x,z:8};li(e,n,15+Math.floor(Sr()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Wd(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Kd(e,t){li(e,{x:co,y:0,z:8},10+Math.floor(Sr()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function $d(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Hd)}function ad(e,t){if(!e.enemy)return;let n=Q(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,G,G,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,Se.temp_entity,xe.PARASITE_ATTACK,e,i,r);let s=N(i,r);_e(e.enemy,e,e,s,e.enemy.origin,G,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Q(e.angles).forward;e.enemy.velocity=V(o,-1200)}var sd=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],od=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function rA(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Q(n.angles),s=n.frame-0;(s<0||s>=sd.length)&&(s=0);let o=sd[s],l=H(n.origin,V(r,o.x));l=H(l,V(i,o.y)),l=H(l,V(a,o.z));let c=D(N(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function aA(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Q(n.angles),s=n.frame-0;(s<0||s>=od.length)&&(s=0);let o=od[s],l=H(n.origin,V(r,o.x));l=H(l,V(i,o.y)),l=H(l,V(a,o.z));let c=D(N(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function Je(e,t){Bs(e,1,!1,rA,t),Bs(e,1,!0,aA,t)}function sA(e){Sr()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function oA(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function cA(e){}function lA(e){e.monsterinfo.aiflags&=-17}var uA=Array.from({length:30},()=>({ai:Bd,dist:0}));lo={firstframe:162,lastframe:191,frames:uA,endfunc:Vd};var dA=Array.from({length:30},()=>({ai:Bd,dist:0}));Vx={firstframe:192,lastframe:221,frames:dA,endfunc:Vd};var mA=[{ai:Ue,dist:7},{ai:Ue,dist:2},{ai:Ue,dist:3},{ai:Ue,dist:3},{ai:Ue,dist:1},{ai:Ue,dist:0},{ai:Ue,dist:0},{ai:Ue,dist:9},{ai:Ue,dist:-4},{ai:Ue,dist:-1},{ai:Ue,dist:2}];Wx={firstframe:0,lastframe:10,frames:mA,endfunc:null};var hA=[{ai:Be,dist:9},{ai:Be,dist:2},{ai:Be,dist:3},{ai:Be,dist:3},{ai:Be,dist:1},{ai:Be,dist:0},{ai:Be,dist:0},{ai:Be,dist:10},{ai:Be,dist:-4},{ai:Be,dist:-1},{ai:Be,dist:2}];Gd={firstframe:0,lastframe:10,frames:hA,endfunc:null};var fA=[{ai:R,dist:8},{ai:R,dist:3},{ai:R,dist:5},{ai:R,dist:0},{ai:R,dist:-3,think:eA},{ai:R,dist:0},{ai:R,dist:-5},{ai:R,dist:-7,think:tA},{ai:R,dist:0},{ai:R,dist:6,think:nA},{ai:R,dist:1},{ai:R,dist:2,think:iA},{ai:R,dist:-3},{ai:R,dist:6},{ai:R,dist:-1},{ai:R,dist:-3},{ai:R,dist:2},{ai:R,dist:-11}];Hd={firstframe:53,lastframe:70,frames:fA,endfunc:bt};var _A=[{ai:R,dist:5},{ai:R,dist:-4},{ai:R,dist:-4},{ai:R,dist:-3},{ai:R,dist:0,think:Wd},{ai:R,dist:0},{ai:R,dist:13,think:Kd},{ai:R,dist:0},{ai:R,dist:2},{ai:R,dist:0},{ai:R,dist:-9,think:$d},{ai:R,dist:0},{ai:R,dist:4},{ai:R,dist:3},{ai:R,dist:2},{ai:R,dist:-3},{ai:R,dist:-6}];Kx={firstframe:71,lastframe:87,frames:_A,endfunc:bt};var gA=[{ai:R,dist:5},{ai:R,dist:-4},{ai:R,dist:-4},{ai:R,dist:-3},{ai:R,dist:0,think:Wd},{ai:R,dist:0,think:ad},{ai:R,dist:13},{ai:R,dist:0,think:Kd},{ai:R,dist:2},{ai:R,dist:0,think:ad},{ai:R,dist:-9,think:$d},{ai:R,dist:0},{ai:R,dist:4},{ai:R,dist:3},{ai:R,dist:2},{ai:R,dist:-3},{ai:R,dist:-6}];$x={firstframe:71,lastframe:87,frames:gA,endfunc:bt};var pA=[{ai:R,dist:9,think:Je},{ai:R,dist:2,think:Je},{ai:R,dist:3,think:Je},{ai:R,dist:3,think:Je},{ai:R,dist:1,think:Je},{ai:R,dist:0,think:Je},{ai:R,dist:0,think:Je},{ai:R,dist:10,think:Je},{ai:R,dist:-4,think:Je},{ai:R,dist:-1,think:Je},{ai:R,dist:2,think:sA}];Xx={firstframe:0,lastframe:10,frames:pA,endfunc:bt};var vA=[{ai:O,dist:-6},{ai:O,dist:-2},{ai:O,dist:-6},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:2},{ai:O,dist:0},{ai:O,dist:2},{ai:O,dist:1},{ai:O,dist:7},{ai:O,dist:0},{ai:O,dist:3},{ai:O,dist:-1}];Yx={firstframe:88,lastframe:108,frames:vA,endfunc:bt};var yA=[{ai:O,dist:-2},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:3},{ai:O,dist:1},{ai:O,dist:-2}];Zx={firstframe:109,lastframe:116,frames:yA,endfunc:bt};var wA=[{ai:O,dist:-2},{ai:O,dist:2},{ai:O,dist:1},{ai:O,dist:3},{ai:O,dist:0},{ai:O,dist:-4}];jx={firstframe:117,lastframe:122,frames:wA,endfunc:bt};var SA=Array.from({length:18},()=>({ai:O,dist:0}));qx={firstframe:123,lastframe:140,frames:SA,endfunc:Xd};var xA=[{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:9},{ai:O,dist:0}];Jx={firstframe:141,lastframe:145,frames:xA,endfunc:Xd};var AA=[{ai:O,dist:0},{ai:O,dist:-2,think:oA},{ai:O,dist:17,think:cA},{ai:O,dist:-3},{ai:O,dist:-1,think:lA},{ai:O,dist:-5},{ai:O,dist:-6},{ai:O,dist:-6}];Qx={firstframe:146,lastframe:153,frames:AA,endfunc:bt};function Xd(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var xr=.1,bA=80,wn=Math.random;function Yd(e,t,n){se(e,xr,n)}function EA(e,t,n){fe(e,t,xr,n)}function kA(e,t,n){me(e,t,xr,n)}function C(e,t,n){oe(e,t,xr,n)}function Sn(e,t,n){ue(e,t)}var uo,Zd,jd,TA,mo,Hs,MA,ho,qd,RA,zA,LA,NA,OA,IA,Jd;function Qd(e){e.monsterinfo.current_move=uo}function CA(e){e.monsterinfo.current_move=Zd}function Ut(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=uo;return}e.monsterinfo.current_move=jd}function PA(e){e.monsterinfo.aiflags&4||e.enemy||wn()<=.3&&(e.monsterinfo.current_move=Jd)}function DA(e,t){wn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function FA(e,t){let n={x:bA,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),li(e,n,10+Math.floor(wn()*6),100,t)}function UA(e,t){let{forward:n,right:i}=Q(e.angles),r={x:0,y:20,z:40},a=H(e.origin,V(n,r.x)),s=V(i,r.y),o=H(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=G;if(u&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=N(m,l);!u&&e.enemy&&(wn()<.33||l.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-l.z});let h=D(d);e.skin>1?_x(e,l,h,50,c,0,.075,t):ci(e,l,h,50,c,0,t)}function BA(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=N(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=gn(n).y}}function GA(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function HA(e){e.monsterinfo.current_move=mo}function VA(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Hs;return}if(e.enemy&&e.enemy.health>0&&wn()<=.6){e.monsterinfo.current_move=mo;return}e.monsterinfo.current_move=Hs}function WA(e){if(e.enemy&&e.enemy.health>0&&wn()<=.9){e.monsterinfo.current_move=ho;return}e.monsterinfo.current_move=qd}function KA(e){e.monsterinfo.current_move=ho}var $A=Array.from({length:30},(e,t)=>({ai:Yd,dist:0,think:t===8?(n,i)=>DA(n,i):null}));Jd={firstframe:201,lastframe:230,frames:$A,endfunc:Qd};var XA=Array.from({length:30},(e,t)=>({ai:Yd,dist:0,think:t===29?PA:null}));uo={firstframe:101,lastframe:130,frames:XA,endfunc:Qd};var YA=Array.from({length:10},()=>({ai:EA,dist:6}));Zd={firstframe:171,lastframe:180,frames:YA,endfunc:CA};var ZA=Array.from({length:10},()=>({ai:kA,dist:12}));jd={firstframe:171,lastframe:180,frames:ZA,endfunc:Ut};var jA=Array.from({length:5},()=>({ai:Sn,dist:0}));RA={firstframe:90,lastframe:94,frames:jA,endfunc:Ut};var qA=Array.from({length:5},()=>({ai:Sn,dist:0}));zA={firstframe:95,lastframe:99,frames:qA,endfunc:Ut};var JA=Array.from({length:21},()=>({ai:Sn,dist:0}));LA={firstframe:100,lastframe:120,frames:JA,endfunc:Ut};var QA=Array.from({length:12},()=>({ai:Sn,dist:0}));NA={firstframe:48,lastframe:59,frames:QA,endfunc:em};var e5=Array.from({length:23},()=>({ai:Sn,dist:0}));OA={firstframe:60,lastframe:82,frames:e5,endfunc:em};function em(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var t5=[{ai:C,dist:0,think:BA},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:0},{ai:C,dist:-3},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:7},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:HA}];TA={firstframe:0,lastframe:12,frames:t5,endfunc:null};var n5=[{ai:C,dist:19,think:UA},{ai:C,dist:-6},{ai:C,dist:-5},{ai:C,dist:-2},{ai:C,dist:-7},{ai:C,dist:0},{ai:C,dist:1},{ai:C,dist:10,think:GA},{ai:C,dist:4},{ai:C,dist:5},{ai:C,dist:6},{ai:C,dist:6},{ai:C,dist:4},{ai:C,dist:3,think:VA}];mo={firstframe:13,lastframe:26,frames:n5,endfunc:null};var i5=[{ai:C,dist:-3},{ai:C,dist:0},{ai:C,dist:-6},{ai:C,dist:-4},{ai:C,dist:-2}];Hs={firstframe:27,lastframe:31,frames:i5,endfunc:Ut};var r5=[{ai:C,dist:1},{ai:C,dist:8},{ai:C,dist:3}];MA={firstframe:32,lastframe:34,frames:r5,endfunc:KA};var a5=[{ai:C,dist:1},{ai:C,dist:7,think:FA},{ai:C,dist:-7},{ai:C,dist:1},{ai:C,dist:-1},{ai:C,dist:1},{ai:C,dist:0},{ai:C,dist:1},{ai:C,dist:-2,think:WA}];ho={firstframe:35,lastframe:43,frames:a5,endfunc:null};var s5=[{ai:C,dist:-6},{ai:C,dist:-1},{ai:C,dist:-6},{ai:C,dist:0}];qd={firstframe:44,lastframe:47,frames:s5,endfunc:Ut};var o5=Array.from({length:7},()=>({ai:Sn,dist:0}));IA={firstframe:83,lastframe:89,frames:o5,endfunc:Ut};var Ar=.1,c5=80,l5=24;function u5(e,t,n){se(e,Ar,n)}function d5(e,t,n){fe(e,t,Ar,n)}function tm(e,t,n){me(e,t,Ar,n)}function ce(e,t,n){oe(e,t,Ar,n)}function fo(e,t,n){ue(e,t)}var m5,h5,nm,im,f5,_5,g5,p5;function v5(e){e.monsterinfo.current_move=im}function _o(e){e.monsterinfo.current_move=nm}function cd(e,t){li(e,{x:c5,y:0,z:0},5,0,t)}function y5(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var w5=[{ai:u5,dist:0}];m5={firstframe:41,lastframe:41,frames:w5,endfunc:null};var S5=Array.from({length:24},()=>({ai:tm,dist:l5}));im={firstframe:70,lastframe:93,frames:S5,endfunc:null};var x5=Array.from({length:6},()=>({ai:tm,dist:8}));nm={firstframe:65,lastframe:70,frames:x5,endfunc:v5};var A5=Array.from({length:24},()=>({ai:d5,dist:4}));h5={firstframe:41,lastframe:64,frames:A5,endfunc:null};var b5=Array.from({length:5},()=>({ai:fo,dist:0}));_5={firstframe:99,lastframe:103,frames:b5,endfunc:_o};var E5=Array.from({length:5},()=>({ai:fo,dist:0}));g5={firstframe:94,lastframe:98,frames:E5,endfunc:_o};var k5=[{ai:ce,dist:0,think:y5},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0,think:cd},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0,think:cd},{ai:ce,dist:0}];f5={firstframe:0,lastframe:19,frames:k5,endfunc:_o};function T5(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var M5=Array.from({length:56},()=>({ai:fo,dist:0}));p5={firstframe:104,lastframe:159,frames:M5,endfunc:T5};var br=.1;function R5(e,t,n){se(e,br,n)}function z5(e,t,n){fe(e,t,br,n)}function L5(e,t,n){me(e,t,br,n)}function N5(e,t,n){oe(e,t,br,n)}function rm(e,t,n){ue(e,t)}var go,am,sm,O5,I5,om;function C5(e){e.monsterinfo.current_move=go}function P5(e){e.monsterinfo.current_move=am}function po(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=sm:e.monsterinfo.current_move=go}function D5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(N(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function F5(e){e.monsterinfo.nextframe=om.lastframe,e.nextthink=-1}var U5=Array.from({length:46},()=>({ai:R5,dist:0}));go={firstframe:0,lastframe:45,frames:U5,endfunc:C5};var B5=Array.from({length:46},()=>({ai:z5,dist:5}));am={firstframe:0,lastframe:45,frames:B5,endfunc:P5};var G5=Array.from({length:46},()=>({ai:L5,dist:10}));sm={firstframe:0,lastframe:45,frames:G5,endfunc:po};var H5=Array.from({length:20},(e,t)=>({ai:N5,dist:0,think:t===10?D5:null}));O5={firstframe:46,lastframe:65,frames:H5,endfunc:po};var V5=Array.from({length:6},()=>({ai:rm,dist:0}));I5={firstframe:66,lastframe:71,frames:V5,endfunc:po};var W5=Array.from({length:10},()=>({ai:rm,dist:0}));om={firstframe:84,lastframe:93,frames:W5,endfunc:F5};var Er=.1;function K5(e,t,n){se(e,Er,n)}function $5(e,t,n){fe(e,t,Er,n)}function X5(e,t,n){me(e,t,Er,n)}function Y5(e,t,n){oe(e,t,Er,n)}function cm(e,t,n){ue(e,t)}var vo,lm,um,Z5,j5,dm;function q5(e){e.monsterinfo.current_move=vo}function J5(e){e.monsterinfo.current_move=lm}function yo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=um:e.monsterinfo.current_move=vo}function Q5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(N(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function eb(e,t){if(!e.enemy)return;let n=5+Math.random()*5;At(e,e.enemy)<=80&&ii(e,e.enemy)&&_e(e.enemy,e,e,D(N(e.enemy.origin,e.origin)),e.enemy.origin,G,n,5,2,0,t.timeSeconds)}function tb(e){e.monsterinfo.nextframe=dm.lastframe,e.nextthink=-1}var nb=Array.from({length:46},()=>({ai:K5,dist:0}));vo={firstframe:0,lastframe:45,frames:nb,endfunc:q5};var ib=Array.from({length:46},()=>({ai:$5,dist:5}));lm={firstframe:0,lastframe:45,frames:ib,endfunc:J5};var rb=Array.from({length:46},()=>({ai:X5,dist:10}));um={firstframe:0,lastframe:45,frames:rb,endfunc:yo};var ab=Array.from({length:20},(e,t)=>({ai:Y5,dist:0,think:t===10?Q5:t===12?eb:null}));Z5={firstframe:46,lastframe:65,frames:ab,endfunc:yo};var sb=Array.from({length:6},()=>({ai:cm,dist:0}));j5={firstframe:66,lastframe:71,frames:sb,endfunc:yo};var ob=Array.from({length:10},()=>({ai:cm,dist:0}));dm={firstframe:84,lastframe:93,frames:ob,endfunc:tb};var kr=.1;function cb(e,t,n){se(e,kr,n)}function lb(e,t,n){fe(e,t,kr,n)}function ub(e,t,n){me(e,t,kr,n)}function mm(e,t,n){oe(e,t,kr,n)}function hm(e,t,n){ue(e,t)}var wo,fm,_m,db,mb,hb,gm;function fb(e){e.monsterinfo.current_move=wo}function _b(e){e.monsterinfo.current_move=fm}function Tr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=_m:e.monsterinfo.current_move=wo}function gb(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function pb(e,t){if(!e.enemy||!ii(e,e.enemy))return;let n=At(e,e.enemy);if(gb(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=D(N(e.enemy.origin,i));_e(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function vb(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=D(N(e.enemy.origin,n));Nd(e,n,i,50,100,0,t)}function yb(e){e.monsterinfo.nextframe=gm.lastframe,e.nextthink=-1}var wb=Array.from({length:30},()=>({ai:cb,dist:0}));wo={firstframe:0,lastframe:29,frames:wb,endfunc:fb};var Sb=Array.from({length:40},()=>({ai:lb,dist:3}));fm={firstframe:30,lastframe:69,frames:Sb,endfunc:_b};var xb=Array.from({length:20},()=>({ai:ub,dist:12}));_m={firstframe:70,lastframe:89,frames:xb,endfunc:Tr};var Ab=Array.from({length:10},(e,t)=>({ai:mm,dist:0,think:t===5?pb:null}));db={firstframe:90,lastframe:99,frames:Ab,endfunc:Tr};var bb=Array.from({length:12},(e,t)=>({ai:mm,dist:0,think:t===6?vb:null}));mb={firstframe:100,lastframe:111,frames:bb,endfunc:Tr};var Eb=Array.from({length:6},()=>({ai:hm,dist:0}));hb={firstframe:112,lastframe:117,frames:Eb,endfunc:Tr};var kb=Array.from({length:12},()=>({ai:hm,dist:0}));gm={firstframe:118,lastframe:129,frames:kb,endfunc:yb};var Mr=.1;function pm(e,t,n){se(e,Mr,n)}function Tb(e,t,n){fe(e,t,Mr,n)}function vm(e,t,n){me(e,t,Mr,n)}function Rr(e,t,n){oe(e,t,Mr,n)}function le(e,t,n){ue(e,t)}var So,ym,Mb,wm,Rb,zb,Lb,xo,Sm,Nb,Ob,Ib,xm,Cb,Am;function Pb(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function Db(e){e.monsterinfo.current_move=So}function Fb(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=ym)}function Bt(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=So:e.monsterinfo.current_move=wm}function Ub(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function Bb(e,t){e.monsterinfo.current_move=xo}function Gb(e,t){if(e.enemy&&e.enemy.health>0&&yn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=xo;return}e.monsterinfo.current_move=Sm}function Hb(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=D(N(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Dt(e,n,i,r,a,300,500,0,t,5)}function bm(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(N(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Rd(t,e,n,i,r,a)}function Vb(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&bm(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function Wb(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function Kb(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function $b(e,t){if(!e.enemy)return;let n=N(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=D({x:n.x,y:n.y,z:0}),s=gn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function Xb(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function Yb(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=Am)}var Zb=Array.from({length:30},(e,t)=>({ai:pm,dist:0,think:t===29?Fb:null}));So={firstframe:0,lastframe:29,frames:Zb,endfunc:null};var jb=Array.from({length:40},(e,t)=>({ai:pm,dist:0,think:t===7?Pb:null}));ym={firstframe:30,lastframe:69,frames:jb,endfunc:Db};var qb=[0,3,4,5,7,2,6,4,2,7,5,7,4],Jb=qb.map(e=>({ai:Tb,dist:e}));Mb={firstframe:76,lastframe:88,frames:Jb,endfunc:null};var Qb=[26,9,9,9,15,10,13,6],eE=Qb.map((e,t)=>({ai:vm,dist:e,think:t%4===0?Yb:null}));wm={firstframe:94,lastframe:101,frames:eE,endfunc:null};var tE=[32,15,10,18,8,20],nE=tE.map(e=>({ai:vm,dist:e}));Rb={firstframe:102,lastframe:107,frames:nE,endfunc:null};var iE=Array.from({length:21},(e,t)=>({ai:Rr,dist:0,think:[4,7,10,13].includes(t)?bm:null}));Lb={firstframe:108,lastframe:128,frames:iE,endfunc:Bt};var rE=Array.from({length:7},(e,t)=>({ai:Rr,dist:0,think:t===0?Ub:null}));zb={firstframe:137,lastframe:143,frames:rE,endfunc:Bb};var aE=Array.from({length:8},()=>({ai:Rr,dist:0,think:Hb}));xo={firstframe:144,lastframe:151,frames:aE,endfunc:Gb};var sE=Array.from({length:7},()=>({ai:Rr,dist:0}));Sm={firstframe:152,lastframe:158,frames:sE,endfunc:Bt};var oE=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],cE=oE.map(e=>({ai:le,dist:e}));Nb={firstframe:159,lastframe:176,frames:cE,endfunc:Bt};var lE=[-2,11,6,2,-1,-7,-2,-7],uE=lE.map(e=>({ai:le,dist:e}));Ob={firstframe:177,lastframe:184,frames:uE,endfunc:Bt};var dE=[-3,1,1,0,1],mE=dE.map(e=>({ai:le,dist:e}));Ib={firstframe:185,lastframe:189,frames:mE,endfunc:Bt};var hE=[0,0,0,-7,-3,-5,8,6,0,0,0],fE=hE.map(e=>({ai:le,dist:e}));function _E(e){e.monsterinfo.nextframe=xm.lastframe,e.nextthink=-1,e.solid=0}xm={firstframe:190,lastframe:200,frames:fE,endfunc:_E};var gE=[{ai:le,dist:1,think:Vb},{ai:le,dist:1},{ai:le,dist:1,think:Wb},{ai:le,dist:0},{ai:le,dist:-1},{ai:le,dist:-1},{ai:le,dist:0,think:Kb},{ai:le,dist:-1}];Cb={firstframe:201,lastframe:208,frames:gE,endfunc:Bt};var pE=[{ai:le,dist:0,think:$b},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0,think:Xb},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];Am={firstframe:209,lastframe:216,frames:pE,endfunc:Bt};var zr=.1;function vE(e,t,n){se(e,zr,n)}function yE(e,t,n){fe(e,t,zr,n)}function wE(e,t,n){me(e,t,zr,n)}function SE(e,t,n){oe(e,t,zr,n)}function Em(e,t,n){ue(e,t)}var Ao,km,Tm,xE,AE,Mm;function bE(e){e.monsterinfo.current_move=Ao}function EE(e){e.monsterinfo.current_move=km}function bo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Tm:e.monsterinfo.current_move=Ao}function kE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(N(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function TE(e){e.monsterinfo.nextframe=Mm.lastframe,e.nextthink=-1}var ME=Array.from({length:46},()=>({ai:vE,dist:0}));Ao={firstframe:0,lastframe:45,frames:ME,endfunc:bE};var RE=Array.from({length:46},()=>({ai:yE,dist:5}));km={firstframe:0,lastframe:45,frames:RE,endfunc:EE};var zE=Array.from({length:46},()=>({ai:wE,dist:10}));Tm={firstframe:0,lastframe:45,frames:zE,endfunc:bo};var LE=Array.from({length:20},(e,t)=>({ai:SE,dist:0,think:t===10?kE:null}));xE={firstframe:46,lastframe:65,frames:LE,endfunc:bo};var NE=Array.from({length:6},()=>({ai:Em,dist:0}));AE={firstframe:66,lastframe:71,frames:NE,endfunc:bo};var OE=Array.from({length:10},()=>({ai:Em,dist:0}));Mm={firstframe:84,lastframe:93,frames:OE,endfunc:TE};var Lr=.1;function IE(e,t,n){se(e,Lr,n)}function CE(e,t,n){fe(e,t,Lr,n)}function PE(e,t,n){me(e,t,Lr,n)}function DE(e,t,n){oe(e,t,Lr,n)}function Rm(e,t,n){ue(e,t)}var Eo,zm,Lm,FE,UE,Nm;function BE(e){e.monsterinfo.current_move=Eo}function GE(e){e.monsterinfo.current_move=zm}function ko(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Lm:e.monsterinfo.current_move=Eo}function HE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(N(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function VE(e){e.monsterinfo.nextframe=Nm.lastframe,e.nextthink=-1}var WE=Array.from({length:46},()=>({ai:IE,dist:0}));Eo={firstframe:0,lastframe:45,frames:WE,endfunc:BE};var KE=Array.from({length:46},()=>({ai:CE,dist:5}));zm={firstframe:0,lastframe:45,frames:KE,endfunc:GE};var $E=Array.from({length:46},()=>({ai:PE,dist:10}));Lm={firstframe:0,lastframe:45,frames:$E,endfunc:ko};var XE=Array.from({length:20},(e,t)=>({ai:DE,dist:0,think:t===10?HE:null}));FE={firstframe:46,lastframe:65,frames:XE,endfunc:ko};var YE=Array.from({length:6},()=>({ai:Rm,dist:0}));UE={firstframe:66,lastframe:71,frames:YE,endfunc:ko};var ZE=Array.from({length:10},()=>({ai:Rm,dist:0}));Nm={firstframe:84,lastframe:93,frames:ZE,endfunc:VE};var Nr=.1;function jE(e,t,n){se(e,Nr,n)}function qE(e,t,n){fe(e,t,Nr,n)}function JE(e,t,n){me(e,t,Nr,n)}function QE(e,t,n){oe(e,t,Nr,n)}function To(e,t,n){ue(e,t)}var Mo,Om,Im,ek,tk,Cm,nk;function ik(e){e.monsterinfo.current_move=Mo}function rk(e){e.monsterinfo.current_move=Om}function Or(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Im:e.monsterinfo.current_move=Mo}function ak(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=D(N(i,n));Dt(e,n,r,5,2,.05,.05,0,t,4)}var sk=Array.from({length:22},()=>({ai:jE,dist:0}));Mo={firstframe:0,lastframe:21,frames:sk,endfunc:ik};var ok=Array.from({length:15},()=>({ai:qE,dist:4}));Om={firstframe:22,lastframe:36,frames:ok,endfunc:rk};var ck=Array.from({length:8},()=>({ai:JE,dist:12}));Im={firstframe:37,lastframe:44,frames:ck,endfunc:Or};var lk=Array.from({length:15},(e,t)=>({ai:QE,dist:0,think:t>=5&&t<=7?ak:null}));ek={firstframe:45,lastframe:59,frames:lk,endfunc:Or};var uk=Array.from({length:10},()=>({ai:To,dist:0}));tk={firstframe:60,lastframe:69,frames:uk,endfunc:Or};var dk=Array.from({length:20},()=>({ai:To,dist:0}));function mk(e){e.monsterinfo.nextframe=Cm.lastframe,e.nextthink=-1}Cm={firstframe:70,lastframe:89,frames:dk,endfunc:mk};var hk=Array.from({length:5},()=>({ai:To,dist:0}));nk={firstframe:90,lastframe:94,frames:hk,endfunc:Or};var Ir=.1,fk={x:40,y:-20,z:20},_k={x:40,y:20,z:20},gk={x:30,y:0,z:40};function pk(e,t,n){se(e,Ir,n)}function vk(e,t,n){fe(e,t,Ir,n)}function yk(e,t,n){me(e,t,Ir,n)}function Ro(e,t,n){oe(e,t,Ir,n)}function di(e,t,n){ue(e,t)}var zo,Pm,Dm,Lo,Vs,wk,Sk,xk,Ak,Fm;function bk(e){e.monsterinfo.current_move=zo}function Ek(e){e.monsterinfo.current_move=Pm}function xn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dm:e.monsterinfo.current_move=zo}function kk(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&yn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Lo:e.monsterinfo.current_move=Vs}function Ws(e,t){let{forward:n,right:i,up:r}=Q(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function Tk(e,t){if(!e.enemy)return;let n=Ws(e,_k),i=D(N(e.enemy.origin,n));dr(e,n,i,6,4,.05,.05,0,t,4);let r=Ws(e,fk),a=D(N(e.enemy.origin,r));dr(e,r,a,6,4,.05,.05,0,t,4)}function Mk(e,t){if(!e.enemy)return;let n=Ws(e,gk),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=D(N(i,n));Ld(e,n,r,50,300,100,200,0,t)}function Rk(e){e.monsterinfo.nextframe=Fm.lastframe,e.nextthink=-1}function zk(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var Lk=Array.from({length:51},()=>({ai:pk,dist:0}));zo={firstframe:0,lastframe:50,frames:Lk,endfunc:bk};var Nk=Array.from({length:14},()=>({ai:vk,dist:10}));Pm={firstframe:51,lastframe:64,frames:Nk,endfunc:Ek};var Ok=Array.from({length:14},()=>({ai:yk,dist:10}));Dm={firstframe:51,lastframe:64,frames:Ok,endfunc:xn};var Ik=Array.from({length:8},()=>({ai:Ro,dist:0})),Ck={firstframe:65,lastframe:72,frames:Ik,endfunc:null},Pk=Array.from({length:6},()=>({ai:Ro,dist:0,think:Tk}));Lo={firstframe:73,lastframe:78,frames:Pk,endfunc:kk};Ck.endfunc=e=>{e.monsterinfo.current_move=Lo};var Dk=Array.from({length:4},()=>({ai:di,dist:0}));Vs={firstframe:79,lastframe:82,frames:Dk,endfunc:xn};var Fk=Array.from({length:13},(e,t)=>({ai:Ro,dist:0,think:t===6?Mk:null}));wk={firstframe:83,lastframe:95,frames:Fk,endfunc:xn};var Uk=Array.from({length:3},()=>({ai:di,dist:0}));Sk={firstframe:96,lastframe:98,frames:Uk,endfunc:xn};var Bk=Array.from({length:3},()=>({ai:di,dist:0}));xk={firstframe:99,lastframe:101,frames:Bk,endfunc:xn};var Gk=Array.from({length:25},()=>({ai:di,dist:0}));Ak={firstframe:102,lastframe:126,frames:Gk,endfunc:xn};var Hk=Array.from({length:50},(e,t)=>({ai:di,dist:0,think:t===49?((n,i)=>{}):t===48?zk:null}));Fm={firstframe:127,lastframe:176,frames:Hk,endfunc:Rk};var Cr=.1,Vk={x:30,y:28,z:24},Wk={x:26,y:16,z:24},Kk={x:26,y:-14,z:24};function $k(e,t,n){se(e,Cr,n)}function Xk(e,t,n){fe(e,t,Cr,n)}function Yk(e,t,n){me(e,t,Cr,n)}function Um(e,t,n){oe(e,t,Cr,n)}function An(e,t,n){ue(e,t)}var No,Bm,Gm,Zk,Hm,jk,qk,Jk,Qk,Vm,e2;function t2(e){e.monsterinfo.current_move=No}function n2(e){e.monsterinfo.current_move=Bm}function Et(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Gm:e.monsterinfo.current_move=No}function Oo(e,t){let{forward:n,right:i,up:r}=Q(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function i2(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=Oo(e,Vk),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=D(N(i,n));Ld(e,n,r,50,300,100,300,0,t)}function r2(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=Oo(e,Kk),i=D(N(e.pos1,n));Nd(e,n,i,50,100,0,t)}function a2(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function s2(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=Oo(e,Wk),i=(e.monsterinfo.nextframe||0)-Hm.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=N(s,n),c={...gn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=Q(c).forward}else{let{forward:s}=Q(e.angles);a=s}ot(e,n,a,15,1e3,0,0,t,1)}function o2(e){e.monsterinfo.nextframe=Vm.lastframe,e.nextthink=-1}var c2=Array.from({length:60},()=>({ai:$k,dist:0}));No={firstframe:0,lastframe:59,frames:c2,endfunc:t2};var l2=Array.from({length:10},()=>({ai:Xk,dist:8}));Bm={firstframe:60,lastframe:69,frames:l2,endfunc:n2};var u2=Array.from({length:10},()=>({ai:Yk,dist:8}));Gm={firstframe:60,lastframe:69,frames:u2,endfunc:Et};var d2=Array.from({length:8},(e,t)=>({ai:Um,dist:0,think:t===3?i2:null}));Zk={firstframe:70,lastframe:77,frames:d2,endfunc:Et};var m2=Array.from({length:26},(e,t)=>({ai:An,dist:0,think:t>=4&&t<=20?s2:null}));Hm={firstframe:78,lastframe:103,frames:m2,endfunc:Et};var h2=Array.from({length:16},(e,t)=>({ai:Um,dist:0,think:t===7?a2:t===8?r2:null}));jk={firstframe:104,lastframe:119,frames:h2,endfunc:Et};var f2=Array.from({length:4},()=>({ai:An,dist:0}));qk={firstframe:120,lastframe:123,frames:f2,endfunc:Et};var _2=Array.from({length:4},()=>({ai:An,dist:0}));Jk={firstframe:124,lastframe:127,frames:_2,endfunc:Et};var g2=Array.from({length:27},()=>({ai:An,dist:0}));Qk={firstframe:128,lastframe:154,frames:g2,endfunc:Et};var p2=Array.from({length:95},()=>({ai:An,dist:0}));Vm={firstframe:155,lastframe:249,frames:p2,endfunc:o2};var v2=Array.from({length:13},()=>({ai:An,dist:0}));e2={firstframe:250,lastframe:262,frames:v2,endfunc:Et};var ai=.1;function y2(e,t,n){if(e.classname==="monster_medic"&&Xm(e,n)){e.monsterinfo.current_move=mi;return}se(e,ai,n)}function w2(e,t,n){fe(e,t,ai,n)}function S2(e,t,n){e.classname==="monster_medic"&&Xm(e,n)?e.monsterinfo.current_move=mi:me(e,t,ai,n)}function Qe(e,t,n){oe(e,t,ai,n)}function Io(e,t,n){ue(e,t)}var Co,Wm,mi,x2,Km,A2,b2,$m;function E2(e){e.monsterinfo.current_move=Co}function k2(e){e.monsterinfo.current_move=Wm}function hi(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&At(e,e.enemy)<80){e.monsterinfo.current_move=Km;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mi:e.monsterinfo.current_move=Co}function T2(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=D(N(e.enemy.origin,n));ot(e,n,i,2,1e3,0,0,t,10)}function yt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(At(e,e.enemy)>400){e.monsterinfo.current_move=mi;return}let i=Q(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=H(e.origin,H(V(r,o.x),H(V(a,o.y),V(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,Se.temp_entity,{te:xe.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function M2(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),yt(e,t)}function R2(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(At(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function Xm(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,l,c,u)=>{let m=t.trace(a,s,o,l,c,u);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!yn(e,a,r))return;let s=At(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function z2(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=Q(e.angles),s=V(a.forward,64),o=H(e.origin,s),l={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},l,e,Me|Ft|gr);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},r(u,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),u.enemy=e.enemy,t.multicast(l,1,Se.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function L2(e){e.monsterinfo.nextframe=$m.lastframe,e.nextthink=-1}var N2=Array.from({length:30},()=>({ai:y2,dist:0}));Co={firstframe:0,lastframe:29,frames:N2,endfunc:E2};var O2=Array.from({length:40},()=>({ai:w2,dist:3}));Wm={firstframe:30,lastframe:69,frames:O2,endfunc:k2};var I2=Array.from({length:20},()=>({ai:S2,dist:12}));mi={firstframe:70,lastframe:89,frames:I2,endfunc:hi};var C2=Array.from({length:16},(e,t)=>({ai:Qe,dist:0,think:t>=4&&t<=13?T2:null}));x2={firstframe:90,lastframe:105,frames:C2,endfunc:hi};var P2=[{ai:Qe,dist:0,think:M2},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:yt},{ai:Qe,dist:0,think:R2}];Km={firstframe:106,lastframe:114,frames:P2,endfunc:hi};var D2=Array.from({length:6},()=>({ai:Io,dist:0}));b2={firstframe:116,lastframe:121,frames:D2,endfunc:hi};var F2=Array.from({length:23},(e,t)=>({ai:Io,dist:0,think:t===11?z2:null}));A2={firstframe:122,lastframe:144,frames:F2,endfunc:hi};var U2=Array.from({length:30},()=>({ai:Io,dist:0}));$m={firstframe:161,lastframe:190,frames:U2,endfunc:L2};var fi=.1;function L(e,t,n){se(e,fi,n)}function Le(e,t,n){fe(e,t,fi,n)}function ln(e,t,n){me(e,t,fi,n)}function vt(e,t,n){oe(e,t,fi,n)}function Z(e,t,n){ue(e,t)}function Cs(e,t,n){wS(e,null,t,fi)}var Ym,Zm,mr,B2,G2,H2,V2,jm,qm;function W2(e){e.monsterinfo.current_move=Zm}function K2(e){e.monsterinfo.current_move=Ym}function bn(e){e.monsterinfo.current_move=mr}function Jm(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=N(e.enemy.origin,e.origin);if(_n(i)>100)return;let a=D(i);_e(e.enemy,e,e,a,e.enemy.origin,G,t,0,0,0,n.timeSeconds)}function $2(e,t){Jm(e,30,t)}function ld(e,t){Jm(e,30,t)}function mn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=mr),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=mr)}function X2(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),_e(t,e,e,D(e.velocity),e.origin,G,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function Y2(e,t){let n=Q(e.angles).forward;e.movetype=7,e.touch=X2,e.velocity=H(V(n,300),{x:0,y:0,z:300}),e.velocity=H(V(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function Z2(e){e.monsterinfo.nextframe=jm.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var j2=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];Ym={firstframe:0,lastframe:50,frames:j2,endfunc:K2};var q2=[{ai:Le,dist:3},{ai:Le,dist:1},{ai:Le,dist:5},{ai:Le,dist:10},{ai:Le,dist:13},{ai:Le,dist:12},{ai:Le,dist:0},{ai:Le,dist:0},{ai:Le,dist:5},{ai:Le,dist:6},{ai:Le,dist:16},{ai:Le,dist:15},{ai:Le,dist:6}];Zm={firstframe:51,lastframe:63,frames:q2,endfunc:W2};var J2=[{ai:ln,dist:20},{ai:ln,dist:15},{ai:ln,dist:35},{ai:ln,dist:20},{ai:ln,dist:10},{ai:ln,dist:20}];mr={firstframe:64,lastframe:69,frames:J2,endfunc:bn};var Q2=[{ai:vt,dist:0},{ai:vt,dist:0},{ai:vt,dist:0,think:ld},{ai:vt,dist:0},{ai:vt,dist:0,think:$2},{ai:vt,dist:0},{ai:vt,dist:0,think:ld},{ai:vt,dist:0}];B2={firstframe:70,lastframe:77,frames:Q2,endfunc:bn};var e6=[{ai:Cs,dist:0},{ai:Cs,dist:0},{ai:Cs,dist:0,think:Y2},{ai:Z,dist:0,think:mn},{ai:Z,dist:0,think:mn},{ai:Z,dist:0,think:mn},{ai:Z,dist:0,think:mn},{ai:Z,dist:0,think:mn}];qm={firstframe:93,lastframe:100,frames:e6,endfunc:bn};qm.frames[3].ai=(e,t,n)=>{mn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var t6=[{ai:Z,dist:4},{ai:Z,dist:-3},{ai:Z,dist:-8},{ai:Z,dist:2},{ai:Z,dist:5}];G2={firstframe:78,lastframe:82,frames:t6,endfunc:bn};var n6=[{ai:Z,dist:-24},{ai:Z,dist:11},{ai:Z,dist:5},{ai:Z,dist:-2}];H2={firstframe:83,lastframe:86,frames:n6,endfunc:bn};var i6=[{ai:Z,dist:11},{ai:Z,dist:0},{ai:Z,dist:-2},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];V2={firstframe:87,lastframe:92,frames:i6,endfunc:bn};var r6=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];jm={firstframe:101,lastframe:109,frames:r6,endfunc:Z2};var Pr=.1,a6=()=>Math.random();function K(e,t,n){se(e,Pr,n)}function rt(e,t,n){fe(e,t,Pr,n)}function at(e,t,n){me(e,t,Pr,n)}function ve(e,t,n){oe(e,t,Pr,n)}function ye(e,t,n){ue(e,t)}var Po,Qm,eh,s6,o6,th,nh,c6,l6,Do,ih;function u6(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function d6(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function un(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Ks(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function m6(e){e.monsterinfo.current_move=Do}function h6(e){a6()<=.8?e.monsterinfo.current_move=Do:e.monsterinfo.current_move=ih}function rh(e){e.monsterinfo.current_move=Po}function Fo(e){e.monsterinfo.current_move=Qm}function ah(e){e.monsterinfo.current_move=nh}function sh(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Po:e.monsterinfo.current_move=eh}function Ps(e,t){let n=N(t,e);if(_n(n)>256)return!1;let a=gn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Ge(e,t){if(!e.enemy)return;let n=Q(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=H(e.origin,H(V(i,s.x),H(V(r,s.y),V(a,s.z)))),l=ew(e.enemy.origin);if(!Ps(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Ps(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!Ps(o,l)))||t.trace(o,l,G,G,e,wt).ent!==e.enemy)return;let u=2,m=e.frame;m===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,Se.temp_entity,{te:xe.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=D(N(o,l));_e(e.enemy,e,e,d,e.enemy.origin,G,u,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=u,e.health>e.max_health&&(e.health=e.max_health))}function f6(e){e.monsterinfo.nextframe=th.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var _6=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:un},{ai:K,dist:0},{ai:K,dist:0,think:un},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:un},{ai:K,dist:0},{ai:K,dist:0,think:un},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:un},{ai:K,dist:0},{ai:K,dist:0,think:un}];Po={firstframe:83,lastframe:99,frames:_6,endfunc:rh};var g6=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];l6={firstframe:100,lastframe:103,frames:g6,endfunc:m6};var p6=[{ai:K,dist:0,think:Ks},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Ks},{ai:K,dist:0},{ai:K,dist:0}];Do={firstframe:104,lastframe:109,frames:p6,endfunc:h6};var v6=[{ai:K,dist:0,think:Ks},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];ih={firstframe:110,lastframe:117,frames:v6,endfunc:rh};var y6=[{ai:at,dist:0},{ai:at,dist:30}];nh={firstframe:68,lastframe:69,frames:y6,endfunc:sh};var w6=[{ai:at,dist:30},{ai:at,dist:30},{ai:at,dist:22},{ai:at,dist:19},{ai:at,dist:24},{ai:at,dist:28},{ai:at,dist:25}];eh={firstframe:70,lastframe:76,frames:w6,endfunc:sh};var S6=[{ai:rt,dist:0},{ai:rt,dist:30,think:Fo}];c6={firstframe:68,lastframe:69,frames:S6,endfunc:Fo};var x6=[{ai:rt,dist:30},{ai:rt,dist:30},{ai:rt,dist:22},{ai:rt,dist:19},{ai:rt,dist:24},{ai:rt,dist:28},{ai:rt,dist:25}];Qm={firstframe:70,lastframe:76,frames:x6,endfunc:Fo};var A6=[{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:6},{ai:ye,dist:16},{ai:ye,dist:-6},{ai:ye,dist:-7},{ai:ye,dist:0}];o6={firstframe:57,lastframe:67,frames:A6,endfunc:ah};var b6=[{ai:ve,dist:0,think:u6},{ai:ve,dist:0},{ai:ve,dist:15,think:Ge},{ai:ve,dist:0,think:Ge},{ai:ve,dist:0,think:Ge},{ai:ve,dist:0,think:Ge},{ai:ve,dist:0,think:Ge},{ai:ve,dist:-2,think:Ge},{ai:ve,dist:-2,think:Ge},{ai:ve,dist:-3,think:Ge},{ai:ve,dist:-2,think:Ge},{ai:ve,dist:0,think:Ge},{ai:ve,dist:-1,think:Ge},{ai:ve,dist:0,think:d6},{ai:ve,dist:-2},{ai:ve,dist:-2},{ai:ve,dist:-3},{ai:ve,dist:0}];s6={firstframe:39,lastframe:56,frames:b6,endfunc:ah};var E6=[{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0},{ai:ye,dist:0}];th={firstframe:32,lastframe:38,frames:E6,endfunc:f6};var Dr=.1;var k6=2,T6=4;function M6(e,t,n){se(e,Dr,n)}function R6(e,t,n){fe(e,t,Dr,n)}function z6(e,t,n){me(e,t,Dr,n)}function oh(e,t,n){oe(e,t,Dr,n)}function ch(e,t,n){ue(e,t)}var Uo,lh,uh,L6,N6,O6,dh;function I6(e){e.monsterinfo.current_move=Uo}function C6(e){e.monsterinfo.current_move=lh}function Fr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=uh:e.monsterinfo.current_move=Uo}function _i(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function gi(e,t){if(!e.enemy){let{forward:i}=Q(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return D(N(n,t))}function P6(e,t){if(!e.enemy)return;let n=_i(e),i=gi(e,n);ot(e,n,i,5,600,0,0,t,1)}function D6(e,t){if(!e.enemy)return;let n=_i(e),i=gi(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),dx(e,n,i,r,a,o,l,s,0,t,3)}function F6(e,t){if(!e.enemy)return;let n=_i(e),i=gi(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Dt(e,n,i,r,a,s,o,0,t,4)}function U6(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=Q(n.angles),s={...n.origin};s=H(s,V(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=D(N(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function B6(e,t){if(!e.enemy)return;let n=_i(e),i=gi(e,n);hx(e,n,i,5,600,0,0,t)}function G6(e,t){if(!e.enemy)return;let n=_i(e),i=gi(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),mx(e,n,i,r,a,0,0,t)}function H6(e,t){e.enemy&&Bs(e,1,!1,U6,t)}function V6(e,t){e.count<2?B6(e,t):e.count<4?G6(e,t):H6(e,t)}function mh(e,t){if(e.style===1){V6(e,t);return}e.spawnflags&k6?D6(e,t):e.spawnflags&T6?F6(e,t):P6(e,t)}var W6=Array.from({length:30},()=>({ai:M6,dist:0}));Uo={firstframe:0,lastframe:29,frames:W6,endfunc:I6};var K6=Array.from({length:40},()=>({ai:R6,dist:2}));lh={firstframe:30,lastframe:69,frames:K6,endfunc:C6};var $6=Array.from({length:20},()=>({ai:z6,dist:10}));uh={firstframe:70,lastframe:89,frames:$6,endfunc:Fr};var X6=Array.from({length:10},(e,t)=>({ai:oh,dist:0,think:t===5?mh:null}));L6={firstframe:90,lastframe:99,frames:X6,endfunc:Fr};var Y6=Array.from({length:10},(e,t)=>({ai:oh,dist:0,think:t>=4&&t<=8?mh:null}));N6={firstframe:90,lastframe:99,frames:Y6,endfunc:Fr};var Z6=Array.from({length:6},()=>({ai:ch,dist:0}));O6={firstframe:100,lastframe:105,frames:Z6,endfunc:Fr};var j6=Array.from({length:10},()=>({ai:ch,dist:0}));function q6(e){e.monsterinfo.nextframe=dh.lastframe,e.nextthink=-1}dh={firstframe:106,lastframe:115,frames:j6,endfunc:q6};var hh=.1,J6={x:30,y:30,z:40},Q6={x:30,y:-30,z:40},e3={x:20,y:0,z:70};function t3(e,t,n){se(e,hh,n)}function n3(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Go:e.monsterinfo.current_move=Ur}function Bo(e,t,n){oe(e,t,hh,n)}function pi(e,t,n){ue(e,t)}var Ur,Go,i3,r3,fh,_h,a3,s3,o3,gh;function c3(e){e.monsterinfo.current_move=Ur}function Gt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Go:e.monsterinfo.current_move=Ur}function Ho(e,t){let{forward:n,right:i,up:r}=Q(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function l3(e,t){if(!e.enemy)return;let n=Ho(e,Q6),i=D(N(e.enemy.origin,n));ci(e,n,i,50,650,0,t)}function u3(e,t){if(!e.enemy)return;let n=Ho(e,e3),i=D(N(e.enemy.origin,n));fx(e,n,i,50,600,0,t)}function d3(e,t){if(!e.enemy)return;let n=Ho(e,J6),i=D(N(e.enemy.origin,n));dr(e,n,i,6,4,.05,.05,0,t,4)}function m3(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&yn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=fh:e.monsterinfo.current_move=_h}function h3(e){e.monsterinfo.nextframe=gh.lastframe,e.nextthink=-1}var f3=Array.from({length:60},()=>({ai:t3,dist:0}));Ur={firstframe:0,lastframe:59,frames:f3,endfunc:c3};var _3=Array.from({length:18},()=>({ai:n3,dist:12}));Go={firstframe:60,lastframe:77,frames:_3,endfunc:Gt};var g3=Array.from({length:4},()=>({ai:pi,dist:0}));o3={firstframe:78,lastframe:81,frames:g3,endfunc:Gt};var p3=Array.from({length:4},()=>({ai:pi,dist:0}));s3={firstframe:82,lastframe:85,frames:p3,endfunc:Gt};var v3=Array.from({length:4},()=>({ai:pi,dist:0}));a3={firstframe:86,lastframe:89,frames:v3,endfunc:Gt};var y3=Array.from({length:24},()=>({ai:pi,dist:0}));gh={firstframe:90,lastframe:113,frames:y3,endfunc:h3};var w3=Array.from({length:6},(e,t)=>({ai:Bo,dist:0,think:t===0||t===3?u3:null}));r3={firstframe:114,lastframe:119,frames:w3,endfunc:Gt};var S3=Array.from({length:27},(e,t)=>({ai:Bo,dist:0,think:t===7||t===10||t===13?l3:null}));i3={firstframe:120,lastframe:146,frames:S3,endfunc:Gt};var x3=Array.from({length:6},()=>({ai:Bo,dist:0,think:d3}));fh={firstframe:147,lastframe:152,frames:x3,endfunc:m3};var A3=Array.from({length:14},()=>({ai:pi,dist:0}));_h={firstframe:153,lastframe:166,frames:A3,endfunc:Gt};var Vo=.1;function ph(e,t,n,i,r){let a=r.trace(t,n,G,G,e,wt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return D(N(n,t));let s=H(n,V(i,-20)),o=r.trace(t,s,G,G,e,wt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return D(N(s,t));let l=H(n,V(i,20)),c=r.trace(t,l,G,G,e,wt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?D(N(l,t)):null}function vh(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=N(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=fr(n)}}function b3(e,t,n){se(e,Vo,n)}function E3(e,t,n){fe(e,t,Vo,n)}function k3(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ko:e.monsterinfo.current_move=Br}function Wo(e,t,n){oe(e,t,Vo,n)}function yh(e,t,n){ue(e,t)}var Br,wh,Ko,T3,M3,R3,z3,Sh;function L3(e){e.monsterinfo.current_move=Br}function N3(e){e.monsterinfo.current_move=wh}function vi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ko:e.monsterinfo.current_move=Br}function O3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=Q(o),c=e.monsterinfo.blind_fire_target,u=ph(e,n,c,l,t);if(!u)return;i=u}else i=D(N(e.enemy.origin,n));ot(e,n,i,30,1e3,0,0,t,1)}function I3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=D(N(e.enemy.origin,n));Dt(e,n,i,20,2,.05,.05,0,t,4)}function C3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=Q(o),c=e.monsterinfo.blind_fire_target,u=ph(e,n,c,l,t);if(!u)return;i=u}else i=D(N(e.enemy.origin,n));ci(e,n,i,50,650,0,t)}function P3(e){e.monsterinfo.nextframe=Sh.lastframe,e.nextthink=-1}function D3(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),vi(e)}var F3=Array.from({length:30},()=>({ai:b3,dist:0}));Br={firstframe:0,lastframe:29,frames:F3,endfunc:L3};var U3=Array.from({length:16},()=>({ai:E3,dist:5}));wh={firstframe:30,lastframe:45,frames:U3,endfunc:N3};var B3=Array.from({length:16},()=>({ai:k3,dist:10}));Ko={firstframe:46,lastframe:61,frames:B3,endfunc:vi};var G3=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=vh:t>5&&t<12&&(n=O3),{ai:Wo,dist:0,think:n}});T3={firstframe:62,lastframe:77,frames:G3,endfunc:vi};var H3=Array.from({length:20},(e,t)=>({ai:Wo,dist:0,think:t%2===0&&t>5?I3:null}));M3={firstframe:78,lastframe:97,frames:H3,endfunc:vi};var V3=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=vh:(t===8||t===12||t===16)&&(n=C3),{ai:Wo,dist:0,think:n}});R3={firstframe:98,lastframe:115,frames:V3,endfunc:D3};var W3=Array.from({length:6},()=>({ai:yh,dist:0}));z3={firstframe:116,lastframe:121,frames:W3,endfunc:vi};var K3=Array.from({length:16},()=>({ai:yh,dist:0}));Sh={firstframe:122,lastframe:137,frames:K3,endfunc:P3};var $o=.1;function $3(e,t,n){se(e,$o,n)}function Xo(e,t,n){me(e,t,$o,n)}function X3(e,t,n){oe(e,t,$o,n)}var Yo,xh,Y3,Z3,Ah;function j3(e){e.monsterinfo.current_move=Yo}function Zo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=xh:e.monsterinfo.current_move=Yo}function q3(e,t){if(!e.enemy)return;let n=Q(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=D(N(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),ot(e,i,r,2,1e3,1,0,t)}var J3=Array.from({length:1},()=>({ai:$3,dist:0}));Yo={firstframe:0,lastframe:0,frames:J3,endfunc:j3};var Q3=Array.from({length:1},()=>({ai:Xo,dist:0}));xh={firstframe:0,lastframe:0,frames:Q3,endfunc:Zo};var eT=Array.from({length:8},(e,t)=>({ai:X3,dist:0,think:t===4?q3:void 0}));Y3={firstframe:1,lastframe:8,frames:eT,endfunc:Zo};var tT=Array.from({length:2},()=>({ai:Xo,dist:0}));Z3={firstframe:9,lastframe:10,frames:tT,endfunc:Zo};var nT=Array.from({length:4},()=>({ai:Xo,dist:0}));function iT(e){e.monsterinfo.nextframe=Ah.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}Ah={firstframe:11,lastframe:14,frames:nT,endfunc:iT};var W8=new Map(Js.map(e=>[e.name,e]));var rT=2166136261,aT=16777619;function bh(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,aT)>>>0;return n>>>0}function hn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return bh(e,r)}function $s(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return bh(e,n)}var Ds=2,sT=1;function Ne(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ie(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function ar(e,t,n){return e===void 0?n:ie(e,t)}function hr(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function or(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ie(n,`${t} element`);return e}function oT(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ne(e,"level");return{frameNumber:ar(t.frameNumber,"level.frameNumber",0),timeSeconds:ar(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:ar(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:ar(t.deltaSeconds,"level.deltaSeconds",0)}}function cT(e){if(e===void 0)return new fd().getState();let t=Ne(e,"rng"),n=Ne(t.mt,"rng.mt"),i=or(n.state,"rng.mt.state");return{mt:{index:ie(n.index,"rng.mt.index"),state:i}}}function lT(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=Ne(t,`thinks[${n}]`);return{time:ie(i.time,`thinks[${n}].time`),entityIndex:ie(i.entityIndex,`thinks[${n}].entityIndex`)}})}function uT(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Ne(e,"awareness"),n=(i,r)=>i===null?null:ie(i,r);return{frameNumber:ie(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ie(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ie(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ie(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function dT(e){if(e===void 0)return{};let t=Ne(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=Ne(r,i),s={};for(let[o,l]of Object.entries(a))s[o]=ie(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ie(a,`${i}[0]`),ie(s,`${i}[1]`),ie(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function mT(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Ne(t,`entities[${n}]`);return{index:ie(i.index,`entities[${n}].index`),fields:dT(i.fields)}})}function hT(e){let t=Ne(e,"pool");return{capacity:ie(t.capacity,"pool.capacity"),activeOrder:or(t.activeOrder,"pool.activeOrder"),freeList:or(t.freeList,"pool.freeList"),pendingFree:or(t.pendingFree,"pool.pendingFree")}}function fT(e){let t=Ne(e,"entities");return{timeSeconds:ie(t.timeSeconds,"entities.timeSeconds"),pool:hT(t.pool),entities:mT(t.entities),thinks:lT(t.thinks),awareness:uT(t.awareness)}}function _T(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=Ne(t,`cvars[${n}]`);return{name:hr(i.name,`cvars[${n}].name`),value:hr(i.value,`cvars[${n}].value`),flags:ie(i.flags,`cvars[${n}].flags`)}})}function gT(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>hr(t,`configstrings[${n}]`))}function pT(e){return e===void 0?{}:Ne(e,"gameState")}function st(e,t){if(t==null)return e;if(typeof t=="number")return hn(e,t);if(typeof t=="string")return $s(e,t);if(typeof t=="boolean")return hn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=st(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=$s(n,r),n=st(n,t[r]);return n}return e}function vT(e){let t=rT;return t=hn(t,e.version),t=hn(t,e.timestamp),t=$s(t,e.map),t=hn(t,e.difficulty),t=hn(t,e.playtimeSeconds),t=st(t,e.gameState),t=st(t,e.level),t=st(t,e.rng),t=st(t,e.entities),t=st(t,e.cvars),t=st(t,e.configstrings),e.player&&(t=st(t,e.player)),t>>>0}function Eh(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Ne(i,"save"),a=r.version??Ds,s=ie(a,"version");if(s<sT)throw new Error(`Unsupported save version ${s}`);if(s>Ds&&!n)throw new Error(`Save version ${s} is newer than supported ${Ds}`);let o={version:s,timestamp:ie(r.timestamp,"timestamp"),map:hr(r.map,"map"),difficulty:ie(r.difficulty,"difficulty"),playtimeSeconds:ie(r.playtimeSeconds,"playtimeSeconds"),gameState:pT(r.gameState),level:oT(r.level),rng:cT(r.rng),entities:fT(r.entities),cvars:_T(r.cvars),configstrings:gT(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ie(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=vT(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}var K8=new Set(Js.filter(e=>e.save).map(e=>e.name));var ud=globalThis.TextEncoder;function fn(e){return Eh({...e},{allowNewerVersion:!0})}function yT(e){return ud?new ud().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var wT=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:fn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:fn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:fn(e.save)}))}},ST=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:fn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:fn(t.save)}))}},jo=class ei{constructor(t={}){let{dbName:n=ei.DEFAULT_DB_NAME,storeName:i=ei.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new ST(r,n,i):this.adapter=new wT}async save(t,n,i={}){let r=fn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:yT(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return Eh(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(ei.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(ei.QUICK_SLOT,t)}};jo.DEFAULT_DB_NAME="quake2ts-saves";jo.DEFAULT_STORE="saves";jo.QUICK_SLOT="quicksave";var $8=Zs();var X8=[I.Blaster,I.Shotgun,I.SuperShotgun,I.Machinegun,I.Chaingun,I.GrenadeLauncher,I.RocketLauncher,I.HandGrenade,I.HyperBlaster,I.Railgun,I.BFG10K],Y8=[{id:j.QuadDamage,priority:1},{id:j.Invulnerability,priority:2},{id:j.EnviroSuit,priority:3},{id:j.Rebreather,priority:4},{id:j.Silencer,priority:5}];var xT=new Map,AT=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],kh=async(e,t)=>{for(let n of AT)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);xT.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var bT=new Map,ET=["d_left","d_right","d_up","d_down"],Th=async(e,t)=>{for(let n of ET)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);bT.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var qo=[],kT=0,Mh=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);qo.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}qo.length>0&&(kT=qo[0].width),await Qu(e,t),await kh(e,t),await Th(e,t)};var Jo=[{type:"null"},{type:"armor",id:vn.BODY},{type:"armor",id:vn.COMBAT},{type:"armor",id:vn.JACKET},{type:"armor",id:vn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:I.Grapple},{type:"weapon",id:I.Blaster},{type:"weapon",id:I.ChainFist},{type:"weapon",id:I.Shotgun},{type:"weapon",id:I.SuperShotgun},{type:"weapon",id:I.Machinegun},{type:"weapon",id:I.EtfRifle},{type:"weapon",id:I.Chaingun},{type:"ammo",id:B.Grenades},{type:"ammo",id:B.Trap},{type:"ammo",id:B.Tesla},{type:"weapon",id:I.GrenadeLauncher},{type:"weapon",id:I.ProxLauncher},{type:"weapon",id:I.RocketLauncher},{type:"weapon",id:I.HyperBlaster},{type:"weapon",id:I.IonRipper},{type:"weapon",id:I.PlasmaBeam},{type:"weapon",id:I.Railgun},{type:"weapon",id:I.Phalanx},{type:"weapon",id:I.BFG10K},{type:"weapon",id:I.Disruptor},{type:"ammo",id:B.Shells},{type:"ammo",id:B.Bullets},{type:"ammo",id:B.Cells},{type:"ammo",id:B.Rockets},{type:"ammo",id:B.Slugs},{type:"ammo",id:B.MagSlugs},{type:"ammo",id:B.Flechettes},{type:"ammo",id:B.Prox},{type:"ammo",id:B.Nuke},{type:"ammo",id:B.Rounds},{type:"powerup",id:j.QuadDamage},{type:"powerup",id:j.QuadFire},{type:"powerup",id:j.Invulnerability},{type:"powerup",id:j.Invisibility},{type:"powerup",id:j.Silencer},{type:"powerup",id:j.Rebreather},{type:"powerup",id:j.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:j.Bandolier},{type:"powerup",id:j.AmmoPack},{type:"powerup",id:j.IRGoggles},{type:"powerup",id:j.DoubleDamage},{type:"powerup",id:j.SphereVengeance},{type:"powerup",id:j.SphereHunter},{type:"powerup",id:j.SphereDefender},{type:"powerup",id:j.Doppelganger},{type:"powerup",id:j.TagToken},{type:"key",id:he.DataCD},{type:"key",id:he.PowerCube},{type:"key",id:he.ExplosiveCharges},{type:"key",id:he.Yellow},{type:"key",id:he.PowerCore},{type:"key",id:he.Pyramid},{type:"key",id:he.DataSpinner},{type:"key",id:he.Pass},{type:"key",id:he.Blue},{type:"key",id:he.Red},{type:"key",id:he.Green},{type:"key",id:he.CommanderHead},{type:"key",id:he.Airstrike},{type:"key",id:he.NukeContainer},{type:"key",id:he.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:he.RedFlag},{type:"key",id:he.BlueFlag},{type:"powerup",id:j.TechResistance},{type:"powerup",id:j.TechStrength},{type:"powerup",id:j.TechHaste},{type:"powerup",id:j.TechRegeneration},{type:"powerup",id:j.Flashlight},{type:"powerup",id:j.Compass}];var TT=32768,Gr=class{constructor(t,n){this.configstrings=new Array(TT).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&Yl){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=$t();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&qa&&(t.modelindex=n.modelindex),i&es&&(t.modelindex2=n.modelindex2),i&ts&&(t.modelindex3=n.modelindex3),i&ns&&(t.modelindex4=n.modelindex4),i&Xa&&(t.frame=n.frame),i&Qa&&(t.frame=n.frame),(i&Di||i&Bi)&&(t.skinnum=n.skinnum),(i&Pi||i&Ui)&&(t.effects=n.effects),(i&Ci||i&Fi)&&(t.renderfx=n.renderfx),i&Va&&(t.origin.x=n.origin.x),i&Wa&&(t.origin.y=n.origin.y),i&Za&&(t.origin.z=n.origin.z),i&ja&&(t.angles.x=n.angles.x),i&Ka&&(t.angles.y=n.angles.y),i&$a&&(t.angles.z=n.angles.z),i&is&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&rs&&(t.sound=n.sound),i&Ya&&(t.event=n.event),i&as&&(t.solid=n.solid),i&Ja&&(t.alpha=n.alpha),i&ss&&(t.scale=n.scale),i&os&&(t.instanceBits=n.instanceBits),i&cs&&(t.loopVolume=n.loopVolume),r&ls&&(t.loopAttenuation=n.loopAttenuation),r&us&&(t.owner=n.owner),r&ds&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let l=i??1,c=r??1,u=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,l,c,u):o&&this.imports.engine.audio.positioned_sound(o,n,l,c)}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=_t,c=zu(this.stats,xs.QuadDamage)?4:1;switch(n){case vu:r=-2,o={x:-2,y:0,z:0};break;case Eu:r=-4,o={x:-4,y:0,z:0};break;case pu:r=-1,a=Math.random()-.5;break;case yu:case wu:case Su:r=-.5,a=Math.random()-.5;break;case xu:r=-3,o={x:-3,y:0,z:0};break;case Au:case bu:r=-2,o={x:-2,y:0,z:0};break;case ku:r=-5,o={x:-2,y:0,z:0};break;case Tu:case gu:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let l=0;l<this.inventory.length;l++){let c=this.inventory[l];if(c<=0)continue;if(l>=Jo.length)break;let u=Jo[l];switch(u.type){case"weapon":i.ownedWeapons.add(u.id);break;case"ammo":i.ammo.counts[u.id]||(i.ammo.counts[u.id]=0),i.ammo.counts[u.id]=c;break;case"armor":i.armor={armorType:u.id,armorCount:c};break;case"powerup":i.powerups.set(u.id,c);break;case"key":i.keys.add(u.id);break;case"health":break;case"item":i.items.add(u.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:It.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:_t,kick_origin:_t,gunoffset:_t,gunangles:_t,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Pt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return an(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var En=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=ae.Models&&t<ae.Models+Zn){let i=t-ae.Models;this.models[i]=n}else if(t>=ae.Sounds&&t<ae.Sounds+jn){let i=t-ae.Sounds;this.sounds[i]=n}else if(t>=ae.Images&&t<ae.Images+qn){let i=t-ae.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var Hr=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var Vr=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${Rh(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${Rh(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Rh(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var Wr=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var yi=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var Kr=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var $r=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var Xr=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function zh(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,l=r.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((u,m)=>{let d=c+40+m*o,h=u.label;if(u.type==="input"&&u.getValue){if(h+=`: ${u.getValue()}`,m===t.selectedIndex){let f=Date.now();Math.floor(f/500)%2===0&&(h+="_")}}else u.type==="toggle"&&u.getValue&&(h+=`: ${u.getValue()}`);if(m===t.selectedIndex){let v=h.replace(/\^[0-9]/g,"").length*8,E=(n-v)/2;e.drawString(E-16,d,"\r")}e.drawCenterString(d,h)})}var wi=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&Yn.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var Yr=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var Zr=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*l,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(l*100);t.drawCenterString(o+a+10,`${c}%`)}};var jr=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var qr=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};function kn(e,t,n){return e+(t-e)*n}function Qo(e,t,n){return kn(e,t,n)}function Lh(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=i.getModelName(l.modelIndex);if(!u)continue;let m=s.getMd2Model(u)||s.getMd3Model(u);if(!m)continue;let d={x:kn(c.origin.x,l.origin.x,n),y:kn(c.origin.y,l.origin.y,n),z:kn(c.origin.z,l.origin.z,n)},h={x:Qo(c.angles.x,l.angles.x,n),y:Qo(c.angles.y,l.angles.y,n),z:Qo(c.angles.z,l.angles.z,n)},f=l.frame,y=c.frame,p=c.scale!==void 0?c.scale:1,v=l.scale!==void 0?l.scale:1,E=kn(p,v,n),w=T=>T===void 0||T===0?255:T,_=w(c.alpha),S=w(l.alpha),b=kn(_,S,n)/255,k=J.create();J.translate(k,k,[d.x,d.y,d.z]),J.rotateZ(k,k,h.z*Math.PI/180),J.rotateY(k,k,h.y*Math.PI/180),J.rotateX(k,k,h.x*Math.PI/180),J.scale(k,k,[E,E,E]),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:y,frame1:f,lerp:n},transform:k,skin:l.skinNum>0?i.getImageName(l.skinNum):void 0,alpha:b}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:y,frame1:f,lerp:n},transform:k,alpha:b})}return a}var Jr=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var Qr=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.driver=new Jr,this.options=t,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1;try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear())}sendCommand(t){if(this.state!==5)return;let n=new nn;n.writeByte(Ct.nop),this.driver.send(n.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let i=new Lu(n),r=i.readLong(),a=i.readLong();this.parser=new ms(i,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new nn;t.writeByte(Ct.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new nn;n.writeByte(Ct.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${Ii} ${t} ${i}`),this.driver.send(n.getData())}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new nn;o.writeByte(Ct.stringcmd),o.writeString("new"),this.driver.send(o.getData()),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new nn;t.writeByte(Ct.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),this.state=5}onFrame(t){}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var MT=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Ht=class{constructor(t=MT){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function Nh(){return new Ht}function ec(e){return e}function Si(e){return e.trim().toLowerCase()}var RT=250,tc=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},ea=(v=>(v.Forward="+forward",v.Back="+back",v.MoveLeft="+moveleft",v.MoveRight="+moveright",v.MoveUp="+moveup",v.MoveDown="+movedown",v.Jump="+jump",v.Crouch="+crouch",v.Attack="+attack",v.Use="+use",v.Holster="+holster",v.TurnLeft="+left",v.TurnRight="+right",v.LookUp="+lookup",v.LookDown="+lookdown",v.SpeedModifier="+speed",v.Zoom="+zoom",v))(ea||{}),zT={"+attack":Ze.Attack,"+use":Ze.Use,"+holster":Ze.Holster,"+jump":Ze.Jump,"+crouch":Ze.Crouch},LT=new Map(Object.values(ea).map(e=>[Si(e),e]));function NT(e){return LT.get(Si(e))}function xi(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Tn=class{constructor(t={},n=new Ht){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??cu,this.sideSpeed=t.sideSpeed??lu,this.upSpeed=t.upSpeed??uu,this.yawSpeed=t.yawSpeed??du,this.pitchSpeed=t.pitchSpeed??mu,this.sensitivity=t.sensitivity??hu,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=xi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=xi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=xi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=xi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=xi(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),l=this.sample("+lookup",t,n),u={x:(this.sample("+lookdown",t,n).fraction-l.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let x=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+x*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let x=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+x*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let x=this.sampleMouseDelta(),M=_u(x,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+M.x,y:u.y+M.y,z:0}}let m=fu(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),h=this.sample("+back",t,n),f=this.sample("+moveleft",t,n),y=this.sample("+moveright",t,n),p=this.sample("+moveup",t,n),v=this.sample("+movedown",t,n),E=this.sample("+speed",t,n),w=this.sample("+jump",t,n),_=this.sample("+crouch",t,n),S=this.runByDefault?E.active?.5:1:E.active?1:.5,A=this.forwardSpeed*(d.fraction-h.fraction)*S,b=this.sideSpeed*(y.fraction-f.fraction)*S,k=this.upSpeed*(p.fraction-v.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(A+=this.forwardSpeed*this.gamepadMove.y*S,b+=this.sideSpeed*this.gamepadMove.x*S),(this.touchMove.x!==0||this.touchMove.y!==0)&&(A+=this.forwardSpeed*this.touchMove.y*S,b+=this.sideSpeed*this.touchMove.x*S),this.jumpAddsUpMove&&w.fraction>0&&(k+=this.upSpeed*w.fraction),this.crouchAddsDownMove&&_.fraction>0&&(k-=this.upSpeed*_.fraction),A=this.clampMove(A,this.forwardSpeed),b=this.clampMove(b,this.sideSpeed),k=this.clampMove(k,this.upSpeed);let T=this.collectButtonBits(t,n),g=Math.min(Math.max(Math.round(t),1),RT);return(this.anyPressed||T!==Ze.None)&&(T|=Ze.Any),this.anyPressed=!1,{msec:g,buttons:T,angles:{...this.viewAngles},forwardmove:A,sidemove:b,upmove:k,serverFrame:i}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,l);u&&i.add(m);let d=this.gamepadButtons.get(m)??!1;u!==d&&(this.applyCommand(this.bindings.getBinding(m),u,m,t),this.gamepadButtons.set(m,u))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=NT(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=Ze.None;for(let[r,a]of Object.entries(zT)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new tc,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var ta=class{constructor(t,n=new Tn(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var na={x:0,y:0,z:0};function OT(e){let t=new rr(e.engine.trace),n=new ir,i=new jl,r=new Gr(e);r.setView(n);let a=new Wr,s=new Zr,o=new jr,l=new qr,c=new wi(new Yr),u,m,d=new En,h,f=!1,p=Ju(e,{get tickRate(){return 10},get frameTimeMs(){return h?.timeMs??0},get serverFrame(){return r.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return d},getClientName:g=>`Player ${g}`,getKeyBinding:g=>`[${g}]`,get inAutoDemo(){return f}}),v=qu(p),E=new Qr({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return b}}),w=new Xr(a,E);r.setCallbacks({onCenterPrint:g=>v.ParseCenterPrint(g,0,!1),onPrint:(g,x)=>v.NotifyMessage(0,x,!1),onConfigString:(g,x)=>{d.set(g,x),v.ParseConfigString(g,x)},onServerData:(g,x)=>{x&&x>0?i.setFrameDuration(1e3/x):i.setFrameDuration(100)}}),i.setHandler(r);let _,S,A,b=90,k=!1;if(e.host){m=new yi(a,e.host),u=new $r(a,m,e.host);let g=new Map;if(e.host.cvars){for(let x of e.host.cvars.list())g.set(x.name,{value:x.string,setValue:M=>e.host.cvars.setValue(x.name,M)});c.loadCvars(g)}}if(e.host?.commands&&(e.host.commands.register("playdemo",g=>{if(g.length<1){console.log("usage: playdemo <filename>");return}let x=g[0];console.log(`playdemo: ${x}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let g=ed();console.log(`Crosshair changed to index ${g}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{k=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{k=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():u&&a.pushMenu(u.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",g=>{if(g.length<1){console.log("usage: connect <address>");return}let x=g[0];console.log(`Connecting to ${x}...`),E.connect(x).catch(M=>{console.error("Failed to connect:",M),o.show("Connection Failed",M instanceof Error?M.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{E.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Yn.Archive,onChange:x=>{let M=x.number;isNaN(M)||(b=Math.max(1,Math.min(179,M)))},description:"Field of view"});let g=e.host.cvars.get("fov");if(g){let x=g.number;isNaN(x)||(b=Math.max(1,Math.min(179,x)))}}return{loadingScreen:s,errorDialog:o,init(g){this.Init(g)},Init(g){h=g,g?.state&&t.setAuthoritative(g),v.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),Mh(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(g){return a.isActive(),E.isConnected()&&E.sendCommand(g),t.enqueueCommand(g)},handleInput(g,x){if(!a.isActive())return!1;if(!x)return!0;let M=g.toLowerCase();return M==="arrowup"||M==="w"?a.handleInput("up"):M==="arrowdown"||M==="s"?a.handleInput("down"):M==="arrowleft"||M==="a"?a.handleInput("left"):M==="arrowright"||M==="d"?a.handleInput("right"):M==="enter"||M===" "?a.handleInput("select"):M==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:g.length===1?a.handleInput("char",g):g==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let g=e.host.cvars.list().map(x=>({name:x.name,value:x.string,flags:x.flags}));c.saveCvars(g)}}else u&&a.pushMenu(u.createPauseMenu())},createMainMenu(g,x,M,$,U){let X=new Vr(a,x,M,$,U),ge=m;if(!ge){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");ge=new yi(a,e.host)}let Ee=e.engine.assets,ct={findByExtension:Vt=>Ee?Ee.listFiles(Vt):[]},Ai=new Kr(a,ct,Vt=>{console.log(`Starting map: ${Vt}`),e.host?.commands.execute(`map ${Vt}`)}),Oh=new Hr(a,X,{...g,optionsFactory:ge,mapsFactory:Ai,multiplayerFactory:w,onSetDifficulty:Vt=>{e.host?.cvars&&e.host.cvars.setValue("skill",Vt.toString())}});return{menuSystem:a,factory:Oh}},render(g){let x=i.getState(),M=[];x===hs.Playing?_=r.getPredictionState():(g.latest?.state&&(t.setAuthoritative(g.latest),h=g.latest),g.previous?.state&&g.latest?.state?(_=an(g.previous.state,g.latest.state,g.alpha),g.latest.state.packetEntities&&g.previous.state.packetEntities&&(M=Lh(g.latest.state.packetEntities,g.previous.state.packetEntities,g.alpha,d,e))):_=g.latest?.state??g.previous?.state??t.getPredictedState());let $=g.latest&&g.previous?Math.max(0,g.latest.timeMs-g.previous.timeMs):0;S=n.sample(_,$);let U={};if(_){let{origin:X,viewAngles:ge}=_;A=new ml,A.position=te.fromValues(X.x,X.y,X.z);let Ee=S?.offset??{x:0,y:0,z:0};te.add(A.position,A.position,[Ee.x,Ee.y,Ee.z]);let ct=S?.angles??{x:0,y:0,z:0};A.angles=te.fromValues(ge.x+ct.x,ge.y+ct.y,ge.z+ct.z),A.fov=k?40:b,A.aspect=4/3,e.engine.renderer&&(A.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&A){let X;if(e.engine.assets){let ge=d.getModelName(1);if(ge){let Ee=e.engine.assets.getMap(ge)}}e.engine.renderer.renderFrame({camera:A,world:X,dlights:[]},M)}if(e.engine.renderer&&_&&_.client){let X=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},ge=g.latest?.timeMs??0;this.DrawHUD(X,ge)}return U},DrawHUD(g,x){if(!e.engine.renderer)return;let M=e.engine.renderer,$=M.width,U=M.height;if(_&&_.client){let X={origin:_.origin,velocity:_.velocity,viewAngles:_.viewAngles,onGround:it(_.pmFlags,Pe.OnGround),waterLevel:_.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:_.damageAlpha??0,damageIndicators:_.damageIndicators??[],blend:_.blend??[0,0,0,0],pickupIcon:_.pickupIcon,centerPrint:void 0,notify:void 0,stats:_.stats?[..._.stats]:new Array(32).fill(0),kick_angles:na,kick_origin:na,gunoffset:na,gunangles:na,gunindex:0,pm_type:_.pm_type??0,pm_time:_.pm_time??0,pm_flags:_.pmFlags,gun_frame:_.gun_frame??0,rdflags:_.rdflags??0,fov:_.fov??90};X.stats[De.STAT_HEALTH]=_.health??0,X.stats[De.STAT_AMMO]=_.ammo??0,X.stats[De.STAT_ARMOR]=_.armor??0,M.begin2D(),v.DrawHUD(0,null,{x:0,y:0,width:$,height:U},{x:0,y:0,width:$,height:U},1,0,X),M.end2D()}a.isActive()&&zh(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),_&&_.client&&l.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,_.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(v.Shutdown(),h=void 0,_=void 0,e.host?.cvars){let g=e.host.cvars.list().map(x=>({name:x.name,value:x.string,flags:x.flags}));c.saveCvars(g)}},get prediction(){return t},get lastRendered(){return _},get view(){return n},get lastView(){return S},get camera(){return A},demoPlayback:i,ParseCenterPrint(g){v.ParseCenterPrint(g,0,!1)},ParseNotify(g){v.NotifyMessage(0,g,!1)},showSubtitle(g,x){v.ShowSubtitle(g,x)},ParseConfigString(g,x){d.set(g,x),v.ParseConfigString(g,x)},demoHandler:r,multiplayer:E,configStrings:d}}return Fh(IT);})();
169
+ }`;var Dl=class{constructor(){this._position=re.create(),this._angles=re.create(),this._bobAngles=re.create(),this._bobOffset=re.create(),this._kickAngles=re.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=ee.create(),this._projectionMatrix=ee.create(),this._viewProjectionMatrix=ee.create(),this._dirty=!0}get position(){return this._position}set position(e){re.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){re.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){re.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){re.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){re.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=ee.create();return ee.perspective(t,e*Ln,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;ee.perspective(this._projectionMatrix,this._fov*Ln,this._aspect,this._near,this._far);let e=ee.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],r=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,i=t*Ln,a=n*Ln,s=r*Ln,o=ee.create();ee.identity(o),ee.rotateZ(o,o,-a),ee.rotateY(o,o,-i),ee.rotateX(o,o,-s);let l=ee.create();ee.multiply(l,e,o);let c=re.add(re.create(),this._position,this._bobOffset),u=re.negate(re.create(),c),h=re.create();re.transformMat4(h,u,o);let m=re.fromValues(h[1]||0,h[2]||0,h[0]||0);ee.copy(this._viewMatrix,l),this._viewMatrix[12]=m[0],this._viewMatrix[13]=m[1],this._viewMatrix[14]=m[2],ee.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var m_=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new Oa(t)}}reset(){this.offset=0}getOffset(){return this.offset}},h_=4,Vc=0,Wc=1,f_=2;function Qt(e){let t=e.length;for(;--t>=0;)e[t]=0}var __=0,Fl=1,g_=2,p_=3,v_=258,$a=29,$n=256,Fn=$n+1+$a,jt=30,Xa=19,Ul=2*Fn+1,Rt=15,ya=16,y_=7,Ya=256,Bl=16,Gl=17,Hl=18,Ca=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Dr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),w_=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Vl=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),S_=512,rt=new Array((Fn+2)*2);Qt(rt);var Cn=new Array(jt*2);Qt(Cn);var Un=new Array(S_);Qt(Un);var Bn=new Array(v_-p_+1);Qt(Bn);var Za=new Array($a);Qt(Za);var Fr=new Array(jt);Qt(Fr);function wa(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}var Wl,Kl,$l;function Sa(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var Xl=e=>e<256?Un[e]:Un[256+(e>>>7)],Gn=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Te=(e,t,n)=>{e.bi_valid>ya-n?(e.bi_buf|=t<<e.bi_valid&65535,Gn(e,e.bi_buf),e.bi_buf=t>>ya-e.bi_valid,e.bi_valid+=n-ya):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},$e=(e,t,n)=>{Te(e,n[t*2],n[t*2+1])},Yl=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},A_=e=>{e.bi_valid===16?(Gn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},x_=(e,t)=>{let n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,l=t.stat_desc.max_length,c,u,h,m,f,g,S=0;for(m=0;m<=Rt;m++)e.bl_count[m]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Ul;c++)u=e.heap[c],m=n[n[u*2+1]*2+1]+1,m>l&&(m=l,S++),n[u*2+1]=m,!(u>r)&&(e.bl_count[m]++,f=0,u>=o&&(f=s[u-o]),g=n[u*2],e.opt_len+=g*(m+f),a&&(e.static_len+=g*(i[u*2+1]+f)));if(S!==0){do{for(m=l-1;e.bl_count[m]===0;)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[l]--,S-=2}while(S>0);for(m=l;m!==0;m--)for(u=e.bl_count[m];u!==0;)h=e.heap[--c],!(h>r)&&(n[h*2+1]!==m&&(e.opt_len+=(m-n[h*2+1])*n[h*2],n[h*2+1]=m),u--)}},Zl=(e,t,n)=>{let r=new Array(Rt+1),i=0,a,s;for(a=1;a<=Rt;a++)i=i+n[a-1]<<1,r[a]=i;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Yl(r[o]++,o))}},k_=()=>{let e,t,n,r,i,a=new Array(Rt+1);for(n=0,r=0;r<$a-1;r++)for(Za[r]=n,e=0;e<1<<Ca[r];e++)Bn[n++]=r;for(Bn[n-1]=r,i=0,r=0;r<16;r++)for(Fr[r]=i,e=0;e<1<<Dr[r];e++)Un[i++]=r;for(i>>=7;r<jt;r++)for(Fr[r]=i<<7,e=0;e<1<<Dr[r]-7;e++)Un[256+i++]=r;for(t=0;t<=Rt;t++)a[t]=0;for(e=0;e<=143;)rt[e*2+1]=8,e++,a[8]++;for(;e<=255;)rt[e*2+1]=9,e++,a[9]++;for(;e<=279;)rt[e*2+1]=7,e++,a[7]++;for(;e<=287;)rt[e*2+1]=8,e++,a[8]++;for(Zl(rt,Fn+1,a),e=0;e<jt;e++)Cn[e*2+1]=5,Cn[e*2]=Yl(e,5);Wl=new wa(rt,Ca,$n+1,Fn,Rt),Kl=new wa(Cn,Dr,0,jt,Rt),$l=new wa(new Array(0),w_,0,Xa,y_)},jl=e=>{let t;for(t=0;t<Fn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<jt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Xa;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Ya*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},ql=e=>{e.bi_valid>8?Gn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Kc=(e,t,n,r)=>{let i=t*2,a=n*2;return e[i]<e[a]||e[i]===e[a]&&r[t]<=r[n]},Aa=(e,t,n)=>{let r=e.heap[n],i=n<<1;for(;i<=e.heap_len&&(i<e.heap_len&&Kc(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!Kc(t,r,e.heap[i],e.depth));)e.heap[n]=e.heap[i],n=i,i<<=1;e.heap[n]=r},$c=(e,t,n)=>{let r,i,a=0,s,o;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+a++]&255,r+=(e.pending_buf[e.sym_buf+a++]&255)<<8,i=e.pending_buf[e.sym_buf+a++],r===0?$e(e,i,t):(s=Bn[i],$e(e,s+$n+1,t),o=Ca[s],o!==0&&(i-=Za[s],Te(e,i,o)),r--,s=Xl(r),$e(e,s,n),o=Dr[s],o!==0&&(r-=Fr[s],Te(e,r,o)));while(a<e.sym_next);$e(e,Ya,t)},Pa=(e,t)=>{let n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=Ul,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=l=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,i&&(e.static_len-=r[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)Aa(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Aa(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,Aa(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],x_(e,t),Zl(n,l,e.bl_count)},Xc=(e,t,n)=>{let r,i=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)a=s,s=t[(r+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[Bl*2]++):o<=10?e.bl_tree[Gl*2]++:e.bl_tree[Hl*2]++,o=0,i=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},Yc=(e,t,n)=>{let r,i=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),r=0;r<=n;r++)if(a=s,s=t[(r+1)*2+1],!(++o<l&&a===s)){if(o<c)do $e(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==i&&($e(e,a,e.bl_tree),o--),$e(e,Bl,e.bl_tree),Te(e,o-3,2)):o<=10?($e(e,Gl,e.bl_tree),Te(e,o-3,3)):($e(e,Hl,e.bl_tree),Te(e,o-11,7));o=0,i=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},E_=e=>{let t;for(Xc(e,e.dyn_ltree,e.l_desc.max_code),Xc(e,e.dyn_dtree,e.d_desc.max_code),Pa(e,e.bl_desc),t=Xa-1;t>=3&&e.bl_tree[Vl[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},b_=(e,t,n,r)=>{let i;for(Te(e,t-257,5),Te(e,n-1,5),Te(e,r-4,4),i=0;i<r;i++)Te(e,e.bl_tree[Vl[i]*2+1],3);Yc(e,e.dyn_ltree,t-1),Yc(e,e.dyn_dtree,n-1)},T_=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Vc;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Wc;for(n=32;n<$n;n++)if(e.dyn_ltree[n*2]!==0)return Wc;return Vc},Zc=!1,M_=e=>{Zc||(k_(),Zc=!0),e.l_desc=new Sa(e.dyn_ltree,Wl),e.d_desc=new Sa(e.dyn_dtree,Kl),e.bl_desc=new Sa(e.bl_tree,$l),e.bi_buf=0,e.bi_valid=0,jl(e)},Jl=(e,t,n,r)=>{Te(e,(__<<1)+(r?1:0),3),ql(e),Gn(e,n),Gn(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},R_=e=>{Te(e,Fl<<1,3),$e(e,Ya,rt),A_(e)},z_=(e,t,n,r)=>{let i,a,s=0;e.level>0?(e.strm.data_type===f_&&(e.strm.data_type=T_(e)),Pa(e,e.l_desc),Pa(e,e.d_desc),s=E_(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=n+5,n+4<=i&&t!==-1?Jl(e,t,n,r):e.strategy===h_||a===i?(Te(e,(Fl<<1)+(r?1:0),3),$c(e,rt,Cn)):(Te(e,(g_<<1)+(r?1:0),3),b_(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),$c(e,e.dyn_ltree,e.dyn_dtree)),jl(e),r&&ql(e)},L_=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Bn[n]+$n+1)*2]++,e.dyn_dtree[Xl(t)*2]++),e.sym_next===e.sym_end),N_=M_,O_=Jl,I_=z_,C_=L_,P_=R_,D_={_tr_init:N_,_tr_stored_block:O_,_tr_flush_block:I_,_tr_tally:C_,_tr_align:P_},F_=(e,t,n,r)=>{let i=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,a=a+i|0;while(--s);i%=65521,a%=65521}return i|a<<16|0},Hn=F_,U_=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},B_=new Uint32Array(U_()),G_=(e,t,n,r)=>{let i=B_,a=r+n;e^=-1;for(let s=r;s<a;s++)e=e>>>8^i[(e^t[s])&255];return e^-1},ye=G_,Nt={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Ct={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:H_,_tr_stored_block:Da,_tr_flush_block:V_,_tr_tally:ht,_tr_align:W_}=D_,{Z_NO_FLUSH:ft,Z_PARTIAL_FLUSH:K_,Z_FULL_FLUSH:$_,Z_FINISH:Pe,Z_BLOCK:jc,Z_OK:Ae,Z_STREAM_END:qc,Z_STREAM_ERROR:Xe,Z_DATA_ERROR:X_,Z_BUF_ERROR:xa,Z_DEFAULT_COMPRESSION:Y_,Z_FILTERED:Z_,Z_HUFFMAN_ONLY:Nr,Z_RLE:j_,Z_FIXED:q_,Z_DEFAULT_STRATEGY:J_,Z_UNKNOWN:Q_,Z_DEFLATED:qr}=Ct,eg=9,tg=15,ng=8,rg=29,ig=256,Fa=ig+1+rg,ag=30,sg=19,og=2*Fa+1,cg=15,X=3,mt=258,Ye=mt+X+1,lg=32,qt=42,ja=57,Ua=69,Ba=73,Ga=91,Ha=103,zt=113,On=666,Ee=1,en=2,Ot=3,tn=4,ug=3,Lt=(e,t)=>(e.msg=Nt[t],t),Jc=e=>e*2-(e>4?9:0),dt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},dg=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)},mg=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,_t=mg,ze=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Le=(e,t)=>{V_(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ze(e.strm)},q=(e,t)=>{e.pending_buf[e.pending++]=t},Nn=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Va=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=Hn(e.adler,t,i,n):e.state.wrap===2&&(e.adler=ye(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Ql=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-Ye?e.strstart-(e.w_size-Ye):0,c=e.window,u=e.w_mask,h=e.prev,m=e.strstart+mt,f=c[r+s-1],g=c[r+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(i=t,!(c[i+s]!==g||c[i+s-1]!==f||c[i]!==c[r]||c[++i]!==c[r+1])){r+=2,i++;do;while(c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&r<m);if(a=mt-(m-r),r=m-mt,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[r+s-1],g=c[r+s]}}while((t=h[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Jt=e=>{let t=e.w_size,n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ye)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),dg(e),r+=t),e.strm.avail_in===0)break;if(n=Va(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=X)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=_t(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=_t(e,e.ins_h,e.window[i+X-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<X)););}while(e.lookahead<Ye&&e.strm.avail_in!==0)},eu=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,a,s=0,o=e.strm.avail_in;do{if(r=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,i=e.strstart-e.block_start,r>i+e.strm.avail_in&&(r=i+e.strm.avail_in),r>a&&(r=a),r<n&&(r===0&&t!==Pe||t===ft||r!==i+e.strm.avail_in)))break;s=t===Pe&&r===i+e.strm.avail_in?1:0,Da(e,0,0,s),e.pending_buf[e.pending-4]=r,e.pending_buf[e.pending-3]=r>>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,ze(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(Va(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?tn:t!==ft&&t!==Pe&&e.strm.avail_in===0&&e.strstart===e.block_start?en:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(Va(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,i=e.strstart-e.block_start,(i>=n||(i||t===Pe)&&t!==ft&&e.strm.avail_in===0&&i<=a)&&(r=i>a?a:i,s=t===Pe&&e.strm.avail_in===0&&r===i?1:0,Da(e,e.block_start,r,s),e.block_start+=r,ze(e.strm)),s?Ot:Ee)},ka=(e,t)=>{let n,r;for(;;){if(e.lookahead<Ye){if(Jt(e),e.lookahead<Ye&&t===ft)return Ee;if(e.lookahead===0)break}if(n=0,e.lookahead>=X&&(e.ins_h=_t(e,e.ins_h,e.window[e.strstart+X-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-Ye&&(e.match_length=Ql(e,n)),e.match_length>=X)if(r=ht(e,e.strstart-e.match_start,e.match_length-X),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=X){e.match_length--;do e.strstart++,e.ins_h=_t(e,e.ins_h,e.window[e.strstart+X-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=_t(e,e.ins_h,e.window[e.strstart+1]);else r=ht(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Le(e,!1),e.strm.avail_out===0))return Ee}return e.insert=e.strstart<X-1?e.strstart:X-1,t===Pe?(Le(e,!0),e.strm.avail_out===0?Ot:tn):e.sym_next&&(Le(e,!1),e.strm.avail_out===0)?Ee:en},Xt=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<Ye){if(Jt(e),e.lookahead<Ye&&t===ft)return Ee;if(e.lookahead===0)break}if(n=0,e.lookahead>=X&&(e.ins_h=_t(e,e.ins_h,e.window[e.strstart+X-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=X-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-Ye&&(e.match_length=Ql(e,n),e.match_length<=5&&(e.strategy===Z_||e.match_length===X&&e.strstart-e.match_start>4096)&&(e.match_length=X-1)),e.prev_length>=X&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-X,r=ht(e,e.strstart-1-e.prev_match,e.prev_length-X),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=_t(e,e.ins_h,e.window[e.strstart+X-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=X-1,e.strstart++,r&&(Le(e,!1),e.strm.avail_out===0))return Ee}else if(e.match_available){if(r=ht(e,0,e.window[e.strstart-1]),r&&Le(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Ee}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=ht(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<X-1?e.strstart:X-1,t===Pe?(Le(e,!0),e.strm.avail_out===0?Ot:tn):e.sym_next&&(Le(e,!1),e.strm.avail_out===0)?Ee:en},hg=(e,t)=>{let n,r,i,a,s=e.window;for(;;){if(e.lookahead<=mt){if(Jt(e),e.lookahead<=mt&&t===ft)return Ee;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=X&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){a=e.strstart+mt;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&i<a);e.match_length=mt-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=X?(n=ht(e,1,e.match_length-X),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=ht(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Le(e,!1),e.strm.avail_out===0))return Ee}return e.insert=0,t===Pe?(Le(e,!0),e.strm.avail_out===0?Ot:tn):e.sym_next&&(Le(e,!1),e.strm.avail_out===0)?Ee:en},fg=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Jt(e),e.lookahead===0)){if(t===ft)return Ee;break}if(e.match_length=0,n=ht(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Le(e,!1),e.strm.avail_out===0))return Ee}return e.insert=0,t===Pe?(Le(e,!0),e.strm.avail_out===0?Ot:tn):e.sym_next&&(Le(e,!1),e.strm.avail_out===0)?Ee:en};function Ke(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}var In=[new Ke(0,0,0,0,eu),new Ke(4,4,8,4,ka),new Ke(4,5,16,8,ka),new Ke(4,6,32,32,ka),new Ke(4,4,16,16,Xt),new Ke(8,16,32,32,Xt),new Ke(8,16,128,128,Xt),new Ke(8,32,128,256,Xt),new Ke(32,128,258,1024,Xt),new Ke(32,258,258,4096,Xt)],_g=e=>{e.window_size=2*e.w_size,dt(e.head),e.max_lazy_match=In[e.level].max_lazy,e.good_match=In[e.level].good_length,e.nice_match=In[e.level].nice_length,e.max_chain_length=In[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=X-1,e.match_available=0,e.ins_h=0};function gg(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=qr,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(og*2),this.dyn_dtree=new Uint16Array((2*ag+1)*2),this.bl_tree=new Uint16Array((2*sg+1)*2),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(cg+1),this.heap=new Uint16Array(2*Fa+1),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Fa+1),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Xn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==qt&&t.status!==ja&&t.status!==Ua&&t.status!==Ba&&t.status!==Ga&&t.status!==Ha&&t.status!==zt&&t.status!==On?1:0},tu=e=>{if(Xn(e))return Lt(e,Xe);e.total_in=e.total_out=0,e.data_type=Q_;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?ja:t.wrap?qt:zt,e.adler=t.wrap===2?0:1,t.last_flush=-2,H_(t),Ae},nu=e=>{let t=tu(e);return t===Ae&&_g(e.state),t},pg=(e,t)=>Xn(e)||e.state.wrap!==2?Xe:(e.state.gzhead=t,Ae),ru=(e,t,n,r,i,a)=>{if(!e)return Xe;let s=1;if(t===Y_&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>eg||n!==qr||r<8||r>15||t<0||t>9||a<0||a>q_||r===8&&s!==1)return Lt(e,Xe);r===8&&(r=9);let o=new gg;return e.state=o,o.strm=e,o.status=qt,o.wrap=s,o.gzhead=null,o.w_bits=r,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+X-1)/X),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,nu(e)},vg=(e,t)=>ru(e,t,qr,tg,ng,J_),yg=(e,t)=>{if(Xn(e)||t>jc||t<0)return e?Lt(e,Xe):Xe;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===On&&t!==Pe)return Lt(e,e.avail_out===0?xa:Xe);let r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(ze(e),e.avail_out===0)return n.last_flush=-1,Ae}else if(e.avail_in===0&&Jc(t)<=Jc(r)&&t!==Pe)return Lt(e,xa);if(n.status===On&&e.avail_in!==0)return Lt(e,xa);if(n.status===qt&&n.wrap===0&&(n.status=zt),n.status===qt){let i=qr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Nr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,i|=a<<6,n.strstart!==0&&(i|=lg),i+=31-i%31,Nn(n,i),n.strstart!==0&&(Nn(n,e.adler>>>16),Nn(n,e.adler&65535)),e.adler=1,n.status=zt,ze(e),n.pending!==0)return n.last_flush=-1,Ae}if(n.status===ja){if(e.adler=0,q(n,31),q(n,139),q(n,8),n.gzhead)q(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),q(n,n.gzhead.time&255),q(n,n.gzhead.time>>8&255),q(n,n.gzhead.time>>16&255),q(n,n.gzhead.time>>24&255),q(n,n.level===9?2:n.strategy>=Nr||n.level<2?4:0),q(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(q(n,n.gzhead.extra.length&255),q(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=ye(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Ua;else if(q(n,0),q(n,0),q(n,0),q(n,0),q(n,0),q(n,n.level===9?2:n.strategy>=Nr||n.level<2?4:0),q(n,ug),n.status=zt,ze(e),n.pending!==0)return n.last_flush=-1,Ae}if(n.status===Ua){if(n.gzhead.extra){let i=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=ye(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=o,ze(e),n.pending!==0)return n.last_flush=-1,Ae;i=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>i&&(e.adler=ye(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Ba}if(n.status===Ba){if(n.gzhead.name){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=ye(e.adler,n.pending_buf,n.pending-i,i)),ze(e),n.pending!==0)return n.last_flush=-1,Ae;i=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=ye(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Ga}if(n.status===Ga){if(n.gzhead.comment){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=ye(e.adler,n.pending_buf,n.pending-i,i)),ze(e),n.pending!==0)return n.last_flush=-1,Ae;i=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=ye(e.adler,n.pending_buf,n.pending-i,i))}n.status=Ha}if(n.status===Ha){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(ze(e),n.pending!==0))return n.last_flush=-1,Ae;q(n,e.adler&255),q(n,e.adler>>8&255),e.adler=0}if(n.status=zt,ze(e),n.pending!==0)return n.last_flush=-1,Ae}if(e.avail_in!==0||n.lookahead!==0||t!==ft&&n.status!==On){let i=n.level===0?eu(n,t):n.strategy===Nr?fg(n,t):n.strategy===j_?hg(n,t):In[n.level].func(n,t);if((i===Ot||i===tn)&&(n.status=On),i===Ee||i===Ot)return e.avail_out===0&&(n.last_flush=-1),Ae;if(i===en&&(t===K_?W_(n):t!==jc&&(Da(n,0,0,!1),t===$_&&(dt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),ze(e),e.avail_out===0))return n.last_flush=-1,Ae}return t!==Pe?Ae:n.wrap<=0?qc:(n.wrap===2?(q(n,e.adler&255),q(n,e.adler>>8&255),q(n,e.adler>>16&255),q(n,e.adler>>24&255),q(n,e.total_in&255),q(n,e.total_in>>8&255),q(n,e.total_in>>16&255),q(n,e.total_in>>24&255)):(Nn(n,e.adler>>>16),Nn(n,e.adler&65535)),ze(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Ae:qc)},wg=e=>{if(Xn(e))return Xe;let t=e.state.status;return e.state=null,t===zt?Lt(e,X_):Ae},Sg=(e,t)=>{let n=t.length;if(Xn(e))return Xe;let r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==qt||r.lookahead)return Xe;if(i===1&&(e.adler=Hn(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(dt(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Jt(r);r.lookahead>=X;){let l=r.strstart,c=r.lookahead-(X-1);do r.ins_h=_t(r,r.ins_h,r.window[l+X-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--c);r.strstart=l,r.lookahead=X-1,Jt(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=X-1,r.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,r.wrap=i,Ae},Ag=vg,xg=ru,kg=nu,Eg=tu,bg=pg,Tg=yg,Mg=wg,Rg=Sg,zg="pako deflate (from Nodeca project)",Pn={deflateInit:Ag,deflateInit2:xg,deflateReset:kg,deflateResetKeep:Eg,deflateSetHeader:bg,deflate:Tg,deflateEnd:Mg,deflateSetDictionary:Rg,deflateInfo:zg},Lg=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ng=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let r in n)Lg(n,r)&&(e[r]=n[r])}}return e},Og=e=>{let t=0;for(let r=0,i=e.length;r<i;r++)t+=e[r].length;let n=new Uint8Array(t);for(let r=0,i=0,a=e.length;r<a;r++){let s=e[r];n.set(s,i),i+=s.length}return n},Jr={assign:Ng,flattenChunks:Og},iu=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{iu=!1}var Vn=new Uint8Array(256);for(let e=0;e<256;e++)Vn[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Vn[254]=Vn[254]=1;var Ig=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,a,s=e.length,o=0;for(i=0;i<s;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<s&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,i=0;a<o;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<s&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},Cg=(e,t)=>{if(t<65534&&e.subarray&&iu)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n},Pg=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i,a=new Array(n*2);for(i=0,r=0;r<n;){let s=e[r++];if(s<128){a[i++]=s;continue}let o=Vn[s];if(o>4){a[i++]=65533,r+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&r<n;)s=s<<6|e[r++]&63,o--;if(o>1){a[i++]=65533;continue}s<65536?a[i++]=s:(s-=65536,a[i++]=55296|s>>10&1023,a[i++]=56320|s&1023)}return Cg(a,i)},Dg=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Vn[e[n]]>t?n:t},Wn={string2buf:Ig,buf2string:Pg,utf8border:Dg};function Fg(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var au=Fg,su=Object.prototype.toString,{Z_NO_FLUSH:Ug,Z_SYNC_FLUSH:Bg,Z_FULL_FLUSH:Gg,Z_FINISH:Hg,Z_OK:Ur,Z_STREAM_END:Vg,Z_DEFAULT_COMPRESSION:Wg,Z_DEFAULT_STRATEGY:Kg,Z_DEFLATED:$g}=Ct;function Yn(e){this.options=Jr.assign({level:Wg,method:$g,chunkSize:16384,windowBits:15,memLevel:8,strategy:Kg},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new au,this.strm.avail_out=0;let n=Pn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ur)throw new Error(Nt[n]);if(t.header&&Pn.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Wn.string2buf(t.dictionary):su.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Pn.deflateSetDictionary(this.strm,r),n!==Ur)throw new Error(Nt[n]);this._dict_set=!0}}Yn.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?Hg:Ug,typeof e=="string"?n.input=Wn.string2buf(e):su.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(a===Bg||a===Gg)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Pn.deflate(n,a),i===Vg)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Pn.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ur;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Yn.prototype.onData=function(e){this.chunks.push(e)};Yn.prototype.onEnd=function(e){e===Ur&&(this.result=Jr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function qa(e,t){let n=new Yn(t);if(n.push(e,!0),n.err)throw n.msg||Nt[n.err];return n.result}function Xg(e,t){return t=t||{},t.raw=!0,qa(e,t)}function Yg(e,t){return t=t||{},t.gzip=!0,qa(e,t)}var Zg=Yn,jg=qa,qg=Xg,Jg=Yg,Qg=Ct,ep={Deflate:Zg,deflate:jg,deflateRaw:qg,gzip:Jg,constants:Qg},Or=16209,tp=16191,np=function(t,n){let r,i,a,s,o,l,c,u,h,m,f,g,S,y,w,T,A,p,x,E,b,M,R,v,k=t.state;r=t.next_in,R=t.input,i=r+(t.avail_in-5),a=t.next_out,v=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=k.dmax,c=k.wsize,u=k.whave,h=k.wnext,m=k.window,f=k.hold,g=k.bits,S=k.lencode,y=k.distcode,w=(1<<k.lenbits)-1,T=(1<<k.distbits)-1;e:do{g<15&&(f+=R[r++]<<g,g+=8,f+=R[r++]<<g,g+=8),A=S[f&w];t:for(;;){if(p=A>>>24,f>>>=p,g-=p,p=A>>>16&255,p===0)v[a++]=A&65535;else if(p&16){x=A&65535,p&=15,p&&(g<p&&(f+=R[r++]<<g,g+=8),x+=f&(1<<p)-1,f>>>=p,g-=p),g<15&&(f+=R[r++]<<g,g+=8,f+=R[r++]<<g,g+=8),A=y[f&T];n:for(;;){if(p=A>>>24,f>>>=p,g-=p,p=A>>>16&255,p&16){if(E=A&65535,p&=15,g<p&&(f+=R[r++]<<g,g+=8,g<p&&(f+=R[r++]<<g,g+=8)),E+=f&(1<<p)-1,E>l){t.msg="invalid distance too far back",k.mode=Or;break e}if(f>>>=p,g-=p,p=a-s,E>p){if(p=E-p,p>u&&k.sane){t.msg="invalid distance too far back",k.mode=Or;break e}if(b=0,M=m,h===0){if(b+=c-p,p<x){x-=p;do v[a++]=m[b++];while(--p);b=a-E,M=v}}else if(h<p){if(b+=c+h-p,p-=h,p<x){x-=p;do v[a++]=m[b++];while(--p);if(b=0,h<x){p=h,x-=p;do v[a++]=m[b++];while(--p);b=a-E,M=v}}}else if(b+=h-p,p<x){x-=p;do v[a++]=m[b++];while(--p);b=a-E,M=v}for(;x>2;)v[a++]=M[b++],v[a++]=M[b++],v[a++]=M[b++],x-=3;x&&(v[a++]=M[b++],x>1&&(v[a++]=M[b++]))}else{b=a-E;do v[a++]=v[b++],v[a++]=v[b++],v[a++]=v[b++],x-=3;while(x>2);x&&(v[a++]=v[b++],x>1&&(v[a++]=v[b++]))}}else if((p&64)===0){A=y[(A&65535)+(f&(1<<p)-1)];continue n}else{t.msg="invalid distance code",k.mode=Or;break e}break}}else if((p&64)===0){A=S[(A&65535)+(f&(1<<p)-1)];continue t}else if(p&32){k.mode=tp;break e}else{t.msg="invalid literal/length code",k.mode=Or;break e}break}}while(r<i&&a<o);x=g>>3,r-=x,g-=x<<3,f&=(1<<g)-1,t.next_in=r,t.next_out=a,t.avail_in=r<i?5+(i-r):5-(r-i),t.avail_out=a<o?257+(o-a):257-(a-o),k.hold=f,k.bits=g},Yt=15,Qc=852,el=592,tl=0,Ea=1,nl=2,rp=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ip=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ap=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),sp=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),op=(e,t,n,r,i,a,s,o)=>{let l=o.bits,c=0,u=0,h=0,m=0,f=0,g=0,S=0,y=0,w=0,T=0,A,p,x,E,b,M=null,R,v=new Uint16Array(Yt+1),k=new Uint16Array(Yt+1),L=null,Z,H,j;for(c=0;c<=Yt;c++)v[c]=0;for(u=0;u<r;u++)v[t[n+u]]++;for(f=l,m=Yt;m>=1&&v[m]===0;m--);if(f>m&&(f=m),m===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,o.bits=1,0;for(h=1;h<m&&v[h]===0;h++);for(f<h&&(f=h),y=1,c=1;c<=Yt;c++)if(y<<=1,y-=v[c],y<0)return-1;if(y>0&&(e===tl||m!==1))return-1;for(k[1]=0,c=1;c<Yt;c++)k[c+1]=k[c]+v[c];for(u=0;u<r;u++)t[n+u]!==0&&(s[k[t[n+u]]++]=u);if(e===tl?(M=L=s,R=20):e===Ea?(M=rp,L=ip,R=257):(M=ap,L=sp,R=0),T=0,u=0,c=h,b=a,g=f,S=0,x=-1,w=1<<f,E=w-1,e===Ea&&w>Qc||e===nl&&w>el)return 1;for(;;){Z=c-S,s[u]+1<R?(H=0,j=s[u]):s[u]>=R?(H=L[s[u]-R],j=M[s[u]-R]):(H=96,j=0),A=1<<c-S,p=1<<g,h=p;do p-=A,i[b+(T>>S)+p]=Z<<24|H<<16|j|0;while(p!==0);for(A=1<<c-1;T&A;)A>>=1;if(A!==0?(T&=A-1,T+=A):T=0,u++,--v[c]===0){if(c===m)break;c=t[n+s[u]]}if(c>f&&(T&E)!==x){for(S===0&&(S=f),b+=h,g=c-S,y=1<<g;g+S<m&&(y-=v[g+S],!(y<=0));)g++,y<<=1;if(w+=1<<g,e===Ea&&w>Qc||e===nl&&w>el)return 1;x=T&E,i[x]=f<<24|g<<16|b-a|0}}return T!==0&&(i[b+T]=c-S<<24|64<<16|0),o.bits=f,0},Dn=op,cp=0,ou=1,cu=2,{Z_FINISH:rl,Z_BLOCK:lp,Z_TREES:Ir,Z_OK:It,Z_STREAM_END:up,Z_NEED_DICT:dp,Z_STREAM_ERROR:De,Z_DATA_ERROR:lu,Z_MEM_ERROR:uu,Z_BUF_ERROR:mp,Z_DEFLATED:il}=Ct,Qr=16180,al=16181,sl=16182,ol=16183,cl=16184,ll=16185,ul=16186,dl=16187,ml=16188,hl=16189,Br=16190,nt=16191,ba=16192,fl=16193,Ta=16194,_l=16195,gl=16196,pl=16197,vl=16198,Cr=16199,Pr=16200,yl=16201,wl=16202,Sl=16203,Al=16204,xl=16205,Ma=16206,kl=16207,El=16208,ie=16209,du=16210,mu=16211,hp=852,fp=592,_p=15,gp=_p,bl=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function pp(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var Pt=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Qr||t.mode>mu?1:0},hu=e=>{if(Pt(e))return De;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Qr,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(hp),t.distcode=t.distdyn=new Int32Array(fp),t.sane=1,t.back=-1,It},fu=e=>{if(Pt(e))return De;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,hu(e)},_u=(e,t)=>{let n;if(Pt(e))return De;let r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?De:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,fu(e))},gu=(e,t)=>{if(!e)return De;let n=new pp;e.state=n,n.strm=e,n.window=null,n.mode=Qr;let r=_u(e,t);return r!==It&&(e.state=null),r},vp=e=>gu(e,gp),Tl=!0,Ra,za,yp=e=>{if(Tl){Ra=new Int32Array(512),za=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Dn(ou,e.lens,0,288,Ra,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Dn(cu,e.lens,0,32,za,0,e.work,{bits:5}),Tl=!1}e.lencode=Ra,e.lenbits=9,e.distcode=za,e.distbits=5},pu=(e,t,n,r)=>{let i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),r>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(t.subarray(n-r,n-r+i),a.wnext),r-=i,r?(a.window.set(t.subarray(n-r,n),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0},wp=(e,t)=>{let n,r,i,a,s,o,l,c,u,h,m,f,g,S,y=0,w,T,A,p,x,E,b,M,R=new Uint8Array(4),v,k,L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Pt(e)||!e.output||!e.input&&e.avail_in!==0)return De;n=e.state,n.mode===nt&&(n.mode=ba),s=e.next_out,i=e.output,l=e.avail_out,a=e.next_in,r=e.input,o=e.avail_in,c=n.hold,u=n.bits,h=o,m=l,M=It;e:for(;;)switch(n.mode){case Qr:if(n.wrap===0){n.mode=ba;break}for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,R[0]=c&255,R[1]=c>>>8&255,n.check=ye(n.check,R,2,0),c=0,u=0,n.mode=al;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ie;break}if((c&15)!==il){e.msg="unknown compression method",n.mode=ie;break}if(c>>>=4,u-=4,b=(c&15)+8,n.wbits===0&&(n.wbits=b),b>15||b>n.wbits){e.msg="invalid window size",n.mode=ie;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?hl:nt,c=0,u=0;break;case al:for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==il){e.msg="unknown compression method",n.mode=ie;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ie;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(R[0]=c&255,R[1]=c>>>8&255,n.check=ye(n.check,R,2,0)),c=0,u=0,n.mode=sl;case sl:for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(R[0]=c&255,R[1]=c>>>8&255,R[2]=c>>>16&255,R[3]=c>>>24&255,n.check=ye(n.check,R,4,0)),c=0,u=0,n.mode=ol;case ol:for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(R[0]=c&255,R[1]=c>>>8&255,n.check=ye(n.check,R,2,0)),c=0,u=0,n.mode=cl;case cl:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(R[0]=c&255,R[1]=c>>>8&255,n.check=ye(n.check,R,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=ll;case ll:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(b=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(a,a+f),b)),n.flags&512&&n.wrap&4&&(n.check=ye(n.check,r,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=ul;case ul:if(n.flags&2048){if(o===0)break e;f=0;do b=r[a+f++],n.head&&b&&n.length<65536&&(n.head.name+=String.fromCharCode(b));while(b&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=ye(n.check,r,f,a)),o-=f,a+=f,b)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=dl;case dl:if(n.flags&4096){if(o===0)break e;f=0;do b=r[a+f++],n.head&&b&&n.length<65536&&(n.head.comment+=String.fromCharCode(b));while(b&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=ye(n.check,r,f,a)),o-=f,a+=f,b)break e}else n.head&&(n.head.comment=null);n.mode=ml;case ml:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ie;break}c=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=nt;break;case hl:for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}e.adler=n.check=bl(c),c=0,u=0,n.mode=Br;case Br:if(n.havedict===0)return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,dp;e.adler=n.check=1,n.mode=nt;case nt:if(t===lp||t===Ir)break e;case ba:if(n.last){c>>>=u&7,u-=u&7,n.mode=Ma;break}for(;u<3;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=fl;break;case 1:if(yp(n),n.mode=Cr,t===Ir){c>>>=2,u-=2;break e}break;case 2:n.mode=gl;break;case 3:e.msg="invalid block type",n.mode=ie}c>>>=2,u-=2;break;case fl:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ie;break}if(n.length=c&65535,c=0,u=0,n.mode=Ta,t===Ir)break e;case Ta:n.mode=_l;case _l:if(f=n.length,f){if(f>o&&(f=o),f>l&&(f=l),f===0)break e;i.set(r.subarray(a,a+f),s),o-=f,a+=f,l-=f,s+=f,n.length-=f;break}n.mode=nt;break;case gl:for(;u<14;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.nlen=(c&31)+257,c>>>=5,u-=5,n.ndist=(c&31)+1,c>>>=5,u-=5,n.ncode=(c&15)+4,c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ie;break}n.have=0,n.mode=pl;case pl:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.lens[L[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,v={bits:n.lenbits},M=Dn(cp,n.lens,0,19,n.lencode,0,n.work,v),n.lenbits=v.bits,M){e.msg="invalid code lengths set",n.mode=ie;break}n.have=0,n.mode=vl;case vl:for(;n.have<n.nlen+n.ndist;){for(;y=n.lencode[c&(1<<n.lenbits)-1],w=y>>>24,T=y>>>16&255,A=y&65535,!(w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(A<16)c>>>=w,u-=w,n.lens[n.have++]=A;else{if(A===16){for(k=w+2;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(c>>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=ie;break}b=n.lens[n.have-1],f=3+(c&3),c>>>=2,u-=2}else if(A===17){for(k=w+3;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=w,u-=w,b=0,f=3+(c&7),c>>>=3,u-=3}else{for(k=w+7;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=w,u-=w,b=0,f=11+(c&127),c>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ie;break}for(;f--;)n.lens[n.have++]=b}}if(n.mode===ie)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ie;break}if(n.lenbits=9,v={bits:n.lenbits},M=Dn(ou,n.lens,0,n.nlen,n.lencode,0,n.work,v),n.lenbits=v.bits,M){e.msg="invalid literal/lengths set",n.mode=ie;break}if(n.distbits=6,n.distcode=n.distdyn,v={bits:n.distbits},M=Dn(cu,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,v),n.distbits=v.bits,M){e.msg="invalid distances set",n.mode=ie;break}if(n.mode=Cr,t===Ir)break e;case Cr:n.mode=Pr;case Pr:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,np(e,m),s=e.next_out,i=e.output,l=e.avail_out,a=e.next_in,r=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===nt&&(n.back=-1);break}for(n.back=0;y=n.lencode[c&(1<<n.lenbits)-1],w=y>>>24,T=y>>>16&255,A=y&65535,!(w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(T&&(T&240)===0){for(p=w,x=T,E=A;y=n.lencode[E+((c&(1<<p+x)-1)>>p)],w=y>>>24,T=y>>>16&255,A=y&65535,!(p+w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=p,u-=p,n.back+=p}if(c>>>=w,u-=w,n.back+=w,n.length=A,T===0){n.mode=xl;break}if(T&32){n.back=-1,n.mode=nt;break}if(T&64){e.msg="invalid literal/length code",n.mode=ie;break}n.extra=T&15,n.mode=yl;case yl:if(n.extra){for(k=n.extra;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=wl;case wl:for(;y=n.distcode[c&(1<<n.distbits)-1],w=y>>>24,T=y>>>16&255,A=y&65535,!(w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if((T&240)===0){for(p=w,x=T,E=A;y=n.distcode[E+((c&(1<<p+x)-1)>>p)],w=y>>>24,T=y>>>16&255,A=y&65535,!(p+w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=p,u-=p,n.back+=p}if(c>>>=w,u-=w,n.back+=w,T&64){e.msg="invalid distance code",n.mode=ie;break}n.offset=A,n.extra=T&15,n.mode=Sl;case Sl:if(n.extra){for(k=n.extra;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ie;break}n.mode=Al;case Al:if(l===0)break e;if(f=m-l,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ie;break}f>n.wnext?(f-=n.wnext,g=n.wsize-f):g=n.wnext-f,f>n.length&&(f=n.length),S=n.window}else S=i,g=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do i[s++]=S[g++];while(--f);n.length===0&&(n.mode=Pr);break;case xl:if(l===0)break e;i[s++]=n.length,l--,n.mode=Pr;break;case Ma:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=r[a++]<<u,u+=8}if(m-=l,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?ye(n.check,i,m,s-m):Hn(n.check,i,m,s-m)),m=l,n.wrap&4&&(n.flags?c:bl(c))!==n.check){e.msg="incorrect data check",n.mode=ie;break}c=0,u=0}n.mode=kl;case kl:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ie;break}c=0,u=0}n.mode=El;case El:M=up;break e;case ie:M=lu;break e;case du:return uu;case mu:default:return De}return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,(n.wsize||m!==e.avail_out&&n.mode<ie&&(n.mode<Ma||t!==rl))&&pu(e,e.output,e.next_out,m-e.avail_out),h-=e.avail_in,m-=e.avail_out,e.total_in+=h,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?ye(n.check,i,m,e.next_out-m):Hn(n.check,i,m,e.next_out-m)),e.data_type=n.bits+(n.last?64:0)+(n.mode===nt?128:0)+(n.mode===Cr||n.mode===Ta?256:0),(h===0&&m===0||t===rl)&&M===It&&(M=mp),M},Sp=e=>{if(Pt(e))return De;let t=e.state;return t.window&&(t.window=null),e.state=null,It},Ap=(e,t)=>{if(Pt(e))return De;let n=e.state;return(n.wrap&2)===0?De:(n.head=t,t.done=!1,It)},xp=(e,t)=>{let n=t.length,r,i,a;return Pt(e)||(r=e.state,r.wrap!==0&&r.mode!==Br)?De:r.mode===Br&&(i=1,i=Hn(i,t,n,0),i!==r.check)?lu:(a=pu(e,t,n,n),a?(r.mode=du,uu):(r.havedict=1,It))},kp=fu,Ep=_u,bp=hu,Tp=vp,Mp=gu,Rp=wp,zp=Sp,Lp=Ap,Np=xp,Op="pako inflate (from Nodeca project)",it={inflateReset:kp,inflateReset2:Ep,inflateResetKeep:bp,inflateInit:Tp,inflateInit2:Mp,inflate:Rp,inflateEnd:zp,inflateGetHeader:Lp,inflateSetDictionary:Np,inflateInfo:Op};function Ip(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Cp=Ip,vu=Object.prototype.toString,{Z_NO_FLUSH:Pp,Z_FINISH:Dp,Z_OK:Kn,Z_STREAM_END:La,Z_NEED_DICT:Na,Z_STREAM_ERROR:Fp,Z_DATA_ERROR:Ml,Z_MEM_ERROR:Up}=Ct;function Zn(e){this.options=Jr.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new au,this.strm.avail_out=0;let n=it.inflateInit2(this.strm,t.windowBits);if(n!==Kn)throw new Error(Nt[n]);if(this.header=new Cp,it.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Wn.string2buf(t.dictionary):vu.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=it.inflateSetDictionary(this.strm,t.dictionary),n!==Kn)))throw new Error(Nt[n])}Zn.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?Dp:Pp,vu.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),a=it.inflate(n,s),a===Na&&i&&(a=it.inflateSetDictionary(n,i),a===Kn?a=it.inflate(n,s):a===Ml&&(a=Na));n.avail_in>0&&a===La&&n.state.wrap>0&&e[n.next_in]!==0;)it.inflateReset(n),a=it.inflate(n,s);switch(a){case Fp:case Ml:case Na:case Up:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===La))if(this.options.to==="string"){let l=Wn.utf8border(n.output,n.next_out),c=n.next_out-l,u=Wn.buf2string(n.output,l);n.next_out=c,n.avail_out=r-c,c&&n.output.set(n.output.subarray(l,l+c),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Kn&&o===0)){if(a===La)return a=it.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Zn.prototype.onData=function(e){this.chunks.push(e)};Zn.prototype.onEnd=function(e){e===Kn&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Jr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ja(e,t){let n=new Zn(t);if(n.push(e),n.err)throw n.msg||Nt[n.err];return n.result}function Bp(e,t){return t=t||{},t.raw=!0,Ja(e,t)}var Gp=Zn,Hp=Ja,Vp=Bp,Wp=Ja,Kp=Ct,$p={Inflate:Gp,inflate:Hp,inflateRaw:Vp,ungzip:Wp,constants:Kp},{Deflate:Xp,deflate:Yp,deflateRaw:Zp,gzip:jp}=ep,{Inflate:qp,inflate:Jp,inflateRaw:Qp,ungzip:ev}=$p,tv=Xp,nv=Yp,rv=Zp,iv=jp,av=qp,sv=Jp,ov=Qp,cv=ev,lv=Ct,Rl={Deflate:tv,deflate:nv,deflateRaw:rv,gzip:iv,Inflate:av,inflate:sv,inflateRaw:ov,ungzip:cv,constants:lv},Gr=2023,Qa=1,es=2,ts=4,ns=8,rs=16,is=32,yu=64,uv=128,dv=256,as=512,ss=1024,os=2048,Hr=4096,cs=8192,Vr=16384,mv=32768,Wr=65536,ls=1<<17,Kr=1<<18,$r=1<<19,us=1<<20,ds=1<<21,ms=1<<22,hv=1<<23,hs=1<<24,Xr=1<<25,fs=1<<26,_s=1<<27,gs=1<<28,ps=1<<29,vs=1<<30,fv=-2147483648,ys=1,ws=2,Ss=4,_v=1,gv=2,pv=128,Zt=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),zl=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),As=class wu{constructor(t,n){this.protocolVersion=0,this.isDemo=_v,this.stream=t,this.handler=n}translateCommand(t){if(this.protocolVersion===0&&(t===7||t===12))return G.serverdata;if(this.protocolVersion===25){if(t>=7&&t<=15)return t+5;if(t===1)return G.print;if(t===2)return G.stufftext;if(t===3)return G.sound;if(t===4)return G.nop;if(t===5)return G.disconnect;if(t===6)return G.reconnect;if(t===16)return G.temp_entity}return this.protocolVersion===Gr,t}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case G.nop:break;case G.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case G.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case G.print:this.parsePrint();break;case G.serverdata:this.parseServerData();break;case G.configstring:this.parseConfigString();break;case G.spawnbaseline:this.parseSpawnBaseline();break;case G.centerprint:this.parseCenterPrint();break;case G.download:this.parseDownload();break;case G.frame:this.parseFrame();break;case G.packetentities:this.parsePacketEntities(!1);break;case G.deltapacketentities:this.parsePacketEntities(!0);break;case G.playerinfo:this.parsePlayerState();break;case G.stufftext:this.parseStuffText();break;case G.layout:this.parseLayout();break;case G.inventory:this.parseInventory();break;case G.sound:this.parseSound();break;case G.muzzleflash:this.parseMuzzleFlash();break;case G.muzzleflash2:this.parseMuzzleFlash2();break;case G.temp_entity:this.parseTempEntity();break;case G.splitclient:this.parseSplitClient();break;case G.configblast:this.parseConfigBlast();break;case G.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case G.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case G.damage:this.parseDamage();break;case G.locprint:this.parseLocPrint();break;case G.fog:this.parseFog();break;case G.waitingforplayers:this.parseWaitingForPlayers();break;case G.bot_chat:this.parseBotChat();break;case G.poi:this.parsePoi();break;case G.help_path:this.parseHelpPath();break;case G.muzzleflash3:this.parseMuzzleFlash3();break;case G.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(r){console.warn(`Error parsing command ${t}: ${r.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===Gr){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let r=this.stream.readByte(),i=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let l=0;l<o;l++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,i,a,s,r,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${r}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,r=this.stream.readString(),i=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,r,i,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${r}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),r=this.stream.readData(t);try{let i=Rl.inflate(r);i.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${i.byteLength}`);let a=new Oa(i.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(i){console.error("svc_configblast: Failed to decompress data",i)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),r=this.stream.readData(t);try{let i=Rl.inflate(r);i.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${i.byteLength}`);let a=new Oa(i.buffer),s=new wu(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(i){console.error("svc_spawnbaselineblast: Failed to decompress data",i)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),r=this.stream.readByte(),i=[];for(let a=0;a<r;a++)i.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,i)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),r=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(r)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),r={x:0,y:0,z:0};this.stream.readPos(r);let i=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,r)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let r={x:0,y:0,z:0};this.stream.readDir(r),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),r;t>0&&(r=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,r)}parseInventory(){let n=new Array(256);for(let r=0;r<256;r++)n[r]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),r,i,a,s,o;if(t&1&&(r=this.stream.readByte()),t&2&&(i=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let l={x:0,y:0,z:0};this.stream.readPos(l),o=l}this.handler&&this.handler.onSound(t,n,r,i,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let r=this.stream.readByte();t|=r<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let r=0;r<t;r++){let i=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=i&31,o=(i&32)!==0,l=(i&64)!==0,c=(i&128)!==0;n.push({damage:s,health:o,armor:l,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},r={x:0,y:0,z:0},i={x:0,y:0,z:0},a,s,o,l,c;switch(t){case I.EXPLOSION1:case I.EXPLOSION2:case I.ROCKET_EXPLOSION:case I.GRENADE_EXPLOSION:case I.ROCKET_EXPLOSION_WATER:case I.GRENADE_EXPLOSION_WATER:case I.BFG_EXPLOSION:case I.BFG_BIGEXPLOSION:case I.BOSSTPORT:case I.PLASMA_EXPLOSION:case I.PLAIN_EXPLOSION:case I.CHAINFIST_SMOKE:case I.TRACKER_EXPLOSION:case I.TELEPORT_EFFECT:case I.DBALL_GOAL:case I.NUKEBLAST:case I.WIDOWSPLASH:case I.EXPLOSION1_BIG:case I.EXPLOSION1_NP:this.stream.readPos(n);break;case I.GUNSHOT:case I.BLOOD:case I.BLASTER:case I.SHOTGUN:case I.SPARKS:case I.BULLET_SPARKS:case I.SCREEN_SPARKS:case I.SHIELD_SPARKS:case I.BLASTER2:case I.FLECHETTE:case I.MOREBLOOD:case I.ELECTRIC_SPARKS:case I.HEATBEAM_SPARKS:case I.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(i);break;case I.SPLASH:case I.LASER_SPARKS:case I.WELDING_SPARKS:case I.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(i),s=this.stream.readByte();break;case I.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(r)):(this.stream.readPos(n),this.stream.readDir(i));break;case I.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(i)):(this.stream.readPos(n),this.stream.readPos(r));break;case I.RAILTRAIL:case I.BUBBLETRAIL:case I.BFG_LASER:case I.DEBUGTRAIL:case I.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(r);break;case I.PARASITE_ATTACK:case I.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r);break;case I.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r),this.stream.readPos(i);break;case I.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r);break;case I.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case I.FORCEWALL:this.stream.readPos(n),this.stream.readPos(r),s=this.stream.readByte();break;case I.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(i),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case I.WIDOWBEAMOUT:this.stream.readShort();case I.HEATBEAM:case I.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r),this.stream.readPos(i);break;default:break}this.handler&&this.handler.onTempEntity(t,n,r,i,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Zt();this.parseDelta(Zt(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),r=this.stream.readByte(),i=this.stream.readByte(),a=this.stream.readData(i),s=this.stream.readByte();if(s!==G.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s}`);let o=this.parsePlayerState();if(this.isDemo===pv){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===gv&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:r,areaBytes:i,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=zl(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let r=this.stream.readLong();for(let i=0;i<32;i++)r&1<<i&&(t.stats[i]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:zl(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let r=Zt();this.parseDelta(Zt(),r,n.number,n.bits,n.bitsHigh),t.push(r)}return t}parseEntityBits(){let t=this.stream.readByte();t&uv&&(t|=this.stream.readByte()<<8),t&mv&&(t|=this.stream.readByte()<<16),t&hv&&(t|=this.stream.readByte()<<24);let n=0;t&fv&&(n=this.stream.readByte());let r;return t&dv?r=this.stream.readShort():r=this.stream.readByte(),{number:r,bits:t,bitsHigh:n}}parseDelta(t,n,r,i,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=r,n.bits=i,n.bitsHigh=a,i&os&&(n.modelindex=this.stream.readByte()),i&us&&(n.modelindex2=this.stream.readByte()),i&ds&&(n.modelindex3=this.stream.readByte()),i&ms&&(n.modelindex4=this.stream.readByte()),i&rs&&(n.frame=this.stream.readByte()),i&ls&&(n.frame=this.stream.readShort()),i&Wr&&i&Xr?n.skinnum=this.stream.readLong():i&Wr?n.skinnum=this.stream.readByte():i&Xr&&(n.skinnum=this.stream.readShort()),i&Vr&&i&$r?n.effects=this.stream.readLong():i&Vr?n.effects=this.stream.readByte():i&$r&&(n.effects=this.stream.readShort()),i&Hr&&i&Kr?n.renderfx=this.stream.readLong():i&Hr?n.renderfx=this.stream.readByte():i&Kr&&(n.renderfx=this.stream.readShort()),i&Qa&&(n.origin.x=this.stream.readCoord()),i&es&&(n.origin.y=this.stream.readCoord()),i&as&&(n.origin.z=this.stream.readCoord()),i&ss&&(n.angles.x=this.stream.readAngle()),i&ts&&(n.angles.y=this.stream.readAngle()),i&ns&&(n.angles.z=this.stream.readAngle()),i&hs&&this.stream.readPos(n.old_origin),i&fs&&(n.sound=this.stream.readByte()),i&is?n.event=this.stream.readByte():n.event=0,i&_s&&(n.solid=this.stream.readShort()),i&cs&&(n.alpha=this.stream.readByte()/255),i&gs&&(n.scale=this.stream.readFloat()),i&ps&&(n.instanceBits=this.stream.readLong()),i&vs&&(n.loopVolume=this.stream.readByte()/255),a&ys&&(n.loopAttenuation=this.stream.readByte()/255),a&ws&&(n.owner=this.stream.readShort()),a&Ss&&(n.oldFrame=this.stream.readShort())}},xs=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(xs||{}),Su=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new m_(e),this.state=0,this.accumulatedTime=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}new As(t.data,this.handler).parseMessage(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var vv=Object.defineProperty,Au=(e,t)=>{for(var n in t)vv(e,n,{get:t[n],enumerable:!0})},pt={x:0,y:0,z:0};var dR=Math.PI/180;function qn(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function an(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function sn(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function yv(e){return sn(e,e)}function ei(e){return Math.sqrt(yv(e))}function xu(e){let t=ei(e);return t===0?e:an(e,1/t)}var ku=0,Eu=1,bu=2,wv=Math.PI/180,mR=180/Math.PI;function ks(e,t){switch(t){case ku:return e.x;case Eu:return e.y;case bu:default:return e.z}}function Es(e){return e*wv}function rn(e){let t=e%360;return t<0?360+t:t}function Ts(e){let t=Es(ks(e,Eu)),n=Es(ks(e,ku)),r=Es(ks(e,bu)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(r),c=Math.cos(r),u={x:o*a,y:o*i,z:-s},h={x:-l*s*a-c*-i,y:-l*s*i-c*a,z:-l*o},m={x:c*s*a-l*-i,y:c*s*i-l*a,z:c*o};return{forward:u,right:h,up:m}}var nn=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var je=1,vt=2;var Ms=8,Rs=16,Sv=32;var Av=16384;var ti=65536,Tu=1<<17,xv=1<<18,kv=1<<19,Ev=1<<20,bv=1<<21,Tv=1<<22,Mv=1<<23,hR=1<<24,ni=1<<25,Rv=1<<26,fR=1<<27,_R=1<<28,gR=1<<29,ri=1<<30,pR=1<<31;var vR=1<<25,yR=1<<28,wR=1<<29,SR=1<<30,AR=1<<31;var xR=je|vt,kR=je|ti|vt|ni|ri,ER=je|ti|vt,bR=je|Tu|vt|ni|ri,TR=Sv|Ms|Rs,MR=je|Rs|Ms,zv=je|ni|ri|vt|Rv,RR=xv|kv|Ev|bv|Tv|Mv,zR=je|Ms|Rs|ni|ri,LR=je|ti|vt,NR=je|vt,OR=je|ti|vt|Tu,IR=zv|Av;var CR=Number.MAX_SAFE_INTEGER-1;var Jn=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Jn||{});var Mu=256;var Lv=256,Qn=8192,er=2048,tr=512,Nv=256,Ov=Mu*2,Iv=256,bs=32;var ce=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Qn]="Sounds",e[e.Images=e.Sounds+er]="Images",e[e.Lights=e.Images+tr]="Lights",e[e.ShadowLights=e.Lights+Lv]="ShadowLights",e[e.Items=e.ShadowLights+Iv]="Items",e[e.PlayerSkins=e.Items+Nv]="PlayerSkins",e[e.General=e.PlayerSkins+Mu]="General",e[e.WheelWeapons=e.General+Ov]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+bs]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+bs]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+bs]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ce||{}),PR=ce.MaxConfigStrings;var Cv={};Au(Cv,{addReplayFrame:()=>Uv,createReplaySession:()=>Fv,deserializeReplay:()=>Dv,serializeReplay:()=>Pv});function Pv(e){return JSON.stringify(e,null,2)}function Dv(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Fv(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Uv(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var Dt=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Dt||{});var Fe=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Fe||{});function at(e,t){return(e&t)!==0}var ii=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(ii||{}),qe=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(qe||{});function zs(e){let{velocity:t,frametime:n,onGround:r,groundIsSlick:i,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=ei(t);if(u<1)return{x:0,y:0,z:t.z};let h=0;if(r&&!i||a){let g=u<l?l:u;h+=g*o*n}s>0&&!a&&(h+=u*c*s*n);let m=u-h;if(m<0&&(m=0),m===u)return t;let f=m/u;return an(t,f)}function ai(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=sn(t,n),o=r-s;if(o<=0)return t;let l=i*a*r;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function Ru(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=Math.min(r,30),o=sn(t,n),l=s-o;if(l<=0)return t;let c=i*r*a;return c>l&&(c=l),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function Ls(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0},s=ei(a);if(s>i){let o=i/s;a=an(a,o),s=i}return{wishdir:s===0?a:xu(a),wishspeed:s}}function Ns(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0};r.upmove>10?a=qn(a,{x:0,y:0,z:r.upmove}):r.upmove<-10?a=qn(a,{x:0,y:0,z:r.upmove}):a=qn(a,{x:0,y:0,z:10});let s=ei(a);if(s>i){let o=i/s;a=an(a,o),s=i}return s*=.5,{wishdir:s===0?a:xu(a),wishspeed:s}}function Bv(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Gv(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Os(e){let{pmFlags:t,cmdAngles:n,deltaAngles:r}=e,i;(t&32)!==0?i={x:0,y:n.y+r.y,z:0}:(i=Bv(n,r),i={...i,x:Gv(i.x)});let a=Ts(i);return{viewangles:i,...a}}var zu=200,Lu=200,Nu=200,Ou=140,Iu=150,Cu=3;function Hv(e){let t=rn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Pu(e,t){return{x:Hv(e.x+t.x),y:rn(e.y+t.y),z:rn(e.z+t.z)}}function Du(e,t){let n=t.sensitivityX??t.sensitivity,r=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*r,y:e.deltaX*n,z:0}}var Ft=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(Ft||{});var Fu=64;var Uu=0,Bu=1,Gu=2,Hu=3,Vu=4,Wu=5,Ku=6,$u=7,Xu=8;var Yu=11,Zu=12,ju=13;function Vv(e,t,n){let r=Math.floor(n/2),i=n%2!==0,a=t+r,s=e[a]||0;if(i){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function Wv(e,t,n,r){let i=r*n,a=Math.floor(i/8),s=i%8,o=(1<<r)-1<<s;return(Vv(e,t,a)&o)>>>s}var Is=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(Is||{}),Ue=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Ue||{}),Kv=12,$v=9,DR=Math.ceil(Kv*$v/16),qu=23,Ju=2,FR=Math.ceil(qu*Ju/16),Xv={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function Qu(e,t){let n;return typeof t=="number"?n=t:n=Xv[t],n===void 0||n<0||n>=qu?0:Wv(e,41,n,Ju)}function ed(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var Yv={};Au(Yv,{U_ANGLE1:()=>ty,U_ANGLE2:()=>ny,U_ANGLE3:()=>ry,U_EFFECTS:()=>sy,U_EVENT:()=>ly,U_FRAME:()=>iy,U_MODEL:()=>jv,U_MODEL2:()=>dy,U_MODEL3:()=>my,U_MODEL4:()=>hy,U_MOREBITS:()=>uy,U_NUMBER:()=>Zv,U_ORIGIN1:()=>Jv,U_ORIGIN2:()=>Qv,U_ORIGIN3:()=>ey,U_REMOVE:()=>fy,U_RENDERFX:()=>oy,U_SKIN:()=>ay,U_SOLID:()=>cy,U_SOUND:()=>qv});var Zv=1,jv=2,qv=4,Jv=8,Qv=16,ey=32,ty=64,ny=128,ry=256,iy=512,ay=1024,sy=2048,oy=4096,cy=8192,ly=16384,uy=32768,dy=1,my=2,hy=4,fy=32768,jn=.025,_y=(e,t)=>{let n={...e.origin};n.z-=.25;let r=t(e.origin,n);return{...e,onGround:r.fraction<1}},gy=(e,t)=>{let n={...e.origin};return n.z+=e.mins.z+1,t(n)&33554432?{...e,waterLevel:1}:{...e,waterLevel:0}},td=(e,t,n,r)=>{let i={...e};i=_y(i,n),i=gy(i,r);let{origin:a,velocity:s,onGround:o,waterLevel:l}=i,c=zs({velocity:s,frametime:jn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),u=l>=2?Ns({forward:{x:1,y:0,z:0},right:{x:0,y:1,z:0},cmd:t,maxSpeed:320}):Ls({forward:{x:1,y:0,z:0},right:{x:0,y:1,z:0},cmd:t,maxSpeed:320}),h=ai({velocity:c,wishdir:u.wishdir,wishspeed:u.wishspeed,accel:o?10:1,frametime:jn}),m=n(a,{x:a.x+h.x*jn,y:a.y+h.y*jn,z:a.z+h.z*jn});return{...i,origin:m.endpos,velocity:h}},nd=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=nn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},rd=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let r=0;r<nn.length;r++){let i=nn[r],a=e.x*i[0]+e.y*i[1]+e.z*i[2];a>t&&(t=a,n=r)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},nr=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let r=0,i=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*nn[s][0]+t*nn[s][1]+n*nn[s][2];o>i&&(i=o,r=s)}}this.writeByte(r)}};var id=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(id||{}),UR=Object.keys(id).length/2;var py=Object.defineProperty,vy=(e,t)=>{for(var n in t)py(e,n,{get:t[n],enumerable:!0})},oi=null,si=[1,1,1,1],ad=["ch1","ch2","ch3"],Cs=[null,null,null],yy=e=>{for(let t=0;t<ad.length;t++){let n=ad[t];try{Cs[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Cs[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
+ `)}}}oi=Cs[0]},wy=(e,t,n)=>{if(oi){let r=e.Draw_GetPicSize(oi),i=(t-r.width)/2,a=(n-r.height)/2;e.SCR_DrawColorPic(i,a,oi,{x:si[0],y:si[1],z:si[2]},si[3])}},dd=new Map,Sy=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Ay=e=>{for(let t of Sy)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);dd.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
+ `)}},xy=new Map,ky=["d_left","d_right","d_up","d_down"],Ey=e=>{for(let t of ky)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);xy.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
+ `)}},by=(e,t,n,r)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},sd=3e3,od=5e3,cd=4,Ty=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:sd}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:od}),this.notifyMessages.length>cd&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:sd}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:od}),this.notifyMessages.length>cd&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let r=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(r,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let r of this.notifyMessages)e.SCR_DrawFontString(10,n,r.text),n+=10}},My=3e3,Ry=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:My}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},zy=(e,t,n,r)=>{if(!t.blend)return;let[i,a,s,o]=t.blend},Ly=(e,t,n,r)=>{if(!t.pickupIcon)return;let i=dd.get(t.pickupIcon);if(i){let a=e.Draw_GetPicSize(i),s=n-a.width-10,o=r-a.height-10;e.SCR_DrawPic(s,o,i)}},Ps=(e,t,n,r,i,a,s)=>{let o=Math.abs(r).toString();for(let l=0;l<o.length;l++){let c=parseInt(o[l]),u=i[c];u&&(s?e.SCR_DrawColorPic(t+l*a,n,u,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+l*a,n,u))}},Ny=(e,t,n,r,i,a)=>{let s=t.stats[Ue.STAT_HEALTH]||0,o=t.stats[Ue.STAT_ARMOR]||0,l=t.stats[Ue.STAT_AMMO]||0,c=t.stats[Ue.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(Ps(e,a.HEALTH_X,a.HEALTH_Y,s,n,r,u),Ps(e,a.ARMOR_X,a.ARMOR_Y,o,n,r),Ps(e,a.AMMO_X,a.AMMO_Y,l,n,r)),c>0){let h=e.get_configstring(ce.Images+c);if(h){let m=e.Draw_RegisterPic(h);m&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,m)}}if(t.pickupIcon){let h=e.Draw_RegisterPic(t.pickupIcon);h&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,h)}else{let h=t.stats[Ue.STAT_SELECTED_ICON]||0;if(h>0){let m=e.get_configstring(ce.Images+h);if(m){let f=e.Draw_RegisterPic(m);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},Ds=640,on=480,Oy=(e,t)=>{let n=e/Ds,r=t/on,i=Math.min(n,r);return{HEALTH_X:100*i,HEALTH_Y:t-(on-450)*i,ARMOR_X:200*i,ARMOR_Y:t-(on-450)*i,AMMO_X:e-(Ds-540)*i,AMMO_Y:t-(on-450)*i,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*i,WEAPON_ICON_X:10*i,WEAPON_ICON_Y:t-(on-450)*i,POWERUP_X:e-(Ds-610)*i,POWERUP_Y:t-(on-450)*i,scale:i}},fe=null,Gs=[],md=0,Hs=new Ty,hd=new Ry;function Iy(e){fe=e}function Cy(){if(fe){Gs.length=0;for(let e=0;e<10;e++)try{let t=fe.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Gs.push(t),e===0&&(md=fe.Draw_GetPicSize(t).width)}catch{fe.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
+ `)}yy(fe),Ay(fe),Ey(fe)}}function Py(e,t,n,r,i,a,s){if(!fe){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=fe.CL_ClientTime(),l=Oy(n.width,n.height);if(zy(fe,s,n.width,n.height),Ny(fe,s,Gs,md,o,l),Ly(fe,s,n.width,n.height),by(fe,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
+ `),u=n.height/2-c.length*10;for(let h of c)fe.SCR_DrawCenterString(u,h),u+=16}Hs.drawCenterPrint(fe,o,l),Hs.drawNotifications(fe,o),hd.drawSubtitles(fe,o),wy(fe,n.width,n.height)}function li(){return Hs}function Dy(){return hd}function Fy(e,t,n){t>=ce.Models&&t<ce.Models+Qn?e.RegisterModel(n):t>=ce.Sounds&&t<ce.Sounds+er?e.RegisterSound(n):t>=ce.Images&&t<ce.Images+tr&&e.Draw_RegisterPic(n)}var Fs=1e-6,ci=typeof Float32Array<"u"?Float32Array:Array,ld=Math.random;function Us(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Uy={};vy(Uy,{add:()=>Wy,angle:()=>hw,bezier:()=>aw,ceil:()=>Ky,clone:()=>By,copy:()=>Hy,create:()=>fd,cross:()=>tw,dist:()=>Sw,distance:()=>yd,div:()=>ww,divide:()=>vd,dot:()=>Vs,equals:()=>pw,exactEquals:()=>gw,floor:()=>$y,forEach:()=>Ew,fromValues:()=>Gy,hermite:()=>iw,inverse:()=>Qy,len:()=>xw,length:()=>_d,lerp:()=>nw,max:()=>Yy,min:()=>Xy,mul:()=>yw,multiply:()=>pd,negate:()=>Jy,normalize:()=>ew,random:()=>sw,rotateX:()=>uw,rotateY:()=>dw,rotateZ:()=>mw,round:()=>Zy,scale:()=>jy,scaleAndAdd:()=>qy,set:()=>Vy,slerp:()=>rw,sqrDist:()=>Aw,sqrLen:()=>kw,squaredDistance:()=>wd,squaredLength:()=>Sd,str:()=>_w,sub:()=>vw,subtract:()=>gd,transformMat3:()=>cw,transformMat4:()=>ow,transformQuat:()=>lw,zero:()=>fw});function fd(){var e=new ci(3);return ci!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function By(e){var t=new ci(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function _d(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function Gy(e,t,n){var r=new ci(3);return r[0]=e,r[1]=t,r[2]=n,r}function Hy(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Vy(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function Wy(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function gd(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function pd(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function vd(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function Ky(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function $y(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Xy(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function Yy(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function Zy(e,t){return e[0]=Us(t[0]),e[1]=Us(t[1]),e[2]=Us(t[2]),e}function jy(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function qy(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function yd(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function wd(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function Sd(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function Jy(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Qy(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function ew(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Vs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function tw(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=i*l-a*o,e[1]=a*s-r*l,e[2]=r*o-i*s,e}function nw(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function rw(e,t,n,r){var i=Math.acos(Math.min(Math.max(Vs(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function iw(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+r[0]*c+i[0]*u,e[1]=t[1]*o+n[1]*l+r[1]*c+i[1]*u,e[2]=t[2]*o+n[2]*l+r[2]*c+i[2]*u,e}function aw(e,t,n,r,i,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,h=3*l*s,m=l*a;return e[0]=t[0]*c+n[0]*u+r[0]*h+i[0]*m,e[1]=t[1]*c+n[1]*u+r[1]*h+i[1]*m,e[2]=t[2]*c+n[2]*u+r[2]*h+i[2]*m,e}function sw(e,t){t=t===void 0?1:t;var n=ld()*2*Math.PI,r=ld()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function ow(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function cw(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function lw(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=i*c-a*l,h=a*o-r*c,m=r*l-i*o;return u=u+u,h=h+h,m=m+m,e[0]=o+s*u+i*m-a*h,e[1]=l+s*h+a*u-r*m,e[2]=c+s*m+r*h-i*u,e}function uw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function dw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function mw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function hw(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),c=l&&Vs(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function fw(e){return e[0]=0,e[1]=0,e[2]=0,e}function _w(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function gw(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function pw(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=Fs*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=Fs*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=Fs*Math.max(1,Math.abs(i),Math.abs(o))}var vw=gd,yw=pd,ww=vd,Sw=yd,Aw=wd,xw=_d,kw=Sd,Ew=(function(){var e=fd();return function(t,n,r,i,a,s){var o,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,o=r;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var bw={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Tw(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function Mw(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function Rw(e,t,n,r,i){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Mw(t,r,i),s=e+a,l=at(n,Fe.Ducked)&&r?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var ui=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...bw,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:r}=Ts(Os({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??pt}).viewangles),i=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=at(e.pmFlags,Fe.OnGround),s=Rw(this.bobTime,i,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=sn(e.velocity,n)*this.settings.runPitch,l=sn(e.velocity,r),c=l<0?-1:1,h=Math.abs(l)*this.settings.runRoll;h>2&&(h=2),h*=c;let m=this.bobFracSin*this.settings.bobPitch*i,f=this.bobFracSin*this.settings.bobRoll*i;at(e.pmFlags,Fe.Ducked)&&a&&(m*=6,f*=6),o+=Math.min(m,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),h+=f;let g=Math.min(this.bobFracSin*i*this.settings.bobUp,this.settings.maxBobHeight),S=0,y=0,w=0,T=0,A=0;if(this.kick&&this.kick.remainingMs>0){let b=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));S+=b*this.kick.pitch,y+=b*this.kick.roll,this.kick.origin&&(w+=b*this.kick.origin.x,T+=b*this.kick.origin.y,A+=b*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let p={x:o+S,y:0,z:h+y},x={x:w,y:T,z:g+A},E={angles:p,offset:Tw(x),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:i};return this.lastSample=E,E}},zw={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Ad=800,Je={x:0,y:0,z:0},Lw=250;function Ut(){return{origin:Je,velocity:Je,viewAngles:Je,onGround:!1,pmFlags:Fe.OnGround,pmType:ii.Normal,waterLevel:Dt.None,gravity:Ad,deltaAngles:Je,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:Je,kick_origin:Je,gunoffset:Je,gunangles:Je,gunindex:0,pm_time:0,pm_type:ii.Normal,pm_flags:Fe.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function ud(e){return e?{...Ut(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Je,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Ut()}function Me(e,t,n){return e+(t-e)*n}function Bs(e,t,n){let r=rn(t-e);return r>180&&(r-=360),rn(e+r*n)}function cn(e,t,n){let r=Math.max(0,Math.min(n,1));return{...t,origin:{x:Me(e.origin.x,t.origin.x,r),y:Me(e.origin.y,t.origin.y,r),z:Me(e.origin.z,t.origin.z,r)},velocity:{x:Me(e.velocity.x,t.velocity.x,r),y:Me(e.velocity.y,t.velocity.y,r),z:Me(e.velocity.z,t.velocity.z,r)},viewAngles:{x:Bs(e.viewAngles.x,t.viewAngles.x,r),y:Bs(e.viewAngles.y,t.viewAngles.y,r),z:Bs(e.viewAngles.z,t.viewAngles.z,r)},damageAlpha:Me(e.damageAlpha,t.damageAlpha,r),blend:[Me(e.blend[0],t.blend[0],r),Me(e.blend[1],t.blend[1],r),Me(e.blend[2],t.blend[2],r),Me(e.blend[3],t.blend[3],r)],health:Me(e.health||0,t.health||0,r),armor:Me(e.armor||0,t.armor||0,r),ammo:Me(e.ammo||0,t.ammo||0,r)}}function Nw(e,t,n,r){let i=Math.min(Math.max(t.msec,0),Lw)/1e3,a=at(e.pmFlags,Fe.OnGround),s=at(e.pmFlags,Fe.OnLadder),o=zs({velocity:e.velocity,frametime:i,onGround:a,groundIsSlick:n.groundIsSlick,onLadder:s,waterlevel:e.waterLevel,pmFriction:n.pmFriction,pmStopSpeed:n.pmStopSpeed,pmWaterFriction:n.pmWaterFriction}),{viewangles:l,forward:c,right:u}=Os({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Je}),h=e.waterLevel>Dt.None?Ns({forward:c,right:u,cmd:t,maxSpeed:n.pmWaterSpeed}):Ls({forward:c,right:u,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>Dt.None)o=ai({velocity:o,wishdir:h.wishdir,wishspeed:h.wishspeed,accel:n.pmWaterAccelerate,frametime:i});else if(a||s){let g=at(e.pmFlags,Fe.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,S=h.wishspeed>g?{wishdir:h.wishdir,wishspeed:g}:h;o=ai({velocity:o,wishdir:S.wishdir,wishspeed:S.wishspeed,accel:n.pmAccelerate,frametime:i})}else o=Ru({velocity:o,wishdir:h.wishdir,wishspeed:h.wishspeed,accel:n.pmAirAccelerate,frametime:i}),o={...o,z:o.z-(e.gravity??Ad)*i};let f=r(e.origin,qn(e.origin,an(o,i))).endpos;return{...e,origin:f,velocity:o,viewAngles:l}}var di=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:Ut()},this.commands=[],this.predicted=Ut(),this.settings={...zw,...t},this.trace=e,this.predicted=this.baseFrame.state??Ut()}setAuthoritative(e){let t=ud(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=ud(this.baseFrame.state);for(let t of this.commands)e=Nw(e,t,this.settings,this.trace);return this.predicted=e,e}},_e=null;function Ow(){if(!_e){console.error("CGame Init: cgame imports not set");return}_e.Com_Print(`===== CGame Initialization =====
175
+ `),Iy(_e),_e.Com_Print(`CGame initialized
176
+ `)}function Iw(){_e&&_e.Com_Print(`CGame shutdown
177
+ `),_e=null}function Cw(e,t,n,r,i,a,s){Py(e,t,n,r,i,a,s)}function Pw(){Cy()}function Dw(e){return 0}function Fw(e){return 0}function Uw(e){return[]}function Bw(e,t){return 0}function Gw(e){return 0}function Hw(e){return 0}function Vw(e){let t=e;if(!t||!t.s||!t.cmd||!_e)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return _e.PM_Trace(a,s,o||c,l||c)},r=a=>{let s={x:0,y:0,z:0};return _e.PM_Trace(a,a,s,s).contents||0},i=td(t.s,t.cmd,n,r);t.s.origin=i.origin,t.s.velocity=i.velocity,t.s.onGround=i.onGround,t.s.waterLevel=i.waterLevel}function Ww(e,t){_e&&Fy(_e,e,t)}function Kw(e,t,n){if(!_e)return;li().setCenterPrint(e,_e.CL_ClientTime())}function $w(e,t,n){if(!_e)return;li().addNotification(t,n,_e.CL_ClientTime())}function Xw(e){li().clearNotifications()}function Yw(e){li().clearCenterPrint()}function Zw(e,t){if(!_e)return;Dy().addSubtitle(e,_e.CL_ClientTime())}function jw(e){return{x:0,y:0,z:0}}function qw(e){return null}function xd(e){return _e=e,{Init:Ow,Shutdown:Iw,DrawHUD:Cw,TouchPics:Pw,LayoutFlags:Dw,GetActiveWeaponWheelWeapon:Fw,GetOwnedWeaponWheelWeapons:Uw,GetWeaponWheelAmmoCount:Bw,GetPowerupWheelCount:Gw,GetHitMarkerDamage:Hw,Pmove:Vw,ParseConfigString:Ww,ParseCenterPrint:Kw,NotifyMessage:$w,ShowSubtitle:Zw,ClearNotify:Xw,ClearCenterprint:Yw,GetMonsterFlashOffset:jw,GetExtension:qw}}function kd(e,t){let n=new Map,r=new Set,i=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let l=e.host.cvars.get(a);return l||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||r.has(a)||(r.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}r.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),r.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{i()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&i()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,h=n.get(u);h&&i()?.drawPic(a,s,h,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{i()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{i()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let l=t.getKeyBinding(o);i()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,l)=>e.engine.trace(a,s,o,l)}}var ln=null,yt=0;var rr=!0,ir=["ch1","ch2","ch3"],un=[null,null,null],Ed=async(e,t)=>{for(let n=0;n<ir.length;n++){let r=ir[n];try{let i=await t.loadTexture(`pics/${r}.pcx`);un[n]=e.registerTexture(r,i)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");un[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}ln=un[0]};var bd=()=>{if(rr?(yt++,yt>=ir.length&&(rr=!1,yt=0)):(rr=!0,yt=0),rr){if(ln=un[yt],!ln){let e=!1;for(let t=0;t<ir.length;t++){let n=(yt+t)%ir.length;if(un[n]){yt=n,ln=un[n],e=!0;break}}e||(ln=null)}}else ln=null;return rr?yt:-1};var Jw=Object.defineProperty,Fd=(e,t)=>{for(var n in t)Jw(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0};var JR=Math.PI/180;function Qw(e){return{x:e.x,y:e.y,z:e.z}}function K(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function P(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function $(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Ud(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function eS(e){return Ud(e,e)}function vn(e){return Math.sqrt(eS(e))}function B(e){let t=vn(e);return t===0?e:$(e,1/t)}function tS(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function nS(e,t,n,r){let i=0;if(t.x<n.x){let a=t.x-n.x;i+=a*a}else if(e.x>r.x){let a=e.x-r.x;i+=a*a}if(t.y<n.y){let a=t.y-n.y;i+=a*a}else if(e.y>r.y){let a=e.y-r.y;i+=a*a}if(t.z<n.z){let a=t.z-n.z;i+=a*a}else if(e.z>r.z){let a=e.z-r.z;i+=a*a}return i}var co=0,lo=1,Bd=2,rS=Math.PI/180,iS=180/Math.PI;function sr(e,t){switch(t){case co:return e.x;case lo:return e.y;case Bd:default:return e.z}}function hi(e){return e*rS}function js(e){return e*iS}function qs(e){let t=e%360;return t<0?360+t:t}function te(e){let t=hi(sr(e,lo)),n=hi(sr(e,co)),r=hi(sr(e,Bd)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(r),c=Math.cos(r),u={x:o*a,y:o*i,z:-s},h={x:-l*s*a-c*-i,y:-l*s*i-c*a,z:-l*o},m={x:c*s*a-l*-i,y:c*s*i-l*a,z:c*o};return{forward:u,right:h,up:m}}function Ai(e){let t=sr(e,co),n=sr(e,lo);if(t===0)return n===0?0:n>0?90:270;let r=js(Math.atan2(n,t));return r<0?r+360:r}function yn(e){let t=e.x,n=e.y,r=e.z;if(n===0&&t===0)return{x:r>0?-90:-270,y:0,z:0};let i;t?i=js(Math.atan2(n,t)):n>0?i=90:i=270,i<0&&(i+=360);let a=Math.sqrt(t*t+n*n),s=js(Math.atan2(r,a));return s<0&&(s+=360),{x:-s,y:i,z:0}}var Qe=624,aS=397,sS=2567483615,oS=2147483648,cS=2147483647,Ws=4294967296,lS=class{constructor(e=5489){this.state=new Uint32Array(Qe),this.index=Qe,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Qe;t++){let n=this.state[t-1]^this.state[t-1]>>>30,r=Math.imul(n>>>0,1812433253)+t;this.state[t]=r>>>0}this.index=Qe}nextUint32(){this.index>=Qe&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<Qe;e++){let t=this.state[e]&oS|this.state[(e+1)%Qe]&cS,n=this.state[(e+aS)%Qe]^t>>>1;(t&1)!==0&&(n^=sS),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Qe)throw new Error(`Expected ${Qe} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Gd=class{constructor(e={}){this.mt=new lS(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/Ws}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,r=Ws-Ws%n,i;do i=this.mt.nextUint32();while(i>=r);return e+i%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function uo(e){return new Gd(e)}var Re=1,kt=2;var mo=8,ho=16,uS=32;var dS=16384;var xi=65536,Hd=1<<17,mS=1<<18,hS=1<<19,fS=1<<20,_S=1<<21,gS=1<<22,pS=1<<23,QR=1<<24,Gt=1<<25,ki=1<<26,e4=1<<27,t4=1<<28,n4=1<<29,wn=1<<30,r4=1<<31;var i4=1<<25,a4=1<<28,s4=1<<29,o4=1<<30,c4=1<<31,vS=Re|kt,l4=Re|xi|kt|Gt|wn,u4=Re|xi|kt,_i=Re|Hd|kt|Gt|wn,yS=uS|mo|ho,d4=Re|ho|mo,At=Re|Gt|wn|kt|ki,m4=mS|hS|fS|_S|gS|pS,h4=Re|mo|ho|Gt|wn,f4=Re|xi|kt,_4=Re|kt,g4=Re|xi|kt|Hd,p4=At|dS,v4=Number.MAX_SAFE_INTEGER-1;var Vd=256,wS=256,SS=8192,AS=2048,xS=512,kS=256,ES=Vd*2,bS=256,Ks=32,Wd=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+SS]="Sounds",e[e.Images=e.Sounds+AS]="Images",e[e.Lights=e.Images+xS]="Lights",e[e.ShadowLights=e.Lights+wS]="ShadowLights",e[e.Items=e.ShadowLights+bS]="Items",e[e.PlayerSkins=e.Items+kS]="PlayerSkins",e[e.General=e.PlayerSkins+Vd]="General",e[e.WheelWeapons=e.General+ES]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ks]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ks]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ks]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Wd||{}),y4=Wd.MaxConfigStrings,TS={};Fd(TS,{addReplayFrame:()=>LS,createReplaySession:()=>zS,deserializeReplay:()=>RS,serializeReplay:()=>MS});function MS(e){return JSON.stringify(e,null,2)}function RS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function zS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function LS(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var xe=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(xe||{}),ke=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(ke||{});var NS=12,OS=9,w4=Math.ceil(NS*OS/16),IS=23,CS=2,S4=Math.ceil(IS*CS/16);var PS={};Fd(PS,{U_ANGLE1:()=>VS,U_ANGLE2:()=>WS,U_ANGLE3:()=>KS,U_EFFECTS:()=>YS,U_EVENT:()=>qS,U_FRAME:()=>$S,U_MODEL:()=>FS,U_MODEL2:()=>QS,U_MODEL3:()=>eA,U_MODEL4:()=>tA,U_MOREBITS:()=>JS,U_NUMBER:()=>DS,U_ORIGIN1:()=>BS,U_ORIGIN2:()=>GS,U_ORIGIN3:()=>HS,U_REMOVE:()=>nA,U_RENDERFX:()=>ZS,U_SKIN:()=>XS,U_SOLID:()=>jS,U_SOUND:()=>US});var DS=1,FS=2,US=4,BS=8,GS=16,HS=32,VS=64,WS=128,KS=256,$S=512,XS=1024,YS=2048,ZS=4096,jS=8192,qS=16384,JS=32768,QS=1,eA=2,tA=4,nA=32768;var V=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(V||{}),A4=Object.keys(V).length/2,ne=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(ne||{}),x4={[ne.Shells]:{id:ne.Shells,ammoType:V.Shells,quantity:10,weaponAmmo:!1},[ne.Bullets]:{id:ne.Bullets,ammoType:V.Bullets,quantity:50,weaponAmmo:!1},[ne.Rockets]:{id:ne.Rockets,ammoType:V.Rockets,quantity:5,weaponAmmo:!1},[ne.Grenades]:{id:ne.Grenades,ammoType:V.Grenades,quantity:5,weaponAmmo:!0},[ne.Cells]:{id:ne.Cells,ammoType:V.Cells,quantity:50,weaponAmmo:!1},[ne.Slugs]:{id:ne.Slugs,ammoType:V.Slugs,quantity:10,weaponAmmo:!1},[ne.MagSlugs]:{id:ne.MagSlugs,ammoType:V.MagSlugs,quantity:10,weaponAmmo:!1},[ne.Flechettes]:{id:ne.Flechettes,ammoType:V.Flechettes,quantity:50,weaponAmmo:!1},[ne.Disruptor]:{id:ne.Disruptor,ammoType:V.Disruptor,quantity:15,weaponAmmo:!1},[ne.Tesla]:{id:ne.Tesla,ammoType:V.Tesla,quantity:5,weaponAmmo:!1},[ne.Trap]:{id:ne.Trap,ammoType:V.Trap,quantity:5,weaponAmmo:!1},[ne.Prox]:{id:ne.Prox,ammoType:V.Prox,quantity:5,weaponAmmo:!1}};function xt(e,t){return(e&t)!==0}var Sn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(Sn||{}),rA={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function iA(e,t,n){if(e<=0||xt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=rA[n.armorType],i=xt(t,4)?r.energyProtection:r.normalProtection,a=Math.ceil(i*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function aA(e,t,n,r,i,a={}){if(i.health<=0||e<=0)return{saved:0,remainingCells:i.cellCount};if(xt(t,258))return{saved:0,remainingCells:i.cellCount};if(!i.type||i.cellCount<=0)return{saved:0,remainingCells:i.cellCount};let{forward:s}=te(i.angles),o={x:n.x-i.origin.x,y:n.y-i.origin.y,z:n.z-i.origin.z},l=Math.hypot(o.x,o.y,o.z);if(i.type==="screen"&&l>0){let y={x:o.x/l,y:o.y/l,z:o.z/l};if(y.x*s.x+y.y*s.y+y.z*s.z<=.3)return{saved:0,remainingCells:i.cellCount}}let c=a.ctfMode??!1,u=i.type==="screen"||c?1:2,h=i.type==="screen"?e/3:2*e/3;h=Math.max(1,h);let m=i.cellCount*u;xt(t,4)&&(m=Math.max(1,Math.floor(m/2))),m>h&&(m=Math.floor(h));let f=m/u;xt(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let g=Math.max(u,f),S=Math.max(0,i.cellCount-g);return{saved:m,remainingCells:S}}var he=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.HandGrenade="grenades",e.Grapple="grapple",e.IonRipper="ionripper",e.Phalanx="phalanx",e.Trap="trap",e.PlasmaBeam="plasmabeam",e.EtfRifle="etfrifle",e.ProxLauncher="proxlauncher",e.ChainFist="chainfist",e.Disruptor="disruptor",e))(he||{}),ae=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.Silencer="silencer",e.Rebreather="rebreather",e.EnviroSuit="enviro",e.DoubleDamage="double",e.QuadFire="quadfire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="pack",e.IRGoggles="goggles",e.SphereVengeance="vengeance",e.SphereHunter="hunter",e.SphereDefender="defender",e.Doppelganger="doppelganger",e.TagToken="tagtoken",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ae||{}),ge=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(ge||{});var sA={...W};var k4=Object.freeze({aiflags:0,last_sighting:sA,trail_time:0,pausetime:0});var fo=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],oA=20,cA=440,lA=940,$s=32,uA=1<<24,gi=1;function Td(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function Et(e,t){let n=Td(e),r=Td(t),i=nS(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function dA(e){return e<=oA?"melee":e<=cA?"near":e<=lA?"mid":"far"}function cr(e,t){let{forward:n}=te(e.angles),r=B(P(t.origin,e.origin)),i=Ud(r,n);return(e.spawnflags&gi)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function An(e,t,n,r){if((t.flags&uA)!==0)return!1;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=r?.throughGlass?1:3,o=n(i,null,null,a,e,s);return o.fraction===1||o.ent===t}function mA(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Ai(n)}function Kd(e){e.angles.y=qs(e.ideal_yaw)}function hA(e,t,n){e.enemy&&(e.goalentity=e.enemy,mA(e,e.enemy),Kd(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function fA(e,t,n,r){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let i=e.monsterinfo.last_sighting;if(i.x=e.enemy.origin.x,i.y=e.enemy.origin.y,i.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){hA(e,t,n);return}let a=r?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function _A(e,t,n,r){let i=Et(e,t),a=dA(i);return a==="far"||t.light_level<=5||!An(e,t,r,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||cr(e,t):a==="mid"?cr(e,t):!0}function gA(e,t,n,r,i){if((e.spawnflags&gi)!==0){if(!An(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=P(t.origin,e.origin);return vn(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=Ai(a),Kd(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function pA(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&gi)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&gi)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function vA(e){return(e.flags&$s)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&$s)!==0:!!(e.enemy&&(e.enemy.flags&$s)!==0)}function _o(e,t,n,r,i={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=pA(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(vA(a))return!1;if(s){if(!gA(e,a,t,i,r))return!1}else{if(!_A(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return fA(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function $d(e,t){if(t===0)return{x:0,y:0,z:0};let n=hi(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function go(e,t,n){let r=$d(t,n),i=e.origin;return i.x+=r.x,i.y+=r.y,i.z+=r.z,!0}function dr(e,t){let n=qs(e.angles.y),r=e.ideal_yaw;if(n===r){e.angles.y=n;return}let i=e.yaw_speed*t*10,a=r-n;r>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>i?a=i:a<-i&&(a=-i),e.angles.y=qs(n+a)}function _(e,t){go(e,e.angles.y,t)}function Ei(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Ai(n)}function O(e,t,n){_o(e,n.targetAwareness,n,n.trace)||dr(e,t)}function z(e,t,n,r){if(!_o(e,r.targetAwareness,r,r.trace)&&(Ei(e,e.goalentity),dr(e,n),t!==0&&go(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&Et(e,e.goalentity)<64&&e.goalentity.target)){let a=r.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function le(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}_o(e,r.targetAwareness,r,r.trace),(e.monsterinfo.aiflags&32768)===0&&Ei(e,e.enemy??e.goalentity),dr(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Xd(e,e.angles.y,t,r)}function yA(e,t,n,r){t&&(e.monsterinfo.aiflags&32768)===0&&Ei(e,t),dr(e,r),n!==0&&go(e,e.angles.y,n)}function ue(e,t,n,r){(e.monsterinfo.aiflags&32768)===0&&Ei(e,e.enemy),dr(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Xd(e,e.angles.y,t,r)}function wA(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},r=t.trace(e.origin,e.mins,e.maxs,n,e,_i);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&yS?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function SA(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},r={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},i={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?i={x:n.x,y:n.y,z:0}:i={x:r.x,y:n.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,_i).fraction<1)||(s===1?i={x:n.x,y:r.y,z:0}:i={x:r.x,y:r.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0)||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,_i).fraction<1))return!0;return!1}function Xd(e,t,n,r){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let i=$d(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+i.x,y:e.origin.y+i.y,z:e.origin.z+i.z};if(r.trace(e.origin,e.mins,e.maxs,a,e,_i).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!SA(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&wA(e,r),!0)}var AA=fo.filter(e=>e.save||e.type==="callback"),E4=new Map(AA.map(e=>[e.name,e]));function xA(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let r=1;return n.quad_time&&n.quad_time>t&&(r*=4),n.double_time&&n.double_time>t&&(r*=2),r}function kA(e,t,n,r,i){if(xt(i,8)||((e.flags??0)&4)!==0||r===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=B(n),c=$(o,(t===e?1600:500)*r/s);return e.velocity=K(e.velocity,c),c}function EA(e,t,n,r,i){let a=r,s=0,o=0,l,c;if(e.powerArmor){let u=aA(r,i,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=iA(a,i,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function Md(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function pe(e,t,n,r,i,a,s,o,l,c,u,h){if(!e.takedamage)return null;let m=xA(n,u),f=s*m,g=o*m;if(!xt(l,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let y=kA(e,n,r,g,l),[w,T,A,p,x]=EA(e,i,a,f,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&f>0&&(w=e.health+100,T=0,A=0),e.powerArmor&&p!==void 0&&(e.powerArmor.cellCount=p),e.regularArmor&&(e.regularArmor.armorCount=x??e.regularArmor.armorCount);let E=w;E>0&&(e.health-=E,h&&!xt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&h(i,1,xe.temp_entity,ke.BLOOD,i,a));let b=e.health<=0;return b?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,E,i,c):E>0&&e.pain&&e.pain(e,n,o,E,c),{take:E,psave:T,asave:A,knocked:y,killed:b,remainingCells:p,remainingArmor:x}}function po(e,t,n,r,i,a,s,o,l,c={},u){let h=[],m=Md(t),f=c.canDamage??(()=>!0);for(let g of e){if(g===i||!g.takedamage||!f(g,t))continue;let S=g.mins&&g.maxs?tS(m,K(g.origin,g.mins),K(g.origin,g.maxs)):Md(g),y=P(m,S),w=vn(y);if(a>0&&w>a)continue;let T=r-.5*w;if(T<=0)continue;let A=g===n?T*.5:T,p=B(P(g.origin,m)),x=pe(g,t,n,p,S,p,A,A,s|1,o,l,u);h.push({target:g,result:x,appliedDamage:A})}return h}function bA(e,t,n,r,i,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:r.x*s,y:r.y*s,z:r.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,h,m)=>{if(u===c.owner)return;u&&u.takedamage&&pe(u,c,c.owner,c.velocity,c.origin,h?h.normal:W,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);po(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,xe.temp_entity,ke.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function Yd(e,t,n,r,i,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let l=c=>{let u=e.findByRadius(c.origin,120);po(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,xe.temp_entity,ke.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,h,m)=>{if(u!==c.owner){if(u&&u.takedamage){l(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{l(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function Zd(e,t,n,r,i,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,h)=>{if(c!==l.owner){if(c&&c.takedamage)pe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,i,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let m=ke.BLASTER;s===58&&(m=ke.BLUEHYPERBLASTER),e.multicast(l.origin,1,xe.temp_entity,m,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function TA(e,t,n,r,i,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:r.x*a,y:r.y*a,z:r.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,l,c,u)=>{if(l!==o.owner){if(l&&l.takedamage){pe(l,o,o.owner,o.velocity,o.origin,c?c.normal:W,i,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,xe.temp_entity,ke.WELDING_SPARKS,o.origin,W,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,xe.temp_entity,ke.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,xe.temp_entity,ke.WELDING_SPARKS,o.origin,W,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function MA(e,t,n,r,i,a){Zd(e,t,n,r,i,a,58)}function RA(e,t,n,r){let i={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=B(P(a,i)),o={x:i.x+s.x*2048,y:i.y+s.y*2048,z:i.z+s.z*2048},l=16,c=[],u=[],h={...i};try{for(let f=0;f<l;f++){let g=e.trace(h,null,null,o,t,Re|Gt|wn|ki);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&pe(g.ent,t,t.owner,s,g.endpos,W,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),u.push(g.ent.solid),g.ent.solid=0,h={...g.endpos}}let m=e.trace(i,null,null,o,t,Re);e.multicast(t.origin,2,xe.temp_entity,ke.BFG_LASER,i,m.endpos)}finally{for(let m=0;m<c.length;m++)c[m].solid=u[m]}}function zA(e,t){let n=t.deathmatch?5:10,r=t.findByRadius(e.origin,256);for(let i of r){if(i===e||i===e.owner||!i.takedamage||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let a={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5};t.trace(e.origin,null,null,a,null,vS).fraction<1||RA(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function LA(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let r of n){if(!r.takedamage||r===e.owner||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let i={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5},a=P(e.origin,i),s=vn(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&pe(r,e,e.owner,e.velocity,i,W,Math.floor(l),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function NA(e,t,n,r,i,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=i,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,h)=>{if(c===l.owner)return;c&&c.takedamage&&pe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let m=e.findByRadius(l.origin,100);po(m,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,xe.temp_entity,ke.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=W,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(f,g)=>LA(f,g),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>zA(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}var b4=1/40;function OA(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var IA=1;function CA(e,t){if(!e.client)return;let n=OA(e.client.weaponStates,"chaingun");!(e.client.buttons&IA)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var T4={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:"blaster",ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:"shotgun",ammoType:V.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:"supershotgun",ammoType:V.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:"machinegun",ammoType:V.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:CA},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:"chaingun",ammoType:V.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:"grenades",ammoType:V.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:"grenadelauncher",ammoType:V.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:"rocketlauncher",ammoType:V.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:"hyperblaster",ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:"railgun",ammoType:V.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:"bfg10k",ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:"ionripper",ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:"phalanx",ammoType:V.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:"plasmabeam",ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:"etfrifle",ammoType:V.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:"proxlauncher",ammoType:V.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};var M4=uo();var bi=.1,or=80;var jd=uo();function PA(){return jd.frandom()}function qd(e,t){return Math.floor(jd.frandom()*(t-e+1)+e)}function fn(e,t,n){O(e,bi,n)}function Be(e,t,n){z(e,t,bi,n)}function dn(e,t,n){le(e,t,bi,n)}function oe(e,t,n){ue(e,t,bi,n)}function U(e,t,n){_(e,t)}var lr={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function We(e,t){t.sound(e,2,lr.footstep,1,1,0)}function pi(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function DA(e,t){}var vo,Jd,FA,Qd,UA,BA,GA,HA,VA,em,WA;function KA(e,t){pi(e,vo)}function $A(e,t){e.monsterinfo.aiflags&1||e.enemy||PA()>.15||(pi(e,Jd),t.sound(e,1,lr.idle,1,2,0))}var XA=[{ai:fn,dist:0,think:$A},{ai:fn,dist:0},{ai:fn,dist:0},{ai:fn,dist:0},{ai:fn,dist:0}];vo={firstframe:0,lastframe:4,frames:XA,endfunc:null};var YA=Array.from({length:20},()=>({ai:fn,dist:0}));Jd={firstframe:5,lastframe:24,frames:YA,endfunc:KA};var ZA=[{ai:Be,dist:9.1},{ai:Be,dist:6.3},{ai:Be,dist:4.9},{ai:Be,dist:6.7,think:We},{ai:Be,dist:6},{ai:Be,dist:8.2},{ai:Be,dist:7.2},{ai:Be,dist:6.1},{ai:Be,dist:4.9},{ai:Be,dist:4.7,think:We},{ai:Be,dist:4.7}];FA={firstframe:25,lastframe:35,frames:ZA,endfunc:null};var jA=[{ai:dn,dist:21},{ai:dn,dist:11,think:We},{ai:dn,dist:21},{ai:dn,dist:25,think:DA},{ai:dn,dist:18,think:We},{ai:dn,dist:19}];Qd={firstframe:36,lastframe:41,frames:jA,endfunc:null};function mr(e,t){e.monsterinfo.aiflags&1?pi(e,vo):pi(e,Qd)}function tm(e,t,n,r,i){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=te(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},l={x:a.x+s.x*or,y:a.y+s.y*or,z:a.z+s.z*or},c=i.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(pe(c.ent,e,e,s,c.endpos,c.plane?.normal||W,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function qA(e,t){tm(e,{x:or,y:0,z:-24},qd(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function nm(e,t){t.sound(e,1,lr.punch,1,1,0)}var JA=[{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0,think:nm},{ai:oe,dist:0,think:qA},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0}];UA={firstframe:67,lastframe:74,frames:JA,endfunc:mr};function QA(e,t){tm(e,{x:or,y:0,z:-4},qd(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var ex=[{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0,think:We},{ai:oe,dist:0},{ai:oe,dist:0,think:nm},{ai:oe,dist:0},{ai:oe,dist:0,think:QA},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0}];BA={firstframe:75,lastframe:86,frames:ex,endfunc:mr};function tx(e,t,n,r,i,a){let s=a.findByRadius(e.origin,r);for(let o of s){if(o===e||!o.takedamage)continue;let l=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-l/r);if(c<=0)continue;let u=Math.max(1,n*c*c),h=i*c*c,m=B(P(o.origin,e.origin));pe(o,e,t,m,o.origin,m,u,h,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function yo(e,t){t.sound(e,1,lr.thud,1,1,0),t.sound(e,2,lr.explod,.75,1,0);let{forward:n,right:r}=te(e.angles),i={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*i.x+r.x*i.y,y:e.origin.y+n.y*i.x+r.y*i.y,z:e.origin.z+n.z*i.x+r.z*i.y+i.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,xe.temp_entity,ke.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},tx(e,e,8,165,300,t)}function nx(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,yo(e,i))}function wo(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function rx(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=B({x:n.x,y:n.y,z:0}),s=yn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,h)=>{nx(l,c,u,h,t),l.groundentity&&(l.frame=104,yo(l,t),l.touch=void 0)},wo(e,t)}function ix(e,t){if(wo(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(yo(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var ax=[{ai:oe,dist:0},{ai:oe,dist:0},{ai:U,dist:0,think:rx},{ai:U,dist:0,think:wo},{ai:U,dist:0,think:ix},{ai:U,dist:0,think:We},{ai:U,dist:0},{ai:U,dist:0,think:We},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0,think:We}];GA={firstframe:87,lastframe:109,frames:ax,endfunc:mr};var sx=[{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0}];HA={firstframe:149,lastframe:152,frames:sx,endfunc:mr};var ox=Array.from({length:20},(e,t)=>({ai:U,dist:0,think:t%5===4?We:void 0}));VA={firstframe:153,lastframe:172,frames:ox,endfunc:mr};function rm(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=em.lastframe,e.nextthink=-1,e.deadflag=2}var cx=[{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0,think:We},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0}];em={firstframe:173,lastframe:185,frames:cx,endfunc:rm};var lx=[{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0,think:We},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0}];WA={firstframe:186,lastframe:193,frames:lx,endfunc:rm};function Rd(){return 2*Math.random()-1}function vi(e,t,n,r,i,a,s,o,l,c=0){let u=n;if(a>0||s>0){let f=yn(n),{right:g,up:S}=te(f),y=Rd()*a,w=Rd()*s;u={x:n.x+g.x*y+S.x*w,y:n.y+g.y*y+S.y*w,z:n.z+g.z*y+S.z*w},u=B(u)}let h=K(t,$(u,8192)),m=l.trace(t,h,W,W,e,At);!m.ent||m.fraction===1||pe(m.ent,e,e,u,m.endpos,m.plane?.normal||W,r,i,18,c,l.timeSeconds)}var Bt=vi;function ux(e,t,n,r,i,a,s,o,l,c,u=2){for(let h=0;h<o;h++)Bt(e,t,n,r,i,a,s,l,c,u)}function lt(e,t,n,r,i,a,s,o,l=1){Zd(o,e,t,n,r,i,l)}function dx(e,t,n,r,i,a,s,o){MA(o,e,t,n,r,i)}function mx(e,t,n,r,i,a,s,o){TA(o,e,t,n,r,i)}function hx(e,t,n,r,i,a,s){Yd(s,e,t,n,r,i)}function hr(e,t,n,r,i,a,s){bA(s,e,t,n,r,120,i)}function im(e,t,n,r,i,a,s,o,l){NA(l,e,t,n,r,i,s)}function am(e,t,n,r,i,a,s){let o=K(t,$(n,8192)),l=s.trace(t,o,W,W,e,At);s.multicast(t,2,xe.temp_entity,ke.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&pe(l.ent,e,e,n,l.endpos,W,r,i,6,11,s.timeSeconds)}function fr(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=te(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=K(s,$(a,o)),c=i.trace(s,l,W,W,e,At);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=B(P(c.endpos,s));return pe(c.ent,e,e,u,c.endpos,c.plane?.normal||W,n,r,0,0,i.timeSeconds),!0}return!1}function fx(e,t,n,r,i,a,s,o){hr(e,t,n,r,i,a,o)}function zd(e,t){let n={...e.origin},r=K(n,$(e.movedir,2048)),i={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(i,r,W,W,e,Re|Gt|wn|ki);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&pe(c.ent,e,e.owner,e.movedir,c.endpos,W,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,xe.temp_entity,ke.LASER_SPARKS,10,c.endpos,c.plane?.normal||W,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,i={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function _x(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Js(e,t,n,r,i){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=i.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?_x(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{r(s,o),zd(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=i.timeSeconds+.2,a.nextthink=i.timeSeconds+.01,r(a,i),zd(a,i)}var So=.1,gx={x:0,y:30,z:-15},px={x:0,y:15,z:0},vx={x:0,y:-15,z:0},yx={x:0,y:-30,z:-15},wx={x:30,y:20,z:0},Sx={x:30,y:-20,z:0};function Ax(e,t,n){O(e,So,n)}function xx(e,t,n){z(e,t,So,n)}function Ti(e,t,n){ue(e,t,So,n)}function Ao(e,t,n){_(e,t)}var xo,sm,om,kx,cm,lm,Ex,bx,Tx,um;function Mx(e){e.monsterinfo.current_move=xo}function Rx(e){e.monsterinfo.current_move=sm}function _r(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=om:e.monsterinfo.current_move=xo}function dm(e){e.monsterinfo.current_move=cm}function zx(e){e.enemy&&cr(e,e.enemy)&&Math.random()<=.7?dm(e):e.monsterinfo.current_move=lm}function Qs(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=$(n,t.x),o=$(r,t.y),l=$(i,t.z);return K(K(K(a,s),o),l)}function Lx(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Qs(e,wx),r=B(P(e.enemy.origin,n));Bt(e,n,r,6,4,.1,.05,0,t,4);let i=Qs(e,Sx),a=B(P(e.enemy.origin,i));Bt(e,i,a,6,4,.1,.05,0,t,4)}function Nx(e,t){if(!e.enemy)return;let n=[gx,px,vx,yx],r=n[Math.floor(Math.random()*n.length)],i=Qs(e,r),a=B(P(e.enemy.origin,i));hr(e,i,a,50,500,0,t)}function Ox(e){e.monsterinfo.nextframe=um.lastframe,e.nextthink=-1}var mm=Array.from({length:20},()=>({ai:xx,dist:10}));sm={firstframe:0,lastframe:19,frames:mm,endfunc:Rx};om={firstframe:0,lastframe:19,frames:mm,endfunc:_r};var Ix=Array.from({length:21},()=>({ai:Ax,dist:0}));xo={firstframe:29,lastframe:49,frames:Ix,endfunc:Mx};var Cx=Array.from({length:9},(e,t)=>({ai:Ti,dist:2,think:t===8?dm:null}));kx={firstframe:50,lastframe:58,frames:Cx,endfunc:null};var Px=Array.from({length:6},()=>({ai:Ti,dist:2,think:Lx}));cm={firstframe:59,lastframe:64,frames:Px,endfunc:zx};var Dx=Array.from({length:4},()=>({ai:Ti,dist:2}));lm={firstframe:65,lastframe:68,frames:Dx,endfunc:_r};var Fx=Array.from({length:21},(e,t)=>({ai:Ti,dist:2,think:t===12?Nx:null}));Ex={firstframe:69,lastframe:89,frames:Fx,endfunc:_r};var Ux=Array.from({length:18},()=>({ai:Ao,dist:0}));bx={firstframe:90,lastframe:107,frames:Ux,endfunc:_r};var Bx=Array.from({length:4},()=>({ai:Ao,dist:0}));Tx={firstframe:108,lastframe:111,frames:Bx,endfunc:_r};var Gx=Array.from({length:49},()=>({ai:Ao,dist:0}));um={firstframe:112,lastframe:160,frames:Gx,endfunc:Ox};var Mi=.1,ko=80,Ri=Math.random;function hm(e,t,n){O(e,Mi,n)}function Ge(e,t,n){z(e,t,Mi,n)}function He(e,t,n){le(e,t,Mi,n)}function N(e,t,n){ue(e,t,Mi,n)}function D(e,t,n){_(e,t)}var Eo,Hx,Vx,fm,_m,Wx,Kx,$x,Xx,Yx,Zx,jx,qx,Jx;function gm(e){e.monsterinfo.current_move=Eo}function bt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Eo:e.monsterinfo.current_move=fm}function Qx(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function ek(e,t){let n={x:ko,y:e.maxs.x,z:8};fr(e,n,15+Math.floor(Ri()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function tk(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function nk(e,t){let n={x:ko,y:e.mins.x,z:8};fr(e,n,15+Math.floor(Ri()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function pm(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function vm(e,t){fr(e,{x:ko,y:0,z:8},10+Math.floor(Ri()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function ym(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=_m)}function Ld(e,t){if(!e.enemy)return;let n=te(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,xe.temp_entity,ke.PARASITE_ATTACK,e,r,i);let s=P(r,i);pe(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=te(e.angles).forward;e.enemy.velocity=$(o,-1200)}var Nd=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],Od=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function rk(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Nd.length)&&(s=0);let o=Nd[s],l=K(n.origin,$(i,o.x));l=K(l,$(r,o.y)),l=K(l,$(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function ik(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Od.length)&&(s=0);let o=Od[s],l=K(n.origin,$(i,o.x));l=K(l,$(r,o.y)),l=K(l,$(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function et(e,t){Js(e,1,!1,rk,t),Js(e,1,!0,ik,t)}function ak(e){Ri()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function sk(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function ok(e){}function ck(e){e.monsterinfo.aiflags&=-17}var lk=Array.from({length:30},()=>({ai:hm,dist:0}));Eo={firstframe:162,lastframe:191,frames:lk,endfunc:gm};var uk=Array.from({length:30},()=>({ai:hm,dist:0}));Hx={firstframe:192,lastframe:221,frames:uk,endfunc:gm};var dk=[{ai:Ge,dist:7},{ai:Ge,dist:2},{ai:Ge,dist:3},{ai:Ge,dist:3},{ai:Ge,dist:1},{ai:Ge,dist:0},{ai:Ge,dist:0},{ai:Ge,dist:9},{ai:Ge,dist:-4},{ai:Ge,dist:-1},{ai:Ge,dist:2}];Vx={firstframe:0,lastframe:10,frames:dk,endfunc:null};var mk=[{ai:He,dist:9},{ai:He,dist:2},{ai:He,dist:3},{ai:He,dist:3},{ai:He,dist:1},{ai:He,dist:0},{ai:He,dist:0},{ai:He,dist:10},{ai:He,dist:-4},{ai:He,dist:-1},{ai:He,dist:2}];fm={firstframe:0,lastframe:10,frames:mk,endfunc:null};var hk=[{ai:N,dist:8},{ai:N,dist:3},{ai:N,dist:5},{ai:N,dist:0},{ai:N,dist:-3,think:Qx},{ai:N,dist:0},{ai:N,dist:-5},{ai:N,dist:-7,think:ek},{ai:N,dist:0},{ai:N,dist:6,think:tk},{ai:N,dist:1},{ai:N,dist:2,think:nk},{ai:N,dist:-3},{ai:N,dist:6},{ai:N,dist:-1},{ai:N,dist:-3},{ai:N,dist:2},{ai:N,dist:-11}];_m={firstframe:53,lastframe:70,frames:hk,endfunc:bt};var fk=[{ai:N,dist:5},{ai:N,dist:-4},{ai:N,dist:-4},{ai:N,dist:-3},{ai:N,dist:0,think:pm},{ai:N,dist:0},{ai:N,dist:13,think:vm},{ai:N,dist:0},{ai:N,dist:2},{ai:N,dist:0},{ai:N,dist:-9,think:ym},{ai:N,dist:0},{ai:N,dist:4},{ai:N,dist:3},{ai:N,dist:2},{ai:N,dist:-3},{ai:N,dist:-6}];Wx={firstframe:71,lastframe:87,frames:fk,endfunc:bt};var _k=[{ai:N,dist:5},{ai:N,dist:-4},{ai:N,dist:-4},{ai:N,dist:-3},{ai:N,dist:0,think:pm},{ai:N,dist:0,think:Ld},{ai:N,dist:13},{ai:N,dist:0,think:vm},{ai:N,dist:2},{ai:N,dist:0,think:Ld},{ai:N,dist:-9,think:ym},{ai:N,dist:0},{ai:N,dist:4},{ai:N,dist:3},{ai:N,dist:2},{ai:N,dist:-3},{ai:N,dist:-6}];Kx={firstframe:71,lastframe:87,frames:_k,endfunc:bt};var gk=[{ai:N,dist:9,think:et},{ai:N,dist:2,think:et},{ai:N,dist:3,think:et},{ai:N,dist:3,think:et},{ai:N,dist:1,think:et},{ai:N,dist:0,think:et},{ai:N,dist:0,think:et},{ai:N,dist:10,think:et},{ai:N,dist:-4,think:et},{ai:N,dist:-1,think:et},{ai:N,dist:2,think:ak}];$x={firstframe:0,lastframe:10,frames:gk,endfunc:bt};var pk=[{ai:D,dist:-6},{ai:D,dist:-2},{ai:D,dist:-6},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:2},{ai:D,dist:0},{ai:D,dist:2},{ai:D,dist:1},{ai:D,dist:7},{ai:D,dist:0},{ai:D,dist:3},{ai:D,dist:-1}];Xx={firstframe:88,lastframe:108,frames:pk,endfunc:bt};var vk=[{ai:D,dist:-2},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:3},{ai:D,dist:1},{ai:D,dist:-2}];Yx={firstframe:109,lastframe:116,frames:vk,endfunc:bt};var yk=[{ai:D,dist:-2},{ai:D,dist:2},{ai:D,dist:1},{ai:D,dist:3},{ai:D,dist:0},{ai:D,dist:-4}];Zx={firstframe:117,lastframe:122,frames:yk,endfunc:bt};var wk=Array.from({length:18},()=>({ai:D,dist:0}));jx={firstframe:123,lastframe:140,frames:wk,endfunc:wm};var Sk=[{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:9},{ai:D,dist:0}];qx={firstframe:141,lastframe:145,frames:Sk,endfunc:wm};var Ak=[{ai:D,dist:0},{ai:D,dist:-2,think:sk},{ai:D,dist:17,think:ok},{ai:D,dist:-3},{ai:D,dist:-1,think:ck},{ai:D,dist:-5},{ai:D,dist:-6},{ai:D,dist:-6}];Jx={firstframe:146,lastframe:153,frames:Ak,endfunc:bt};function wm(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var zi=.1,xk=80,xn=Math.random;function Sm(e,t,n){O(e,zi,n)}function kk(e,t,n){z(e,t,zi,n)}function Ek(e,t,n){le(e,t,zi,n)}function F(e,t,n){ue(e,t,zi,n)}function kn(e,t,n){_(e,t)}var bo,Am,xm,bk,To,eo,Tk,Mo,km,Mk,Rk,zk,Lk,Nk,Ok,Em;function bm(e){e.monsterinfo.current_move=bo}function Ik(e){e.monsterinfo.current_move=Am}function Ht(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=bo;return}e.monsterinfo.current_move=xm}function Ck(e){e.monsterinfo.aiflags&4||e.enemy||xn()<=.3&&(e.monsterinfo.current_move=Em)}function Pk(e,t){xn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function Dk(e,t){let n={x:xk,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),fr(e,n,10+Math.floor(xn()*6),100,t)}function Fk(e,t){let{forward:n,right:r}=te(e.angles),i={x:0,y:20,z:40},a=K(e.origin,$(n,i.x)),s=$(r,i.y),o=K(a,s),l={...o,z:o.z+i.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,h=W;if(u&&e.monsterinfo.blind_fire_target)h=e.monsterinfo.blind_fire_target;else if(e.enemy)h=e.enemy.origin;else return;let m=P(h,l);!u&&e.enemy&&(xn()<.33||l.z<e.enemy.absmin.z?m={...m,z:m.z+e.enemy.viewheight}:m={...m,z:e.enemy.absmin.z+1-l.z});let f=B(m);e.skin>1?fx(e,l,f,50,c,0,.075,t):hr(e,l,f,50,c,0,t)}function Uk(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=yn(n).y}}function Bk(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function Gk(e){e.monsterinfo.current_move=To}function Hk(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=eo;return}if(e.enemy&&e.enemy.health>0&&xn()<=.6){e.monsterinfo.current_move=To;return}e.monsterinfo.current_move=eo}function Vk(e){if(e.enemy&&e.enemy.health>0&&xn()<=.9){e.monsterinfo.current_move=Mo;return}e.monsterinfo.current_move=km}function Wk(e){e.monsterinfo.current_move=Mo}var Kk=Array.from({length:30},(e,t)=>({ai:Sm,dist:0,think:t===8?(n,r)=>Pk(n,r):null}));Em={firstframe:201,lastframe:230,frames:Kk,endfunc:bm};var $k=Array.from({length:30},(e,t)=>({ai:Sm,dist:0,think:t===29?Ck:null}));bo={firstframe:101,lastframe:130,frames:$k,endfunc:bm};var Xk=Array.from({length:10},()=>({ai:kk,dist:6}));Am={firstframe:171,lastframe:180,frames:Xk,endfunc:Ik};var Yk=Array.from({length:10},()=>({ai:Ek,dist:12}));xm={firstframe:171,lastframe:180,frames:Yk,endfunc:Ht};var Zk=Array.from({length:5},()=>({ai:kn,dist:0}));Mk={firstframe:90,lastframe:94,frames:Zk,endfunc:Ht};var jk=Array.from({length:5},()=>({ai:kn,dist:0}));Rk={firstframe:95,lastframe:99,frames:jk,endfunc:Ht};var qk=Array.from({length:21},()=>({ai:kn,dist:0}));zk={firstframe:100,lastframe:120,frames:qk,endfunc:Ht};var Jk=Array.from({length:12},()=>({ai:kn,dist:0}));Lk={firstframe:48,lastframe:59,frames:Jk,endfunc:Tm};var Qk=Array.from({length:23},()=>({ai:kn,dist:0}));Nk={firstframe:60,lastframe:82,frames:Qk,endfunc:Tm};function Tm(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var e2=[{ai:F,dist:0,think:Uk},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:4},{ai:F,dist:0},{ai:F,dist:-3},{ai:F,dist:3},{ai:F,dist:5},{ai:F,dist:7},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0,think:Gk}];bk={firstframe:0,lastframe:12,frames:e2,endfunc:null};var t2=[{ai:F,dist:19,think:Fk},{ai:F,dist:-6},{ai:F,dist:-5},{ai:F,dist:-2},{ai:F,dist:-7},{ai:F,dist:0},{ai:F,dist:1},{ai:F,dist:10,think:Bk},{ai:F,dist:4},{ai:F,dist:5},{ai:F,dist:6},{ai:F,dist:6},{ai:F,dist:4},{ai:F,dist:3,think:Hk}];To={firstframe:13,lastframe:26,frames:t2,endfunc:null};var n2=[{ai:F,dist:-3},{ai:F,dist:0},{ai:F,dist:-6},{ai:F,dist:-4},{ai:F,dist:-2}];eo={firstframe:27,lastframe:31,frames:n2,endfunc:Ht};var r2=[{ai:F,dist:1},{ai:F,dist:8},{ai:F,dist:3}];Tk={firstframe:32,lastframe:34,frames:r2,endfunc:Wk};var i2=[{ai:F,dist:1},{ai:F,dist:7,think:Dk},{ai:F,dist:-7},{ai:F,dist:1},{ai:F,dist:-1},{ai:F,dist:1},{ai:F,dist:0},{ai:F,dist:1},{ai:F,dist:-2,think:Vk}];Mo={firstframe:35,lastframe:43,frames:i2,endfunc:null};var a2=[{ai:F,dist:-6},{ai:F,dist:-1},{ai:F,dist:-6},{ai:F,dist:0}];km={firstframe:44,lastframe:47,frames:a2,endfunc:Ht};var s2=Array.from({length:7},()=>({ai:kn,dist:0}));Ok={firstframe:83,lastframe:89,frames:s2,endfunc:Ht};var Li=.1,o2=80,c2=24;function l2(e,t,n){O(e,Li,n)}function u2(e,t,n){z(e,t,Li,n)}function Mm(e,t,n){le(e,t,Li,n)}function de(e,t,n){ue(e,t,Li,n)}function Ro(e,t,n){_(e,t)}var d2,m2,Rm,zm,h2,f2,_2,g2;function p2(e){e.monsterinfo.current_move=zm}function zo(e){e.monsterinfo.current_move=Rm}function Id(e,t){fr(e,{x:o2,y:0,z:0},5,0,t)}function v2(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var y2=[{ai:l2,dist:0}];d2={firstframe:41,lastframe:41,frames:y2,endfunc:null};var w2=Array.from({length:24},()=>({ai:Mm,dist:c2}));zm={firstframe:70,lastframe:93,frames:w2,endfunc:null};var S2=Array.from({length:6},()=>({ai:Mm,dist:8}));Rm={firstframe:65,lastframe:70,frames:S2,endfunc:p2};var A2=Array.from({length:24},()=>({ai:u2,dist:4}));m2={firstframe:41,lastframe:64,frames:A2,endfunc:null};var x2=Array.from({length:5},()=>({ai:Ro,dist:0}));f2={firstframe:99,lastframe:103,frames:x2,endfunc:zo};var k2=Array.from({length:5},()=>({ai:Ro,dist:0}));_2={firstframe:94,lastframe:98,frames:k2,endfunc:zo};var E2=[{ai:de,dist:0,think:v2},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0,think:Id},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0,think:Id},{ai:de,dist:0}];h2={firstframe:0,lastframe:19,frames:E2,endfunc:zo};function b2(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var T2=Array.from({length:56},()=>({ai:Ro,dist:0}));g2={firstframe:104,lastframe:159,frames:T2,endfunc:b2};var Ni=.1;function M2(e,t,n){O(e,Ni,n)}function R2(e,t,n){z(e,t,Ni,n)}function z2(e,t,n){le(e,t,Ni,n)}function L2(e,t,n){ue(e,t,Ni,n)}function Lm(e,t,n){_(e,t)}var Lo,Nm,Om,N2,O2,Im;function I2(e){e.monsterinfo.current_move=Lo}function C2(e){e.monsterinfo.current_move=Nm}function No(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Om:e.monsterinfo.current_move=Lo}function P2(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));lt(e,n,r,5,1e3,0,0,t,1)}function D2(e){e.monsterinfo.nextframe=Im.lastframe,e.nextthink=-1}var F2=Array.from({length:46},()=>({ai:M2,dist:0}));Lo={firstframe:0,lastframe:45,frames:F2,endfunc:I2};var U2=Array.from({length:46},()=>({ai:R2,dist:5}));Nm={firstframe:0,lastframe:45,frames:U2,endfunc:C2};var B2=Array.from({length:46},()=>({ai:z2,dist:10}));Om={firstframe:0,lastframe:45,frames:B2,endfunc:No};var G2=Array.from({length:20},(e,t)=>({ai:L2,dist:0,think:t===10?P2:null}));N2={firstframe:46,lastframe:65,frames:G2,endfunc:No};var H2=Array.from({length:6},()=>({ai:Lm,dist:0}));O2={firstframe:66,lastframe:71,frames:H2,endfunc:No};var V2=Array.from({length:10},()=>({ai:Lm,dist:0}));Im={firstframe:84,lastframe:93,frames:V2,endfunc:D2};var Oi=.1;function W2(e,t,n){O(e,Oi,n)}function K2(e,t,n){z(e,t,Oi,n)}function $2(e,t,n){le(e,t,Oi,n)}function X2(e,t,n){ue(e,t,Oi,n)}function Cm(e,t,n){_(e,t)}var Oo,Pm,Dm,Y2,Z2,Fm;function j2(e){e.monsterinfo.current_move=Oo}function q2(e){e.monsterinfo.current_move=Pm}function Io(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dm:e.monsterinfo.current_move=Oo}function J2(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));lt(e,n,r,5,1e3,0,0,t,1)}function Q2(e,t){if(!e.enemy)return;let n=5+Math.random()*5;Et(e,e.enemy)<=80&&cr(e,e.enemy)&&pe(e.enemy,e,e,B(P(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function eE(e){e.monsterinfo.nextframe=Fm.lastframe,e.nextthink=-1}var tE=Array.from({length:46},()=>({ai:W2,dist:0}));Oo={firstframe:0,lastframe:45,frames:tE,endfunc:j2};var nE=Array.from({length:46},()=>({ai:K2,dist:5}));Pm={firstframe:0,lastframe:45,frames:nE,endfunc:q2};var rE=Array.from({length:46},()=>({ai:$2,dist:10}));Dm={firstframe:0,lastframe:45,frames:rE,endfunc:Io};var iE=Array.from({length:20},(e,t)=>({ai:X2,dist:0,think:t===10?J2:t===12?Q2:null}));Y2={firstframe:46,lastframe:65,frames:iE,endfunc:Io};var aE=Array.from({length:6},()=>({ai:Cm,dist:0}));Z2={firstframe:66,lastframe:71,frames:aE,endfunc:Io};var sE=Array.from({length:10},()=>({ai:Cm,dist:0}));Fm={firstframe:84,lastframe:93,frames:sE,endfunc:eE};var Ii=.1;function oE(e,t,n){O(e,Ii,n)}function cE(e,t,n){z(e,t,Ii,n)}function lE(e,t,n){le(e,t,Ii,n)}function Um(e,t,n){ue(e,t,Ii,n)}function Bm(e,t,n){_(e,t)}var Co,Gm,Hm,uE,dE,mE,Vm;function hE(e){e.monsterinfo.current_move=Co}function fE(e){e.monsterinfo.current_move=Gm}function Ci(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hm:e.monsterinfo.current_move=Co}function _E(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function gE(e,t){if(!e.enemy||!cr(e,e.enemy))return;let n=Et(e,e.enemy);if(_E(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,r));pe(e.enemy,e,e,i,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function pE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,n));am(e,n,r,50,100,0,t)}function vE(e){e.monsterinfo.nextframe=Vm.lastframe,e.nextthink=-1}var yE=Array.from({length:30},()=>({ai:oE,dist:0}));Co={firstframe:0,lastframe:29,frames:yE,endfunc:hE};var wE=Array.from({length:40},()=>({ai:cE,dist:3}));Gm={firstframe:30,lastframe:69,frames:wE,endfunc:fE};var SE=Array.from({length:20},()=>({ai:lE,dist:12}));Hm={firstframe:70,lastframe:89,frames:SE,endfunc:Ci};var AE=Array.from({length:10},(e,t)=>({ai:Um,dist:0,think:t===5?gE:null}));uE={firstframe:90,lastframe:99,frames:AE,endfunc:Ci};var xE=Array.from({length:12},(e,t)=>({ai:Um,dist:0,think:t===6?pE:null}));dE={firstframe:100,lastframe:111,frames:xE,endfunc:Ci};var kE=Array.from({length:6},()=>({ai:Bm,dist:0}));mE={firstframe:112,lastframe:117,frames:kE,endfunc:Ci};var EE=Array.from({length:12},()=>({ai:Bm,dist:0}));Vm={firstframe:118,lastframe:129,frames:EE,endfunc:vE};var Pi=.1;function Wm(e,t,n){O(e,Pi,n)}function bE(e,t,n){z(e,t,Pi,n)}function Km(e,t,n){le(e,t,Pi,n)}function Di(e,t,n){ue(e,t,Pi,n)}function me(e,t,n){_(e,t)}var Po,$m,TE,Xm,ME,RE,zE,Do,Ym,LE,NE,OE,Zm,IE,jm;function CE(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function PE(e){e.monsterinfo.current_move=Po}function DE(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=$m)}function Vt(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Po:e.monsterinfo.current_move=Xm}function FE(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function UE(e,t){e.monsterinfo.current_move=Do}function BE(e,t){if(e.enemy&&e.enemy.health>0&&An(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Do;return}e.monsterinfo.current_move=Ym}function GE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=B(P(e.enemy.origin,n)),i=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Bt(e,n,r,i,a,300,500,0,t,5)}function qm(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Yd(t,e,n,r,i,a)}function HE(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&qm(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function VE(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function WE(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function KE(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),i=600,a=B({x:n.x,y:n.y,z:0}),s=yn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function $E(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function XE(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=jm)}var YE=Array.from({length:30},(e,t)=>({ai:Wm,dist:0,think:t===29?DE:null}));Po={firstframe:0,lastframe:29,frames:YE,endfunc:null};var ZE=Array.from({length:40},(e,t)=>({ai:Wm,dist:0,think:t===7?CE:null}));$m={firstframe:30,lastframe:69,frames:ZE,endfunc:PE};var jE=[0,3,4,5,7,2,6,4,2,7,5,7,4],qE=jE.map(e=>({ai:bE,dist:e}));TE={firstframe:76,lastframe:88,frames:qE,endfunc:null};var JE=[26,9,9,9,15,10,13,6],QE=JE.map((e,t)=>({ai:Km,dist:e,think:t%4===0?XE:null}));Xm={firstframe:94,lastframe:101,frames:QE,endfunc:null};var e5=[32,15,10,18,8,20],t5=e5.map(e=>({ai:Km,dist:e}));ME={firstframe:102,lastframe:107,frames:t5,endfunc:null};var n5=Array.from({length:21},(e,t)=>({ai:Di,dist:0,think:[4,7,10,13].includes(t)?qm:null}));zE={firstframe:108,lastframe:128,frames:n5,endfunc:Vt};var r5=Array.from({length:7},(e,t)=>({ai:Di,dist:0,think:t===0?FE:null}));RE={firstframe:137,lastframe:143,frames:r5,endfunc:UE};var i5=Array.from({length:8},()=>({ai:Di,dist:0,think:GE}));Do={firstframe:144,lastframe:151,frames:i5,endfunc:BE};var a5=Array.from({length:7},()=>({ai:Di,dist:0}));Ym={firstframe:152,lastframe:158,frames:a5,endfunc:Vt};var s5=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],o5=s5.map(e=>({ai:me,dist:e}));LE={firstframe:159,lastframe:176,frames:o5,endfunc:Vt};var c5=[-2,11,6,2,-1,-7,-2,-7],l5=c5.map(e=>({ai:me,dist:e}));NE={firstframe:177,lastframe:184,frames:l5,endfunc:Vt};var u5=[-3,1,1,0,1],d5=u5.map(e=>({ai:me,dist:e}));OE={firstframe:185,lastframe:189,frames:d5,endfunc:Vt};var m5=[0,0,0,-7,-3,-5,8,6,0,0,0],h5=m5.map(e=>({ai:me,dist:e}));function f5(e){e.monsterinfo.nextframe=Zm.lastframe,e.nextthink=-1,e.solid=0}Zm={firstframe:190,lastframe:200,frames:h5,endfunc:f5};var _5=[{ai:me,dist:1,think:HE},{ai:me,dist:1},{ai:me,dist:1,think:VE},{ai:me,dist:0},{ai:me,dist:-1},{ai:me,dist:-1},{ai:me,dist:0,think:WE},{ai:me,dist:-1}];IE={firstframe:201,lastframe:208,frames:_5,endfunc:Vt};var g5=[{ai:me,dist:0,think:KE},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0,think:$E},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0}];jm={firstframe:209,lastframe:216,frames:g5,endfunc:Vt};var Fi=.1;function p5(e,t,n){O(e,Fi,n)}function v5(e,t,n){z(e,t,Fi,n)}function y5(e,t,n){le(e,t,Fi,n)}function w5(e,t,n){ue(e,t,Fi,n)}function Jm(e,t,n){_(e,t)}var Fo,Qm,eh,S5,A5,th;function x5(e){e.monsterinfo.current_move=Fo}function k5(e){e.monsterinfo.current_move=Qm}function Uo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=eh:e.monsterinfo.current_move=Fo}function E5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));lt(e,n,r,5,1e3,0,0,t,1)}function b5(e){e.monsterinfo.nextframe=th.lastframe,e.nextthink=-1}var T5=Array.from({length:46},()=>({ai:p5,dist:0}));Fo={firstframe:0,lastframe:45,frames:T5,endfunc:x5};var M5=Array.from({length:46},()=>({ai:v5,dist:5}));Qm={firstframe:0,lastframe:45,frames:M5,endfunc:k5};var R5=Array.from({length:46},()=>({ai:y5,dist:10}));eh={firstframe:0,lastframe:45,frames:R5,endfunc:Uo};var z5=Array.from({length:20},(e,t)=>({ai:w5,dist:0,think:t===10?E5:null}));S5={firstframe:46,lastframe:65,frames:z5,endfunc:Uo};var L5=Array.from({length:6},()=>({ai:Jm,dist:0}));A5={firstframe:66,lastframe:71,frames:L5,endfunc:Uo};var N5=Array.from({length:10},()=>({ai:Jm,dist:0}));th={firstframe:84,lastframe:93,frames:N5,endfunc:b5};var Ui=.1;function O5(e,t,n){O(e,Ui,n)}function I5(e,t,n){z(e,t,Ui,n)}function C5(e,t,n){le(e,t,Ui,n)}function P5(e,t,n){ue(e,t,Ui,n)}function nh(e,t,n){_(e,t)}var Bo,rh,ih,D5,F5,ah;function U5(e){e.monsterinfo.current_move=Bo}function B5(e){e.monsterinfo.current_move=rh}function Go(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ih:e.monsterinfo.current_move=Bo}function G5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));lt(e,n,r,5,1e3,0,0,t,1)}function H5(e){e.monsterinfo.nextframe=ah.lastframe,e.nextthink=-1}var V5=Array.from({length:46},()=>({ai:O5,dist:0}));Bo={firstframe:0,lastframe:45,frames:V5,endfunc:U5};var W5=Array.from({length:46},()=>({ai:I5,dist:5}));rh={firstframe:0,lastframe:45,frames:W5,endfunc:B5};var K5=Array.from({length:46},()=>({ai:C5,dist:10}));ih={firstframe:0,lastframe:45,frames:K5,endfunc:Go};var $5=Array.from({length:20},(e,t)=>({ai:P5,dist:0,think:t===10?G5:null}));D5={firstframe:46,lastframe:65,frames:$5,endfunc:Go};var X5=Array.from({length:6},()=>({ai:nh,dist:0}));F5={firstframe:66,lastframe:71,frames:X5,endfunc:Go};var Y5=Array.from({length:10},()=>({ai:nh,dist:0}));ah={firstframe:84,lastframe:93,frames:Y5,endfunc:H5};var Bi=.1;function Z5(e,t,n){O(e,Bi,n)}function j5(e,t,n){z(e,t,Bi,n)}function q5(e,t,n){le(e,t,Bi,n)}function J5(e,t,n){ue(e,t,Bi,n)}function Ho(e,t,n){_(e,t)}var Vo,sh,oh,Q5,eb,ch,tb;function nb(e){e.monsterinfo.current_move=Vo}function rb(e){e.monsterinfo.current_move=sh}function Gi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=oh:e.monsterinfo.current_move=Vo}function ib(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},i=B(P(r,n));Bt(e,n,i,5,2,.05,.05,0,t,4)}var ab=Array.from({length:22},()=>({ai:Z5,dist:0}));Vo={firstframe:0,lastframe:21,frames:ab,endfunc:nb};var sb=Array.from({length:15},()=>({ai:j5,dist:4}));sh={firstframe:22,lastframe:36,frames:sb,endfunc:rb};var ob=Array.from({length:8},()=>({ai:q5,dist:12}));oh={firstframe:37,lastframe:44,frames:ob,endfunc:Gi};var cb=Array.from({length:15},(e,t)=>({ai:J5,dist:0,think:t>=5&&t<=7?ib:null}));Q5={firstframe:45,lastframe:59,frames:cb,endfunc:Gi};var lb=Array.from({length:10},()=>({ai:Ho,dist:0}));eb={firstframe:60,lastframe:69,frames:lb,endfunc:Gi};var ub=Array.from({length:20},()=>({ai:Ho,dist:0}));function db(e){e.monsterinfo.nextframe=ch.lastframe,e.nextthink=-1}ch={firstframe:70,lastframe:89,frames:ub,endfunc:db};var mb=Array.from({length:5},()=>({ai:Ho,dist:0}));tb={firstframe:90,lastframe:94,frames:mb,endfunc:Gi};var Hi=.1,hb={x:40,y:-20,z:20},fb={x:40,y:20,z:20},_b={x:30,y:0,z:40};function gb(e,t,n){O(e,Hi,n)}function pb(e,t,n){z(e,t,Hi,n)}function vb(e,t,n){le(e,t,Hi,n)}function Wo(e,t,n){ue(e,t,Hi,n)}function gr(e,t,n){_(e,t)}var Ko,lh,uh,$o,to,yb,wb,Sb,Ab,dh;function xb(e){e.monsterinfo.current_move=Ko}function kb(e){e.monsterinfo.current_move=lh}function En(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=uh:e.monsterinfo.current_move=Ko}function Eb(e,t){let n=(r,i,a,s,o,l)=>{let c=t.trace(r,i,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&An(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=$o:e.monsterinfo.current_move=to}function no(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=$(n,t.x),o=$(r,t.y),l=$(i,t.z);return K(K(K(a,s),o),l)}function bb(e,t){if(!e.enemy)return;let n=no(e,fb),r=B(P(e.enemy.origin,n));vi(e,n,r,6,4,.05,.05,0,t,4);let i=no(e,hb),a=B(P(e.enemy.origin,i));vi(e,i,a,6,4,.05,.05,0,t,4)}function Tb(e,t){if(!e.enemy)return;let n=no(e,_b),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=B(P(r,n));im(e,n,i,50,300,100,200,0,t)}function Mb(e){e.monsterinfo.nextframe=dh.lastframe,e.nextthink=-1}function Rb(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var zb=Array.from({length:51},()=>({ai:gb,dist:0}));Ko={firstframe:0,lastframe:50,frames:zb,endfunc:xb};var Lb=Array.from({length:14},()=>({ai:pb,dist:10}));lh={firstframe:51,lastframe:64,frames:Lb,endfunc:kb};var Nb=Array.from({length:14},()=>({ai:vb,dist:10}));uh={firstframe:51,lastframe:64,frames:Nb,endfunc:En};var Ob=Array.from({length:8},()=>({ai:Wo,dist:0})),Ib={firstframe:65,lastframe:72,frames:Ob,endfunc:null},Cb=Array.from({length:6},()=>({ai:Wo,dist:0,think:bb}));$o={firstframe:73,lastframe:78,frames:Cb,endfunc:Eb};Ib.endfunc=e=>{e.monsterinfo.current_move=$o};var Pb=Array.from({length:4},()=>({ai:gr,dist:0}));to={firstframe:79,lastframe:82,frames:Pb,endfunc:En};var Db=Array.from({length:13},(e,t)=>({ai:Wo,dist:0,think:t===6?Tb:null}));yb={firstframe:83,lastframe:95,frames:Db,endfunc:En};var Fb=Array.from({length:3},()=>({ai:gr,dist:0}));wb={firstframe:96,lastframe:98,frames:Fb,endfunc:En};var Ub=Array.from({length:3},()=>({ai:gr,dist:0}));Sb={firstframe:99,lastframe:101,frames:Ub,endfunc:En};var Bb=Array.from({length:25},()=>({ai:gr,dist:0}));Ab={firstframe:102,lastframe:126,frames:Bb,endfunc:En};var Gb=Array.from({length:50},(e,t)=>({ai:gr,dist:0,think:t===49?((n,r)=>{}):t===48?Rb:null}));dh={firstframe:127,lastframe:176,frames:Gb,endfunc:Mb};var Xo=.1,Vi=4,mh=8,Wi=16,Hb=32,Yo=64,Vb=0,Wb=39,Kb=40,$b=58,Xb=59,hh=64,Yb=93,Zb=95,Zo=99,fh=159,_h=160,gh=172,ph=173,vh=198,jb=199,qb=209,Jb=210,Qb=226,jo=227,qo=235,yh=236,yi=244,e6=245,t6=251,n6=252,r6=266,i6=267,a6=281,wh,Sh,Ah,xh,kh,pr,Eh,bh,Th,Mh,s6,o6,Rh,zh,c6,l6,Jo,Lh,u6="insane/insane11.wav",d6="insane/insane5.wav",m6="insane/insane7.wav",Cd=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function ro(e,t){t.sound(e,2,u6,1,1,0)}function h6(e,t){(e.spawnflags&Yo)===0&&t.sound(e,2,d6,1,1,0)}function Qo(e,t){e.spawnflags&Yo||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,m6,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Tt(e,t){if(!(e.spawnflags&Yo)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=Cd[Math.floor(Math.random()*Cd.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Oe(e,t){}function Nh(e,t){e.spawnflags&Hb||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=Ah:e.monsterinfo.current_move=kh)}function f6(e,t){e.spawnflags&Vi&&e.spawnflags&Wi||Math.random()<.5&&(e.monsterinfo.current_move=xh)}function ec(e,t){e.monsterinfo.current_move=pr}function Oh(e,t){Math.random()<.8?e.monsterinfo.current_move=Jo:e.monsterinfo.current_move=Lh}function tc(e,t){e.spawnflags&mh?(e.monsterinfo.current_move=Jo,e.monsterinfo.aiflags|=1):e.spawnflags&Vi&&e.spawnflags&Wi?e.monsterinfo.current_move=pr:Math.random()<.5?e.monsterinfo.current_move=wh:e.monsterinfo.current_move=Sh}function nc(e,t){if(e.spawnflags&Wi&&e.frame===yi){e.monsterinfo.current_move=pr;return}e.spawnflags&Vi?e.monsterinfo.current_move=Rh:Math.random()<=.5?e.monsterinfo.current_move=Eh:e.monsterinfo.current_move=Th}function vr(e,t){if(e.spawnflags&Wi&&e.frame===yi){e.monsterinfo.current_move=pr;return}let n=e.frame;e.spawnflags&Vi||n>=yh&&n<=yi||n>=jo&&n<=qo||n>=Zo&&n<=fh?e.monsterinfo.current_move=zh:Math.random()<=.5?e.monsterinfo.current_move=bh:e.monsterinfo.current_move=Mh}function Ih(e,t){e.spawnflags&mh?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function d(e,t=0,n){return{ai:(r,i,a)=>{n&&n(r,a),e(r,t,Xo,a)},dist:t}}var _6=[d(O),d(O),d(O),d(O),d(O),d(O,0,Nh)];wh={firstframe:Xb,lastframe:hh,frames:_6,endfunc:tc};var g6=[d(O,0,h6),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O),d(O,0,Nh)];Sh={firstframe:hh,lastframe:Yb,frames:g6,endfunc:tc};var p6=[d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_,0,Qo),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_,2.7),d(_,4.1),d(_,6),d(_,7.6),d(_,3.6),d(_),d(_),d(_,0,ro),d(_),d(_),d(_),d(_),d(_),d(_,0,ro),d(_),d(_),d(_),d(_),d(_),d(_)];Ah={firstframe:Vb,lastframe:Wb,frames:p6,endfunc:ec};var v6=[d(_,-.7),d(_,-1.2),d(_,-1.5),d(_,-4.5),d(_,-3.5),d(_,-.2),d(_),d(_,-1.3),d(_,-3),d(_,-2),d(_),d(_),d(_),d(_,-3.3),d(_,-1.6),d(_,-.3),d(_),d(_),d(_)];xh={firstframe:Kb,lastframe:$b,frames:v6,endfunc:tc};var y6=[d(_,.2),d(_,11.5),d(_,5.1),d(_,7.1),d(_)];kh={firstframe:Zb,lastframe:Zo,frames:y6,endfunc:ec};var w6=[d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_,-1.7),d(_,-1.6),d(_),d(_),d(_),d(_,0,ro),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_,0,Qo),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_,.5),d(_),d(_,-.2,Tt),d(_),d(_,.2),d(_,.4),d(_,.6),d(_,.8),d(_,.7),d(_,0,f6)];pr={firstframe:Zo,lastframe:fh,frames:w6,endfunc:ec};var io=[d(z,0,Tt),d(z,2.5),d(z,3.5),d(z,1.7),d(z,2.3),d(z,2.4),d(z,2.2,Oe),d(z,4.2),d(z,5.6),d(z,3.3),d(z,2.4),d(z,.9),d(z,0,Oe)];Eh={firstframe:_h,lastframe:gh,frames:io,endfunc:nc};bh={firstframe:_h,lastframe:gh,frames:io.map(e=>({ai:(t,n,r)=>{e.ai===io[0].ai&&Tt(t,r),le(t,n,Xo,r)},dist:e.dist})),endfunc:vr};var ao=[d(z,0,Tt),d(z,3.4),d(z,3.6),d(z,2.9),d(z,2.2),d(z,2.6,Oe),d(z),d(z,.7),d(z,4.8),d(z,5.3),d(z,1.1),d(z,2,Oe),d(z,.5),d(z),d(z),d(z,4.9),d(z,6.7),d(z,3.8),d(z,2,Oe),d(z,.2),d(z),d(z,3.4),d(z,6.4),d(z,5),d(z,1.8,Oe),d(z)];Th={firstframe:ph,lastframe:vh,frames:ao,endfunc:nc};Mh={firstframe:ph,lastframe:vh,frames:ao.map(e=>({ai:(t,n,r)=>{e.ai===ao[0].ai&&Tt(t,r),le(t,n,Xo,r)},dist:e.dist})),endfunc:vr};var S6=[d(_),d(_),d(_),d(_),d(_,0,Oe),d(_),d(_),d(_),d(_),d(_),d(_,0,Oe)];s6={firstframe:jb,lastframe:qb,frames:S6,endfunc:vr};var A6=[d(_),d(_),d(_),d(_),d(_,0,Oe),d(_),d(_),d(_),d(_),d(_),d(_,0,Oe),d(_),d(_,0,Oe),d(_),d(_),d(_),d(_)];o6={firstframe:Jb,lastframe:Qb,frames:A6,endfunc:Ih};var Ch=[d(z,0,Tt),d(z,1.5),d(z,2.1),d(z,3.6),d(z,2,Oe),d(z,.9),d(z,3),d(z,3.4),d(z,2.4,Oe)];Rh={firstframe:jo,lastframe:qo,frames:Ch,endfunc:nc};zh={firstframe:jo,lastframe:qo,frames:Ch,endfunc:vr};var x6=[d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_)];c6={firstframe:yh,lastframe:yi,frames:x6,endfunc:vr};var k6=[d(_),d(_),d(_),d(_),d(_,0,Tt),d(_),d(_)];l6={firstframe:e6,lastframe:t6,frames:k6,endfunc:Ih};var E6=[d(_,0,Qo),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_)];Jo={firstframe:n6,lastframe:r6,frames:E6,endfunc:Oh};var b6=[d(_,0,Tt),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_),d(_)];Lh={firstframe:i6,lastframe:a6,frames:b6,endfunc:Oh};var Ki=.1,T6={x:30,y:28,z:24},M6={x:26,y:16,z:24},R6={x:26,y:-14,z:24};function z6(e,t,n){O(e,Ki,n)}function L6(e,t,n){z(e,t,Ki,n)}function N6(e,t,n){le(e,t,Ki,n)}function Ph(e,t,n){ue(e,t,Ki,n)}function bn(e,t,n){_(e,t)}var rc,Dh,Fh,O6,Uh,I6,C6,P6,D6,Bh,F6;function U6(e){e.monsterinfo.current_move=rc}function B6(e){e.monsterinfo.current_move=Dh}function Mt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fh:e.monsterinfo.current_move=rc}function ic(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=$(n,t.x),o=$(r,t.y),l=$(i,t.z);return K(K(K(a,s),o),l)}function G6(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=ic(e,T6),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=B(P(r,n));im(e,n,i,50,300,100,300,0,t)}function H6(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=ic(e,R6),r=B(P(e.pos1,n));am(e,n,r,50,100,0,t)}function V6(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function W6(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=ic(e,M6),r=(e.monsterinfo.nextframe||0)-Uh.firstframe,i=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...yn(o)};r<=12?c.y-=5*(r-4):c.y-=40-5*(r-12),a=te(c).forward}else{let{forward:s}=te(e.angles);a=s}lt(e,n,a,15,1e3,0,0,t,1)}function K6(e){e.monsterinfo.nextframe=Bh.lastframe,e.nextthink=-1}var $6=Array.from({length:60},()=>({ai:z6,dist:0}));rc={firstframe:0,lastframe:59,frames:$6,endfunc:U6};var X6=Array.from({length:10},()=>({ai:L6,dist:8}));Dh={firstframe:60,lastframe:69,frames:X6,endfunc:B6};var Y6=Array.from({length:10},()=>({ai:N6,dist:8}));Fh={firstframe:60,lastframe:69,frames:Y6,endfunc:Mt};var Z6=Array.from({length:8},(e,t)=>({ai:Ph,dist:0,think:t===3?G6:null}));O6={firstframe:70,lastframe:77,frames:Z6,endfunc:Mt};var j6=Array.from({length:26},(e,t)=>({ai:bn,dist:0,think:t>=4&&t<=20?W6:null}));Uh={firstframe:78,lastframe:103,frames:j6,endfunc:Mt};var q6=Array.from({length:16},(e,t)=>({ai:Ph,dist:0,think:t===7?V6:t===8?H6:null}));I6={firstframe:104,lastframe:119,frames:q6,endfunc:Mt};var J6=Array.from({length:4},()=>({ai:bn,dist:0}));C6={firstframe:120,lastframe:123,frames:J6,endfunc:Mt};var Q6=Array.from({length:4},()=>({ai:bn,dist:0}));P6={firstframe:124,lastframe:127,frames:Q6,endfunc:Mt};var e3=Array.from({length:27},()=>({ai:bn,dist:0}));D6={firstframe:128,lastframe:154,frames:e3,endfunc:Mt};var t3=Array.from({length:95},()=>({ai:bn,dist:0}));Bh={firstframe:155,lastframe:249,frames:t3,endfunc:K6};var n3=Array.from({length:13},()=>({ai:bn,dist:0}));F6={firstframe:250,lastframe:262,frames:n3,endfunc:Mt};var ur=.1;function r3(e,t,n){if(e.classname==="monster_medic"&&Wh(e,n)){e.monsterinfo.current_move=yr;return}O(e,ur,n)}function i3(e,t,n){z(e,t,ur,n)}function a3(e,t,n){e.classname==="monster_medic"&&Wh(e,n)?e.monsterinfo.current_move=yr:le(e,t,ur,n)}function tt(e,t,n){ue(e,t,ur,n)}function ac(e,t,n){_(e,t)}var sc,Gh,yr,s3,Hh,o3,c3,Vh;function l3(e){e.monsterinfo.current_move=sc}function u3(e){e.monsterinfo.current_move=Gh}function wr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&Et(e,e.enemy)<80){e.monsterinfo.current_move=Hh;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=yr:e.monsterinfo.current_move=sc}function d3(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));lt(e,n,r,2,1e3,0,0,t,10)}function St(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(Et(e,e.enemy)>400){e.monsterinfo.current_move=yr;return}let r=te(e.angles),i=r.forward,a=r.right,s=r.up,o={x:24,y:0,z:6},l=K(e.origin,K($(i,o.x),K($(a,o.y),$(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,xe.temp_entity,{te:ke.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function m3(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),St(e,t)}function h3(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,r=t.getSpawnFunction(n.classname);if(Et(e,n)>400){e.enemy=null;return}if(!r)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let i={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};r(n,i),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function Wh(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,r=1024,i=(a,s,o,l,c,u)=>{let h=t.trace(a,s,o,l,c,u);return{fraction:h.fraction,ent:h.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!An(e,a,i))return;let s=Et(e,a);s<r&&(r=s,n=a)}),n?(e.enemy=n,!0):!1}function f3(e,t){let n=Math.random(),r="monster_soldier_light";n>.8?r="monster_soldier_ssg":n>.5&&(r="monster_soldier");let i=t.getSpawnFunction(r);if(i){let a=te(e.angles),s=$(a.forward,64),o=K(e.origin,s),l={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},l,e,Re|Gt|ki);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},i(u,{entities:t,keyValues:{classname:r},warn:()=>{},free:m=>t.free(m)}),u.enemy=e.enemy,t.multicast(l,1,xe.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function _3(e){e.monsterinfo.nextframe=Vh.lastframe,e.nextthink=-1}var g3=Array.from({length:30},()=>({ai:r3,dist:0}));sc={firstframe:0,lastframe:29,frames:g3,endfunc:l3};var p3=Array.from({length:40},()=>({ai:i3,dist:3}));Gh={firstframe:30,lastframe:69,frames:p3,endfunc:u3};var v3=Array.from({length:20},()=>({ai:a3,dist:12}));yr={firstframe:70,lastframe:89,frames:v3,endfunc:wr};var y3=Array.from({length:16},(e,t)=>({ai:tt,dist:0,think:t>=4&&t<=13?d3:null}));s3={firstframe:90,lastframe:105,frames:y3,endfunc:wr};var w3=[{ai:tt,dist:0,think:m3},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:St},{ai:tt,dist:0,think:h3}];Hh={firstframe:106,lastframe:114,frames:w3,endfunc:wr};var S3=Array.from({length:6},()=>({ai:ac,dist:0}));c3={firstframe:116,lastframe:121,frames:S3,endfunc:wr};var A3=Array.from({length:23},(e,t)=>({ai:ac,dist:0,think:t===11?f3:null}));o3={firstframe:122,lastframe:144,frames:A3,endfunc:wr};var x3=Array.from({length:30},()=>({ai:ac,dist:0}));Vh={firstframe:161,lastframe:190,frames:x3,endfunc:_3};var Sr=.1;function C(e,t,n){O(e,Sr,n)}function Ne(e,t,n){z(e,t,Sr,n)}function mn(e,t,n){le(e,t,Sr,n)}function wt(e,t,n){ue(e,t,Sr,n)}function J(e,t,n){_(e,t)}function Xs(e,t,n){yA(e,null,t,Sr)}var Kh,$h,wi,k3,E3,b3,T3,Xh,Yh;function M3(e){e.monsterinfo.current_move=$h}function R3(e){e.monsterinfo.current_move=Kh}function Tn(e){e.monsterinfo.current_move=wi}function Zh(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=P(e.enemy.origin,e.origin);if(vn(r)>100)return;let a=B(r);pe(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function z3(e,t){Zh(e,30,t)}function Pd(e,t){Zh(e,30,t)}function _n(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=wi),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=wi)}function L3(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),pe(t,e,e,B(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function N3(e,t){let n=te(e.angles).forward;e.movetype=7,e.touch=L3,e.velocity=K($(n,300),{x:0,y:0,z:300}),e.velocity=K($(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function O3(e){e.monsterinfo.nextframe=Xh.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var I3=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];Kh={firstframe:0,lastframe:50,frames:I3,endfunc:R3};var C3=[{ai:Ne,dist:3},{ai:Ne,dist:1},{ai:Ne,dist:5},{ai:Ne,dist:10},{ai:Ne,dist:13},{ai:Ne,dist:12},{ai:Ne,dist:0},{ai:Ne,dist:0},{ai:Ne,dist:5},{ai:Ne,dist:6},{ai:Ne,dist:16},{ai:Ne,dist:15},{ai:Ne,dist:6}];$h={firstframe:51,lastframe:63,frames:C3,endfunc:M3};var P3=[{ai:mn,dist:20},{ai:mn,dist:15},{ai:mn,dist:35},{ai:mn,dist:20},{ai:mn,dist:10},{ai:mn,dist:20}];wi={firstframe:64,lastframe:69,frames:P3,endfunc:Tn};var D3=[{ai:wt,dist:0},{ai:wt,dist:0},{ai:wt,dist:0,think:Pd},{ai:wt,dist:0},{ai:wt,dist:0,think:z3},{ai:wt,dist:0},{ai:wt,dist:0,think:Pd},{ai:wt,dist:0}];k3={firstframe:70,lastframe:77,frames:D3,endfunc:Tn};var F3=[{ai:Xs,dist:0},{ai:Xs,dist:0},{ai:Xs,dist:0,think:N3},{ai:J,dist:0,think:_n},{ai:J,dist:0,think:_n},{ai:J,dist:0,think:_n},{ai:J,dist:0,think:_n},{ai:J,dist:0,think:_n}];Yh={firstframe:93,lastframe:100,frames:F3,endfunc:Tn};Yh.frames[3].ai=(e,t,n)=>{_n(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var U3=[{ai:J,dist:4},{ai:J,dist:-3},{ai:J,dist:-8},{ai:J,dist:2},{ai:J,dist:5}];E3={firstframe:78,lastframe:82,frames:U3,endfunc:Tn};var B3=[{ai:J,dist:-24},{ai:J,dist:11},{ai:J,dist:5},{ai:J,dist:-2}];b3={firstframe:83,lastframe:86,frames:B3,endfunc:Tn};var G3=[{ai:J,dist:11},{ai:J,dist:0},{ai:J,dist:-2},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];T3={firstframe:87,lastframe:92,frames:G3,endfunc:Tn};var H3=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];Xh={firstframe:101,lastframe:109,frames:H3,endfunc:O3};var $i=.1,V3=()=>Math.random();function Y(e,t,n){O(e,$i,n)}function st(e,t,n){z(e,t,$i,n)}function ot(e,t,n){le(e,t,$i,n)}function we(e,t,n){ue(e,t,$i,n)}function Se(e,t,n){_(e,t)}var oc,jh,qh,W3,K3,Jh,Qh,$3,X3,cc,ef;function Y3(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Z3(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function hn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function so(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function j3(e){e.monsterinfo.current_move=cc}function q3(e){V3()<=.8?e.monsterinfo.current_move=cc:e.monsterinfo.current_move=ef}function tf(e){e.monsterinfo.current_move=oc}function lc(e){e.monsterinfo.current_move=jh}function nf(e){e.monsterinfo.current_move=Qh}function rf(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=oc:e.monsterinfo.current_move=qh}function Ys(e,t){let n=P(t,e);if(vn(n)>256)return!1;let a=yn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Ve(e,t){if(!e.enemy)return;let n=te(e.angles),r=n.forward,i=n.right,a=n.up,s={x:24,y:0,z:6},o=K(e.origin,K($(r,s.x),K($(i,s.y),$(a,s.z)))),l=Qw(e.enemy.origin);if(!Ys(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Ys(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!Ys(o,l)))||t.trace(o,l,W,W,e,At).ent!==e.enemy)return;let u=2,h=e.frame;h===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(h===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,xe.temp_entity,{te:ke.PARASITE_ATTACK,entId:e.index,start:o,end:l});let m=B(P(o,l));pe(e.enemy,e,e,m,e.enemy.origin,W,u,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=u,e.health>e.max_health&&(e.health=e.max_health))}function J3(e){e.monsterinfo.nextframe=Jh.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Q3=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:hn},{ai:Y,dist:0},{ai:Y,dist:0,think:hn},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:hn},{ai:Y,dist:0},{ai:Y,dist:0,think:hn},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:hn},{ai:Y,dist:0},{ai:Y,dist:0,think:hn}];oc={firstframe:83,lastframe:99,frames:Q3,endfunc:tf};var eT=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0}];X3={firstframe:100,lastframe:103,frames:eT,endfunc:j3};var tT=[{ai:Y,dist:0,think:so},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:so},{ai:Y,dist:0},{ai:Y,dist:0}];cc={firstframe:104,lastframe:109,frames:tT,endfunc:q3};var nT=[{ai:Y,dist:0,think:so},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0}];ef={firstframe:110,lastframe:117,frames:nT,endfunc:tf};var rT=[{ai:ot,dist:0},{ai:ot,dist:30}];Qh={firstframe:68,lastframe:69,frames:rT,endfunc:rf};var iT=[{ai:ot,dist:30},{ai:ot,dist:30},{ai:ot,dist:22},{ai:ot,dist:19},{ai:ot,dist:24},{ai:ot,dist:28},{ai:ot,dist:25}];qh={firstframe:70,lastframe:76,frames:iT,endfunc:rf};var aT=[{ai:st,dist:0},{ai:st,dist:30,think:lc}];$3={firstframe:68,lastframe:69,frames:aT,endfunc:lc};var sT=[{ai:st,dist:30},{ai:st,dist:30},{ai:st,dist:22},{ai:st,dist:19},{ai:st,dist:24},{ai:st,dist:28},{ai:st,dist:25}];jh={firstframe:70,lastframe:76,frames:sT,endfunc:lc};var oT=[{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:6},{ai:Se,dist:16},{ai:Se,dist:-6},{ai:Se,dist:-7},{ai:Se,dist:0}];K3={firstframe:57,lastframe:67,frames:oT,endfunc:nf};var cT=[{ai:we,dist:0,think:Y3},{ai:we,dist:0},{ai:we,dist:15,think:Ve},{ai:we,dist:0,think:Ve},{ai:we,dist:0,think:Ve},{ai:we,dist:0,think:Ve},{ai:we,dist:0,think:Ve},{ai:we,dist:-2,think:Ve},{ai:we,dist:-2,think:Ve},{ai:we,dist:-3,think:Ve},{ai:we,dist:-2,think:Ve},{ai:we,dist:0,think:Ve},{ai:we,dist:-1,think:Ve},{ai:we,dist:0,think:Z3},{ai:we,dist:-2},{ai:we,dist:-2},{ai:we,dist:-3},{ai:we,dist:0}];W3={firstframe:39,lastframe:56,frames:cT,endfunc:nf};var lT=[{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];Jh={firstframe:32,lastframe:38,frames:lT,endfunc:J3};var Xi=.1;var uT=2,dT=4;function mT(e,t,n){O(e,Xi,n)}function hT(e,t,n){z(e,t,Xi,n)}function fT(e,t,n){le(e,t,Xi,n)}function af(e,t,n){ue(e,t,Xi,n)}function sf(e,t,n){_(e,t)}var uc,of,cf,_T,gT,pT,lf;function vT(e){e.monsterinfo.current_move=uc}function yT(e){e.monsterinfo.current_move=of}function Yi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=cf:e.monsterinfo.current_move=uc}function Ar(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function xr(e,t){if(!e.enemy){let{forward:r}=te(e.angles);return r}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return B(P(n,t))}function wT(e,t){if(!e.enemy)return;let n=Ar(e),r=xr(e,n);lt(e,n,r,5,600,0,0,t,1)}function ST(e,t){if(!e.enemy)return;let n=Ar(e),r=xr(e,n),i=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),ux(e,n,r,i,a,o,l,s,0,t,3)}function AT(e,t){if(!e.enemy)return;let n=Ar(e),r=xr(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Bt(e,n,r,i,a,s,o,0,t,4)}function xT(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:r,right:i,up:a}=te(n.angles),s={...n.origin};s=K(s,$(r,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=B(P(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function kT(e,t){if(!e.enemy)return;let n=Ar(e),r=xr(e,n);mx(e,n,r,5,600,0,0,t)}function ET(e,t){if(!e.enemy)return;let n=Ar(e),r=xr(e,n),i=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),dx(e,n,r,i,a,0,0,t)}function bT(e,t){e.enemy&&Js(e,1,!1,xT,t)}function TT(e,t){e.count<2?kT(e,t):e.count<4?ET(e,t):bT(e,t)}function uf(e,t){if(e.style===1){TT(e,t);return}e.spawnflags&uT?ST(e,t):e.spawnflags&dT?AT(e,t):wT(e,t)}var MT=Array.from({length:30},()=>({ai:mT,dist:0}));uc={firstframe:0,lastframe:29,frames:MT,endfunc:vT};var RT=Array.from({length:40},()=>({ai:hT,dist:2}));of={firstframe:30,lastframe:69,frames:RT,endfunc:yT};var zT=Array.from({length:20},()=>({ai:fT,dist:10}));cf={firstframe:70,lastframe:89,frames:zT,endfunc:Yi};var LT=Array.from({length:10},(e,t)=>({ai:af,dist:0,think:t===5?uf:null}));_T={firstframe:90,lastframe:99,frames:LT,endfunc:Yi};var NT=Array.from({length:10},(e,t)=>({ai:af,dist:0,think:t>=4&&t<=8?uf:null}));gT={firstframe:90,lastframe:99,frames:NT,endfunc:Yi};var OT=Array.from({length:6},()=>({ai:sf,dist:0}));pT={firstframe:100,lastframe:105,frames:OT,endfunc:Yi};var IT=Array.from({length:10},()=>({ai:sf,dist:0}));function CT(e){e.monsterinfo.nextframe=lf.lastframe,e.nextthink=-1}lf={firstframe:106,lastframe:115,frames:IT,endfunc:CT};var df=.1,PT={x:30,y:30,z:40},DT={x:30,y:-30,z:40},FT={x:20,y:0,z:70};function UT(e,t,n){O(e,df,n)}function BT(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mc:e.monsterinfo.current_move=Zi}function dc(e,t,n){ue(e,t,df,n)}function kr(e,t,n){_(e,t)}var Zi,mc,GT,HT,mf,hf,VT,WT,KT,ff;function $T(e){e.monsterinfo.current_move=Zi}function Wt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mc:e.monsterinfo.current_move=Zi}function hc(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=$(n,t.x),o=$(r,t.y),l=$(i,t.z);return K(K(K(a,s),o),l)}function XT(e,t){if(!e.enemy)return;let n=hc(e,DT),r=B(P(e.enemy.origin,n));hr(e,n,r,50,650,0,t)}function YT(e,t){if(!e.enemy)return;let n=hc(e,FT),r=B(P(e.enemy.origin,n));hx(e,n,r,50,600,0,t)}function ZT(e,t){if(!e.enemy)return;let n=hc(e,PT),r=B(P(e.enemy.origin,n));vi(e,n,r,6,4,.05,.05,0,t,4)}function jT(e,t){let n=(r,i,a,s,o,l)=>{let c=t.trace(r,i,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&An(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=mf:e.monsterinfo.current_move=hf}function qT(e){e.monsterinfo.nextframe=ff.lastframe,e.nextthink=-1}var JT=Array.from({length:60},()=>({ai:UT,dist:0}));Zi={firstframe:0,lastframe:59,frames:JT,endfunc:$T};var QT=Array.from({length:18},()=>({ai:BT,dist:12}));mc={firstframe:60,lastframe:77,frames:QT,endfunc:Wt};var eM=Array.from({length:4},()=>({ai:kr,dist:0}));KT={firstframe:78,lastframe:81,frames:eM,endfunc:Wt};var tM=Array.from({length:4},()=>({ai:kr,dist:0}));WT={firstframe:82,lastframe:85,frames:tM,endfunc:Wt};var nM=Array.from({length:4},()=>({ai:kr,dist:0}));VT={firstframe:86,lastframe:89,frames:nM,endfunc:Wt};var rM=Array.from({length:24},()=>({ai:kr,dist:0}));ff={firstframe:90,lastframe:113,frames:rM,endfunc:qT};var iM=Array.from({length:6},(e,t)=>({ai:dc,dist:0,think:t===0||t===3?YT:null}));HT={firstframe:114,lastframe:119,frames:iM,endfunc:Wt};var aM=Array.from({length:27},(e,t)=>({ai:dc,dist:0,think:t===7||t===10||t===13?XT:null}));GT={firstframe:120,lastframe:146,frames:aM,endfunc:Wt};var sM=Array.from({length:6},()=>({ai:dc,dist:0,think:ZT}));mf={firstframe:147,lastframe:152,frames:sM,endfunc:jT};var oM=Array.from({length:14},()=>({ai:kr,dist:0}));hf={firstframe:153,lastframe:166,frames:oM,endfunc:Wt};var fc=.1;function _f(e,t,n,r,i){let a=i.trace(t,n,W,W,e,At);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return B(P(n,t));let s=K(n,$(r,-20)),o=i.trace(t,s,W,W,e,At);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return B(P(s,t));let l=K(n,$(r,20)),c=i.trace(t,l,W,W,e,At);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?B(P(l,t)):null}function gf(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Ai(n)}}function cM(e,t,n){O(e,fc,n)}function lM(e,t,n){z(e,t,fc,n)}function uM(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gc:e.monsterinfo.current_move=ji}function _c(e,t,n){ue(e,t,fc,n)}function pf(e,t,n){_(e,t)}var ji,vf,gc,dM,mM,hM,fM,yf;function _M(e){e.monsterinfo.current_move=ji}function gM(e){e.monsterinfo.current_move=vf}function Er(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gc:e.monsterinfo.current_move=ji}function pM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=te(o),c=e.monsterinfo.blind_fire_target,u=_f(e,n,c,l,t);if(!u)return;r=u}else r=B(P(e.enemy.origin,n));lt(e,n,r,30,1e3,0,0,t,1)}function vM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,n));Bt(e,n,r,20,2,.05,.05,0,t,4)}function yM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=te(o),c=e.monsterinfo.blind_fire_target,u=_f(e,n,c,l,t);if(!u)return;r=u}else r=B(P(e.enemy.origin,n));hr(e,n,r,50,650,0,t)}function wM(e){e.monsterinfo.nextframe=yf.lastframe,e.nextthink=-1}function SM(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Er(e)}var AM=Array.from({length:30},()=>({ai:cM,dist:0}));ji={firstframe:0,lastframe:29,frames:AM,endfunc:_M};var xM=Array.from({length:16},()=>({ai:lM,dist:5}));vf={firstframe:30,lastframe:45,frames:xM,endfunc:gM};var kM=Array.from({length:16},()=>({ai:uM,dist:10}));gc={firstframe:46,lastframe:61,frames:kM,endfunc:Er};var EM=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=gf:t>5&&t<12&&(n=pM),{ai:_c,dist:0,think:n}});dM={firstframe:62,lastframe:77,frames:EM,endfunc:Er};var bM=Array.from({length:20},(e,t)=>({ai:_c,dist:0,think:t%2===0&&t>5?vM:null}));mM={firstframe:78,lastframe:97,frames:bM,endfunc:Er};var TM=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=gf:(t===8||t===12||t===16)&&(n=yM),{ai:_c,dist:0,think:n}});hM={firstframe:98,lastframe:115,frames:TM,endfunc:SM};var MM=Array.from({length:6},()=>({ai:pf,dist:0}));fM={firstframe:116,lastframe:121,frames:MM,endfunc:Er};var RM=Array.from({length:16},()=>({ai:pf,dist:0}));yf={firstframe:122,lastframe:137,frames:RM,endfunc:wM};var pc=.1;function zM(e,t,n){O(e,pc,n)}function vc(e,t,n){le(e,t,pc,n)}function LM(e,t,n){ue(e,t,pc,n)}var yc,wf,NM,OM,Sf;function IM(e){e.monsterinfo.current_move=yc}function wc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wf:e.monsterinfo.current_move=yc}function CM(e,t){if(!e.enemy)return;let n=te(e.angles).forward,r={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,r));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),lt(e,r,i,2,1e3,1,0,t)}var PM=Array.from({length:1},()=>({ai:zM,dist:0}));yc={firstframe:0,lastframe:0,frames:PM,endfunc:IM};var DM=Array.from({length:1},()=>({ai:vc,dist:0}));wf={firstframe:0,lastframe:0,frames:DM,endfunc:wc};var FM=Array.from({length:8},(e,t)=>({ai:LM,dist:0,think:t===4?CM:void 0}));NM={firstframe:1,lastframe:8,frames:FM,endfunc:wc};var UM=Array.from({length:2},()=>({ai:vc,dist:0}));OM={firstframe:9,lastframe:10,frames:UM,endfunc:wc};var BM=Array.from({length:4},()=>({ai:vc,dist:0}));function GM(e){e.monsterinfo.nextframe=Sf.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}Sf={firstframe:11,lastframe:14,frames:BM,endfunc:GM};var R4=new Map(fo.map(e=>[e.name,e]));var HM=2166136261,VM=16777619;function Af(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,VM)>>>0;return n>>>0}function gn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let i=new Uint8Array(n);return Af(e,i)}function oo(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return Af(e,n)}var Zs=2,WM=1;function Ie(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function se(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function mi(e,t,n){return e===void 0?n:se(e,t)}function Si(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function fi(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)se(n,`${t} element`);return e}function KM(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ie(e,"level");return{frameNumber:mi(t.frameNumber,"level.frameNumber",0),timeSeconds:mi(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:mi(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:mi(t.deltaSeconds,"level.deltaSeconds",0)}}function $M(e){if(e===void 0)return new Gd().getState();let t=Ie(e,"rng"),n=Ie(t.mt,"rng.mt"),r=fi(n.state,"rng.mt.state");return{mt:{index:se(n.index,"rng.mt.index"),state:r}}}function XM(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let r=Ie(t,`thinks[${n}]`);return{time:se(r.time,`thinks[${n}].time`),entityIndex:se(r.entityIndex,`thinks[${n}].entityIndex`)}})}function YM(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Ie(e,"awareness"),n=(r,i)=>r===null?null:se(r,i);return{frameNumber:se(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:se(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:se(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:se(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function ZM(e){if(e===void 0)return{};let t=Ie(e,"entity.fields"),n={};for(let[r,i]of Object.entries(t)){if(i===null){n[r]=null;continue}switch(typeof i){case"number":case"string":case"boolean":n[r]=i;break;default:{if(!Array.isArray(i)){let a=Ie(i,r),s={};for(let[o,l]of Object.entries(a))s[o]=se(l,`${r}.${o}`);n[r]=s;break}if(Array.isArray(i)&&i.length===3){let[a,s,o]=i;n[r]=[se(a,`${r}[0]`),se(s,`${r}[1]`),se(o,`${r}[2]`)];break}throw new Error(`Unsupported entity field value for ${r}`)}}}return n}function jM(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let r=Ie(t,`entities[${n}]`);return{index:se(r.index,`entities[${n}].index`),fields:ZM(r.fields)}})}function qM(e){let t=Ie(e,"pool");return{capacity:se(t.capacity,"pool.capacity"),activeOrder:fi(t.activeOrder,"pool.activeOrder"),freeList:fi(t.freeList,"pool.freeList"),pendingFree:fi(t.pendingFree,"pool.pendingFree")}}function JM(e){let t=Ie(e,"entities");return{timeSeconds:se(t.timeSeconds,"entities.timeSeconds"),pool:qM(t.pool),entities:jM(t.entities),thinks:XM(t.thinks),awareness:YM(t.awareness)}}function QM(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let r=Ie(t,`cvars[${n}]`);return{name:Si(r.name,`cvars[${n}].name`),value:Si(r.value,`cvars[${n}].value`),flags:se(r.flags,`cvars[${n}].flags`)}})}function e8(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Si(t,`configstrings[${n}]`))}function t8(e){return e===void 0?{}:Ie(e,"gameState")}function ct(e,t){if(t==null)return e;if(typeof t=="number")return gn(e,t);if(typeof t=="string")return oo(e,t);if(typeof t=="boolean")return gn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let r of t)n=ct(n,r);return n}if(typeof t=="object"){let n=e,r=Object.keys(t).sort();for(let i of r)n=oo(n,i),n=ct(n,t[i]);return n}return e}function n8(e){let t=HM;return t=gn(t,e.version),t=gn(t,e.timestamp),t=oo(t,e.map),t=gn(t,e.difficulty),t=gn(t,e.playtimeSeconds),t=ct(t,e.gameState),t=ct(t,e.level),t=ct(t,e.rng),t=ct(t,e.entities),t=ct(t,e.cvars),t=ct(t,e.configstrings),e.player&&(t=ct(t,e.player)),t>>>0}function xf(e,t={}){let{allowNewerVersion:n=!0}=t,r=typeof e=="string"?JSON.parse(e):e,i=Ie(r,"save"),a=i.version??Zs,s=se(a,"version");if(s<WM)throw new Error(`Unsupported save version ${s}`);if(s>Zs&&!n)throw new Error(`Save version ${s} is newer than supported ${Zs}`);let o={version:s,timestamp:se(i.timestamp,"timestamp"),map:Si(i.map,"map"),difficulty:se(i.difficulty,"difficulty"),playtimeSeconds:se(i.playtimeSeconds,"playtimeSeconds"),gameState:t8(i.gameState),level:KM(i.level),rng:$M(i.rng),entities:JM(i.entities),cvars:QM(i.cvars),configstrings:e8(i.configstrings),player:i.player?i.player:void 0,checksum:i.checksum!==void 0?se(i.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=n8(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}var z4=new Set(fo.filter(e=>e.save).map(e=>e.name));var Dd=globalThis.TextEncoder;function pn(e){return xf({...e},{allowNewerVersion:!0})}function r8(e){return Dd?new Dd().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var i8=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:pn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:pn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:pn(e.save)}))}},a8=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((r,i)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>r(o.result),o.onerror=()=>i(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:pn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:pn(t.save)}))}},Sc=class ar{constructor(t={}){let{dbName:n=ar.DEFAULT_DB_NAME,storeName:r=ar.DEFAULT_STORE}=t,i=t.indexedDB??globalThis.indexedDB;i?this.adapter=new a8(i,n,r):this.adapter=new i8}async save(t,n,r={}){let i=pn(n),a={id:t,name:r.name??t,map:i.map,difficulty:i.difficulty,playtimeSeconds:i.playtimeSeconds,timestamp:i.timestamp,version:i.version,bytes:r8(i)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:i}),a}async load(t,n={}){await this.adapter.init();let r=await this.adapter.get(t);if(!r)throw new Error(`Save slot ${t} not found`);return xf(r.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,r)=>r.timestamp-n.timestamp||n.id.localeCompare(r.id))}async quickSave(t){return this.save(ar.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(ar.QUICK_SLOT,t)}};Sc.DEFAULT_DB_NAME="quake2ts-saves";Sc.DEFAULT_STORE="saves";Sc.QUICK_SLOT="quicksave";var L4=uo();var s8=new Map,o8=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],kf=async(e,t)=>{for(let n of o8)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);s8.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var c8=new Map,l8=["d_left","d_right","d_up","d_down"],Ef=async(e,t)=>{for(let n of l8)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);c8.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Ac=[],u8=0,bf=async(e,t)=>{for(let n=0;n<10;n++)try{let r=await t.loadTexture(`pics/hud/num_${n}.pcx`),i=e.registerTexture(`hud_num_${n}`,r);Ac.push(i)}catch(r){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,r)}Ac.length>0&&(u8=Ac[0].width),await Ed(e,t),await kf(e,t),await Ef(e,t)};var xc=[{type:"null"},{type:"armor",id:Sn.BODY},{type:"armor",id:Sn.COMBAT},{type:"armor",id:Sn.JACKET},{type:"armor",id:Sn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:he.Grapple},{type:"weapon",id:he.Blaster},{type:"weapon",id:he.ChainFist},{type:"weapon",id:he.Shotgun},{type:"weapon",id:he.SuperShotgun},{type:"weapon",id:he.Machinegun},{type:"weapon",id:he.EtfRifle},{type:"weapon",id:he.Chaingun},{type:"ammo",id:V.Grenades},{type:"ammo",id:V.Trap},{type:"ammo",id:V.Tesla},{type:"weapon",id:he.GrenadeLauncher},{type:"weapon",id:he.ProxLauncher},{type:"weapon",id:he.RocketLauncher},{type:"weapon",id:he.HyperBlaster},{type:"weapon",id:he.IonRipper},{type:"weapon",id:he.PlasmaBeam},{type:"weapon",id:he.Railgun},{type:"weapon",id:he.Phalanx},{type:"weapon",id:he.BFG10K},{type:"weapon",id:he.Disruptor},{type:"ammo",id:V.Shells},{type:"ammo",id:V.Bullets},{type:"ammo",id:V.Cells},{type:"ammo",id:V.Rockets},{type:"ammo",id:V.Slugs},{type:"ammo",id:V.MagSlugs},{type:"ammo",id:V.Flechettes},{type:"ammo",id:V.Prox},{type:"ammo",id:V.Nuke},{type:"ammo",id:V.Rounds},{type:"powerup",id:ae.QuadDamage},{type:"powerup",id:ae.QuadFire},{type:"powerup",id:ae.Invulnerability},{type:"powerup",id:ae.Invisibility},{type:"powerup",id:ae.Silencer},{type:"powerup",id:ae.Rebreather},{type:"powerup",id:ae.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ae.Bandolier},{type:"powerup",id:ae.AmmoPack},{type:"powerup",id:ae.IRGoggles},{type:"powerup",id:ae.DoubleDamage},{type:"powerup",id:ae.SphereVengeance},{type:"powerup",id:ae.SphereHunter},{type:"powerup",id:ae.SphereDefender},{type:"powerup",id:ae.Doppelganger},{type:"powerup",id:ae.TagToken},{type:"key",id:ge.DataCD},{type:"key",id:ge.PowerCube},{type:"key",id:ge.ExplosiveCharges},{type:"key",id:ge.Yellow},{type:"key",id:ge.PowerCore},{type:"key",id:ge.Pyramid},{type:"key",id:ge.DataSpinner},{type:"key",id:ge.Pass},{type:"key",id:ge.Blue},{type:"key",id:ge.Red},{type:"key",id:ge.Green},{type:"key",id:ge.CommanderHead},{type:"key",id:ge.Airstrike},{type:"key",id:ge.NukeContainer},{type:"key",id:ge.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ge.RedFlag},{type:"key",id:ge.BlueFlag},{type:"powerup",id:ae.TechResistance},{type:"powerup",id:ae.TechStrength},{type:"powerup",id:ae.TechHaste},{type:"powerup",id:ae.TechRegeneration},{type:"powerup",id:ae.Flashlight},{type:"powerup",id:ae.Compass}];var d8=32768,qi=class{constructor(t,n){this.configstrings=new Array(d8).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,r,i,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,r=new Map;if(n.delta)for(let[i,a]of this.entities)r.set(i,structuredClone(a));for(let i of n.entities){if(i.bits&yu){r.delete(i.number);continue}let a=i.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Zt();let o=structuredClone(s);this.applyDelta(o,i),r.set(a,o)}this.entities=r}applyDelta(t,n){let r=n.bits,i=n.bitsHigh;t.number=n.number,r&os&&(t.modelindex=n.modelindex),r&us&&(t.modelindex2=n.modelindex2),r&ds&&(t.modelindex3=n.modelindex3),r&ms&&(t.modelindex4=n.modelindex4),r&rs&&(t.frame=n.frame),r&ls&&(t.frame=n.frame),(r&Wr||r&Xr)&&(t.skinnum=n.skinnum),(r&Vr||r&$r)&&(t.effects=n.effects),(r&Hr||r&Kr)&&(t.renderfx=n.renderfx),r&Qa&&(t.origin.x=n.origin.x),r&es&&(t.origin.y=n.origin.y),r&as&&(t.origin.z=n.origin.z),r&ss&&(t.angles.x=n.angles.x),r&ts&&(t.angles.y=n.angles.y),r&ns&&(t.angles.z=n.angles.z),r&hs&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),r&fs&&(t.sound=n.sound),r&is&&(t.event=n.event),r&_s&&(t.solid=n.solid),r&cs&&(t.alpha=n.alpha),r&gs&&(t.scale=n.scale),r&ps&&(t.instanceBits=n.instanceBits),r&vs&&(t.loopVolume=n.loopVolume),i&ys&&(t.loopAttenuation=n.loopAttenuation),i&ws&&(t.owner=n.owner),i&Ss&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,r,i,a,s,o){if(!this.imports?.engine.audio)return;let l=r??1,c=i??1,u=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,l,c,u):o&&this.imports.engine.audio.positioned_sound(o,n,l,c)}onTempEntity(t,n,r,i,a,s,o,l,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let i=0,a=0,s=0,o=pt,c=Qu(this.stats,Is.QuadDamage)?4:1;switch(n){case Gu:i=-2,o={x:-2,y:0,z:0};break;case Yu:i=-4,o={x:-4,y:0,z:0};break;case Bu:i=-1,a=Math.random()-.5;break;case Hu:case Vu:case Wu:i=-.5,a=Math.random()-.5;break;case Ku:i=-3,o={x:-3,y:0,z:0};break;case $u:case Xu:i=-2,o={x:-2,y:0,z:0};break;case Zu:i=-5,o={x:-2,y:0,z:0};break;case ju:case Uu:i=-.5;break}(i!==0||a!==0||s!==0)&&this.view.addKick({pitch:i*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,r){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,r)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,r){}convertFrameToPredictionState(t){let n=t.playerState,r={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let l=0;l<this.inventory.length;l++){let c=this.inventory[l];if(c<=0)continue;if(l>=xc.length)break;let u=xc[l];switch(u.type){case"weapon":r.ownedWeapons.add(u.id);break;case"ammo":r.ammo.counts[u.id]||(r.ammo.counts[u.id]=0),r.ammo.counts[u.id]=c;break;case"armor":r.armor={armorType:u.id,armorCount:c};break;case"powerup":r.powerups.set(u.id,c);break;case"key":r.keys.add(u.id);break;case"health":break;case"item":r.items.add(u.id);break}}let i={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:i,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Dt.None,gravity:n.gravity,deltaAngles:o,client:{inventory:r,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:pt,kick_origin:pt,gunoffset:pt,gunangles:pt,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Ut();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let r=this.latestFrame.serverFrame*100,i=this.previousFrame.serverFrame*100;if(t>=i&&t<=r){let a=(t-i)/(r-i),s=this.convertFrameToPredictionState(this.previousFrame);return cn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Mn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=ce.Models&&t<ce.Models+Qn){let r=t-ce.Models;this.models[r]=n}else if(t>=ce.Sounds&&t<ce.Sounds+er){let r=t-ce.Sounds;this.sounds[r]=n}else if(t>=ce.Images&&t<ce.Images+tr){let r=t-ce.Images;this.images[r]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var Ji=class{constructor(t,n,r){this.menuSystem=t;this.saveLoadFactory=n;this.options=r}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var Qi=class{constructor(t,n,r,i,a){this.menuSystem=t;this.storage=n;this.onSave=r;this.onLoad=i;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Tf(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(r))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Tf(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(r))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Tf(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}var ea=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let r=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return r.action&&r.action(),!0;if(t==="back")return this.popMenu(),!0;if(r.type==="input"&&r.onUpdate&&r.getValue){let i=r.getValue();if(t==="char"&&n){let a=(i||"")+n;r.onUpdate(a)}else if(t==="left"){let a=String(i||"");a.length>0&&r.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var br=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let r=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",r.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var ta=class{constructor(t,n,r){this.menuSystem=t;this.vfs=n;this.onStartMap=r}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(r=>({label:r.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(r.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var na=class{constructor(t,n,r){this.menuSystem=t;this.optionsFactory=n;this.host=r}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var ra=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let r=t,i=[];return n&&i.push({label:n,action:()=>{}}),i.push({label:"Address: "+r,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",r);a&&(r=a,this.refreshMenu(r))}}},{label:"Connect",action:()=>{this.refreshMenu(r,"Connecting..."),this.connection.connect("ws://"+r).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(r,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(r,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:i}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function Mf(e,t,n,r){if(!t.activeMenu)return;let i=t.activeMenu,a=n/2,s=r/2,o=20,l=i.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,r,[0,0,0,.7]),e.drawCenterString(c,i.title),i.items.forEach((u,h)=>{let m=c+40+h*o,f=u.label;if(u.type==="input"&&u.getValue){if(f+=`: ${u.getValue()}`,h===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(f+="_")}}else u.type==="toggle"&&u.getValue&&(f+=`: ${u.getValue()}`);if(h===t.selectedIndex){let w=f.replace(/\^[0-9]/g,"").length*8,T=(n-w)/2;e.drawString(T-16,m,"\r")}e.drawCenterString(m,f)})}var Tr=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let r=JSON.parse(n);for(let[i,a]of Object.entries(r)){let s=t.get(i);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let r of t)r.flags&Jn.Archive&&(n[r.name]=r.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(r){console.warn("Failed to save settings",r)}}};var ia=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(r){console.warn("Failed to write to localStorage",r)}}};var aa=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,r=t.height;t.drawfillRect(0,0,n,r,[.1,.1,.1,1]);let i=n*.6,a=20,s=(n-i)/2,o=r*.7;t.drawfillRect(s,o,i,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,i*l,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(l*100);t.drawCenterString(o+a+10,`${c}%`)}};var sa=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,r=t.height,i=n/2,a=r/2,s=400,o=200;t.drawfillRect(0,0,n,r,[0,0,0,.5]),t.drawfillRect(i-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var oa=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,r,i){if(!this.state.active)return;let a=n/2,s=r/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};function Rn(e,t,n){return e+(t-e)*n}function kc(e,t,n){return Rn(e,t,n)}function Rf(e,t,n,r,i){let a=[],s=i.engine.assets;if(!s)return a;let o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=r.getModelName(l.modelIndex);if(!u)continue;let h=s.getMd2Model(u)||s.getMd3Model(u);if(!h)continue;let m={x:Rn(c.origin.x,l.origin.x,n),y:Rn(c.origin.y,l.origin.y,n),z:Rn(c.origin.z,l.origin.z,n)},f={x:kc(c.angles.x,l.angles.x,n),y:kc(c.angles.y,l.angles.y,n),z:kc(c.angles.z,l.angles.z,n)},g=l.frame,S=c.frame,y=c.scale!==void 0?c.scale:1,w=l.scale!==void 0?l.scale:1,T=Rn(y,w,n),A=R=>R===void 0||R===0?255:R,p=A(c.alpha),x=A(l.alpha),b=Rn(p,x,n)/255,M=ee.create();ee.translate(M,M,[m.x,m.y,m.z]),ee.rotateZ(M,M,f.z*Math.PI/180),ee.rotateY(M,M,f.y*Math.PI/180),ee.rotateX(M,M,f.x*Math.PI/180),ee.scale(M,M,[T,T,T]),h.header.magic===844121161?a.push({type:"md2",model:h,blend:{frame0:S,frame1:g,lerp:n},transform:M,skin:l.skinNum>0?r.getImageName(l.skinNum):void 0,alpha:b}):h.header.magic===860898377&&a.push({type:"md3",model:h,blend:{frame0:S,frame1:g,lerp:n},transform:M,alpha:b})}return a}var ca=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,r)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=i=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),r(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=i=>{this.messageCallback&&(i.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(i.data)):console.warn("Received non-binary message from server"))}}catch(i){r(i)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var la=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new ca,this.options=t,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1;try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>Fu&&this.commandHistory.shift();let r=new rd;r.writeLong(0),r.writeLong(0),r.writeByte(Ft.move),r.writeByte(0),r.writeLong(this.latestServerFrame),ed(r,n),this.driver.send(r.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let r=new nd(n),i=r.readLong(),a=r.readLong();this.parser=new As(r,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new nr;t.writeByte(Ft.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new nr;n.writeByte(Ft.stringcmd);let r=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${Gr} ${t} ${r}`),this.driver.send(n.getData())}isConnected(){return this.state===5}onServerData(t,n,r,i,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=i,this.playerNum=a,this.levelName=s,this.state=3;let o=new nr;o.writeByte(Ft.stringcmd),o.writeString("new"),this.driver.send(o.getData()),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new nr;t.writeByte(Ft.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,r,i,a,s,o){}onTempEntity(t,n,r,i,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,r){}};var m8=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Kt=class{constructor(t=m8){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function zf(){return new Kt}function Ec(e){return e}function Mr(e){return e.trim().toLowerCase()}var h8=250,bc=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let r=this.msec;this.activeCodes.size>0&&(r+=n-this.downTime,this.downTime=n),this.msec=0;let i=Math.min(r/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:i}}},ua=(w=>(w.Forward="+forward",w.Back="+back",w.MoveLeft="+moveleft",w.MoveRight="+moveright",w.MoveUp="+moveup",w.MoveDown="+movedown",w.Jump="+jump",w.Crouch="+crouch",w.Attack="+attack",w.Use="+use",w.Holster="+holster",w.TurnLeft="+left",w.TurnRight="+right",w.LookUp="+lookup",w.LookDown="+lookdown",w.SpeedModifier="+speed",w.Zoom="+zoom",w))(ua||{}),f8={"+attack":qe.Attack,"+use":qe.Use,"+holster":qe.Holster,"+jump":qe.Jump,"+crouch":qe.Crouch},_8=new Map(Object.values(ua).map(e=>[Mr(e),e]));function g8(e){return _8.get(Mr(e))}function Rr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var zn=class{constructor(t={},n=new Kt){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??zu,this.sideSpeed=t.sideSpeed??Lu,this.upSpeed=t.upSpeed??Nu,this.yawSpeed=t.yawSpeed??Ou,this.pitchSpeed=t.pitchSpeed??Iu,this.sensitivity=t.sensitivity??Cu,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Rr()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!0,r,n)}handleKeyUp(t,n=Rr()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!1,r,n)}handleMouseButtonDown(t,n=Rr()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!0,r,n)}handleMouseButtonUp(t,n=Rr()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!1,r,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Rr(),r){this.pollGamepads(n),this.applyTouchState(n);let i=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),l=this.sample("+lookup",t,n),u={x:(this.sample("+lookdown",t,n).fraction-l.fraction)*a,y:(o.fraction-s.fraction)*i,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let k=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+k*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let k=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+k*a,y:u.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let k=this.sampleMouseDelta(),L=Du(k,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+L.x,y:u.y+L.y,z:0}}let h=Pu(this.viewAngles,u);this.viewAngles=h;let m=this.sample("+forward",t,n),f=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),S=this.sample("+moveright",t,n),y=this.sample("+moveup",t,n),w=this.sample("+movedown",t,n),T=this.sample("+speed",t,n),A=this.sample("+jump",t,n),p=this.sample("+crouch",t,n),x=this.runByDefault?T.active?.5:1:T.active?1:.5,E=this.forwardSpeed*(m.fraction-f.fraction)*x,b=this.sideSpeed*(S.fraction-g.fraction)*x,M=this.upSpeed*(y.fraction-w.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(E+=this.forwardSpeed*this.gamepadMove.y*x,b+=this.sideSpeed*this.gamepadMove.x*x),(this.touchMove.x!==0||this.touchMove.y!==0)&&(E+=this.forwardSpeed*this.touchMove.y*x,b+=this.sideSpeed*this.touchMove.x*x),this.jumpAddsUpMove&&A.fraction>0&&(M+=this.upSpeed*A.fraction),this.crouchAddsDownMove&&p.fraction>0&&(M-=this.upSpeed*p.fraction),E=this.clampMove(E,this.forwardSpeed),b=this.clampMove(b,this.sideSpeed),M=this.clampMove(M,this.upSpeed);let R=this.collectButtonBits(t,n),v=Math.min(Math.max(Math.round(t),1),h8);return(this.anyPressed||R!==qe.None)&&(R|=qe.Any),this.anyPressed=!1,{msec:v,buttons:R,angles:{...this.viewAngles},forwardmove:E,sidemove:b,upmove:M,serverFrame:r}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let r=new Set;for(let i of n){if(!i||i.connected===!1)continue;let a=i.index??0,s=i.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=i.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,h=this.gamepadButtonCode(a,l);u&&r.add(h);let m=this.gamepadButtons.get(h)??!1;u!==m&&(this.applyCommand(this.bindings.getBinding(h),u,h,t),this.gamepadButtons.set(h,u))}}for(let[i,a]of this.gamepadButtons.entries())a&&!r.has(i)&&(this.applyCommand(this.bindings.getBinding(i),!1,i,t),this.gamepadButtons.set(i,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[r,i]of Object.entries(n.buttons)){if(i===void 0)continue;let a=this.touchButtons.get(r)??!1;i!==a&&(this.applyCommand(r,i,this.touchButtonCode(r),t),this.touchButtons.set(r,i))}}applyCommand(t,n,r,i){if(!t)return;let a=g8(t);if(a){let s=this.lookupButton(a);n?(s.press(r,i)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(r,i)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let r=qe.None;for(let[i,a]of Object.entries(f8)){let s=this.sample(i,t,n);(s.fraction>0||s.active||s.wasPressed)&&(r|=a)}return r}lookupButton(t){let n=this.buttons.get(t);return n||(n=new bc,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,r){return this.lookupButton(t).sample(n,r)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var da=class{constructor(t,n=new zn(t)){this.queued=[];this.controller=n}captureFrame(t,n,r){let i=this.controller.buildCommand(t,n,r),a=this.controller.consumeConsoleCommands(),s={command:i,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var ma={x:0,y:0,z:0};function p8(e){let t=new di(e.engine.trace),n=new ui,r=new Su,i=new qi(e);i.setView(n);let a=new ea,s=new aa,o=new sa,l=new oa,c=new Tr(new ia),u,h,m=new Mn,f,g=!1,y=kd(e,{get tickRate(){return 10},get frameTimeMs(){return f?.timeMs??0},get serverFrame(){return i.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return m},getClientName:v=>`Player ${v}`,getKeyBinding:v=>`[${v}]`,get inAutoDemo(){return g}}),w=xd(y),T=new la({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return b}}),A=new ra(a,T);i.setCallbacks({onCenterPrint:v=>w.ParseCenterPrint(v,0,!1),onPrint:(v,k)=>w.NotifyMessage(0,k,!1),onConfigString:(v,k)=>{m.set(v,k),w.ParseConfigString(v,k)},onServerData:(v,k)=>{k&&k>0?r.setFrameDuration(1e3/k):r.setFrameDuration(100)}}),r.setHandler(i);let p,x,E,b=90,M=!1;if(e.host){h=new br(a,e.host),u=new na(a,h,e.host);let v=new Map;if(e.host.cvars){for(let k of e.host.cvars.list())v.set(k.name,{value:k.string,setValue:L=>e.host.cvars.setValue(k.name,L)});c.loadCvars(v)}}if(e.host?.commands&&(e.host.commands.register("playdemo",v=>{if(v.length<1){console.log("usage: playdemo <filename>");return}let k=v[0];console.log(`playdemo: ${k}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let v=bd();console.log(`Crosshair changed to index ${v}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{M=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{M=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():u&&a.pushMenu(u.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",v=>{if(v.length<1){console.log("usage: connect <address>");return}let k=v[0];console.log(`Connecting to ${k}...`),T.connect(k).catch(L=>{console.error("Failed to connect:",L),o.show("Connection Failed",L instanceof Error?L.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{T.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Jn.Archive,onChange:k=>{let L=k.number;isNaN(L)||(b=Math.max(1,Math.min(179,L)))},description:"Field of view"});let v=e.host.cvars.get("fov");if(v){let k=v.number;isNaN(k)||(b=Math.max(1,Math.min(179,k)))}}return{loadingScreen:s,errorDialog:o,init(v){this.Init(v)},Init(v){f=v,v?.state&&t.setAuthoritative(v),w.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),bf(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(v){return a.isActive(),T.isConnected()&&T.sendCommand(v),t.enqueueCommand(v)},handleInput(v,k){if(!a.isActive())return!1;if(!k)return!0;let L=v.toLowerCase();return L==="arrowup"||L==="w"?a.handleInput("up"):L==="arrowdown"||L==="s"?a.handleInput("down"):L==="arrowleft"||L==="a"?a.handleInput("left"):L==="arrowright"||L==="d"?a.handleInput("right"):L==="enter"||L===" "?a.handleInput("select"):L==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:v.length===1?a.handleInput("char",v):v==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let v=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));c.saveCvars(v)}}else u&&a.pushMenu(u.createPauseMenu())},createMainMenu(v,k,L,Z,H){let j=new Qi(a,k,L,Z,H),ve=h;if(!ve){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");ve=new br(a,e.host)}let be=e.engine.assets,ut={findByExtension:$t=>be?be.listFiles($t):[]},zr=new ta(a,ut,$t=>{console.log(`Starting map: ${$t}`),e.host?.commands.execute(`map ${$t}`)}),Lf=new Ji(a,j,{...v,optionsFactory:ve,mapsFactory:zr,multiplayerFactory:A,onSetDifficulty:$t=>{e.host?.cvars&&e.host.cvars.setValue("skill",$t.toString())}});return{menuSystem:a,factory:Lf}},render(v){let k=r.getState(),L=[];k===xs.Playing?p=i.getPredictionState():(v.latest?.state&&(t.setAuthoritative(v.latest),f=v.latest),v.previous?.state&&v.latest?.state?(p=cn(v.previous.state,v.latest.state,v.alpha),v.latest.state.packetEntities&&v.previous.state.packetEntities&&(L=Rf(v.latest.state.packetEntities,v.previous.state.packetEntities,v.alpha,m,e))):p=v.latest?.state??v.previous?.state??t.getPredictedState());let Z=v.latest&&v.previous?Math.max(0,v.latest.timeMs-v.previous.timeMs):0;x=n.sample(p,Z);let H={};if(p){let{origin:j,viewAngles:ve}=p;E=new Dl,E.position=re.fromValues(j.x,j.y,j.z);let be=x?.offset??{x:0,y:0,z:0};re.add(E.position,E.position,[be.x,be.y,be.z]);let ut=x?.angles??{x:0,y:0,z:0};E.angles=re.fromValues(ve.x+ut.x,ve.y+ut.y,ve.z+ut.z),E.fov=M?40:b,E.aspect=4/3,e.engine.renderer&&(E.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&E){let j;if(e.engine.assets){let ve=m.getModelName(1);if(ve){let be=e.engine.assets.getMap(ve)}}e.engine.renderer.renderFrame({camera:E,world:j,dlights:[]},L)}if(e.engine.renderer&&p&&p.client){let j=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},ve=v.latest?.timeMs??0;this.DrawHUD(j,ve)}return H},DrawHUD(v,k){if(!e.engine.renderer)return;let L=e.engine.renderer,Z=L.width,H=L.height;if(p&&p.client){let j={origin:p.origin,velocity:p.velocity,viewAngles:p.viewAngles,onGround:at(p.pmFlags,Fe.OnGround),waterLevel:p.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:p.damageAlpha??0,damageIndicators:p.damageIndicators??[],blend:p.blend??[0,0,0,0],pickupIcon:p.pickupIcon,centerPrint:void 0,notify:void 0,stats:p.stats?[...p.stats]:new Array(32).fill(0),kick_angles:ma,kick_origin:ma,gunoffset:ma,gunangles:ma,gunindex:0,pm_type:p.pm_type??0,pm_time:p.pm_time??0,pm_flags:p.pmFlags,gun_frame:p.gun_frame??0,rdflags:p.rdflags??0,fov:p.fov??90};j.stats[Ue.STAT_HEALTH]=p.health??0,j.stats[Ue.STAT_AMMO]=p.ammo??0,j.stats[Ue.STAT_ARMOR]=p.armor??0,L.begin2D(),w.DrawHUD(0,null,{x:0,y:0,width:Z,height:H},{x:0,y:0,width:Z,height:H},1,0,j),L.end2D()}a.isActive()&&Mf(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),p&&p.client&&l.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,p.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(w.Shutdown(),f=void 0,p=void 0,e.host?.cvars){let v=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));c.saveCvars(v)}},get prediction(){return t},get lastRendered(){return p},get view(){return n},get lastView(){return x},get camera(){return E},demoPlayback:r,ParseCenterPrint(v){w.ParseCenterPrint(v,0,!1)},ParseNotify(v){w.NotifyMessage(0,v,!1)},showSubtitle(v,k){w.ShowSubtitle(v,k)},ParseConfigString(v,k){m.set(v,k),w.ParseConfigString(v,k)},demoHandler:i,multiplayer:T,configStrings:m}}return Pf(v8);})();
178
178
  /*! Bundled license information:
179
179
 
180
180
  pako/dist/pako.esm.mjs: