@omnimedia/omnitool 1.1.0-4 → 1.1.0-40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/package.json +8 -4
  2. package/s/context.ts +0 -7
  3. package/s/demo/demo.bundle.ts +35 -5
  4. package/s/demo/demo.css +5 -0
  5. package/s/demo/routines/transcode-test.ts +8 -4
  6. package/s/demo/routines/transitions-test.ts +43 -0
  7. package/s/demo/routines/waveform-test.ts +3 -2
  8. package/s/driver/driver.ts +19 -11
  9. package/s/driver/fns/schematic.ts +46 -23
  10. package/s/driver/fns/work.ts +114 -102
  11. package/s/features/transition/parts/fragment.ts +24 -0
  12. package/s/features/transition/parts/types.ts +94 -0
  13. package/s/features/transition/parts/uniforms.ts +29 -0
  14. package/s/features/transition/parts/vertex.ts +31 -0
  15. package/s/features/transition/transition.ts +60 -0
  16. package/s/index.html.ts +6 -1
  17. package/s/timeline/index.ts +1 -0
  18. package/s/timeline/parts/basics.ts +1 -1
  19. package/s/timeline/parts/compositor/export.ts +77 -0
  20. package/s/timeline/parts/compositor/parts/html-tree.ts +37 -0
  21. package/s/timeline/parts/compositor/parts/schedulers.ts +95 -0
  22. package/s/timeline/parts/compositor/parts/tree-builder.ts +196 -0
  23. package/s/timeline/parts/compositor/parts/webcodecs-tree.ts +30 -0
  24. package/s/timeline/parts/compositor/playback.ts +94 -0
  25. package/s/timeline/parts/compositor/samplers/html.ts +115 -0
  26. package/s/timeline/parts/compositor/samplers/webcodecs.ts +61 -0
  27. package/s/timeline/parts/filmstrip.ts +42 -15
  28. package/s/timeline/parts/item.ts +48 -6
  29. package/s/timeline/parts/media.ts +21 -0
  30. package/s/timeline/parts/waveform.ts +3 -4
  31. package/s/timeline/sugar/builders.ts +102 -0
  32. package/s/timeline/sugar/o.ts +163 -38
  33. package/s/timeline/sugar/omni-test.ts +5 -3
  34. package/s/timeline/sugar/omni.ts +26 -11
  35. package/s/timeline/types.ts +29 -0
  36. package/s/timeline/utils/audio-stream.ts +15 -0
  37. package/s/timeline/utils/matrix.ts +33 -0
  38. package/s/timeline/utils/video-cursor.ts +40 -0
  39. package/x/context.d.ts +1 -4
  40. package/x/context.js +1 -5
  41. package/x/context.js.map +1 -1
  42. package/x/demo/demo.bundle.js +23 -6
  43. package/x/demo/demo.bundle.js.map +1 -1
  44. package/x/demo/demo.bundle.min.js +606 -36
  45. package/x/demo/demo.bundle.min.js.map +4 -4
  46. package/x/demo/demo.css +5 -0
  47. package/x/demo/routines/transcode-test.js +8 -4
  48. package/x/demo/routines/transcode-test.js.map +1 -1
  49. package/x/demo/routines/transitions-test.d.ts +5 -0
  50. package/x/demo/routines/transitions-test.js +35 -0
  51. package/x/demo/routines/transitions-test.js.map +1 -0
  52. package/x/demo/routines/waveform-test.d.ts +2 -1
  53. package/x/demo/routines/waveform-test.js +2 -2
  54. package/x/demo/routines/waveform-test.js.map +1 -1
  55. package/x/driver/driver.d.ts +4 -6
  56. package/x/driver/driver.js +17 -10
  57. package/x/driver/driver.js.map +1 -1
  58. package/x/driver/driver.worker.bundle.min.js +2537 -148
  59. package/x/driver/driver.worker.bundle.min.js.map +4 -4
  60. package/x/driver/fns/host.d.ts +9 -2
  61. package/x/driver/fns/schematic.d.ts +40 -22
  62. package/x/driver/fns/work.d.ts +11 -4
  63. package/x/driver/fns/work.js +107 -101
  64. package/x/driver/fns/work.js.map +1 -1
  65. package/x/features/speech/transcribe/worker.bundle.min.js +542 -542
  66. package/x/features/speech/transcribe/worker.bundle.min.js.map +4 -4
  67. package/x/features/transition/parts/fragment.d.ts +1 -0
  68. package/x/features/transition/parts/fragment.js +25 -0
  69. package/x/features/transition/parts/fragment.js.map +1 -0
  70. package/x/features/transition/parts/types.d.ts +23 -0
  71. package/x/features/transition/parts/types.js.map +1 -0
  72. package/x/features/transition/parts/uniforms.d.ts +31 -0
  73. package/x/features/transition/parts/uniforms.js +27 -0
  74. package/x/features/transition/parts/uniforms.js.map +1 -0
  75. package/x/features/transition/parts/vertex.d.ts +1 -0
  76. package/x/features/transition/parts/vertex.js +32 -0
  77. package/x/features/transition/parts/vertex.js.map +1 -0
  78. package/x/features/transition/transition.d.ts +5 -0
  79. package/x/features/transition/transition.js +50 -0
  80. package/x/features/transition/transition.js.map +1 -0
  81. package/x/index.html +13 -3
  82. package/x/index.html.js +6 -1
  83. package/x/index.html.js.map +1 -1
  84. package/x/timeline/index.d.ts +1 -0
  85. package/x/timeline/index.js +1 -0
  86. package/x/timeline/index.js.map +1 -1
  87. package/x/timeline/parts/basics.d.ts +1 -1
  88. package/x/timeline/parts/compositor/export.d.ts +11 -0
  89. package/x/timeline/parts/compositor/export.js +64 -0
  90. package/x/timeline/parts/compositor/export.js.map +1 -0
  91. package/x/timeline/parts/compositor/parts/html-tree.d.ts +3 -0
  92. package/x/timeline/parts/compositor/parts/html-tree.js +40 -0
  93. package/x/timeline/parts/compositor/parts/html-tree.js.map +1 -0
  94. package/x/timeline/parts/compositor/parts/schedulers.d.ts +15 -0
  95. package/x/timeline/parts/compositor/parts/schedulers.js +70 -0
  96. package/x/timeline/parts/compositor/parts/schedulers.js.map +1 -0
  97. package/x/timeline/parts/compositor/parts/tree-builder.d.ts +37 -0
  98. package/x/timeline/parts/compositor/parts/tree-builder.js +160 -0
  99. package/x/timeline/parts/compositor/parts/tree-builder.js.map +1 -0
  100. package/x/timeline/parts/compositor/parts/webcodecs-tree.d.ts +3 -0
  101. package/x/timeline/parts/compositor/parts/webcodecs-tree.js +28 -0
  102. package/x/timeline/parts/compositor/parts/webcodecs-tree.js.map +1 -0
  103. package/x/timeline/parts/compositor/playback.d.ts +26 -0
  104. package/x/timeline/parts/compositor/playback.js +79 -0
  105. package/x/timeline/parts/compositor/playback.js.map +1 -0
  106. package/x/timeline/parts/compositor/samplers/html.d.ts +3 -0
  107. package/x/timeline/parts/compositor/samplers/html.js +106 -0
  108. package/x/timeline/parts/compositor/samplers/html.js.map +1 -0
  109. package/x/timeline/parts/compositor/samplers/webcodecs.d.ts +3 -0
  110. package/x/timeline/parts/compositor/samplers/webcodecs.js +52 -0
  111. package/x/timeline/parts/compositor/samplers/webcodecs.js.map +1 -0
  112. package/x/timeline/parts/filmstrip.d.ts +2 -1
  113. package/x/timeline/parts/filmstrip.js +29 -10
  114. package/x/timeline/parts/filmstrip.js.map +1 -1
  115. package/x/timeline/parts/item.d.ts +42 -8
  116. package/x/timeline/parts/item.js +7 -3
  117. package/x/timeline/parts/item.js.map +1 -1
  118. package/x/timeline/parts/media.d.ts +3 -0
  119. package/x/timeline/parts/media.js +17 -0
  120. package/x/timeline/parts/media.js.map +1 -1
  121. package/x/timeline/parts/waveform.d.ts +2 -1
  122. package/x/timeline/parts/waveform.js +2 -4
  123. package/x/timeline/parts/waveform.js.map +1 -1
  124. package/x/timeline/sugar/builders.js +104 -0
  125. package/x/timeline/sugar/builders.js.map +1 -0
  126. package/x/timeline/sugar/o.d.ts +27 -5
  127. package/x/timeline/sugar/o.js +137 -38
  128. package/x/timeline/sugar/o.js.map +1 -1
  129. package/x/timeline/sugar/omni-test.js +4 -2
  130. package/x/timeline/sugar/omni-test.js.map +1 -1
  131. package/x/timeline/sugar/omni.d.ts +8 -2
  132. package/x/timeline/sugar/omni.js +22 -9
  133. package/x/timeline/sugar/omni.js.map +1 -1
  134. package/x/timeline/types.d.ts +24 -0
  135. package/x/timeline/types.js +2 -0
  136. package/x/timeline/types.js.map +1 -0
  137. package/x/timeline/utils/audio-stream.d.ts +6 -0
  138. package/x/timeline/utils/audio-stream.js +17 -0
  139. package/x/timeline/utils/audio-stream.js.map +1 -0
  140. package/x/timeline/utils/matrix.d.ts +8 -0
  141. package/x/timeline/utils/matrix.js +26 -0
  142. package/x/timeline/utils/matrix.js.map +1 -0
  143. package/x/timeline/utils/video-cursor.d.ts +10 -0
  144. package/x/timeline/utils/video-cursor.js +36 -0
  145. package/x/timeline/utils/video-cursor.js.map +1 -0
  146. package/s/tools/common/loader.ts +0 -26
  147. package/s/tools/common/transformer-pipeline.ts +0 -26
  148. package/s/tools/speech-recognition/common/model.ts +0 -26
  149. package/s/tools/speech-recognition/whisper/fns/host.ts +0 -25
  150. package/s/tools/speech-recognition/whisper/fns/schematic.ts +0 -23
  151. package/s/tools/speech-recognition/whisper/fns/work.ts +0 -91
  152. package/s/tools/speech-recognition/whisper/parts/types.ts +0 -38
  153. package/s/tools/speech-recognition/whisper/parts/worker.bundle.ts +0 -7
  154. package/s/tools/speech-recognition/whisper/tool.ts +0 -70
  155. package/x/tools/common/loader.d.ts +0 -19
  156. package/x/tools/common/loader.js +0 -18
  157. package/x/tools/common/loader.js.map +0 -1
  158. package/x/tools/common/transformer-pipeline.d.ts +0 -8
  159. package/x/tools/common/transformer-pipeline.js +0 -24
  160. package/x/tools/common/transformer-pipeline.js.map +0 -1
  161. package/x/tools/speech-recognition/common/model.d.ts +0 -14
  162. package/x/tools/speech-recognition/common/model.js +0 -16
  163. package/x/tools/speech-recognition/common/model.js.map +0 -1
  164. package/x/tools/speech-recognition/whisper/fns/host.d.ts +0 -13
  165. package/x/tools/speech-recognition/whisper/fns/host.js +0 -19
  166. package/x/tools/speech-recognition/whisper/fns/host.js.map +0 -1
  167. package/x/tools/speech-recognition/whisper/fns/schematic.d.ts +0 -19
  168. package/x/tools/speech-recognition/whisper/fns/schematic.js +0 -2
  169. package/x/tools/speech-recognition/whisper/fns/schematic.js.map +0 -1
  170. package/x/tools/speech-recognition/whisper/fns/work.d.ts +0 -12
  171. package/x/tools/speech-recognition/whisper/fns/work.js +0 -74
  172. package/x/tools/speech-recognition/whisper/fns/work.js.map +0 -1
  173. package/x/tools/speech-recognition/whisper/parts/types.d.ts +0 -31
  174. package/x/tools/speech-recognition/whisper/parts/types.js.map +0 -1
  175. package/x/tools/speech-recognition/whisper/parts/worker.bundle.js +0 -4
  176. package/x/tools/speech-recognition/whisper/parts/worker.bundle.js.map +0 -1
  177. package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js +0 -8
  178. package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js.map +0 -7
  179. package/x/tools/speech-recognition/whisper/tool.d.ts +0 -12
  180. package/x/tools/speech-recognition/whisper/tool.js +0 -63
  181. package/x/tools/speech-recognition/whisper/tool.js.map +0 -1
  182. /package/x/{tools/speech-recognition/whisper → features/transition}/parts/types.js +0 -0
  183. /package/x/{tools/speech-recognition/whisper/parts/worker.bundle.d.ts → timeline/sugar/builders.d.ts} +0 -0
@@ -1,10 +1,578 @@
1
- function ur(n,e){return{error:t=>n.error({...e,...t}),rpcRequest:t=>n.rpcRequest({...e,...t}),rpcError:t=>n.rpcError({...e,...t})}}var at=()=>n=>({plain:n.none,errMessage:n.mix(n.brightRed,n.bold),errName:n.red,errStack:n.mix(n.red,n.dim),timestamp:n.blue,timestampErr:n.red});function Kr(){return at()}var te=Object.freeze({black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m",bgBlack:"\x1B[40m",bgRed:"\x1B[41m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m",bgWhite:"\x1B[47m",bgBrightBlack:"\x1B[100m",bgBrightRed:"\x1B[101m",bgBrightGreen:"\x1B[102m",bgBrightYellow:"\x1B[103m",bgBrightBlue:"\x1B[104m",bgBrightMagenta:"\x1B[105m",bgBrightCyan:"\x1B[106m",bgBrightWhite:"\x1B[107m",bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",inverse:"\x1B[7m",hidden:"\x1B[8m",strikethrough:"\x1B[9m",reset:"\x1B[0m"});var ot=()=>({none:n=>n,uncolor:kn,mix:xn,hex:Sn,rgb:Gr,bgRgb:Tn});function kn(n){return n.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"")}function xn(...n){return e=>{for(let t of n)e=t(e);return e}}function Sn(n){n=n.replace(/^#/,"");let e,t,r,s;if(n.length===3)e=parseInt(n.split("").map(i=>i+i).join(""),16);else if(n.length===6)e=parseInt(n,16);else throw new Error("Invalid hex color");return t=e>>16&255,r=e>>8&255,s=e&255,Gr(t,r,s)}function Gr(n,e,t){let r=`\x1B[38;2;${n};${e};${t}m`;return s=>`${r}${s}${te.reset}`}function Tn(n,e,t){let r=`\x1B[48;2;${n};${e};${t}m`;return s=>`${r}${s}${te.reset}`}var He={...Object.fromEntries(Object.entries(te).map(([n])=>[n,e=>e])),...ot()};var We={...Object.fromEntries(Object.entries(te).map(([n,e])=>[n,t=>`${e}${t}${te.reset}`])),...ot()};function mr(){return typeof Deno<"u"&&typeof Deno.version<"u"}function hr(){return typeof process<"u"&&process.versions&&process.versions.node}function Xr(){return hr()?process.env.FORCE_COLOR||process.stdout.isTTY&&process.env.TERM!=="dumb":mr()?Deno.env.get("FORCE_COLOR")||Deno.isatty(Deno.stdout.rid)&&Deno.env.get("TERM")!=="dumb":!1}var fr=()=>Xr()?We:He;var ct=()=>({colors:n,theme:e})=>{let t=e(n);function r(a){let o=a.stack?`
2
- `+a.stack+`
3
- `:"";return[t.errName(a.name+":"),t.errMessage(a.message)].join(" ")+t.errStack(o)}function s(a){return a&&a instanceof Error?r(a):a}function i(a){return a&&a instanceof Error?r(a):t.errMessage(a)}return{stdout:a=>a.map(s),stderr:a=>a.map(i)}};function je(...n){return e=>({stdout:t=>{for(let r of n)t=r(e).stdout(t);return t},stderr:t=>{for(let r of n)t=r(e).stderr(t);return t}})}function vn(){return{icon:"\u{1F6A8}",now:()=>Date.now()}}var dt=n=>({colors:e,theme:t})=>{let r={...vn(),...n},s=t(e),i=new Date(r.now()),a=i.getUTCFullYear().toString().padStart(4,"0"),o=(i.getUTCMonth()+1).toString().padStart(2,"0"),c=i.getUTCDate().toString().padStart(2,"0"),l=`${a}-${o}-${c}`,d=i.getUTCHours().toString().padStart(2,"0"),u=i.getUTCMinutes().toString().padStart(2,"0"),h=i.getUTCSeconds().toString().padStart(2,"0"),m=i.getUTCMilliseconds().toString().padStart(3,"0"),f=`${d}:${u}:${h}.${m}`,w=`${l}::${f}`;return{stdout:g=>[s.timestamp(w),...g],stderr:g=>[s.timestampErr(w),...[r.icon].filter(Boolean),...g]}};function Qr(){return je(ct(),dt())}var lt=()=>({stdout:async n=>{await Deno.stdout.write(new TextEncoder().encode(n+`
4
- `))},stderr:async n=>{await Deno.stderr.write(new TextEncoder().encode(n+`
5
- `))}});var ut=()=>({stdout:async n=>void process.stdout.write(n+`
6
- `),stderr:async n=>void process.stderr.write(n+`
7
- `)});var mt=()=>({stdout:async n=>console.log(n),stderr:async n=>console.error(n)});var Yr=()=>mr()?lt():hr()?ut():mt();var Zr=()=>({stdout:async()=>{},stderr:async()=>{}});function Jr(){return()=>({stdout:n=>n,stderr:n=>n})}var Ce=class n{static writers={auto:Yr,void:Zr,deno:lt,node:ut,console:mt};static colors={auto:fr,colorful:()=>We,colorless:()=>He};static themes={auto:Kr,basic:at};static shapers={auto:Qr,none:Jr,errors:ct,timestamp:dt};writer=n.writers.auto();colors=n.colors.auto();theme=n.themes.auto();shaper=n.shapers.auto();async log(...e){await this.writer.stdout(this.shaper(this).stdout(e).join(" "))}async error(...e){await this.writer.stderr(this.shaper(this).stderr(e).join(" "))}setWriter(e){return this.writer=e,this}setColors(e){return this.colors=e,this}setTheme(e){return this.theme=e,this}setShaper(...e){return this.shaper=je(...e),this}};var $e=class extends Ce{static dummy(){return new this().setWriter(Ce.writers.void())}rpcRequest=async({request:e,...t})=>{let r=this.colors.none;this.log(...this.#e(t),r(`${e.method}()`))};rpcError=async({request:e,error:t,...r})=>{this.error(...this.#e(r),`${e.method}()`,t)};#e({meta:e,label:t,remote:r}){let s=this.colors.mix(this.colors.blue,this.colors.dim),i=this.colors.mix(this.colors.cyan,this.colors.dim);return[e?this.#t(e):void 0,t||void 0,r===void 0?void 0:r?s("<-"):i("->")].filter(Boolean)}#t(e){let{headers:t}=e.request;return[this.colors.yellow(`[${e.ip}]`),this.colors.green(t.origin?t.origin:"(no-origin)")].join(" ")}};var q=class extends $e{rpcRequest=async()=>{}};var K=Object.freeze({eq(n,e){if(n.length!==e.length)return!1;for(let t=0;t<=n.length;t++)if(n.at(t)!==e.at(t))return!1;return!0},random(n){return crypto.getRandomValues(new Uint8Array(n))}});var oe=Object.freeze({fromBytes(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")},toBytes(n){if(n.length%2!==0)throw new Error("must have even number of hex characters");let e=new Uint8Array(n.length/2);for(let t=0;t<n.length;t+=2)e[t/2]=parseInt(n.slice(t,t+2),16);return e},random(n=32){return this.fromBytes(K.random(n))},string(n){return oe.fromBytes(n)},bytes(n){return oe.toBytes(n)}});var pr=58,ht="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",gr=Object.freeze({fromBytes(n){let e=BigInt("0x"+oe.fromBytes(n)),t="";for(;e>0;){let r=e%BigInt(pr);e=e/BigInt(pr),t=ht[Number(r)]+t}for(let r of n)if(r===0)t=ht[0]+t;else break;return t},toBytes(n){let e=BigInt(0);for(let a of n){let o=ht.indexOf(a);if(o===-1)throw new Error(`Invalid character '${a}' in base58 string`);e=e*BigInt(pr)+BigInt(o)}let t=e.toString(16);t.length%2!==0&&(t="0"+t);let r=oe.toBytes(t),s=0;for(let a of n)if(a===ht[0])s++;else break;let i=new Uint8Array(s+r.length);return i.set(r,s),i},random(n=32){return this.fromBytes(K.random(n))},string(n){return gr.fromBytes(n)},bytes(n){return gr.toBytes(n)}});var es=class{lexicon;static lexicons=Object.freeze({base2:{characters:"01"},hex:{characters:"0123456789abcdef"},base36:{characters:"0123456789abcdefghijklmnopqrstuvwxyz"},base58:{characters:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"},base62:{characters:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},base64url:{negativePrefix:"~",characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},base64:{characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",padding:{character:"=",size:4}}});lookup;negativePrefix;constructor(e){this.lexicon=e,this.lookup=Object.fromEntries([...e.characters].map((t,r)=>[t,r])),this.negativePrefix=e.negativePrefix??"-"}toBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let o=0,c=0,l=[];for(let d of e){if(d===this.lexicon.padding?.character)continue;let u=this.lookup[d];if(u===void 0)throw new Error(`Invalid character: ${d}`);for(o=o<<t|u,c+=t;c>=8;)c-=8,l.push(o>>c&255)}return new Uint8Array(l)}let r=0n,s=BigInt(this.lexicon.characters.length),i=!1;e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),i=!0);for(let o of e){let c=this.lookup[o];if(c===void 0)throw new Error(`Invalid character: ${o}`);r=r*s+BigInt(c)}let a=[];for(;r>0n;)a.unshift(Number(r%256n)),r=r/256n;return new Uint8Array(a)}fromBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let a=0,o=0,c="";for(let l of e)for(a=a<<8|l,o+=8;o>=t;){o-=t;let d=a>>o&(1<<t)-1;c+=this.lexicon.characters[d]}if(o>0){let l=a<<t-o&(1<<t)-1;c+=this.lexicon.characters[l]}if(this.lexicon.padding)for(;c.length%this.lexicon.padding.size!==0;)c+=this.lexicon.padding.character;return c}let r=0n;for(let a of e)r=(r<<8n)+BigInt(a);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),i="";for(;r>0n;)i=this.lexicon.characters[Number(r%s)]+i,r=r/s;return i}toInteger(e){if(!e)return 0;let t=0n,r=!1,s=BigInt(this.lexicon.characters.length);e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),r=!0);for(let i of e){let a=this.lookup[i];if(a===void 0)throw new Error(`Invalid character: ${i}`);t=t*s+BigInt(a)}return Number(r?-t:t)}fromInteger(e){e=Math.floor(e);let t=e<0,r=BigInt(t?-e:e);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),i="";for(;r>0n;)i=this.lexicon.characters[Number(r%s)]+i,r=r/s;return t?`${this.negativePrefix}${i}`:i}random(e=32){return this.fromBytes(K.random(e))}};var yr=Object.freeze({fromBytes(n){return typeof btoa=="function"?btoa(String.fromCharCode(...n)):Buffer.from(n).toString("base64")},toBytes(n){return typeof atob=="function"?Uint8Array.from(atob(n),e=>e.charCodeAt(0)):Uint8Array.from(Buffer.from(n,"base64"))},random(n=32){return this.fromBytes(K.random(n))},string(n){return yr.fromBytes(n)},bytes(n){return yr.toBytes(n)}});var ts=Object.freeze({fromBytes(n){return new TextDecoder().decode(n)},toBytes(n){return new TextEncoder().encode(n)},string(n){return ts.fromBytes(n)},bytes(n){return ts.toBytes(n)}});var ft=Object.freeze({set:n=>n!=null,unset:n=>n==null,boolean:n=>typeof n=="boolean",number:n=>typeof n=="number",string:n=>typeof n=="string",bigint:n=>typeof n=="bigint",object:n=>typeof n=="object"&&n!==null,array:n=>Array.isArray(n),fn:n=>typeof n=="function",symbol:n=>typeof n=="symbol"});function rs(n){let e=Promise.resolve();return(...t)=>{let r=()=>n(...t),s=e.then(r);return e=s.catch(()=>{}),s}}function ss(...n){return(...e)=>n.forEach(t=>t(...e))}var qe=class extends Error{milliseconds;name=this.constructor.name;constructor(e){super(`deadline exceeded (${(e/1e3).toFixed(1)} seconds)`),this.milliseconds=e}};function pt(n,e){return n<=0||n===1/0?e():new Promise((t,r)=>{let s=setTimeout(()=>r(new qe(n)),n);e().then(t).catch(r).finally(()=>clearTimeout(s))})}function j(){let n,e,t=new Promise((s,i)=>{n=s,e=i});function r(s){return s.then(n).catch(e),t}return{promise:t,resolve:n,reject:e,entangle:r}}function ns(n,e){let t=n;for(let r of e)if(t=t[r],ft.unset(t))break;return t}function Cn(n){return{map:e=>is(n,e),filter:e=>as(n,e)}}Cn.pipe=Object.freeze({map:n=>e=>is(e,n),filter:n=>e=>as(e,n)});var is=(n,e)=>Object.fromEntries(Object.entries(n).map(([t,r])=>[t,e(r,t)])),as=(n,e)=>Object.fromEntries(Object.entries(n).filter(([t,r])=>e(r,t)));function os(){let n=new Set;function e(i){return n.add(i),()=>{n.delete(i)}}async function t(...i){await Promise.all([...n].map(a=>a(...i)))}async function r(){let{promise:i,resolve:a}=j(),o=e((...c)=>{a(c),o()});return i}function s(){n.clear()}return e.pub=t,e.sub=e,e.on=e,e.next=r,e.clear=s,t.pub=t,t.sub=e,t.on=e,t.next=r,t.clear=s,[t,e]}function gt(n){let e=os()[1];return n&&e.sub(n),e}function yt(n){let e=os()[0];return n&&e.sub(n),e}var Y=class{#e=[];add(...e){return this.#e.push(...e),this}disposable(e){return this.bag(e,()=>e.dispose())}bag(e,t){return this.add(()=>t(e)),e}dispose(){for(let e of this.#e.reverse())e();this.#e=[]}};var re;(function(n){n.version="2.0";function e(t){return"id"in t?t.id:null}n.getId=e,n.errorCodes={serverError:-32e3,unexposedError:-32001}})(re||(re={}));var wt=class extends Error{name=this.constructor.name},ce=class extends Error{name=this.constructor.name};async function cs({tap:n,request:e,action:t}){let r=re.getId(e);try{let s=await t();return r===null?null:{id:r,result:s,jsonrpc:re.version}}catch(s){return n.rpcError({request:e,error:s}),r===null?null:{id:r,jsonrpc:re.version,error:s instanceof wt?{code:re.errorCodes.serverError,message:s.message}:{code:re.errorCodes.unexposedError,message:"unexposed error"}}}}function bt(n){let e=n.tap??new q;return async t=>{let r=t.method.split("."),s=ns(n.fns,r),i=async()=>await s(...t.params);return e.rpcRequest({request:t}),await cs({tap:e,request:t,action:i})}}var Pe=Symbol("tune"),Pn=Symbol("query"),Rn=Symbol("notify"),In=Symbol("settings");function ds(n){function e(t){let r={notify:void 0};return new Proxy(()=>{},{apply:(s,i,a)=>n(t,a,r),get:(s,i)=>{if(i!=="then")return i===Pe?a=>(...o)=>n(t,o,{...r,...a}):i===Rn?(...a)=>n(t,a,{...r,notify:!0}):i===Pn?(...a)=>n(t,a,{...r,notify:!1}):i===In?r:(s[i]||(s[i]=e([...t,i])),s[i])},set:(s,i,a)=>(s[i]=a,!0)})}return e([])}function de(n){let{endpoint:e,tap:t=new q}=n,r=1;return ds(async(s,i,a)=>{let o=a.notify??n.notify??!1,c=a.transfer,l={jsonrpc:"2.0",method:s.join("."),params:i},d=o?l:{...l,id:r++};t.rpcRequest({request:d});let u=await e(d,{transfer:c});if(o&&!u)return null;if(!u)throw new ce("response was null, but shouldn't be, because the request was not a notification");if("error"in u)throw new ce(n.label?`${n.label}: ${u.error.message}`:u.error.message);return u.result})}function Ke(n){return de({endpoint:bt(n),tap:n.tap})}var le=class{recv=yt();sendRequest=yt();sendResponse=yt();static makeEntangledPair({origin:e="example.e280.org"}={}){let t=new this,r=new this,s=[t.sendRequest.sub(a=>r.recv(a,{origin:e})),t.sendResponse.sub(a=>r.recv(a,{origin:e})),r.sendRequest.sub(a=>t.recv(a,{origin:e})),r.sendResponse.sub(a=>t.recv(a,{origin:e}))];return[t,r,()=>s.forEach(a=>a())]}};function kt(n,e){return n.addEventListener("message",e),()=>n.removeEventListener("message",e)}function ls(n,e){return async(t,{transfer:r}={})=>{if("id"in t){let s=j();return e(t,r,s.promise),n.wait(t.id,t.method).then(i=>(s.resolve(i),i))}else{let s=Promise.resolve(null);return e(t,r,s),s}}}function us(n){let e=[],t=[];for(let r of Array.isArray(n)?n:[n])"method"in r?e.push(r):t.push(r);return{requests:e,responses:t}}async function ms(n,e){let t=(await Promise.all(e.map(async r=>n(r)))).filter(r=>r!==null);return t.length===0?null:t.length===1?t[0]:t}var Re=class extends le{#e=new Y;constructor(e){super(),this.#e.add(this.sendRequest.sub((t,r)=>e.postMessage(t,r)),this.sendResponse.sub((t,r)=>e.postMessage(t,r)),kt(e,t=>this.recv(t.data,t)))}dispose(){this.#e.dispose()}};var xt=class{remote;transfer;constructor(e){this.remote=e}};var wr=Object.freeze({timeout:6e4,maxRequestBytes:1e7});var St=class{timeout;pending=new Map;constructor(e){this.timeout=e}async wait(e,t){let r=j();return this.pending.set(e,{method:t,deferred:r}),await pt(this.timeout,()=>r.promise).catch(s=>{throw s instanceof qe&&(s.message=`request #${e} ${t}(), ${s.message}`),s})}deliverResponse(e){let t=this.pending.get(e.id);t&&("error"in e?t.deferred.reject(new ce(e.error.message)):t.deferred.resolve(e))}};var ue=class{options;remote;remoteEndpoint;#e;#t=new Y;constructor(e){this.options=e;let{conduit:t,tap:r}=e;this.#e=new St(e.timeout??wr.timeout),this.remoteEndpoint=ls(this.#e,t.sendRequest.pub.bind(t.sendRequest)),this.remote=de({endpoint:this.remoteEndpoint,tap:r&&ur(r,{remote:!0})}),this.#t.add(t.recv.sub(s=>this.recv(s)))}async recv(e){let t=new xt(this.remote),{conduit:r,rpc:s,tap:i}=this.options,{requests:a,responses:o}=us(e);for(let u of o)this.#e.deliverResponse(u);if(!s)return;let c=await s(t),l=bt({fns:c,tap:i&&ur(i,{remote:!1})}),d=await ms(l,a);d&&await r.sendResponse(d,t.transfer)}dispose(){this.#t.dispose()}};var Z={derive:{host:n=>({host:n.remote.host,get transfer(){return n.transfer},set transfer(e){n.transfer=e}}),work:n=>({work:n.remote,get transfer(){return n.transfer},set transfer(e){n.transfer=e}})},mock:{host:()=>({host:void 0,transfer:void 0}),work:()=>({work:void 0,transfer:void 0})}};var J=new q;async function hs(n,e,t={}){let r=t.tap??J,s=new ue({tap:r,timeout:t.timeout??1/0,conduit:new Re(n.getSelf()),rpc:async i=>e(Z.derive.host(i))});return await s.remote.infra.ready(),s.remote.host}var Ie=class{worker;messenger;constructor(e,t){this.worker=e,this.messenger=t}static async make(e,t){let r=t.tap??J,s=t.label??"comrade",i=e.loadWorker(t.workerUrl,s),a=j(),o={async ready(){a.resolve()}},c=new ue({tap:r,timeout:t.timeout??1/0,conduit:new Re(i),rpc:async l=>({infra:o,host:t.setupHost(Z.derive.work(l))})});return await a.promise,new this(i,c)}get work(){return this.messenger.remote}terminate(){this.worker.terminate()}};var Tt=class{threads;static async make(e,t){let r=t.workerCount??e.guessOptimalThreadCount(),s=await Promise.all([...Array(r)].map(async(i,a)=>Ie.make(e,{...t,label:t.label??`${t.label??"comrade"}_${a+1}`})));return new this(s,{tap:t.tap})}work;#e=new Set;#t=[];constructor(e,t={}){this.threads=e;let r=t.tap??J,s=async(i,a)=>this.#r({request:i,prom:j(),transfer:a?.transfer});this.work=de({tap:r,endpoint:s}),e.forEach(i=>this.#e.add(i))}get threadCount(){return this.threads.length}terminate(){for(let e of this.threads)e.terminate()}#r(e){return this.#t.push(e),this.#s(),e.prom.promise}#s(){for(;this.#e.size>0&&this.#t.length>0;){let e=[...this.#e].pop();this.#e.delete(e);let t=this.#t.shift();this.#e.delete(e);let r=e.messenger.remoteEndpoint(t.request,{transfer:t.transfer});t.prom.entangle(r).finally(()=>{this.#e.add(e),this.#s()})}}};var fs=n=>({thread:e=>Ie.make(n,e),cluster:e=>Tt.make(n,e),worker:(e,t={})=>hs(n,e,t),work:e=>e,host:e=>e,mocks(e){let{setupWork:t,setupHost:r,tap:s=J}=e,i=Z.mock.host(),a=Z.mock.work();return a.work=Ke({tap:s,fns:t(i)}),i.host=Ke({tap:s,fns:r(a)}),{workShell:a,hostShell:i,work:a.work,host:i.host}},mockWork(e,t=J){let r=Z.mock.host(),s=Z.mock.work();return s.work=Ke({tap:t,fns:e(r)}),{workShell:s,hostShell:r,work:s.work,mockHost:i=>(r.host=Ke({tap:t,fns:i(s)}),{workShell:s,hostShell:r,work:s.work,host:r.host})}}});var ps=()=>({getSelf(){return self},guessOptimalThreadCount(){let n=navigator.hardwareConcurrency??1;return Math.max(1,n-1)},loadWorker(n,e){return new window.Worker(n,{name:e,type:"module"})},async loadWasm(n){return WebAssembly.instantiateStreaming(fetch(n))}});var Dn=ps(),Ee=fs(Dn);function p(n){if(!n)throw new Error("Assertion failed.")}var Ct=n=>{let e=(n%360+360)%360;if(e===0||e===90||e===180||e===270)return e;throw new Error(`Invalid rotation ${n}.`)},U=n=>n&&n[n.length-1];var B=class n{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){let e=Math.floor(this.pos/8),t=this.bytes[e]??0,r=7-(this.pos&7),s=(t&1<<r)>>r;return this.pos++,s}readBits(e){if(e===1)return this.readBit();let t=0;for(let r=0;r<e;r++)t<<=1,t|=this.readBit();return t}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");let e=this.pos/8,t=this.bytes[e]??0;return this.pos+=8,t}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){let e=new n(this.bytes);return e.pos=this.pos,e}},C=n=>{let e=0;for(;n.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<e)-1+n.readBits(e)},_e=n=>{let e=C(n);return(e&1)===0?-(e>>1):e+1>>1};var me=n=>n instanceof Uint8Array?n:n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength),G=n=>n instanceof DataView?n:n instanceof ArrayBuffer?new DataView(n):new DataView(n.buffer,n.byteOffset,n.byteLength),Cu=new TextEncoder,br=n=>Object.fromEntries(Object.entries(n).map(([e,t])=>[t,e])),kr={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},Pt=br(kr),xr={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pg:16,hlg:18},Rt=br(xr),Sr={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},It=br(Sr);var Tr=n=>n instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&n instanceof SharedArrayBuffer||ArrayBuffer.isView(n),se=class{constructor(){this.currentPromise=Promise.resolve()}async acquire(){let e,t=new Promise(s=>{e=s}),r=this.currentPromise;return this.currentPromise=t,await r,e}},vr=n=>[...n].map(e=>e.toString(16).padStart(2,"0")).join(""),Cr=n=>(n=n>>1&1431655765|(n&1431655765)<<1,n=n>>2&858993459|(n&858993459)<<2,n=n>>4&252645135|(n&252645135)<<4,n=n>>8&16711935|(n&16711935)<<8,n=n>>16&65535|(n&65535)<<16,n>>>0),D=(n,e,t)=>{let r=0,s=n.length-1,i=-1;for(;r<=s;){let a=r+s>>1,o=t(n[a]);o===e?(i=a,s=a-1):o<e?r=a+1:s=a-1}return i},F=(n,e,t)=>{let r=0,s=n.length-1,i=-1;for(;r<=s;){let a=r+(s-r+1)/2|0;t(n[a])<=e?(i=a,r=a+1):s=a-1}return i},V=()=>{let n,e;return{promise:new Promise((r,s)=>{n=r,e=s}),resolve:n,reject:e}},gs=(n,e)=>{let t=n.indexOf(e);t!==-1&&n.splice(t,1)},Pr=(n,e)=>{for(let t=n.length-1;t>=0;t--)if(e(n[t]))return n[t]},Et=(n,e)=>{for(let t=n.length-1;t>=0;t--)if(e(n[t]))return t;return-1},ys=async function*(n){Symbol.iterator in n?yield*n[Symbol.iterator]():yield*n[Symbol.asyncIterator]()},ws=n=>{if(!(Symbol.iterator in n)&&!(Symbol.asyncIterator in n))throw new TypeError("Argument must be an iterable or async iterable.")},_t=n=>{throw new Error(`Unexpected value: ${n}`)};var Rr=(n,e)=>({async next(){let t=await n.next();return t.done?{value:void 0,done:!0}:{value:e(t.value),done:!1}},return(){return n.return()},throw(t){return n.throw(t)},[Symbol.asyncIterator](){return this}});var L="und",Fe=(n,e)=>{let t=10**e;return Math.round(n*t)/t},bs=(n,e)=>Math.round(n/e)*e,ks=n=>{let e=0;for(;n;)e++,n>>=1;return e},An=/^[a-z]{3}$/,Ft=n=>An.test(n),ne=1e6*(1+Number.EPSILON),Ge=(n,e)=>{let t={...n};for(let r in e)typeof n[r]=="object"&&n[r]!==null&&typeof e[r]=="object"&&e[r]!==null?t[r]=Ge(n[r],e[r]):t[r]=e[r];return t},Dt=async(n,e,t)=>{let r=0;for(;;)try{return await fetch(n,e)}catch(s){r++;let i=t(r);if(i===null)throw s;if(console.error("Retrying failed fetch. Error:",s),!Number.isFinite(i)||i<0)throw new TypeError("Retry delay must be a non-negative finite number.");i>0&&await new Promise(a=>setTimeout(a,1e3*i))}};var vt=class{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}};var At=[],Ir=[];var De=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],Bn=["aac","opus","mp3","vorbis","flac"],Eu=[...Bn,...De];var he=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}];var xs=".01.01.01.01.00",Ss=".0.110.01.01.01.0";var Bt=n=>{let{codec:e,codecDescription:t,colorSpace:r,avcCodecInfo:s,hevcCodecInfo:i,vp9CodecInfo:a,av1CodecInfo:o}=n;if(e==="avc"){if(s){let c=new Uint8Array([s.avcProfileIndication,s.profileCompatibility,s.avcLevelIndication]);return`avc1.${vr(c)}`}if(!t||t.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc1.${vr(t.subarray(1,4))}`}else if(e==="hevc"){let c,l,d,u,h,m;if(i)c=i.generalProfileSpace,l=i.generalProfileIdc,d=Cr(i.generalProfileCompatibilityFlags),u=i.generalTierFlag,h=i.generalLevelIdc,m=[...i.generalConstraintIndicatorFlags];else{if(!t||t.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");let w=G(t),g=w.getUint8(1);c=g>>6&3,l=g&31,d=Cr(w.getUint32(2)),u=g>>5&1,h=w.getUint8(12),m=[];for(let b=0;b<6;b++)m.push(w.getUint8(6+b))}let f="hev1.";for(f+=["","A","B","C"][c]+l,f+=".",f+=d.toString(16).toUpperCase(),f+=".",f+=u===0?"L":"H",f+=h;m.length>0&&m[m.length-1]===0;)m.pop();return m.length>0&&(f+=".",f+=m.map(w=>w.toString(16).toUpperCase()).join(".")),f}else{if(e==="vp8")return"vp8";if(e==="vp9"){if(!a){let b=n.width*n.height,k=U(he).level;for(let P of he)if(b<=P.maxPictureSize){k=P.level;break}return`vp09.00.${k.toString().padStart(2,"0")}.08`}let c=a.profile.toString().padStart(2,"0"),l=a.level.toString().padStart(2,"0"),d=a.bitDepth.toString().padStart(2,"0"),u=a.chromaSubsampling.toString().padStart(2,"0"),h=a.colourPrimaries.toString().padStart(2,"0"),m=a.transferCharacteristics.toString().padStart(2,"0"),f=a.matrixCoefficients.toString().padStart(2,"0"),w=a.videoFullRangeFlag.toString().padStart(2,"0"),g=`vp09.${c}.${l}.${d}.${u}`;return g+=`.${h}.${m}.${f}.${w}`,g.endsWith(xs)&&(g=g.slice(0,-xs.length)),g}else if(e==="av1"){if(!o){let P=n.width*n.height,S=U(he).level;for(let y of he)if(P<=y.maxPictureSize){S=y.level;break}return`av01.0.${S.toString().padStart(2,"0")}M.08`}let c=o.profile,l=o.level.toString().padStart(2,"0"),d=o.tier?"H":"M",u=o.bitDepth.toString().padStart(2,"0"),h=o.monochrome?"1":"0",m=100*o.chromaSubsamplingX+10*o.chromaSubsamplingY+1*(o.chromaSubsamplingX&&o.chromaSubsamplingY?o.chromaSamplePosition:0),f=r?.primaries?kr[r.primaries]:1,w=r?.transfer?xr[r.transfer]:1,g=r?.matrix?Sr[r.matrix]:1,b=r?.fullRange?1:0,k=`av01.${c}.${l}${d}.${u}`;return k+=`.${h}.${m.toString().padStart(3,"0")}`,k+=`.${f.toString().padStart(2,"0")}`,k+=`.${w.toString().padStart(2,"0")}`,k+=`.${g.toString().padStart(2,"0")}`,k+=`.${b}`,k.endsWith(Ss)&&(k=k.slice(0,-Ss.length)),k}}throw new TypeError(`Unhandled codec '${e}'.`)};var Ot=n=>{let{codec:e,codecDescription:t,aacCodecInfo:r}=n;if(e==="aac"){if(!r)throw new TypeError("AAC codec info must be provided.");return r.isMpeg2?"mp4a.67":`mp4a.40.${Er(t).objectType}`}else{if(e==="mp3")return"mp3";if(e==="opus")return"opus";if(e==="vorbis")return"vorbis";if(e==="flac")return"flac";if(e&&De.includes(e))return e}throw new TypeError(`Unhandled codec '${e}'.`)},Er=n=>{if(!n||n.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");let e=new B(n),t=e.readBits(5);t===31&&(t=32+e.readBits(6));let r=e.readBits(4),s=null;if(r===15)s=e.readBits(24);else{let o=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r<o.length&&(s=o[r])}let i=e.readBits(4),a=null;return i>=1&&i<=7&&(a={1:1,2:2,3:3,4:4,5:5,6:6,7:8}[i]),{objectType:t,frequencyIndex:r,sampleRate:s,channelConfiguration:i,numberOfChannels:a}},Ts=48e3,On=/^pcm-([usf])(\d+)+(be)?$/,vs=n=>{if(p(De.includes(n)),n==="ulaw")return{dataType:"ulaw",sampleSize:1,littleEndian:!0,silentValue:255};if(n==="alaw")return{dataType:"alaw",sampleSize:1,littleEndian:!0,silentValue:213};let e=On.exec(n);p(e);let t;e[1]==="u"?t="unsigned":e[1]==="s"?t="signed":t="float";let r=Number(e[2])/8,s=e[3]!=="be",i=n==="pcm-u8"?2**7:0;return{dataType:t,sampleSize:r,littleEndian:s,silentValue:i}};var fe=class{constructor(e){this._factor=e}_toVideoBitrate(e,t,r){let s=t*r,i={avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2},a=1920*1080,o=3e6,c=Math.pow(s/a,.95),u=o*c*i[e]*this._factor;return Math.ceil(u/1e3)*1e3}_toAudioBitrate(e){if(De.includes(e)||e==="flac")return;let r={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3}[e];if(!r)throw new Error(`Unhandled codec: ${e}`);let s=r*this._factor;return e==="aac"?s=[96e3,128e3,16e4,192e3].reduce((a,o)=>Math.abs(o-s)<Math.abs(a-s)?o:a):e==="opus"||e==="vorbis"?s=Math.max(6e3,s):e==="mp3"&&(s=[8e3,16e3,24e3,32e3,4e4,48e3,64e3,8e4,96e3,112e3,128e3,16e4,192e3,224e3,256e3,32e4].reduce((a,o)=>Math.abs(o-s)<Math.abs(a-s)?o:a)),Math.round(s/1e3)*1e3}},_u=new fe(.3),Fu=new fe(.6),Du=new fe(1),Au=new fe(2),Bu=new fe(4);var zt=n=>{let e=[],t=0;for(;t<n.length;){let r=-1,s=0;for(let i=t;i<n.length-3;i++){if(n[i]===0&&n[i+1]===0&&n[i+2]===1){r=i,s=3;break}if(i<n.length-4&&n[i]===0&&n[i+1]===0&&n[i+2]===0&&n[i+3]===1){r=i,s=4;break}}if(r===-1)break;if(t>0&&r>t){let i=n.subarray(t,r);i.length>0&&e.push(i)}t=r+s}if(t<n.length){let r=n.subarray(t);r.length>0&&e.push(r)}return e},Cs=(n,e)=>{let t=[],r=0,s=new DataView(n.buffer,n.byteOffset,n.byteLength);for(;r+e<=n.length;){let i;e===1?i=s.getUint8(r):e===2?i=s.getUint16(r,!1):e===3?i=(s.getUint16(r,!1)<<8)+s.getUint8(r+2):e===4?i=s.getUint32(r,!1):(_t(e),p(!1)),r+=e;let a=n.subarray(r,r+i);t.push(a),r+=i}return t},_r=n=>{let e=[],t=n.length;for(let r=0;r<t;r++)r+2<t&&n[r]===0&&n[r+1]===0&&n[r+2]===3?(e.push(0,0),r+=2):e.push(n[r]);return new Uint8Array(e)};var Ut=n=>n[0]&31,_s=n=>{try{let e=zt(n),t=e.filter(h=>Ut(h)===7),r=e.filter(h=>Ut(h)===8),s=e.filter(h=>Ut(h)===13);if(t.length===0||r.length===0)return null;let i=t[0],a=new B(_r(i));if(a.skipBits(1),a.skipBits(2),a.readBits(5)!==7)return console.error("Invalid SPS NAL unit type"),null;let c=a.readAlignedByte(),l=a.readAlignedByte(),d=a.readAlignedByte(),u={configurationVersion:1,avcProfileIndication:c,profileCompatibility:l,avcLevelIndication:d,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:r,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if(c===100||c===110||c===122||c===144){C(a);let h=C(a);h===3&&a.skipBits(1);let m=C(a),f=C(a);u.chromaFormat=h,u.bitDepthLumaMinus8=m,u.bitDepthChromaMinus8=f,u.sequenceParameterSetExt=s}return u}catch(e){return console.error("Error building AVC Decoder Configuration Record:",e),null}};var Ps=32,Rs=33,Is=34,Un=39,zn=40,pe=n=>n[0]>>1&63,Fs=n=>{try{let e=zt(n),t=e.filter(R=>pe(R)===Ps),r=e.filter(R=>pe(R)===Rs),s=e.filter(R=>pe(R)===Is),i=e.filter(R=>pe(R)===Un||pe(R)===zn);if(r.length===0||s.length===0)return null;let a=r[0],o=new B(_r(a));o.skipBits(16),o.readBits(4);let c=o.readBits(3),l=o.readBits(1),{general_profile_space:d,general_tier_flag:u,general_profile_idc:h,general_profile_compatibility_flags:m,general_constraint_indicator_flags:f,general_level_idc:w}=Mn(o,c);C(o);let g=C(o);g===3&&o.skipBits(1),C(o),C(o),o.readBits(1)&&(C(o),C(o),C(o),C(o));let b=C(o),k=C(o);C(o);let S=o.readBits(1)?0:c;for(let R=S;R<=c;R++)C(o),C(o),C(o);C(o),C(o),C(o),C(o),C(o),C(o),o.readBits(1)&&o.readBits(1)&&Vn(o),o.skipBits(1),o.skipBits(1),o.readBits(1)&&(o.skipBits(4),o.skipBits(4),C(o),C(o),o.skipBits(1));let y=C(o);if(Nn(o,y),o.readBits(1)){let R=C(o);for(let I=0;I<R;I++)C(o),o.skipBits(1)}o.skipBits(1),o.skipBits(1);let x=0;o.readBits(1)&&(x=Hn(o,c));let v=0;if(s.length>0){let R=s[0],I=new B(_r(R));I.skipBits(16),C(I),C(I),I.skipBits(1),I.skipBits(1),I.skipBits(3),I.skipBits(1),I.skipBits(1),C(I),C(I),_e(I),I.skipBits(1),I.skipBits(1),I.readBits(1)&&C(I),_e(I),_e(I),I.skipBits(1),I.skipBits(1),I.skipBits(1),I.skipBits(1);let N=I.readBits(1),ae=I.readBits(1);!N&&!ae?v=0:N&&!ae?v=2:!N&&ae?v=3:v=0}let _=[...t.length?[{arrayCompleteness:1,nalUnitType:Ps,nalUnits:t}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:Rs,nalUnits:r}]:[],...s.length?[{arrayCompleteness:1,nalUnitType:Is,nalUnits:s}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:pe(i[0]),nalUnits:i}]:[]];return{configurationVersion:1,generalProfileSpace:d,generalTierFlag:u,generalProfileIdc:h,generalProfileCompatibilityFlags:m,generalConstraintIndicatorFlags:f,generalLevelIdc:w,minSpatialSegmentationIdc:x,parallelismType:v,chromaFormatIdc:g,bitDepthLumaMinus8:b,bitDepthChromaMinus8:k,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:c+1,temporalIdNested:l,lengthSizeMinusOne:3,arrays:_}}catch(e){return console.error("Error building HEVC Decoder Configuration Record:",e),null}},Mn=(n,e)=>{let t=n.readBits(2),r=n.readBits(1),s=n.readBits(5),i=0;for(let d=0;d<32;d++)i=i<<1|n.readBits(1);let a=new Uint8Array(6);for(let d=0;d<6;d++)a[d]=n.readBits(8);let o=n.readBits(8),c=[],l=[];for(let d=0;d<e;d++)c.push(n.readBits(1)),l.push(n.readBits(1));if(e>0)for(let d=e;d<8;d++)n.skipBits(2);for(let d=0;d<e;d++)c[d]&&n.skipBits(88),l[d]&&n.skipBits(8);return{general_profile_space:t,general_tier_flag:r,general_profile_idc:s,general_profile_compatibility_flags:i,general_constraint_indicator_flags:a,general_level_idc:o}},Vn=n=>{for(let e=0;e<4;e++)for(let t=0;t<(e===3?2:6);t++)if(!n.readBits(1))C(n);else{let s=Math.min(64,1<<4+(e<<1));e>1&&_e(n);for(let i=0;i<s;i++)_e(n)}},Nn=(n,e)=>{let t=[];for(let r=0;r<e;r++)t[r]=Ln(n,r,e,t)},Ln=(n,e,t,r)=>{let s=0,i=0,a=0;if(e!==0&&(i=n.readBits(1)),i){if(e===t){let c=C(n);a=e-(c+1)}else a=e-1;n.readBits(1),C(n);let o=r[a]??0;for(let c=0;c<=o;c++)n.readBits(1)||n.readBits(1);s=r[a]}else{let o=C(n),c=C(n);for(let l=0;l<o;l++)C(n),n.readBits(1);for(let l=0;l<c;l++)C(n),n.readBits(1);s=o+c}return s},Hn=(n,e)=>{if(n.readBits(1)&&n.readBits(8)===255&&(n.readBits(16),n.readBits(16)),n.readBits(1)&&n.readBits(1),n.readBits(1)&&(n.readBits(3),n.readBits(1),n.readBits(1)&&(n.readBits(8),n.readBits(8),n.readBits(8))),n.readBits(1)&&(C(n),C(n)),n.readBits(1),n.readBits(1),n.readBits(1),n.readBits(1)&&(C(n),C(n),C(n),C(n)),n.readBits(1)&&(n.readBits(32),n.readBits(32),n.readBits(1)&&C(n),n.readBits(1)&&Wn(n,!0,e)),n.readBits(1)){n.readBits(1),n.readBits(1),n.readBits(1);let t=C(n);return C(n),C(n),C(n),C(n),t}return 0},Wn=(n,e,t)=>{let r=!1,s=!1,i=!1;e&&(r=n.readBits(1)===1,s=n.readBits(1)===1,(r||s)&&(i=n.readBits(1)===1,i&&(n.readBits(8),n.readBits(5),n.readBits(1),n.readBits(5)),n.readBits(4),n.readBits(4),i&&n.readBits(4),n.readBits(5),n.readBits(5),n.readBits(5)));for(let a=0;a<=t;a++){let o=n.readBits(1)===1,c=!0;o||(c=n.readBits(1)===1);let l=!1;c?C(n):l=n.readBits(1)===1;let d=1;l||(d=C(n)+1),r&&Es(n,d,i),s&&Es(n,d,i)}},Es=(n,e,t)=>{for(let r=0;r<e;r++)C(n),C(n),t&&(C(n),C(n)),n.readBits(1)};var Mt=n=>{let e=new B(n);if(e.readBits(2)!==2)return null;let r=e.readBits(1),i=(e.readBits(1)<<1)+r;if(i===3&&e.skipBits(1),e.readBits(1)===1||e.readBits(1)!==0||(e.skipBits(2),e.readBits(24)!==4817730))return null;let l=8;i>=2&&(l=e.readBits(1)?12:10);let d=e.readBits(3),u=0,h=0;if(d!==7)if(h=e.readBits(1),i===1||i===3){let v=e.readBits(1),_=e.readBits(1);u=!v&&!_?3:v&&!_?2:1,e.skipBits(1)}else u=1;else u=3,h=1;let m=e.readBits(16),f=e.readBits(16),w=m+1,g=f+1,b=w*g,k=U(he).level;for(let x of he)if(b<=x.maxPictureSize){k=x.level;break}return{profile:i,level:k,bitDepth:l,chromaSubsampling:u,videoFullRangeFlag:h,colourPrimaries:d===2?1:d===1?6:2,transferCharacteristics:d===2?1:d===1?6:2,matrixCoefficients:d===7?0:d===2?1:d===1?6:2}};function*Ds(n){let e=new B(n),t=()=>{let r=0;for(let s=0;s<8;s++){let i=e.readAlignedByte();if(r|=(i&127)<<s*7,!(i&128))break;if(s===7&&i&128)return null}return r>=2**32-1?null:r};for(;e.getBitsLeft()>=8;){e.skipBits(1);let r=e.readBits(4),s=e.readBits(1),i=e.readBits(1);e.skipBits(1),s&&e.skipBits(8);let a;if(i){let o=t();if(o===null)return;a=o}else a=Math.floor(e.getBitsLeft()/8);p(e.pos%8===0),yield{type:r,data:n.subarray(e.pos/8,e.pos/8+a)},e.skipBits(a*8)}}var Vt=n=>{for(let{type:e,data:t}of Ds(n)){if(e!==1)continue;let r=new B(t),s=r.readBits(3),i=r.readBits(1),a=r.readBits(1),o=0,c=0,l=0;if(a)o=r.readBits(5);else{if(r.readBits(1)&&(r.skipBits(32),r.skipBits(32),r.readBits(1)))return null;let b=r.readBits(1);b&&(l=r.readBits(5),r.skipBits(32),r.skipBits(5),r.skipBits(5));let k=r.readBits(5);for(let P=0;P<=k;P++){r.skipBits(12);let S=r.readBits(5);if(P===0&&(o=S),S>7){let x=r.readBits(1);P===0&&(c=x)}if(b&&r.readBits(1)){let v=l+1;r.skipBits(v),r.skipBits(v),r.skipBits(1)}r.readBits(1)&&r.skipBits(4)}}let d=r.readBits(1),u=8;s===2&&d?u=r.readBits(1)?12:10:s<=2&&(u=d?10:8);let h=0;s!==1&&(h=r.readBits(1));let m=1,f=1,w=0;return h||(s===0?(m=1,f=1):s===1?(m=0,f=0):u===12&&(m=r.readBits(1),m&&(f=r.readBits(1))),m&&f&&(w=r.readBits(2))),{profile:s,level:o,tier:c,bitDepth:u,monochrome:h,chromaSubsamplingX:m,chromaSubsamplingY:f,chromaSamplePosition:w}}return null},As=n=>{let e=G(n),t=e.getUint8(9),r=e.getUint16(10,!0),s=e.getUint32(12,!0),i=e.getInt16(16,!0),a=e.getUint8(18),o=null;return a&&(o=n.subarray(19,21+t)),{outputChannelCount:t,preSkip:r,inputSampleRate:s,outputGain:i,channelMappingFamily:a,channelMappingTable:o}},jn=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Bs=n=>{let e=n[0]>>3;return{durationInSamples:jn[e]}},Os=n=>{if(n.length<7)throw new Error("Setup header is too short.");if(n[0]!==5)throw new Error("Wrong packet type in Setup header.");if(String.fromCharCode(...n.slice(1,7))!=="vorbis")throw new Error("Invalid packet signature in Setup header.");let t=n.length,r=new Uint8Array(t);for(let u=0;u<t;u++)r[u]=n[t-1-u];let s=new B(r),i=0;for(;s.getBitsLeft()>97;)if(s.readBits(1)===1){i=s.pos;break}if(i===0)throw new Error("Invalid Setup header: framing bit not found.");let a=0,o=!1,c=0;for(;s.getBitsLeft()>=97;){let u=s.pos,h=s.readBits(8),m=s.readBits(16),f=s.readBits(16);if(h>63||m!==0||f!==0){s.pos=u;break}if(s.skipBits(1),a++,a>64)break;s.clone().readBits(6)+1===a&&(o=!0,c=a)}if(!o)throw new Error("Invalid Setup header: mode header not found.");if(c>63)throw new Error(`Unsupported mode count: ${c}.`);let l=c;s.pos=0,s.skipBits(i);let d=Array(l).fill(0);for(let u=l-1;u>=0;u--)s.skipBits(40),d[u]=s.readBits(1);return{modeBlockflags:d}},Us=async(n,e)=>{switch(p(n.codec),n.codec){case"avc":{let t=await n.getDecoderConfig();p(t);let r;if(t.description){let o=(me(t.description)[4]&3)+1;r=Cs(e.data,o)}else r=zt(e.data);return r.some(i=>Ut(i)===5)?"key":"delta"}case"hevc":{let t=await n.getDecoderConfig();p(t);let r;if(t.description){let o=(me(t.description)[21]&3)+1;r=Cs(e.data,o)}else r=zt(e.data);return r.some(i=>{let a=pe(i);return 16<=a&&a<=23})?"key":"delta"}case"vp8":return(e.data[0]&1)===0?"key":"delta";case"vp9":{let t=new B(e.data);if(t.readBits(2)!==2)return null;let r=t.readBits(1);return(t.readBits(1)<<1)+r===3&&t.skipBits(1),t.readBits(1)?null:t.readBits(1)===0?"key":"delta"}case"av1":{let t=!1;for(let{type:r,data:s}of Ds(e.data))if(r===1){let i=new B(s);i.skipBits(4),t=!!i.readBits(1)}else if(r===3||r===6||r===7){if(t)return"key";let i=new B(s);return i.readBits(1)?null:i.readBits(2)===0?"key":"delta"}return null}default:_t(n.codec),p(!1)}};var zs=n=>{let t=(n.hasVideo?"video/":n.hasAudio?"audio/":"application/")+(n.isQuickTime?"quicktime":"mp4");if(n.codecStrings.length>0){let r=[...new Set(n.codecStrings)];t+=`; codecs="${r.join(", ")}"`}return t};var ge=class{constructor(e){this.reader=e,this.pos=0}readBytes(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);return this.pos+=e,new Uint8Array(t.buffer,r,e)}readU8(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+1);return this.pos++,e.getUint8(t)}readU16(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+2);return this.pos+=2,e.getUint16(t,!1)}readI16(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+2);return this.pos+=2,e.getInt16(t,!1)}readU24(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+3);this.pos+=3;let r=e.getUint16(t,!1),s=e.getUint8(t+2);return r*256+s}readU32(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+4);return this.pos+=4,e.getUint32(t,!1)}readI32(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+4);return this.pos+=4,e.getInt32(t,!1)}readU64(){let e=this.readU32(),t=this.readU32();return e*4294967296+t}readI64(){let e=this.readI32(),t=this.readU32();return e*4294967296+t}readF64(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+8);return this.pos+=8,e.getFloat64(t,!1)}readFixed_16_16(){return this.readI32()/65536}readFixed_2_30(){return this.readI32()/1073741824}readAscii(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);this.pos+=e;let s="";for(let i=0;i<e;i++)s+=String.fromCharCode(t.getUint8(r+i));return s}readIsomVariableInteger(){let e=0;for(let t=0;t<4;t++){e<<=7;let r=this.readU8();if(e|=r&127,(r&128)===0)break}return e}readBoxHeader(){let e=this.readU32(),t=this.readAscii(4),r=8;return e===1&&(e=this.readU64(),r=16),{name:t,totalSize:e,headerSize:r,contentSize:e-r}}};var T;(function(n){n[n.EBML=440786851]="EBML",n[n.EBMLVersion=17030]="EBMLVersion",n[n.EBMLReadVersion=17143]="EBMLReadVersion",n[n.EBMLMaxIDLength=17138]="EBMLMaxIDLength",n[n.EBMLMaxSizeLength=17139]="EBMLMaxSizeLength",n[n.DocType=17026]="DocType",n[n.DocTypeVersion=17031]="DocTypeVersion",n[n.DocTypeReadVersion=17029]="DocTypeReadVersion",n[n.SeekHead=290298740]="SeekHead",n[n.Seek=19899]="Seek",n[n.SeekID=21419]="SeekID",n[n.SeekPosition=21420]="SeekPosition",n[n.Duration=17545]="Duration",n[n.Info=357149030]="Info",n[n.TimestampScale=2807729]="TimestampScale",n[n.MuxingApp=19840]="MuxingApp",n[n.WritingApp=22337]="WritingApp",n[n.Tracks=374648427]="Tracks",n[n.TrackEntry=174]="TrackEntry",n[n.TrackNumber=215]="TrackNumber",n[n.TrackUID=29637]="TrackUID",n[n.TrackType=131]="TrackType",n[n.FlagEnabled=185]="FlagEnabled",n[n.FlagDefault=136]="FlagDefault",n[n.FlagForced=21930]="FlagForced",n[n.FlagLacing=156]="FlagLacing",n[n.Language=2274716]="Language",n[n.CodecID=134]="CodecID",n[n.CodecPrivate=25506]="CodecPrivate",n[n.CodecDelay=22186]="CodecDelay",n[n.SeekPreRoll=22203]="SeekPreRoll",n[n.DefaultDuration=2352003]="DefaultDuration",n[n.Video=224]="Video",n[n.PixelWidth=176]="PixelWidth",n[n.PixelHeight=186]="PixelHeight",n[n.Audio=225]="Audio",n[n.SamplingFrequency=181]="SamplingFrequency",n[n.Channels=159]="Channels",n[n.BitDepth=25188]="BitDepth",n[n.Segment=408125543]="Segment",n[n.SimpleBlock=163]="SimpleBlock",n[n.BlockGroup=160]="BlockGroup",n[n.Block=161]="Block",n[n.BlockAdditions=30113]="BlockAdditions",n[n.BlockMore=166]="BlockMore",n[n.BlockAdditional=165]="BlockAdditional",n[n.BlockAddID=238]="BlockAddID",n[n.BlockDuration=155]="BlockDuration",n[n.ReferenceBlock=251]="ReferenceBlock",n[n.Cluster=524531317]="Cluster",n[n.Timestamp=231]="Timestamp",n[n.Cues=475249515]="Cues",n[n.CuePoint=187]="CuePoint",n[n.CueTime=179]="CueTime",n[n.CueTrackPositions=183]="CueTrackPositions",n[n.CueTrack=247]="CueTrack",n[n.CueClusterPosition=241]="CueClusterPosition",n[n.Colour=21936]="Colour",n[n.MatrixCoefficients=21937]="MatrixCoefficients",n[n.TransferCharacteristics=21946]="TransferCharacteristics",n[n.Primaries=21947]="Primaries",n[n.Range=21945]="Range",n[n.Projection=30320]="Projection",n[n.ProjectionType=30321]="ProjectionType",n[n.ProjectionPoseRoll=30325]="ProjectionPoseRoll",n[n.Attachments=423732329]="Attachments",n[n.Chapters=272869232]="Chapters",n[n.Tags=307544935]="Tags"})(T||(T={}));var $n=[T.EBML,T.Segment],qn=[T.EBMLMaxIDLength,T.EBMLMaxSizeLength,T.SeekHead,T.Info,T.Cluster,T.Tracks,T.Cues,T.Attachments,T.Chapters,T.Tags],Nt=[...$n,...qn];var Ms=8,Lt=2,ye=4+Ms,we=class{constructor(e){this.reader=e,this.pos=0}readBytes(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);return this.pos+=e,new Uint8Array(t.buffer,r,e)}readU8(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+1);return this.pos++,e.getUint8(t)}readS16(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+2);return this.pos+=2,e.getInt16(t,!1)}readVarIntSize(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+1),r=e.getUint8(t),s=1,i=128;for(;(r&i)===0&&s<8;)s++,i>>=1;return s}readVarInt(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+1),r=e.getUint8(t),s=1,i=128;for(;(r&i)===0&&s<Ms;)s++,i>>=1;let{view:a,offset:o}=this.reader.getViewAndOffset(this.pos,this.pos+s),c=r&i-1;for(let l=1;l<s;l++)c*=256,c+=a.getUint8(o+l);return this.pos+=s,c}readUnsignedInt(e){if(e<1||e>8)throw new Error("Bad unsigned int size "+e);let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e),s=0;for(let i=0;i<e;i++)s*=256,s+=t.getUint8(r+i);return this.pos+=e,s}readSignedInt(e){let t=this.readUnsignedInt(e);return t&1<<e*8-1&&(t-=2**(e*8)),t}readFloat(e){if(e===0)return 0;if(e!==4&&e!==8)throw new Error("Bad float size "+e);let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e),s=e===4?t.getFloat32(r,!1):t.getFloat64(r,!1);return this.pos+=e,s}readString(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);return this.pos+=e,String.fromCharCode(...new Uint8Array(t.buffer,r,e))}readElementId(){let e=this.readVarIntSize();return this.readUnsignedInt(e)}readElementSize(){let e=this.readU8();return e===255?e=null:(this.pos--,e=this.readVarInt(),e===72057594037927940&&(e=null)),e}readElementHeader(){let e=this.readElementId(),t=this.readElementSize();return{id:e,size:t}}async searchForNextElementId(e,t){let s=new Set(e);for(;this.pos<t-ye;){this.reader.rangeIsLoaded(this.pos,this.pos+ye)||await this.reader.loadRange(this.pos,Math.min(this.pos+1048576,t));let i=this.pos,a=this.readElementHeader();if(s.has(a.id))return i;be(a.size),this.pos+=a.size}return null}},$={avc:"V_MPEG4/ISO/AVC",hevc:"V_MPEGH/ISO/HEVC",vp8:"V_VP8",vp9:"V_VP9",av1:"V_AV1",aac:"A_AAC",mp3:"A_MPEG/L3",opus:"A_OPUS",vorbis:"A_VORBIS",flac:"A_FLAC","pcm-u8":"A_PCM/INT/LIT","pcm-s16":"A_PCM/INT/LIT","pcm-s16be":"A_PCM/INT/BIG","pcm-s24":"A_PCM/INT/LIT","pcm-s24be":"A_PCM/INT/BIG","pcm-s32":"A_PCM/INT/LIT","pcm-s32be":"A_PCM/INT/BIG","pcm-f32":"A_PCM/FLOAT/IEEE","pcm-f64":"A_PCM/FLOAT/IEEE",webvtt:"S_TEXT/WEBVTT"};function be(n){if(n===null)throw new Error("Undefined element size is used in a place where it is not supported.")}var Vs=n=>{let t=(n.hasVideo?"video/":n.hasAudio?"audio/":"application/")+(n.isWebM?"webm":"x-matroska");if(n.codecStrings.length>0){let r=[...new Set(n.codecStrings.filter(Boolean))];t+=`; codecs="${r.join(", ")}"`}return t};var Kn={1:[-1,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],2:[-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],3:[-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1]},Gn={1:[-1,32,48,56,64,80,96,112,128,144,160,176,192,224,256,-1],2:[-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1],3:[-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1]},Xn={0:[11025,12e3,8e3,-1],2:[22050,24e3,16e3,-1],3:[44100,48e3,32e3,-1]},Ns=1483304551,Ls=1231971951,Qn=(n,e,t,r)=>Math.floor(n===3?(12*e/t+r)*4:144*e/t+r),Hs=(n,e)=>n===3?e===3?21:36:e===3?13:21,Ws=(n,e)=>{let t=e.pos,r=n>>>24,s=n>>>16&255,i=n>>>8&255,a=n&255;if(r!==255&&s!==255&&i!==255&&a!==255)return e.pos+=4,null;if(e.pos+=1,r!==255||(s&224)!==224)return null;let o=s>>3&3,c=s>>1&3,l=i>>4&15,d=i>>2&3,u=i>>1&1,h=a>>6&3,m=a>>4&3,f=a>>3&1,w=a>>2&1,g=a&3,b=o===3?Kn[c]?.[l]:Gn[c]?.[l];if(!b||b===-1)return null;let k=b*1e3,P=Xn[o]?.[d];if(!P||P===-1)return null;let S=Qn(c,k,P,u);if(e.fileSize!==null&&e.fileSize-t<S)return null;let y;return o===3?y=c===3?384:1152:c===3?y=384:c===2?y=1152:y=576,{startPos:t,totalSize:S,mpegVersionId:o,layer:c,bitrate:k,frequencyIndex:d,sampleRate:P,channel:h,modeExtension:m,copyright:f,original:w,emphasis:g,audioSamplesInFrame:y}};var Fr=1399285583,Yn=79764919,js=new Uint32Array(256);for(let n=0;n<256;n++){let e=n<<24;for(let t=0;t<8;t++)e=e&2147483648?e<<1^Yn:e<<1;js[n]=e>>>0&4294967295}var $s=n=>{let e=G(n),t=e.getUint32(22,!0);e.setUint32(22,0,!0);let r=0;for(let s=0;s<n.length;s++){let i=n[s];r=(r<<8^js[r>>>24^i])>>>0}return e.setUint32(22,t,!0),r},qs=(n,e,t)=>{let r=0,s=null;if(n.length>0)if(e.codec==="vorbis"){p(e.vorbisInfo);let i=e.vorbisInfo.modeBlockflags.length,o=(1<<ks(i-1))-1<<1,c=(n[0]&o)>>1;if(c>=e.vorbisInfo.modeBlockflags.length)throw new Error("Invalid mode number.");let l=t,d=e.vorbisInfo.modeBlockflags[c];if(s=e.vorbisInfo.blocksizes[d],d===1){let u=(o|1)+1,h=n[0]&u?1:0;l=e.vorbisInfo.blocksizes[h]}r=l!==null?l+s>>2:0}else e.codec==="opus"&&(r=Bs(n).durationInSamples);return{durationInSamples:r,vorbisBlockSize:s}},Ks=n=>{let e="audio/ogg";if(n.codecStrings){let t=[...new Set(n.codecStrings)];e+=`; codecs="${t.join(", ")}"`}return e};var Be=27,ke=282,Gs=ke+65025,Ae=class{constructor(e){this.reader=e,this.pos=0}readBytes(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);return this.pos+=e,new Uint8Array(t.buffer,r,e)}readU8(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+1);return this.pos+=1,e.getUint8(t)}readU32(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+4);return this.pos+=4,e.getUint32(t,!0)}readI32(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+4);return this.pos+=4,e.getInt32(t,!0)}readI64(){let e=this.readU32();return this.readI32()*4294967296+e}readAscii(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);this.pos+=e;let s="";for(let i=0;i<e;i++)s+=String.fromCharCode(t.getUint8(r+i));return s}readPageHeader(){let e=this.pos;if(this.readU32()!==Fr)return null;this.pos+=1;let r=this.readU8(),s=this.readI64(),i=this.readU32(),a=this.readU32(),o=this.readU32(),c=this.readU8(),l=new Uint8Array(c);for(let m=0;m<c;m++)l[m]=this.readU8();let d=27+c,u=l.reduce((m,f)=>m+f,0),h=d+u;return{headerStartPos:e,totalSize:h,dataStartPos:e+d,dataSize:u,headerType:r,granulePosition:s,serialNumber:i,sequenceNumber:a,checksum:o,lacingValues:l}}findNextPageHeader(e){for(;this.pos<e-3;){let t=this.readU32(),r=t&255,s=t>>>8&255,i=t>>>16&255,a=t>>>24&255,o=79;if(!(r!==o&&s!==o&&i!==o&&a!==o)){if(this.pos-=4,t===Fr)return!0;this.pos+=1}}return!1}};var H=class{constructor(e){this.input=e}};var z=new Uint8Array(0),A=class n{constructor(e,t,r,s,i=-1,a){if(this.data=e,this.type=t,this.timestamp=r,this.duration=s,this.sequenceNumber=i,e===z&&a===void 0)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(a===void 0&&(a=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(t!=="key"&&t!=="delta")throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(r))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(s)||s<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(i))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(a)||a<0)throw new TypeError("byteLength must be a non-negative integer.");this.byteLength=a}get isMetadataOnly(){return this.data===z}get microsecondTimestamp(){return Math.trunc(ne*this.timestamp)}get microsecondDuration(){return Math.trunc(ne*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if(typeof EncodedAudioChunk>"u")throw new Error("Your browser does not support EncodedAudioChunk.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e){if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");let t=new Uint8Array(e.byteLength);return e.copyTo(t),new n(t,e.type,e.timestamp/1e6,(e.duration??0)/1e6)}clone(e){if(e!==void 0&&(typeof e!="object"||e===null))throw new TypeError("options, when provided, must be an object.");if(e?.timestamp!==void 0&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(e?.duration!==void 0&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");return new n(this.data,this.type,e?.timestamp??this.timestamp,e?.duration??this.duration,this.sequenceNumber,this.byteLength)}};var Qe=class n{get displayWidth(){return this.rotation%180===0?this.codedWidth:this.codedHeight}get displayHeight(){return this.rotation%180===0?this.codedHeight:this.codedWidth}get microsecondTimestamp(){return Math.trunc(ne*this.timestamp)}get microsecondDuration(){return Math.trunc(ne*this.duration)}constructor(e,t){if(this._closed=!1,e instanceof ArrayBuffer||ArrayBuffer.isView(e)){if(!t||typeof t!="object")throw new TypeError("init must be an object.");if(!("format"in t)||typeof t.format!="string")throw new TypeError("init.format must be a string.");if(!Number.isInteger(t.codedWidth)||t.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(t.codedHeight)||t.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(t.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=me(e).slice(),this.format=t.format,this.codedWidth=t.codedWidth,this.codedHeight=t.codedHeight,this.rotation=t.rotation??0,this.timestamp=t.timestamp,this.duration=t.duration??0,this.colorSpace=new VideoColorSpace(t.colorSpace)}else if(typeof VideoFrame<"u"&&e instanceof VideoFrame){if(t?.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(t?.timestamp!==void 0&&!Number.isFinite(t?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(t?.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=e,this.format=e.format,this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight,this.rotation=t?.rotation??0,this.timestamp=t?.timestamp??e.timestamp/1e6,this.duration=t?.duration??(e.duration??0)/1e6,this.colorSpace=e.colorSpace}else if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof SVGImageElement<"u"&&e instanceof SVGImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas){if(!t||typeof t!="object")throw new TypeError("init must be an object.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(t.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(typeof VideoFrame<"u")return new n(new VideoFrame(e,{timestamp:Math.trunc(t.timestamp*ne),duration:Math.trunc((t.duration??0)*ne)}),t);let r=0,s=0;if("naturalWidth"in e?(r=e.naturalWidth,s=e.naturalHeight):"videoWidth"in e?(r=e.videoWidth,s=e.videoHeight):"width"in e&&(r=Number(e.width),s=Number(e.height)),!r||!s)throw new TypeError("Could not determine dimensions.");let i=new OffscreenCanvas(r,s),a=i.getContext("2d",{alpha:!1,willReadFrequently:!0});p(a),a.drawImage(e,0,0),this._data=i,this.format="RGBX",this.codedWidth=r,this.codedHeight=s,this.rotation=t.rotation??0,this.timestamp=t.timestamp,this.duration=t.duration??0,this.colorSpace=new VideoColorSpace({matrix:"rgb",primaries:"bt709",transfer:"iec61966-2-1",fullRange:!0})}else throw new TypeError("Invalid data type: Must be a BufferSource or CanvasImageSource.")}clone(){if(this._closed)throw new Error("VideoSample is closed.");return p(this._data!==null),Xe(this._data)?new n(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation}):this._data instanceof Uint8Array?new n(this._data.slice(),{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation}):new n(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation})}close(){this._closed||(Xe(this._data)?this._data.close():this._data=null,this._closed=!0)}allocationSize(){if(this._closed)throw new Error("VideoSample is closed.");return p(this._data!==null),Xe(this._data)?this._data.allocationSize():this._data instanceof Uint8Array?this._data.byteLength:this.codedWidth*this.codedHeight*4}async copyTo(e){if(!Tr(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(this._closed)throw new Error("VideoSample is closed.");if(p(this._data!==null),Xe(this._data))await this._data.copyTo(e);else if(this._data instanceof Uint8Array)me(e).set(this._data);else{let r=this._data.getContext("2d",{alpha:!1});p(r);let s=r.getImageData(0,0,this.codedWidth,this.codedHeight);me(e).set(s.data)}}toVideoFrame(){if(this._closed)throw new Error("VideoSample is closed.");return p(this._data!==null),Xe(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace}):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}draw(e,t,r,s,i,a,o,c,l){let d=0,u=0,h=this.displayWidth,m=this.displayHeight,f=0,w=0,g=this.displayWidth,b=this.displayHeight;if(a!==void 0?(d=t,u=r,h=s,m=i,f=a,w=o,c!==void 0?(g=c,b=l):(g=h,b=m)):(f=t,w=r,s!==void 0&&(g=s,b=i)),!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!Number.isFinite(d))throw new TypeError("sx must be a number.");if(!Number.isFinite(u))throw new TypeError("sy must be a number.");if(!Number.isFinite(h)||h<0)throw new TypeError("sWidth must be a non-negative number.");if(!Number.isFinite(m)||m<0)throw new TypeError("sHeight must be a non-negative number.");if(!Number.isFinite(f))throw new TypeError("dx must be a number.");if(!Number.isFinite(w))throw new TypeError("dy must be a number.");if(!Number.isFinite(g)||g<0)throw new TypeError("dWidth must be a non-negative number.");if(!Number.isFinite(b)||b<0)throw new TypeError("dHeight must be a non-negative number.");if(this._closed)throw new Error("VideoSample is closed.");this.rotation===90?[d,u,h,m]=[u,this.codedHeight-d-h,m,h]:this.rotation===180?[d,u]=[this.codedWidth-d-h,this.codedHeight-u-m]:this.rotation===270&&([d,u,h,m]=[this.codedWidth-u-m,d,m,h]);let k=this.toCanvasImageSource();e.save();let P=f+g/2,S=w+b/2;e.translate(P,S),e.rotate(this.rotation*Math.PI/180);let y=this.rotation%180===0?1:g/b;e.scale(1/y,y),e.drawImage(k,d,u,h,m,-g/2,-b/2,g,b),e.restore()}toCanvasImageSource(){if(this._closed)throw new Error("VideoSample is closed.");if(p(this._data!==null),this._data instanceof Uint8Array){let e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}else return this._data}setRotation(e){if(![0,90,180,270].includes(e))throw new TypeError("newRotation must be 0, 90, 180, or 270.");this.rotation=e}setTimestamp(e){if(!Number.isFinite(e))throw new TypeError("newTimestamp must be a number.");this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw new TypeError("newDuration must be a non-negative number.");this.duration=e}},Xe=n=>typeof VideoFrame<"u"&&n instanceof VideoFrame;var Oe=n=>{if(!n||typeof n!="object")throw new TypeError("options must be an object.");if(n.metadataOnly!==void 0&&typeof n.metadataOnly!="boolean")throw new TypeError("options.metadataOnly, when defined, must be a boolean.");if(n.verifyKeyPackets!==void 0&&typeof n.verifyKeyPackets!="boolean")throw new TypeError("options.verifyKeyPackets, when defined, must be a boolean.");if(n.verifyKeyPackets&&n.metadataOnly)throw new TypeError("options.verifyKeyPackets and options.metadataOnly cannot be enabled together.")},xe=n=>{if(typeof n!="number"||Number.isNaN(n))throw new TypeError("timestamp must be a number.")},Dr=(n,e,t)=>t.verifyKeyPackets?e.then(async r=>{if(!r||r.type==="delta")return r;let s=await n.determinePacketType(r);return s&&(r.type=s),r}):e,Ue=class{constructor(e){if(!(e instanceof ze))throw new TypeError("track must be an InputTrack.");this._track=e}getFirstPacket(e={}){return Oe(e),Dr(this._track,this._track._backing.getFirstPacket(e),e)}getPacket(e,t={}){return xe(e),Oe(t),Dr(this._track,this._track._backing.getPacket(e,t),t)}getNextPacket(e,t={}){if(!(e instanceof A))throw new TypeError("packet must be an EncodedPacket.");return Oe(t),Dr(this._track,this._track._backing.getNextPacket(e,t),t)}async getKeyPacket(e,t={}){if(xe(e),Oe(t),!t.verifyKeyPackets)return this._track._backing.getKeyPacket(e,t);let r=await this._track._backing.getKeyPacket(e,t);return!r||r.type==="delta"?r:await this._track.determinePacketType(r)==="delta"?this.getKeyPacket(r.timestamp-1/this._track.timeResolution,t):r}async getNextKeyPacket(e,t={}){if(!(e instanceof A))throw new TypeError("packet must be an EncodedPacket.");if(Oe(t),!t.verifyKeyPackets)return this._track._backing.getNextKeyPacket(e,t);let r=await this._track._backing.getNextKeyPacket(e,t);return!r||r.type==="delta"?r:await this._track.determinePacketType(r)==="delta"?this.getNextKeyPacket(r,t):r}packets(e,t,r={}){if(e!==void 0&&!(e instanceof A))throw new TypeError("startPacket must be an EncodedPacket.");if(e!==void 0&&e.isMetadataOnly&&!r?.metadataOnly)throw new TypeError("startPacket can only be metadata-only if options.metadataOnly is enabled.");if(t!==void 0&&!(t instanceof A))throw new TypeError("endPacket must be an EncodedPacket.");Oe(r);let s=[],{promise:i,resolve:a}=V(),{promise:o,resolve:c}=V(),l=!1,d=!1,u=null,h=[],m=()=>Math.max(2,h.length);return(async()=>{let f=e??await this.getFirstPacket(r);for(;f&&!d&&!(t&&f.sequenceNumber>=t?.sequenceNumber);){if(s.length>m()){({promise:o,resolve:c}=V()),await o;continue}s.push(f),a(),{promise:i,resolve:a}=V(),f=await this.getNextPacket(f,r)}l=!0,a()})().catch(f=>{u||(u=f,a())}),{async next(){for(;;){if(d)return{value:void 0,done:!0};if(u)throw u;if(s.length>0){let f=s.shift(),w=performance.now();for(h.push(w);h.length>0&&w-h[0]>=1e3;)h.shift();return c(),{value:f,done:!1}}else{if(l)return{value:void 0,done:!0};await i}}},async return(){return d=!0,c(),a(),{value:void 0,done:!0}},async throw(f){throw f},[Symbol.asyncIterator](){return this}}}},Ar=class{constructor(e,t){this.onSample=e,this.onError=t}},Ht=class{mediaSamplesInRange(e=0,t=1/0){xe(e),xe(t);let r=[],s=!1,i=null,{promise:a,resolve:o}=V(),{promise:c,resolve:l}=V(),d=!1,u=!1,h=!1,m=null;return(async()=>{let f=new Error,w=await this._createDecoder(y=>{if(l(),y.timestamp>=t&&(u=!0),u){y.close();return}i&&(y.timestamp>e?(r.push(i),s=!0):i.close()),y.timestamp>=e&&(r.push(y),s=!0),i=s?null:y,r.length>0&&(o(),{promise:a,resolve:o}=V())},y=>{m||(y.stack=f.stack,m=y,o())}),g=this._createPacketSink(),b=await g.getKeyPacket(e,{verifyKeyPackets:!0})??await g.getFirstPacket();if(!b)return;let k=b,P;if(t<1/0){let y=await g.getPacket(t),x=y?y.type==="key"&&y.timestamp===t?y:await g.getNextKeyPacket(y,{verifyKeyPackets:!0}):null;x&&(P=x)}let S=g.packets(b,P);for(await S.next();k&&!u;){let y=Xs(r.length);if(r.length+w.getDecodeQueueSize()>y){({promise:c,resolve:l}=V()),await c;continue}w.decode(k);let x=await S.next();if(x.done)break;k=x.value}await S.return(),h||await w.flush(),w.close(),!s&&i&&r.push(i),d=!0,o()})().catch(f=>{m||(m=f,o())}),{async next(){for(;;){if(h)return{value:void 0,done:!0};if(m)throw m;if(r.length>0){let f=r.shift();return l(),{value:f,done:!1}}else if(!d)await a;else return{value:void 0,done:!0}}},async return(){h=!0,u=!0,l(),o(),i?.close();for(let f of r)f.close();return{value:void 0,done:!0}},async throw(f){throw f},[Symbol.asyncIterator](){return this}}}mediaSamplesAtTimestamps(e){ws(e);let t=ys(e),r=[],s=[],{promise:i,resolve:a}=V(),{promise:o,resolve:c}=V(),l=!1,d=!1,u=null,h=m=>{s.push(m),a(),{promise:i,resolve:a}=V()};return(async()=>{let m=new Error,f=await this._createDecoder(y=>{if(c(),d){y.close();return}let x=0;for(;r.length>0&&y.timestamp-r[0]>-1e-10;)x++,r.shift();if(x>0)for(let v=0;v<x;v++)h(v<x-1?y.clone():y);else y.close()},y=>{u||(y.stack=m.stack,u=y,a())}),w=this._createPacketSink(),g=null,b=null,k=-1,P=async()=>{p(b);let y=b;for(f.decode(y);y.sequenceNumber<k;){let x=Xs(s.length);for(;s.length+f.getDecodeQueueSize()>x&&!d;)({promise:o,resolve:c}=V()),await o;if(d)break;let v=await w.getNextPacket(y);p(v),y=v,f.decode(v)}k=-1},S=async()=>{await f.flush();for(let y=0;y<r.length;y++)h(null);r.length=0};for await(let y of t){if(xe(y),d)break;let x=await w.getPacket(y),v=x&&await w.getKeyPacket(y,{verifyKeyPackets:!0});if(!v){k!==-1&&(await P(),await S()),h(null),g=null;continue}g&&(v.sequenceNumber!==b.sequenceNumber||x.timestamp<g.timestamp)&&(await P(),await S()),r.push(x.timestamp),k=Math.max(x.sequenceNumber,k),g=x,b=v}d||(k!==-1&&await P(),await S()),f.close(),l=!0,a()})().catch(m=>{u||(u=m,a())}),{async next(){for(;;){if(d)return{value:void 0,done:!0};if(u)throw u;if(s.length>0){let m=s.shift();return p(m!==void 0),c(),{value:m,done:!1}}else if(!l)await i;else return{value:void 0,done:!0}}},async return(){d=!0,c(),a();for(let m of s)m?.close();return{value:void 0,done:!0}},async throw(m){throw m},[Symbol.asyncIterator](){return this}}}},Xs=n=>n===0?40:8,Br=class extends Ar{constructor(e,t,r,s,i,a){super(e,t),this.rotation=i,this.timeResolution=a,this.decoder=null,this.customDecoder=null,this.customDecoderCallSerializer=new vt,this.customDecoderQueueSize=0,this.sampleQueue=[];let o=l=>{if(this.sampleQueue.length>0&&l.timestamp>=U(this.sampleQueue).timestamp){for(let u of this.sampleQueue)this.finalizeAndEmitSample(u);this.sampleQueue.length=0}let d=F(this.sampleQueue,l.timestamp,u=>u.timestamp);this.sampleQueue.splice(d+1,0,l)},c=At.find(l=>l.supports(r,s));c?(this.customDecoder=new c,this.customDecoder.codec=r,this.customDecoder.config=s,this.customDecoder.onSample=l=>{if(!(l instanceof Qe))throw new TypeError("The argument passed to onSample must be a VideoSample.");o(l)},this.customDecoderCallSerializer.call(()=>this.customDecoder.init())):(this.decoder=new VideoDecoder({output:l=>o(new Qe(l)),error:t}),this.decoder.configure(s))}finalizeAndEmitSample(e){e.setTimestamp(Math.round(e.timestamp*this.timeResolution)/this.timeResolution),e.setDuration(Math.round(e.duration*this.timeResolution)/this.timeResolution),e.setRotation(this.rotation),this.onSample(e)}getDecodeQueueSize(){return this.customDecoder?this.customDecoderQueueSize:(p(this.decoder),this.decoder.decodeQueueSize)}decode(e){this.customDecoder?(this.customDecoderQueueSize++,this.customDecoderCallSerializer.call(()=>this.customDecoder.decode(e)).then(()=>this.customDecoderQueueSize--)):(p(this.decoder),this.decoder.decode(e.toEncodedVideoChunk()))}async flush(){this.customDecoder?await this.customDecoderCallSerializer.call(()=>this.customDecoder.flush()):(p(this.decoder),await this.decoder.flush());for(let e of this.sampleQueue)this.finalizeAndEmitSample(e);this.sampleQueue.length=0}close(){this.customDecoder?this.customDecoderCallSerializer.call(()=>this.customDecoder.close()):(p(this.decoder),this.decoder.close());for(let e of this.sampleQueue)e.close();this.sampleQueue.length=0}},Wt=class extends Ht{constructor(e){if(!(e instanceof X))throw new TypeError("videoTrack must be an InputVideoTrack.");super(),this._videoTrack=e}async _createDecoder(e,t){if(!await this._videoTrack.canDecode())throw new Error("This video track cannot be decoded by this browser. Make sure to check decodability before using a track.");let r=this._videoTrack.codec,s=this._videoTrack.rotation,i=await this._videoTrack.getDecoderConfig(),a=this._videoTrack.timeResolution;return p(r&&i),new Br(e,t,r,i,s,a)}_createPacketSink(){return new Ue(this._videoTrack)}async getSample(e){xe(e);for await(let t of this.mediaSamplesAtTimestamps([e]))return t;throw new Error("Internal error: Iterator returned nothing.")}samples(e=0,t=1/0){return this.mediaSamplesInRange(e,t)}samplesAtTimestamps(e){return this.mediaSamplesAtTimestamps(e)}},Ye=class{constructor(e,t={}){if(this._nextCanvasIndex=0,!(e instanceof X))throw new TypeError("videoTrack must be an InputVideoTrack.");if(t&&typeof t!="object")throw new TypeError("options must be an object.");if(t.width!==void 0&&(!Number.isInteger(t.width)||t.width<=0))throw new TypeError("options.width, when defined, must be a positive integer.");if(t.height!==void 0&&(!Number.isInteger(t.height)||t.height<=0))throw new TypeError("options.height, when defined, must be a positive integer.");if(t.fit!==void 0&&!["fill","contain","cover"].includes(t.fit))throw new TypeError('options.fit, when provided, must be one of "fill", "contain", or "cover".');if(t.width!==void 0&&t.height!==void 0&&t.fit===void 0)throw new TypeError("When both options.width and options.height are provided, options.fit must also be provided.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180 or 270.");if(t.poolSize!==void 0&&(typeof t.poolSize!="number"||!Number.isInteger(t.poolSize)||t.poolSize<0))throw new TypeError("poolSize must be a non-negative integer.");let r=t.rotation??e.rotation,[s,i]=r%180===0?[e.codedWidth,e.codedHeight]:[e.codedHeight,e.codedWidth],a=s/i;t.width!==void 0&&t.height===void 0?(s=t.width,i=Math.round(s/a)):t.width===void 0&&t.height!==void 0?(i=t.height,s=Math.round(i*a)):t.width!==void 0&&t.height!==void 0&&(s=t.width,i=t.height),this._videoTrack=e,this._width=s,this._height=i,this._rotation=r,this._fit=t.fit??"fill",this._videoSampleSink=new Wt(e),this._canvasPool=Array.from({length:t.poolSize??0},()=>null)}_videoSampleToWrappedCanvas(e){let t=this._canvasPool[this._nextCanvasIndex];t||(typeof document<"u"?(t=document.createElement("canvas"),t.width=this._width,t.height=this._height):t=new OffscreenCanvas(this._width,this._height),this._canvasPool.length>0&&(this._canvasPool[this._nextCanvasIndex]=t)),this._canvasPool.length>0&&(this._nextCanvasIndex=(this._nextCanvasIndex+1)%this._canvasPool.length);let r=t.getContext("2d",{alpha:!1});p(r),r.resetTransform();let s,i,a,o;if(this._fit==="fill")s=0,i=0,a=this._width,o=this._height;else{let[d,u]=this._rotation%180===0?[e.codedWidth,e.codedHeight]:[e.codedHeight,e.codedWidth],h=this._fit==="contain"?Math.min(this._width/d,this._height/u):Math.max(this._width/d,this._height/u);a=d*h,o=u*h,s=(this._width-a)/2,i=(this._height-o)/2}let c=this._rotation%180===0?1:a/o;r.translate(this._width/2,this._height/2),r.rotate(this._rotation*Math.PI/180),r.scale(1/c,c),r.translate(-this._width/2,-this._height/2),r.drawImage(e.toCanvasImageSource(),s,i,a,o);let l={canvas:t,timestamp:e.timestamp,duration:e.duration};return e.close(),l}async getCanvas(e){xe(e);let t=await this._videoSampleSink.getSample(e);return t&&this._videoSampleToWrappedCanvas(t)}canvases(e=0,t=1/0){return Rr(this._videoSampleSink.samples(e,t),r=>this._videoSampleToWrappedCanvas(r))}canvasesAtTimestamps(e){return Rr(this._videoSampleSink.samplesAtTimestamps(e),t=>t&&this._videoSampleToWrappedCanvas(t))}};var ze=class{constructor(e){this._backing=e}isVideoTrack(){return this instanceof X}isAudioTrack(){return this instanceof M}get id(){return this._backing.getId()}get languageCode(){return this._backing.getLanguageCode()}get timeResolution(){return this._backing.getTimeResolution()}getFirstTimestamp(){return this._backing.getFirstTimestamp()}computeDuration(){return this._backing.computeDuration()}async computePacketStats(e=1/0){let t=new Ue(this),r=1/0,s=-1/0,i=0,a=0;for await(let o of t.packets(void 0,void 0,{metadataOnly:!0})){if(i>=e&&o.timestamp>=s)break;r=Math.min(r,o.timestamp),s=Math.max(s,o.timestamp+o.duration),i++,a+=o.byteLength}return{packetCount:i,averagePacketRate:i?Number((i/(s-r)).toPrecision(16)):0,averageBitrate:i?Number((8*a/(s-r)).toPrecision(16)):0}}},X=class extends ze{constructor(e){super(e),this._backing=e}get type(){return"video"}get codec(){return this._backing.getCodec()}get codedWidth(){return this._backing.getCodedWidth()}get codedHeight(){return this._backing.getCodedHeight()}get rotation(){return this._backing.getRotation()}get displayWidth(){return this._backing.getRotation()%180===0?this._backing.getCodedWidth():this._backing.getCodedHeight()}get displayHeight(){return this._backing.getRotation()%180===0?this._backing.getCodedHeight():this._backing.getCodedWidth()}getColorSpace(){return this._backing.getColorSpace()}async hasHighDynamicRange(){let e=await this._backing.getColorSpace();return e.primaries==="bt2020"||e.primaries==="smpte432"||e.transfer==="pg"||e.transfer==="hlg"||e.matrix==="bt2020-ncl"}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=this._backing.getCodec();return p(t!==null),At.some(s=>s.supports(t,e))?!0:typeof VideoDecoder>"u"?!1:(await VideoDecoder.isConfigSupported(e)).supported===!0}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof A))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("packet must not be metadata-only to determine its type.");return this.codec===null?null:Us(this,e)}},M=class extends ze{constructor(e){super(e),this._backing=e}get type(){return"audio"}get codec(){return this._backing.getCodec()}get numberOfChannels(){return this._backing.getNumberOfChannels()}get sampleRate(){return this._backing.getSampleRate()}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=this._backing.getCodec();return p(t!==null),Ir.some(r=>r.supports(t,e))||e.codec.startsWith("pcm-")?!0:typeof AudioDecoder>"u"?!1:(await AudioDecoder.isConfigSupported(e)).supported===!0}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof A))throw new TypeError("packet must be an EncodedPacket.");return this.codec===null?null:"key"}};var W=class{constructor(e,t=1/0){this.source=e,this.maxStorableBytes=t,this.loadedSegments=[],this.loadingSegments=[],this.sourceSizePromise=null,this.nextAge=0,this.totalStoredBytes=0}async loadRange(e,t){if(t=Math.min(t,await this.source.getSize()),e>=t)return;let r=this.loadingSegments.find(c=>c.start<=e&&c.end>=t);if(r){await r.promise;return}let s=F(this.loadedSegments,e,c=>c.start);if(s!==-1)for(let c=s;c<this.loadedSegments.length;c++){let l=this.loadedSegments[c];if(l.start>e)break;if(l.end>=t)return}this.source.onread?.(e,t);let i=this.source._read(e,t),a={start:e,end:t,promise:i};this.loadingSegments.push(a);let o=await i;gs(this.loadingSegments,a),this.insertIntoLoadedSegments(e,o)}rangeIsLoaded(e,t){if(t<=e)return!0;let r=F(this.loadedSegments,e,s=>s.start);if(r===-1)return!1;for(let s=r;s<this.loadedSegments.length;s++){let i=this.loadedSegments[s];if(i.start>e)break;if(i.end>=t)return!0}return!1}insertIntoLoadedSegments(e,t){let r={start:e,end:e+t.byteLength,bytes:t,view:new DataView(t.buffer),age:this.nextAge++},s=F(this.loadedSegments,e,i=>i.start);(s===-1||this.loadedSegments[s].start<r.start)&&s++,this.loadedSegments.splice(s,0,r),this.totalStoredBytes+=t.byteLength;for(let i=s+1;i<this.loadedSegments.length;i++){let a=this.loadedSegments[i];if(a.start>=r.end)break;r.start<=a.start&&a.end<=r.end&&(this.loadedSegments.splice(i,1),i--)}for(;this.totalStoredBytes>this.maxStorableBytes&&this.loadedSegments.length>1;){let i=null,a=-1;for(let o=0;o<this.loadedSegments.length;o++){let c=this.loadedSegments[o];(!i||c.age<i.age)&&(i=c,a=o)}p(i),this.totalStoredBytes-=i.bytes.byteLength,this.loadedSegments.splice(a,1)}}getViewAndOffset(e,t){let r=F(this.loadedSegments,e,i=>i.start),s=null;if(r!==-1)for(let i=r;i<this.loadedSegments.length;i++){let a=this.loadedSegments[i];if(a.start>e)break;if(t<=a.end){s=a;break}}if(!s)throw new Error(`No segment loaded for range [${e}, ${t}).`);return s.age=this.nextAge++,{view:s.view,offset:s.bytes.byteOffset+e-s.start}}forgetRange(e,t){if(t<=e)return;let r=F(this.loadedSegments,e,i=>i.start);if(r===-1)return;let s=this.loadedSegments[r];s.start!==e||s.end!==t||(this.loadedSegments.splice(r,1),this.totalStoredBytes-=s.bytes.byteLength)}};var Se=class{constructor(e){this.reader=e,this.pos=0,this.littleEndian=!0}readBytes(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);return this.pos+=e,new Uint8Array(t.buffer,r,e)}readU16(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+2);return this.pos+=2,e.getUint16(t,this.littleEndian)}readU32(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+4);return this.pos+=4,e.getUint32(t,this.littleEndian)}readU64(){let e,t;return this.littleEndian?(e=this.readU32(),t=this.readU32()):(t=this.readU32(),e=this.readU32()),t*4294967296+e}readAscii(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);this.pos+=e;let s="";for(let i=0;i<e;i++)s+=String.fromCharCode(t.getUint8(r+i));return s}};var ee;(function(n){n[n.PCM=1]="PCM",n[n.IEEE_FLOAT=3]="IEEE_FLOAT",n[n.ALAW=6]="ALAW",n[n.MULAW=7]="MULAW",n[n.EXTENSIBLE=65534]="EXTENSIBLE"})(ee||(ee={}));var jt=class extends H{constructor(e){super(e),this.metadataPromise=null,this.dataStart=-1,this.dataSize=-1,this.audioInfo=null,this.tracks=[],this.metadataReader=new Se(e._mainReader),this.chunkReader=new Se(new W(e.source,64*2**20))}async readMetadata(){return this.metadataPromise??=(async()=>{let e=await this.metadataReader.reader.source.getSize(),t=this.metadataReader.readAscii(4);this.metadataReader.littleEndian=t!=="RIFX";let r=t==="RF64",s=this.metadataReader.readU32(),i=r?e:Math.min(s+8,e);if(this.metadataReader.readAscii(4)!=="WAVE")throw new Error("Invalid WAVE file - wrong format");this.metadataReader.pos=12;let o=0,c=null;for(;this.metadataReader.pos<i;){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+8);let d=this.metadataReader.readAscii(4),u=this.metadataReader.readU32(),h=this.metadataReader.pos;if(r&&o===0&&d!=="ds64")throw new Error('Invalid RF64 file: First chunk must be "ds64".');if(d==="fmt ")await this.parseFmtChunk(u);else if(d==="data")c??=u,this.dataStart=this.metadataReader.pos,this.dataSize=Math.min(c,i-this.dataStart);else if(d==="ds64"){let m=this.metadataReader.readU64();c=this.metadataReader.readU64(),i=Math.min(m+8,e)}this.metadataReader.pos=h+u+(u&1),o++}if(!this.audioInfo)throw new Error('Invalid WAVE file - missing "fmt " chunk');if(this.dataStart===-1)throw new Error('Invalid WAVE file - missing "data" chunk');let l=this.audioInfo.blockSizeInBytes;this.dataSize=Math.floor(this.dataSize/l)*l,this.tracks.push(new M(new Or(this)))})()}async parseFmtChunk(e){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+e);let t=this.metadataReader.readU16(),r=this.metadataReader.readU16(),s=this.metadataReader.readU32();this.metadataReader.pos+=4;let i=this.metadataReader.readU16(),a;if(e===14?a=8:a=this.metadataReader.readU16(),e>=18&&t!==357){let o=this.metadataReader.readU16(),c=e-18;if(Math.min(c,o)>=22&&t===ee.EXTENSIBLE){this.metadataReader.pos+=6;let d=this.metadataReader.readBytes(16);t=d[0]|d[1]<<8}}(t===ee.MULAW||t===ee.ALAW)&&(a=8),this.audioInfo={format:t,numberOfChannels:r,sampleRate:s,sampleSizeInBytes:Math.ceil(a/8),blockSizeInBytes:i}}getCodec(){if(p(this.audioInfo),this.audioInfo.format===ee.MULAW)return"ulaw";if(this.audioInfo.format===ee.ALAW)return"alaw";if(this.audioInfo.format===ee.PCM){if(this.audioInfo.sampleSizeInBytes===1)return"pcm-u8";if(this.audioInfo.sampleSizeInBytes===2)return"pcm-s16";if(this.audioInfo.sampleSizeInBytes===3)return"pcm-s24";if(this.audioInfo.sampleSizeInBytes===4)return"pcm-s32"}return this.audioInfo.format===ee.IEEE_FLOAT&&this.audioInfo.sampleSizeInBytes===4?"pcm-f32":null}async getMimeType(){return"audio/wav"}async computeDuration(){return await this.readMetadata(),p(this.audioInfo),this.dataSize/this.audioInfo.blockSizeInBytes/this.audioInfo.sampleRate}async getTracks(){return await this.readMetadata(),this.tracks}},Me=2048,Or=class{constructor(e){this.demuxer=e}getId(){return 1}getCodec(){return this.demuxer.getCodec()}async getDecoderConfig(){let e=this.demuxer.getCodec();return e?(p(this.demuxer.audioInfo),{codec:e,numberOfChannels:this.demuxer.audioInfo.numberOfChannels,sampleRate:this.demuxer.audioInfo.sampleRate}):null}computeDuration(){return this.demuxer.computeDuration()}getNumberOfChannels(){return p(this.demuxer.audioInfo),this.demuxer.audioInfo.numberOfChannels}getSampleRate(){return p(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getTimeResolution(){return p(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getLanguageCode(){return L}async getFirstTimestamp(){return 0}async getPacketAtIndex(e,t){p(this.demuxer.audioInfo);let r=e*Me*this.demuxer.audioInfo.blockSizeInBytes;if(r>=this.demuxer.dataSize)return null;let s=Math.min(Me*this.demuxer.audioInfo.blockSizeInBytes,this.demuxer.dataSize-r),i;if(t.metadataOnly)i=z;else{let c=Me*this.demuxer.audioInfo.blockSizeInBytes,l=Math.ceil(2**19/c)*c,d=Math.floor(r/l)*l,u=d+l;await this.demuxer.chunkReader.reader.loadRange(this.demuxer.dataStart+d,this.demuxer.dataStart+u),this.demuxer.chunkReader.pos=this.demuxer.dataStart+r,i=this.demuxer.chunkReader.readBytes(s)}let a=e*Me/this.demuxer.audioInfo.sampleRate,o=s/this.demuxer.audioInfo.blockSizeInBytes/this.demuxer.audioInfo.sampleRate;return new A(i,"key",a,o,e,s)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}getPacket(e,t){p(this.demuxer.audioInfo);let r=Math.floor(e*this.demuxer.audioInfo.sampleRate/Me);return this.getPacketAtIndex(r,t)}getNextPacket(e,t){p(this.demuxer.audioInfo);let r=Math.round(e.timestamp*this.demuxer.audioInfo.sampleRate/Me);return this.getPacketAtIndex(r+1,t)}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}};var Te=class{constructor(){this._sizePromise=null,this.onread=null}getSize(){return this._sizePromise??=this._retrieveSize()}};var Ze=class extends Te{constructor(e){if(!(e instanceof Blob))throw new TypeError("blob must be a Blob.");super(),this._blob=e}async _read(e,t){let s=await this._blob.slice(e,t).arrayBuffer();return new Uint8Array(s)}async _retrieveSize(){return this._blob.size}},Je=class extends Te{constructor(e,t={}){if(typeof e!="string"&&!(e instanceof URL))throw new TypeError("url must be a string or URL.");if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.requestInit!==void 0&&(!t.requestInit||typeof t.requestInit!="object"))throw new TypeError("options.requestInit, when provided, must be an object.");if(t.getRetryDelay!==void 0&&typeof t.getRetryDelay!="function")throw new TypeError("options.getRetryDelay, when provided, must be a function.");super(),this._fullData=null,this._url=e,this._options=t}async _makeRequest(e){let t={};e&&(t.Range=`bytes=${e.start}-${e.end-1}`);let r=await Dt(this._url,Ge(this._options.requestInit??{},{method:"GET",headers:t}),this._options.getRetryDelay??(()=>null));if(!r.ok)throw new Error(`Error fetching ${this._url}: ${r.status} ${r.statusText}`);let s=await r.arrayBuffer();return r.status===200&&(this._fullData=s),{response:s,statusCode:r.status}}async _read(e,t){if(this._fullData)return new Uint8Array(this._fullData,e,t-e);let{response:r,statusCode:s}=await this._makeRequest({start:e,end:t});return s===200?new Uint8Array(r).subarray(e,t):new Uint8Array(r)}async _retrieveSize(){if(this._fullData)return this._fullData.byteLength;try{let r=await Dt(this._url,Ge(this._options.requestInit??{},{method:"HEAD"}),this._options.getRetryDelay??(()=>null));if(r.ok){let s=r.headers.get("Content-Length");if(s)return parseInt(s)}}catch{}let e=await Dt(this._url,Ge(this._options.requestInit??{},{method:"GET",headers:{Range:"bytes=0-0"}}),this._options.getRetryDelay??(()=>null));if(e.status===206){let r=e.headers.get("Content-Range");if(r){let s=r.match(/bytes \d+-\d+\/(\d+)/);if(s&&s[1])return parseInt(s[1])}}else if(e.status===200)return this._fullData=await e.arrayBuffer(),this._fullData.byteLength;let{response:t}=await this._makeRequest();return t.byteLength}};var qt=class extends H{constructor(e){super(e),this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.isQuickTime=!1,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.fragments=[],this.currentFragment=null,this.fragmentLookupMutex=new se,this.metadataReader=new ge(e._mainReader),this.chunkReader=new ge(new W(e.source,64*2**20))}async computeDuration(){let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.tracks.map(e=>e.inputTrack)}async getMimeType(){await this.readMetadata();let e=await Promise.all(this.tracks.map(t=>t.inputTrack.getCodecParameterString()));return zs({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(t=>t.info?.type==="video"),hasAudio:this.tracks.some(t=>t.info?.type==="audio"),codecStrings:e.filter(Boolean)})}readMetadata(){return this.metadataPromise??=(async()=>{let e=await this.metadataReader.reader.source.getSize();for(;this.metadataReader.pos<e;){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+16);let t=this.metadataReader.pos,r=this.metadataReader.readBoxHeader();if(r.name==="ftyp"){let s=this.metadataReader.readAscii(4);this.isQuickTime=s==="qt "}else if(r.name==="moov"){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+r.contentSize),this.readContiguousBoxes(r.contentSize);for(let s of this.tracks){let i=s.editListPreviousSegmentDurations/this.movieTimescale;s.editListOffset-=Math.round(i*s.timescale)}break}this.metadataReader.pos=t+r.totalSize}if(this.isFragmented){await this.metadataReader.reader.loadRange(e-4,e),this.metadataReader.pos=e-4;let t=this.metadataReader.readU32(),r=e-t;if(r>=0&&r<e){await this.metadataReader.reader.loadRange(r,e),this.metadataReader.pos=r;let s=this.metadataReader.readBoxHeader();s.name==="mfra"&&this.readContiguousBoxes(s.contentSize)}}})()}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;let t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};if(e.sampleTable=t,this.metadataReader.pos=e.sampleTableByteOffset,this.currentTrack=e,this.traverseBox(),this.currentTrack=null,e.info?.type==="audio"&&e.info.codec&&De.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0){p(e.info?.type==="audio");let s=vs(e.info.codec),i=[],a=[];for(let o=0;o<t.sampleToChunk.length;o++){let c=t.sampleToChunk[o],l=t.sampleToChunk[o+1],d=(l?l.startChunkIndex:t.chunkOffsets.length)-c.startChunkIndex;for(let u=0;u<d;u++){let h=c.startSampleIndex+u*c.samplesPerChunk,m=h+c.samplesPerChunk,f=F(t.sampleTimingEntries,h,v=>v.startIndex),w=t.sampleTimingEntries[f],g=F(t.sampleTimingEntries,m,v=>v.startIndex),b=t.sampleTimingEntries[g],k=w.startDecodeTimestamp+(h-w.startIndex)*w.delta,S=b.startDecodeTimestamp+(m-b.startIndex)*b.delta-k,y=U(i);y&&y.delta===S?y.count++:i.push({startIndex:c.startChunkIndex+u,startDecodeTimestamp:k,count:1,delta:S});let x=c.samplesPerChunk*s.sampleSize*e.info.numberOfChannels;a.push(x)}c.startSampleIndex=c.startChunkIndex,c.samplesPerChunk=1}t.sampleTimingEntries=i,t.sampleSizes=a}if(t.sampleCompositionTimeOffsets.length>0){t.presentationTimestamps=[];for(let s of t.sampleTimingEntries)for(let i=0;i<s.count;i++)t.presentationTimestamps.push({presentationTimestamp:s.startDecodeTimestamp+i*s.delta,sampleIndex:s.startIndex+i});for(let s of t.sampleCompositionTimeOffsets)for(let i=0;i<s.count;i++){let a=s.startIndex+i,o=t.presentationTimestamps[a];o&&(o.presentationTimestamp+=s.offset)}t.presentationTimestamps.sort((s,i)=>s.presentationTimestamp-i.presentationTimestamp),t.presentationTimestampIndexMap=Array(t.presentationTimestamps.length).fill(-1);for(let s=0;s<t.presentationTimestamps.length;s++)t.presentationTimestampIndexMap[t.presentationTimestamps[s].sampleIndex]=s}return t}async readFragment(){let e=this.metadataReader.pos;await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+16);let t=this.metadataReader.readBoxHeader();p(t.name==="moof");let r=this.metadataReader.pos;await this.metadataReader.reader.loadRange(r,r+t.contentSize),this.metadataReader.pos=e,this.traverseBox();let s=D(this.fragments,e,a=>a.moofOffset);p(s!==-1);let i=this.fragments[s];p(i.moofOffset===e),this.metadataReader.reader.forgetRange(r,r+t.contentSize);for(let[a,o]of i.trackData){if(o.startTimestampIsFinal)continue;let c=this.tracks.find(m=>m.id===a);this.metadataReader.pos=0;let l=null,d=null,u=F(c.fragments,e-1,m=>m.moofOffset);u!==-1&&(l=c.fragments[u],d=l,this.metadataReader.pos=l.moofOffset+l.moofSize);let h=this.metadataReader.pos===0;for(;this.metadataReader.pos<e;){if(l?.nextFragment)l=l.nextFragment,this.metadataReader.pos=l.moofOffset+l.moofSize;else{await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+16);let m=this.metadataReader.pos,f=this.metadataReader.readBoxHeader();if(f.name==="moof"){let w=D(this.fragments,m,b=>b.moofOffset),g;w===-1?(this.metadataReader.pos=m,g=await this.readFragment()):g=this.fragments[w],l&&(l.nextFragment=g),l=g,h&&(g.isKnownToBeFirstFragment=!0,h=!1)}this.metadataReader.pos=m+f.totalSize}l&&l.trackData.has(a)&&(d=l)}if(d){let m=d.trackData.get(a);p(m.startTimestampIsFinal),Ys(o,m.endTimestamp)}o.startTimestampIsFinal=!0}return i}readContiguousBoxes(e){let t=this.metadataReader.pos;for(;this.metadataReader.pos-t<=e-8;)this.traverseBox()}traverseBox(){let e=this.metadataReader.pos,t=this.metadataReader.readBoxHeader(),r=e+t.totalSize;switch(t.name){case"mdia":case"minf":case"dinf":case"mfra":case"edts":this.readContiguousBoxes(t.contentSize);break;case"mvhd":{let s=this.metadataReader.readU8();this.metadataReader.pos+=3,s===1?(this.metadataReader.pos+=16,this.movieTimescale=this.metadataReader.readU32(),this.movieDurationInTimescale=this.metadataReader.readU64()):(this.metadataReader.pos+=8,this.movieTimescale=this.metadataReader.readU32(),this.movieDurationInTimescale=this.metadataReader.readU32())}break;case"trak":{let s={id:-1,demuxer:this,inputTrack:null,info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,rotation:0,languageCode:L,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:null,currentFragmentState:null,fragments:[],fragmentsWithKeyFrame:[],editListPreviousSegmentDurations:0,editListOffset:0};if(this.currentTrack=s,this.readContiguousBoxes(t.contentSize),s.id!==-1&&s.timescale!==-1&&s.info!==null){if(s.info.type==="video"&&s.info.width!==-1){let i=s;s.inputTrack=new X(new Ur(i)),this.tracks.push(s)}else if(s.info.type==="audio"&&s.info.numberOfChannels!==-1){let i=s;s.inputTrack=new M(new zr(i)),this.tracks.push(s)}}this.currentTrack=null}break;case"tkhd":{let s=this.currentTrack;p(s);let i=this.metadataReader.readU8();if(!((this.metadataReader.readU24()&1)!==0))break;if(i===0)this.metadataReader.pos+=8,s.id=this.metadataReader.readU32(),this.metadataReader.pos+=4,s.durationInMovieTimescale=this.metadataReader.readU32();else if(i===1)this.metadataReader.pos+=16,s.id=this.metadataReader.readU32(),this.metadataReader.pos+=4,s.durationInMovieTimescale=this.metadataReader.readU64();else throw new Error(`Incorrect track header version ${i}.`);this.metadataReader.pos+=16;let c=[this.metadataReader.readFixed_16_16(),this.metadataReader.readFixed_16_16(),this.metadataReader.readFixed_2_30(),this.metadataReader.readFixed_16_16(),this.metadataReader.readFixed_16_16(),this.metadataReader.readFixed_2_30(),this.metadataReader.readFixed_16_16(),this.metadataReader.readFixed_16_16(),this.metadataReader.readFixed_2_30()],l=Ct(bs(ri(c),90));p(l===0||l===90||l===180||l===270),s.rotation=l}break;case"elst":{let s=this.currentTrack;p(s);let i=this.metadataReader.readU8();this.metadataReader.pos+=3;let a=!1,o=0,c=this.metadataReader.readU32();for(let l=0;l<c;l++){let d=i===1?this.metadataReader.readU64():this.metadataReader.readU32(),u=i===1?this.metadataReader.readI64():this.metadataReader.readI32(),h=this.metadataReader.readFixed_16_16();if(d!==0){if(a){console.warn("Unsupported edit list: multiple edits are not currently supported. Only using first edit.");break}if(u===-1){o+=d;continue}if(h!==1){console.warn("Unsupported edit list entry: media rate must be 1.");break}s.editListPreviousSegmentDurations=o,s.editListOffset=u,a=!0}}}break;case"mdhd":{let s=this.currentTrack;p(s);let i=this.metadataReader.readU8();this.metadataReader.pos+=3,i===0?(this.metadataReader.pos+=8,s.timescale=this.metadataReader.readU32(),s.durationInMediaTimescale=this.metadataReader.readU32()):i===1&&(this.metadataReader.pos+=16,s.timescale=this.metadataReader.readU32(),s.durationInMediaTimescale=this.metadataReader.readU64());let a=this.metadataReader.readU16();if(a>0){s.languageCode="";for(let o=0;o<3;o++)s.languageCode=String.fromCharCode(96+(a&31))+s.languageCode,a>>=5;Ft(s.languageCode)||(s.languageCode=L)}}break;case"hdlr":{let s=this.currentTrack;p(s),this.metadataReader.pos+=8;let i=this.metadataReader.readAscii(4);i==="vide"?s.info={type:"video",width:-1,height:-1,codec:null,codecDescription:null,colorSpace:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null}:i==="soun"&&(s.info={type:"audio",numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null})}break;case"stbl":{let s=this.currentTrack;p(s),s.sampleTableByteOffset=e,this.readContiguousBoxes(t.contentSize)}break;case"stsd":{let s=this.currentTrack;if(p(s),s.info===null||s.sampleTable)break;let i=this.metadataReader.readU8();this.metadataReader.pos+=3;let a=this.metadataReader.readU32();for(let o=0;o<a;o++){let c=this.metadataReader.pos,l=this.metadataReader.readBoxHeader(),d=l.name.toLowerCase();if(s.info.type==="video")d==="avc1"?s.info.codec="avc":d==="hvc1"||d==="hev1"?s.info.codec="hevc":d==="vp08"?s.info.codec="vp8":d==="vp09"?s.info.codec="vp9":d==="av01"?s.info.codec="av1":console.warn(`Unsupported video codec (sample entry type '${l.name}').`),this.metadataReader.pos+=24,s.info.width=this.metadataReader.readU16(),s.info.height=this.metadataReader.readU16(),this.metadataReader.pos+=50,this.readContiguousBoxes(c+l.totalSize-this.metadataReader.pos);else{d==="mp4a"||(d==="opus"?s.info.codec="opus":d==="flac"?s.info.codec="flac":d==="twos"||d==="sowt"||d==="raw "||d==="in24"||d==="in32"||d==="fl32"||d==="fl64"||d==="lpcm"||d==="ipcm"||d==="fpcm"||(d==="ulaw"?s.info.codec="ulaw":d==="alaw"?s.info.codec="alaw":console.warn(`Unsupported audio codec (sample entry type '${l.name}').`))),this.metadataReader.pos+=8;let u=this.metadataReader.readU16();this.metadataReader.pos+=6;let h=this.metadataReader.readU16(),m=this.metadataReader.readU16();this.metadataReader.pos+=4;let f=this.metadataReader.readU32()/65536;if(i===0&&u>0){if(u===1)this.metadataReader.pos+=4,m=8*this.metadataReader.readU32(),this.metadataReader.pos+=8;else if(u===2){this.metadataReader.pos+=4,f=this.metadataReader.readF64(),h=this.metadataReader.readU32(),this.metadataReader.pos+=4,m=this.metadataReader.readU32();let w=this.metadataReader.readU32();if(this.metadataReader.pos+=8,d==="lpcm"){let g=m+7>>3,b=!!(w&1),k=!!(w&2),P=w&4?-1:0;m>0&&m<=64&&(b?m===32&&(s.info.codec=k?"pcm-f32be":"pcm-f32"):P&1<<g-1?g===1?s.info.codec="pcm-s8":g===2?s.info.codec=k?"pcm-s16be":"pcm-s16":g===3?s.info.codec=k?"pcm-s24be":"pcm-s24":g===4&&(s.info.codec=k?"pcm-s32be":"pcm-s32"):g===1&&(s.info.codec="pcm-u8")),s.info.codec===null&&console.warn("Unsupported PCM format.")}}}s.info.numberOfChannels=h,s.info.sampleRate=f,d==="twos"?m===8?s.info.codec="pcm-s8":m===16?s.info.codec="pcm-s16be":(console.warn(`Unsupported sample size ${m} for codec 'twos'.`),s.info.codec=null):d==="sowt"?m===8?s.info.codec="pcm-s8":m===16?s.info.codec="pcm-s16":(console.warn(`Unsupported sample size ${m} for codec 'sowt'.`),s.info.codec=null):d==="raw "?s.info.codec="pcm-u8":d==="in24"?s.info.codec="pcm-s24be":d==="in32"?s.info.codec="pcm-s32be":d==="fl32"?s.info.codec="pcm-f32be":d==="fl64"?s.info.codec="pcm-f64be":d==="ipcm"?s.info.codec="pcm-s16be":d==="fpcm"&&(s.info.codec="pcm-f32be"),this.readContiguousBoxes(c+l.totalSize-this.metadataReader.pos)}}}break;case"avcC":{let s=this.currentTrack;p(s&&s.info),s.info.codecDescription=this.metadataReader.readBytes(t.contentSize)}break;case"hvcC":{let s=this.currentTrack;p(s&&s.info),s.info.codecDescription=this.metadataReader.readBytes(t.contentSize)}break;case"vpcC":{let s=this.currentTrack;p(s&&s.info?.type==="video"),this.metadataReader.pos+=4;let i=this.metadataReader.readU8(),a=this.metadataReader.readU8(),o=this.metadataReader.readU8(),c=o>>4,l=o>>1&7,d=o&1,u=this.metadataReader.readU8(),h=this.metadataReader.readU8(),m=this.metadataReader.readU8();s.info.vp9CodecInfo={profile:i,level:a,bitDepth:c,chromaSubsampling:l,videoFullRangeFlag:d,colourPrimaries:u,transferCharacteristics:h,matrixCoefficients:m}}break;case"av1C":{let s=this.currentTrack;p(s&&s.info?.type==="video"),this.metadataReader.pos+=1;let i=this.metadataReader.readU8(),a=i>>5,o=i&31,c=this.metadataReader.readU8(),l=c>>7,d=c>>6&1,u=c>>5&1,h=c>>4&1,m=c>>3&1,f=c>>2&1,w=c&3,g=a==2&&d?u?12:10:d?10:8;s.info.av1CodecInfo={profile:a,level:o,tier:l,bitDepth:g,monochrome:h,chromaSubsamplingX:m,chromaSubsamplingY:f,chromaSamplePosition:w}}break;case"colr":{let s=this.currentTrack;if(p(s&&s.info?.type==="video"),this.metadataReader.readAscii(4)!=="nclx")break;let a=this.metadataReader.readU16(),o=this.metadataReader.readU16(),c=this.metadataReader.readU16(),l=!!(this.metadataReader.readU8()&128);s.info.colorSpace={primaries:Pt[a],transfer:Rt[o],matrix:It[c],fullRange:l}}break;case"wave":this.readContiguousBoxes(t.contentSize);break;case"esds":{let s=this.currentTrack;p(s&&s.info?.type==="audio"),this.metadataReader.pos+=4;let i=this.metadataReader.readU8();p(i===3),this.metadataReader.readIsomVariableInteger(),this.metadataReader.pos+=2;let a=this.metadataReader.readU8(),o=(a&128)!==0,c=(a&64)!==0,l=(a&32)!==0;if(o&&(this.metadataReader.pos+=2),c){let f=this.metadataReader.readU8();this.metadataReader.pos+=f}l&&(this.metadataReader.pos+=2);let d=this.metadataReader.readU8();p(d===4);let u=this.metadataReader.readIsomVariableInteger(),h=this.metadataReader.pos,m=this.metadataReader.readU8();if(m===64||m===103?(s.info.codec="aac",s.info.aacCodecInfo={isMpeg2:m===103}):m===105||m===107?s.info.codec="mp3":m===221?s.info.codec="vorbis":console.warn(`Unsupported audio codec (objectTypeIndication ${m}) - discarding track.`),this.metadataReader.pos+=12,u>this.metadataReader.pos-h){let f=this.metadataReader.readU8();p(f===5);let w=this.metadataReader.readIsomVariableInteger();if(s.info.codecDescription=this.metadataReader.readBytes(w),s.info.codec==="aac"){let g=Er(s.info.codecDescription);g.numberOfChannels!==null&&(s.info.numberOfChannels=g.numberOfChannels),g.sampleRate!==null&&(s.info.sampleRate=g.sampleRate)}}}break;case"enda":{let s=this.currentTrack;p(s&&s.info?.type==="audio"),this.metadataReader.readU16()&255&&(s.info.codec==="pcm-s16be"?s.info.codec="pcm-s16":s.info.codec==="pcm-s24be"?s.info.codec="pcm-s24":s.info.codec==="pcm-s32be"?s.info.codec="pcm-s32":s.info.codec==="pcm-f32be"?s.info.codec="pcm-f32":s.info.codec==="pcm-f64be"&&(s.info.codec="pcm-f64"))}break;case"pcmC":{let s=this.currentTrack;p(s&&s.info?.type==="audio"),this.metadataReader.pos+=4;let a=!!(this.metadataReader.readU8()&1),o=this.metadataReader.readU8();s.info.codec==="pcm-s16be"?a?o===16?s.info.codec="pcm-s16":o===24?s.info.codec="pcm-s24":o===32?s.info.codec="pcm-s32":(console.warn(`Invalid ipcm sample size ${o}.`),s.info.codec=null):o===16?s.info.codec="pcm-s16be":o===24?s.info.codec="pcm-s24be":o===32?s.info.codec="pcm-s32be":(console.warn(`Invalid ipcm sample size ${o}.`),s.info.codec=null):s.info.codec==="pcm-f32be"&&(a?o===32?s.info.codec="pcm-f32":o===64?s.info.codec="pcm-f64":(console.warn(`Invalid fpcm sample size ${o}.`),s.info.codec=null):o===32?s.info.codec="pcm-f32be":o===64?s.info.codec="pcm-f64be":(console.warn(`Invalid fpcm sample size ${o}.`),s.info.codec=null));break}case"dOps":{let s=this.currentTrack;p(s&&s.info?.type==="audio"),this.metadataReader.pos+=1;let i=this.metadataReader.readU8(),a=this.metadataReader.readU16(),o=this.metadataReader.readU32(),c=this.metadataReader.readI16(),l=this.metadataReader.readU8(),d;l!==0?d=this.metadataReader.readBytes(2+i):d=new Uint8Array(0);let u=new Uint8Array(19+d.byteLength),h=new DataView(u.buffer);h.setUint32(0,1332770163,!1),h.setUint32(4,1214603620,!1),h.setUint8(8,1),h.setUint8(9,i),h.setUint16(10,a,!0),h.setUint32(12,o,!0),h.setInt16(16,c,!0),h.setUint8(18,l),u.set(d,19),s.info.codecDescription=u,s.info.numberOfChannels=i,s.info.sampleRate=o}break;case"dfLa":{let s=this.currentTrack;p(s&&s.info?.type==="audio"),this.metadataReader.pos+=4;let i=127,a=128,o=this.metadataReader.pos;for(;this.metadataReader.pos<r;){let h=this.metadataReader.readU8(),m=this.metadataReader.readU24();if((h&i)===0){this.metadataReader.pos+=10;let w=this.metadataReader.readU32(),g=w>>>12,b=(w>>9&7)+1;s.info.sampleRate=g,s.info.numberOfChannels=b,this.metadataReader.pos+=20}else this.metadataReader.pos+=m;if(h&a)break}let c=this.metadataReader.pos;this.metadataReader.pos=o;let l=this.metadataReader.readBytes(c-o),d=new Uint8Array(4+l.byteLength);new DataView(d.buffer).setUint32(0,1716281667,!1),d.set(l,4),s.info.codecDescription=d}break;case"stts":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4;let i=this.metadataReader.readU32(),a=0,o=0;for(let c=0;c<i;c++){let l=this.metadataReader.readU32(),d=this.metadataReader.readU32();s.sampleTable.sampleTimingEntries.push({startIndex:a,startDecodeTimestamp:o,count:l,delta:d}),a+=l,o+=l*d}}break;case"ctts":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4;let i=this.metadataReader.readU32(),a=0;for(let o=0;o<i;o++){let c=this.metadataReader.readU32(),l=this.metadataReader.readI32();s.sampleTable.sampleCompositionTimeOffsets.push({startIndex:a,count:c,offset:l}),a+=c}}break;case"stsz":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4;let i=this.metadataReader.readU32(),a=this.metadataReader.readU32();if(i===0)for(let o=0;o<a;o++){let c=this.metadataReader.readU32();s.sampleTable.sampleSizes.push(c)}else s.sampleTable.sampleSizes.push(i)}break;case"stz2":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4,this.metadataReader.pos+=3;let i=this.metadataReader.readU8(),a=this.metadataReader.readU32(),o=this.metadataReader.readBytes(Math.ceil(a*i/8)),c=new B(o);for(let l=0;l<a;l++){let d=c.readBits(i);s.sampleTable.sampleSizes.push(d)}}break;case"stss":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4,s.sampleTable.keySampleIndices=[];let i=this.metadataReader.readU32();for(let a=0;a<i;a++){let o=this.metadataReader.readU32()-1;s.sampleTable.keySampleIndices.push(o)}}break;case"stsc":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4;let i=this.metadataReader.readU32();for(let o=0;o<i;o++){let c=this.metadataReader.readU32()-1,l=this.metadataReader.readU32(),d=this.metadataReader.readU32();s.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:c,samplesPerChunk:l,sampleDescriptionIndex:d})}let a=0;for(let o=0;o<s.sampleTable.sampleToChunk.length;o++)if(s.sampleTable.sampleToChunk[o].startSampleIndex=a,o<s.sampleTable.sampleToChunk.length-1){let l=s.sampleTable.sampleToChunk[o+1].startChunkIndex-s.sampleTable.sampleToChunk[o].startChunkIndex;a+=l*s.sampleTable.sampleToChunk[o].samplesPerChunk}}break;case"stco":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4;let i=this.metadataReader.readU32();for(let a=0;a<i;a++){let o=this.metadataReader.readU32();s.sampleTable.chunkOffsets.push(o)}}break;case"co64":{let s=this.currentTrack;if(p(s),!s.sampleTable)break;this.metadataReader.pos+=4;let i=this.metadataReader.readU32();for(let a=0;a<i;a++){let o=this.metadataReader.readU64();s.sampleTable.chunkOffsets.push(o)}}break;case"mvex":this.isFragmented=!0,this.readContiguousBoxes(t.contentSize);break;case"mehd":{let s=this.metadataReader.readU8();this.metadataReader.pos+=3;let i=s===1?this.metadataReader.readU64():this.metadataReader.readU32();this.movieDurationInTimescale=i}break;case"trex":{this.metadataReader.pos+=4;let s=this.metadataReader.readU32(),i=this.metadataReader.readU32(),a=this.metadataReader.readU32(),o=this.metadataReader.readU32(),c=this.metadataReader.readU32();this.fragmentTrackDefaults.push({trackId:s,defaultSampleDescriptionIndex:i,defaultSampleDuration:a,defaultSampleSize:o,defaultSampleFlags:c})}break;case"tfra":{let s=this.metadataReader.readU8();this.metadataReader.pos+=3;let i=this.metadataReader.readU32(),a=this.tracks.find(b=>b.id===i);if(!a)break;a.fragmentLookupTable=[];let o=this.metadataReader.readU32(),c=(o&48)>>4,l=(o&12)>>2,d=o&3,u=this.metadataReader,h=[u.readU8.bind(u),u.readU16.bind(u),u.readU24.bind(u),u.readU32.bind(u)],m=h[c],f=h[l],w=h[d],g=this.metadataReader.readU32();for(let b=0;b<g;b++){let k=s===1?this.metadataReader.readU64():this.metadataReader.readU32(),P=s===1?this.metadataReader.readU64():this.metadataReader.readU32(),S=m(),y=f(),x=w();a.fragmentLookupTable.push({timestamp:k,moofOffset:P})}}break;case"moof":{this.currentFragment={moofOffset:e,moofSize:t.totalSize,implicitBaseDataOffset:e,trackData:new Map,dataStart:1/0,dataEnd:0,nextFragment:null,isKnownToBeFirstFragment:!1},this.readContiguousBoxes(t.contentSize);let s=F(this.fragments,this.currentFragment.moofOffset,i=>i.moofOffset);this.fragments.splice(s+1,0,this.currentFragment);for(let[,i]of this.currentFragment.trackData){let a=i.samples[0],o=U(i.samples);this.currentFragment.dataStart=Math.min(this.currentFragment.dataStart,a.byteOffset),this.currentFragment.dataEnd=Math.max(this.currentFragment.dataEnd,o.byteOffset+o.byteSize)}this.currentFragment=null}break;case"traf":if(p(this.currentFragment),this.readContiguousBoxes(t.contentSize),this.currentTrack){let s=this.currentFragment.trackData.get(this.currentTrack.id);if(s){let i=F(this.currentTrack.fragments,this.currentFragment.moofOffset,c=>c.moofOffset);if(this.currentTrack.fragments.splice(i+1,0,this.currentFragment),s.firstKeyFrameTimestamp!==null){let c=F(this.currentTrack.fragmentsWithKeyFrame,this.currentFragment.moofOffset,l=>l.moofOffset);this.currentTrack.fragmentsWithKeyFrame.splice(c+1,0,this.currentFragment)}let{currentFragmentState:o}=this.currentTrack;p(o),o.startTimestamp!==null&&(Ys(s,o.startTimestamp),s.startTimestampIsFinal=!0)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case"tfhd":{p(this.currentFragment),this.metadataReader.pos+=1;let s=this.metadataReader.readU24(),i=!!(s&1),a=!!(s&2),o=!!(s&8),c=!!(s&16),l=!!(s&32),d=!!(s&65536),u=!!(s&131072),h=this.metadataReader.readU32(),m=this.tracks.find(w=>w.id===h);if(!m)break;let f=this.fragmentTrackDefaults.find(w=>w.trackId===h);this.currentTrack=m,m.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:f?.defaultSampleDescriptionIndex??null,defaultSampleDuration:f?.defaultSampleDuration??null,defaultSampleSize:f?.defaultSampleSize??null,defaultSampleFlags:f?.defaultSampleFlags??null,startTimestamp:null},i?m.currentFragmentState.baseDataOffset=this.metadataReader.readU64():u&&(m.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),a&&(m.currentFragmentState.sampleDescriptionIndex=this.metadataReader.readU32()),o&&(m.currentFragmentState.defaultSampleDuration=this.metadataReader.readU32()),c&&(m.currentFragmentState.defaultSampleSize=this.metadataReader.readU32()),l&&(m.currentFragmentState.defaultSampleFlags=this.metadataReader.readU32()),d&&(m.currentFragmentState.defaultSampleDuration=0)}break;case"tfdt":{let s=this.currentTrack;if(!s)break;p(s.currentFragmentState);let i=this.metadataReader.readU8();this.metadataReader.pos+=3;let a=i===0?this.metadataReader.readU32():this.metadataReader.readU64();s.currentFragmentState.startTimestamp=a}break;case"trun":{let s=this.currentTrack;if(!s)break;if(p(this.currentFragment),p(s.currentFragmentState),this.currentFragment.trackData.has(s.id)){console.warn("Can't have two trun boxes for the same track in one fragment. Ignoring...");break}let i=this.metadataReader.readU8(),a=this.metadataReader.readU24(),o=!!(a&1),c=!!(a&4),l=!!(a&256),d=!!(a&512),u=!!(a&1024),h=!!(a&2048),m=this.metadataReader.readU32(),f=s.currentFragmentState.baseDataOffset;o&&(f+=this.metadataReader.readI32());let w=null;c&&(w=this.metadataReader.readU32());let g=f;if(m===0){this.currentFragment.implicitBaseDataOffset=g;break}let b=0,k={startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1};this.currentFragment.trackData.set(s.id,k);for(let y=0;y<m;y++){let x;l?x=this.metadataReader.readU32():(p(s.currentFragmentState.defaultSampleDuration!==null),x=s.currentFragmentState.defaultSampleDuration);let v;d?v=this.metadataReader.readU32():(p(s.currentFragmentState.defaultSampleSize!==null),v=s.currentFragmentState.defaultSampleSize);let _;u?_=this.metadataReader.readU32():(p(s.currentFragmentState.defaultSampleFlags!==null),_=s.currentFragmentState.defaultSampleFlags),y===0&&w!==null&&(_=w);let E=0;h&&(i===0?E=this.metadataReader.readU32():E=this.metadataReader.readI32());let R=!(_&65536);k.samples.push({presentationTimestamp:b+E,duration:x,byteOffset:g,byteSize:v,isKeyFrame:R}),g+=v,b+=x}k.presentationTimestamps=k.samples.map((y,x)=>({presentationTimestamp:y.presentationTimestamp,sampleIndex:x})).sort((y,x)=>y.presentationTimestamp-x.presentationTimestamp);for(let y=0;y<k.presentationTimestamps.length;y++){let x=k.presentationTimestamps[y],v=k.samples[x.sampleIndex];if(k.firstKeyFrameTimestamp===null&&v.isKeyFrame&&(k.firstKeyFrameTimestamp=v.presentationTimestamp),y<k.presentationTimestamps.length-1){let _=k.presentationTimestamps[y+1];v.duration=_.presentationTimestamp-x.presentationTimestamp}}let P=k.samples[k.presentationTimestamps[0].sampleIndex],S=k.samples[U(k.presentationTimestamps).sampleIndex];k.startTimestamp=P.presentationTimestamp,k.endTimestamp=S.presentationTimestamp+S.duration,this.currentFragment.implicitBaseDataOffset=g}break}this.metadataReader.pos=r}},Kt=class{constructor(e){this.internalTrack=e,this.packetToSampleIndex=new WeakMap,this.packetToFragmentLocation=new WeakMap}getId(){return this.internalTrack.id}getCodec(){throw new Error("Not implemented on base class.")}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}async getFirstPacket(e){let t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(()=>{let r=this.internalTrack.demuxer.fragments[0]??null;if(r?.isKnownToBeFirstFragment){let s=r;for(;s;){if(s.trackData.get(this.internalTrack.id))return{fragmentIndex:D(this.internalTrack.fragments,s.moofOffset,a=>a.moofOffset),sampleIndex:0,correctSampleFound:!0};s=s.nextFragment}}return{fragmentIndex:-1,sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Fe(e*this.internalTrack.timescale,14)+this.internalTrack.editListOffset}async getPacket(e,t){let r=this.mapTimestampIntoTimescale(e),s=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Qs(s,r),a=await this.fetchPacketForSampleIndex(i,t);return!Zs(s)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(()=>this.findSampleInFragmentsForTimestamp(r),r,r,t)}async getNextPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0)return this.fetchPacketForSampleIndex(r+1,t);let s=this.packetToFragmentLocation.get(e);if(s===void 0)throw new Error("Packet was not created from this track.");let i=s.fragment.trackData.get(this.internalTrack.id),a=i.samples[s.sampleIndex],o=D(this.internalTrack.fragments,s.fragment.moofOffset,c=>c.moofOffset);return p(o!==-1),this.performFragmentedLookup(()=>{if(s.sampleIndex+1<i.samples.length)return{fragmentIndex:o,sampleIndex:s.sampleIndex+1,correctSampleFound:!0};{let c=s.fragment;for(;c.nextFragment;)if(c=c.nextFragment,c.trackData.get(this.internalTrack.id)){let d=D(this.internalTrack.fragments,c.moofOffset,u=>u.moofOffset);return p(d!==-1),{fragmentIndex:d,sampleIndex:0,correctSampleFound:!0}}return{fragmentIndex:o,sampleIndex:-1,correctSampleFound:!1}}},a.presentationTimestamp,1/0,t)}async getKeyPacket(e,t){let r=this.mapTimestampIntoTimescale(e),s=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Qs(s,r),a=i===-1?-1:ei(s,i),o=await this.fetchPacketForSampleIndex(a,t);return!Zs(s)||!this.internalTrack.demuxer.isFragmented?o:this.performFragmentedLookup(()=>this.findKeySampleInFragmentsForTimestamp(r),r,r,t)}async getNextKeyPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0){let c=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),l=ti(c,r);return this.fetchPacketForSampleIndex(l,t)}let s=this.packetToFragmentLocation.get(e);if(s===void 0)throw new Error("Packet was not created from this track.");let i=s.fragment.trackData.get(this.internalTrack.id),a=i.samples[s.sampleIndex],o=D(this.internalTrack.fragments,s.fragment.moofOffset,c=>c.moofOffset);return p(o!==-1),this.performFragmentedLookup(()=>{let c=i.samples.findIndex((l,d)=>l.isKeyFrame&&d>s.sampleIndex);if(c!==-1)return{fragmentIndex:o,sampleIndex:c,correctSampleFound:!0};{let l=s.fragment;for(;l.nextFragment;){l=l.nextFragment;let d=l.trackData.get(this.internalTrack.id);if(d&&d.firstKeyFrameTimestamp!==null){let u=D(this.internalTrack.fragments,l.moofOffset,m=>m.moofOffset);p(u!==-1);let h=d.samples.findIndex(m=>m.isKeyFrame);return p(h!==-1),{fragmentIndex:u,sampleIndex:h,correctSampleFound:!0}}}return{fragmentIndex:o,sampleIndex:-1,correctSampleFound:!1}}},a.presentationTimestamp,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;let r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),s=Jn(r,e);if(!s)return null;let i;t.metadataOnly?i=z:(await this.internalTrack.demuxer.chunkReader.reader.loadRange(s.chunkOffset,s.chunkOffset+s.chunkSize),this.internalTrack.demuxer.chunkReader.pos=s.sampleOffset,i=this.internalTrack.demuxer.chunkReader.readBytes(s.sampleSize));let a=(s.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,o=s.duration/this.internalTrack.timescale,c=new A(i,s.isKeyFrame?"key":"delta",a,o,e,s.sampleSize);return this.packetToSampleIndex.set(c,e),c}async fetchPacketInFragment(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).samples[t];p(i);let a;r.metadataOnly?a=z:(await this.internalTrack.demuxer.chunkReader.reader.loadRange(e.dataStart,e.dataEnd),this.internalTrack.demuxer.chunkReader.pos=i.byteOffset,a=this.internalTrack.demuxer.chunkReader.readBytes(i.byteSize));let o=(i.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,c=i.duration/this.internalTrack.timescale,l=new A(a,i.isKeyFrame?"key":"delta",o,c,e.moofOffset+t,i.byteSize);return this.packetToFragmentLocation.set(l,{fragment:e,sampleIndex:t}),l}findSampleInFragmentsForTimestamp(e){let t=F(this.internalTrack.fragments,e,i=>i.trackData.get(this.internalTrack.id).startTimestamp),r=-1,s=!1;if(t!==-1){let a=this.internalTrack.fragments[t].trackData.get(this.internalTrack.id),o=F(a.presentationTimestamps,e,c=>c.presentationTimestamp);p(o!==-1),r=a.presentationTimestamps[o].sampleIndex,s=e<a.endTimestamp}return{fragmentIndex:t,sampleIndex:r,correctSampleFound:s}}findKeySampleInFragmentsForTimestamp(e){let t=F(this.internalTrack.fragmentsWithKeyFrame,e,a=>a.trackData.get(this.internalTrack.id).startTimestamp),r=-1,s=-1,i=!1;if(t!==-1){let a=this.internalTrack.fragmentsWithKeyFrame[t];r=D(this.internalTrack.fragments,a.moofOffset,d=>d.moofOffset),p(r!==-1);let o=a.trackData.get(this.internalTrack.id),c=Et(o.presentationTimestamps,d=>o.samples[d.sampleIndex].isKeyFrame&&d.presentationTimestamp<=e);p(c!==-1),s=o.presentationTimestamps[c].sampleIndex,i=e<o.endTimestamp}return{fragmentIndex:r,sampleIndex:s,correctSampleFound:i}}async performFragmentedLookup(e,t,r,s){let i=this.internalTrack.demuxer,a=await i.fragmentLookupMutex.acquire();try{let{fragmentIndex:o,sampleIndex:c,correctSampleFound:l}=e();if(l){let S=this.internalTrack.fragments[o];return this.fetchPacketInFragment(S,c,s)}let d=i.metadataReader,u=await d.reader.source.getSize(),h=null,m=o,f=c,w=this.internalTrack.fragmentLookupTable?F(this.internalTrack.fragmentLookupTable,t,S=>S.timestamp):-1,g=w!==-1?this.internalTrack.fragmentLookupTable[w]:null,b=!1;if(o===-1)d.pos=g?.moofOffset??0,b=d.pos===0;else{let S=this.internalTrack.fragments[o];!g||S.moofOffset>=g.moofOffset?(d.pos=S.moofOffset+S.moofSize,h=S):d.pos=g.moofOffset}for(;d.pos<u;){if(h){let x=h.trackData.get(this.internalTrack.id);if(x&&x.startTimestamp>r)break;if(h.nextFragment){d.pos=h.nextFragment.moofOffset+h.nextFragment.moofSize,h=h.nextFragment;continue}}await d.reader.loadRange(d.pos,d.pos+16);let S=d.pos,y=d.readBoxHeader();if(y.name==="moof"){let x=D(i.fragments,S,I=>I.moofOffset),v;x===-1?(d.pos=S,v=await i.readFragment()):v=i.fragments[x],h&&(h.nextFragment=v),h=v,b&&(v.isKnownToBeFirstFragment=!0,b=!1);let{fragmentIndex:_,sampleIndex:E,correctSampleFound:R}=e();if(R){let I=this.internalTrack.fragments[_];return this.fetchPacketInFragment(I,E,s)}_!==-1&&(m=_,f=E)}d.pos=S+y.totalSize}let k=null,P=m!==-1?this.internalTrack.fragments[m]:null;if(P&&(k=await this.fetchPacketInFragment(P,f,s)),!k&&g&&(!P||P.moofOffset<g.moofOffset)){let y=this.internalTrack.fragmentLookupTable[w-1]?.timestamp??-1/0;return this.performFragmentedLookup(e,y,r,s)}return k}finally{a()}}},Ur=class extends Kt{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getRotation(){return this.internalTrack.rotation}async getColorSpace(){return{primaries:this.internalTrack.info.colorSpace?.primaries,transfer:this.internalTrack.info.colorSpace?.transfer,matrix:this.internalTrack.info.colorSpace?.matrix,fullRange:this.internalTrack.info.colorSpace?.fullRange}}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec==="vp9"&&!this.internalTrack.info.vp9CodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.vp9CodecInfo=e&&Mt(e.data)}else if(this.internalTrack.info.codec==="av1"&&!this.internalTrack.info.av1CodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.av1CodecInfo=e&&Vt(e.data)}return{codec:Bt(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace??void 0}})():null}},zr=class extends Kt{constructor(e){super(e),this.decoderConfig=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfig??={codec:Ot(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}:null}},Qs=(n,e)=>{if(n.presentationTimestamps){let t=F(n.presentationTimestamps,e,r=>r.presentationTimestamp);return t===-1?-1:n.presentationTimestamps[t].sampleIndex}else{let t=F(n.sampleTimingEntries,e,s=>s.startDecodeTimestamp);if(t===-1)return-1;let r=n.sampleTimingEntries[t];return r.startIndex+Math.min(Math.floor((e-r.startDecodeTimestamp)/r.delta),r.count-1)}},Jn=(n,e)=>{let t=F(n.sampleTimingEntries,e,b=>b.startIndex),r=n.sampleTimingEntries[t];if(!r||r.startIndex+r.count<=e)return null;let i=r.startDecodeTimestamp+(e-r.startIndex)*r.delta,a=F(n.sampleCompositionTimeOffsets,e,b=>b.startIndex),o=n.sampleCompositionTimeOffsets[a];o&&e-o.startIndex<o.count&&(i+=o.offset);let c=n.sampleSizes[Math.min(e,n.sampleSizes.length-1)],l=F(n.sampleToChunk,e,b=>b.startSampleIndex),d=n.sampleToChunk[l];p(d);let u=d.startChunkIndex+Math.floor((e-d.startSampleIndex)/d.samplesPerChunk),h=n.chunkOffsets[u],m=d.startSampleIndex+(u-d.startChunkIndex)*d.samplesPerChunk,f=0,w=h;if(n.sampleSizes.length===1)w+=c*(e-m),f+=c*d.samplesPerChunk;else for(let b=m;b<m+d.samplesPerChunk;b++){let k=n.sampleSizes[b];b<e&&(w+=k),f+=k}let g=r.delta;if(n.presentationTimestamps){let b=n.presentationTimestampIndexMap[e];p(b!==void 0),b<n.presentationTimestamps.length-1&&(g=n.presentationTimestamps[b+1].presentationTimestamp-i)}return{presentationTimestamp:i,duration:g,sampleOffset:w,sampleSize:c,chunkOffset:h,chunkSize:f,isKeyFrame:n.keySampleIndices?D(n.keySampleIndices,e,b=>b)!==-1:!0}},ei=(n,e)=>{if(!n.keySampleIndices)return e;let t=F(n.keySampleIndices,e,r=>r);return n.keySampleIndices[t]??-1},ti=(n,e)=>{if(!n.keySampleIndices)return e+1;let t=F(n.keySampleIndices,e,r=>r);return n.keySampleIndices[t+1]??-1},Ys=(n,e)=>{n.startTimestamp+=e,n.endTimestamp+=e;for(let t of n.samples)t.presentationTimestamp+=e;for(let t of n.presentationTimestamps)t.presentationTimestamp+=e},ri=n=>{let[e,,,t]=n,r=Math.hypot(e,t),s=e/r,i=t/r;return-Math.atan2(i,s)*(180/Math.PI)},Zs=n=>n.sampleSizes.length===0;var Mr=[{id:T.SeekHead,flag:"seekHeadSeen"},{id:T.Info,flag:"infoSeen"},{id:T.Tracks,flag:"tracksSeen"},{id:T.Cues,flag:"cuesSeen"}],Gt=class extends H{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentCueTime=null,this.isWebM=!1,this.metadataReader=new we(e._mainReader),this.clusterReader=new we(new W(e.source,64*2**20))}async computeDuration(){let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(t=>t.inputTrack))}async getMimeType(){await this.readMetadata();let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.getCodecParameterString()));return Vs({isWebM:this.isWebM,hasVideo:this.segments.some(r=>r.tracks.some(s=>s.info?.type==="video")),hasAudio:this.segments.some(r=>r.tracks.some(s=>s.info?.type==="audio")),codecStrings:t.filter(Boolean)})}readMetadata(){return this.readMetadataPromise??=(async()=>{this.metadataReader.pos=0;let e=await this.input.source.getSize();for(;this.metadataReader.pos<=e-Lt;){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+ye);let t=this.metadataReader.readElementHeader(),r=t.id,s=t.size,i=this.metadataReader.pos;if(r===T.EBML)be(s),await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+s),this.readContiguousElements(this.metadataReader,s);else if(r===T.Segment){if(await this.readSegment(s),s===null)break}else if(r===T.Cluster){s===null&&(s=(await this.clusterReader.searchForNextElementId(Nt,e)??e)-i);let a=U(this.segments);a&&(a.elementEndPos=i+s)}be(s),this.metadataReader.pos=i+s}})()}async readSegment(e){let t=this.metadataReader.pos;this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:t,elementEndPos:e===null?await this.input.source.getSize():t+e,clusterSeekStartPos:t,clusters:[],clusterLookupMutex:new se},this.segments.push(this.currentSegment),await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+2**14);let r=!1;for(;this.metadataReader.pos<this.currentSegment.elementEndPos;){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+ye);let c=this.metadataReader.pos,{id:l,size:d}=this.metadataReader.readElementHeader(),u=this.metadataReader.pos,h=Mr.findIndex(m=>m.id===l);if(h!==-1){let m=Mr[h].flag;this.currentSegment[m]=!0,be(d),await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+d),this.readContiguousElements(this.metadataReader,d)}else l===T.Cluster&&(r||(r=!0,this.currentSegment.clusterSeekStartPos=c));if(this.currentSegment.infoSeen&&this.currentSegment.tracksSeen&&this.currentSegment.cuesSeen)break;if(this.currentSegment.seekHeadSeen){let m=this.currentSegment.infoSeen,f=this.currentSegment.tracksSeen,w=this.currentSegment.cuesSeen;for(let g of this.currentSegment.seekEntries)g.id===T.Info?m=!0:g.id===T.Tracks?f=!0:g.id===T.Cues&&(w=!0);if(m&&f&&w)break}if(d===null)break;this.metadataReader.pos=u+d,r||(this.currentSegment.clusterSeekStartPos=this.metadataReader.pos)}for(let c of Mr){if(this.currentSegment[c.flag])continue;let l=this.currentSegment.seekEntries.find(h=>h.id===c.id);if(!l)continue;this.metadataReader.pos=t+l.segmentPosition,await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+2**12);let{id:d,size:u}=this.metadataReader.readElementHeader();d===c.id&&(be(u),this.currentSegment[c.flag]=!0,await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+u),this.readContiguousElements(this.metadataReader,u))}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e9/1e6),this.currentSegment.tracks.sort((c,l)=>Number(l.isDefault)-Number(c.isDefault)),this.currentSegment.cuePoints.sort((c,l)=>c.clusterPosition-l.clusterPosition);let s=this.currentSegment.tracks.map(c=>c.id),i=new Set,a=null,o=null;for(let c of this.currentSegment.cuePoints){if(c.clusterPosition!==a){for(let d of i)p(o),this.currentSegment.tracks.find(h=>h.id===d).cuePoints.push(o);for(let d of s)i.add(d)}if(o=c,!i.has(c.trackId))continue;this.currentSegment.tracks.find(d=>d.id===c.trackId).cuePoints.push(c),i.delete(c.trackId),a=c.clusterPosition}for(let c of i)p(o),this.currentSegment.tracks.find(d=>d.id===c).cuePoints.push(o);for(let c of this.currentSegment.tracks)c.cuePoints.sort((l,d)=>l.time-d.time);this.currentSegment=null}async readCluster(e){await this.metadataReader.reader.loadRange(this.metadataReader.pos,this.metadataReader.pos+ye);let t=this.metadataReader.pos,r=this.metadataReader.readElementHeader(),s=r.id,i=r.size,a=this.metadataReader.pos;i===null&&(this.clusterReader.pos=a,i=(await this.clusterReader.searchForNextElementId(Nt,e.elementEndPos)??e.elementEndPos)-a),p(s===T.Cluster),this.clusterReader.pos=a,await this.clusterReader.reader.loadRange(this.clusterReader.pos,this.clusterReader.pos+i);let o={elementStartPos:t,elementEndPos:a+i,dataStartPos:a,timestamp:-1,trackData:new Map,nextCluster:null,isKnownToBeFirstCluster:!1};this.currentCluster=o,this.readContiguousElements(this.clusterReader,i);for(let[l,d]of o.trackData){let u=!1;p(d.blocks.length>0);for(let w=0;w<d.blocks.length;w++){let g=d.blocks[w];g.timestamp+=o.timestamp,u||=g.referencedTimestamps.length>0}u&&(d.blocks=si(d.blocks)),d.presentationTimestamps=d.blocks.map((w,g)=>({timestamp:w.timestamp,blockIndex:g})).sort((w,g)=>w.timestamp-g.timestamp);for(let w=0;w<d.presentationTimestamps.length;w++){let g=d.presentationTimestamps[w],b=d.blocks[g.blockIndex];if(d.firstKeyFrameTimestamp===null&&b.isKeyFrame&&(d.firstKeyFrameTimestamp=b.timestamp),w<d.presentationTimestamps.length-1){let k=d.presentationTimestamps[w+1];b.duration=k.timestamp-b.timestamp}}let h=d.blocks[d.presentationTimestamps[0].blockIndex],m=d.blocks[U(d.presentationTimestamps).blockIndex];d.startTimestamp=h.timestamp,d.endTimestamp=m.timestamp+m.duration;let f=e.tracks.find(w=>w.id===l);if(f){let w=F(f.clusters,o.elementStartPos,b=>b.elementStartPos);if(f.clusters.splice(w+1,0,o),d.firstKeyFrameTimestamp!==null){let b=F(f.clustersWithKeyFrame,o.elementStartPos,k=>k.elementStartPos);f.clustersWithKeyFrame.splice(b+1,0,o)}}}let c=F(e.clusters,t,l=>l.elementStartPos);return e.clusters.splice(c+1,0,o),this.currentCluster=null,o}getTrackDataInCluster(e,t){let r=e.trackData.get(t);return r||(r={startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,r)),r}readContiguousElements(e,t){let r=e.pos;for(;e.pos-r<=t-Lt;)this.traverseElement(e)}traverseElement(e){let{id:t,size:r}=e.readElementHeader(),s=e.pos;switch(be(r),t){case T.DocType:this.isWebM=e.readString(r)==="webm";break;case T.Seek:{if(!this.currentSegment)break;let i={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(i),this.readContiguousElements(e,r),(i.id===-1||i.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case T.SeekID:{let i=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!i)break;i.id=e.readUnsignedInt(r)}break;case T.SeekPosition:{let i=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!i)break;i.segmentPosition=e.readUnsignedInt(r)}break;case T.TimestampScale:{if(!this.currentSegment)break;this.currentSegment.timestampScale=e.readUnsignedInt(r),this.currentSegment.timestampFactor=1e9/this.currentSegment.timestampScale}break;case T.Duration:{if(!this.currentSegment)break;this.currentSegment.duration=e.readFloat(r)}break;case T.TrackEntry:{if(!this.currentSegment)break;if(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusters:[],clustersWithKeyFrame:[],cuePoints:[],isDefault:!1,inputTrack:null,codecId:null,codecPrivate:null,languageCode:L,info:null},this.readContiguousElements(e,r),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){let i=this.currentTrack.codecId.indexOf("/"),a=i===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,i);if(this.currentTrack.info.type==="video"&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){this.currentTrack.codecId===$.avc?(this.currentTrack.info.codec="avc",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===$.hevc?(this.currentTrack.info.codec="hevc",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):a===$.vp8?this.currentTrack.info.codec="vp8":a===$.vp9?this.currentTrack.info.codec="vp9":a===$.av1&&(this.currentTrack.info.codec="av1");let o=this.currentTrack,c=new X(new Vr(o));this.currentTrack.inputTrack=c,this.currentSegment.tracks.push(this.currentTrack)}else if(this.currentTrack.info.type==="audio"&&this.currentTrack.info.numberOfChannels!==-1&&this.currentTrack.info.sampleRate!==-1){a===$.aac?(this.currentTrack.info.codec="aac",this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes("MPEG2")},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===$.mp3?this.currentTrack.info.codec="mp3":a===$.opus?(this.currentTrack.info.codec="opus",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):a===$.vorbis?(this.currentTrack.info.codec="vorbis",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):a===$.flac?(this.currentTrack.info.codec="flac",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId==="A_PCM/INT/LIT"?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec="pcm-u8":this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec="pcm-s16":this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec="pcm-s24":this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec="pcm-s32"):this.currentTrack.codecId==="A_PCM/INT/BIG"?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec="pcm-u8":this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec="pcm-s16be":this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec="pcm-s24be":this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec="pcm-s32be"):this.currentTrack.codecId==="A_PCM/FLOAT/IEEE"&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec="pcm-f32":this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec="pcm-f64"));let o=this.currentTrack,c=new M(new Nr(o));this.currentTrack.inputTrack=c,this.currentSegment.tracks.push(this.currentTrack)}}this.currentTrack=null}break;case T.TrackNumber:{if(!this.currentTrack)break;this.currentTrack.id=e.readUnsignedInt(r)}break;case T.TrackType:{if(!this.currentTrack)break;let i=e.readUnsignedInt(r);i===1?this.currentTrack.info={type:"video",width:-1,height:-1,rotation:0,codec:null,codecDescription:null,colorSpace:null}:i===2&&(this.currentTrack.info={type:"audio",numberOfChannels:-1,sampleRate:-1,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null})}break;case T.FlagEnabled:{if(!this.currentTrack)break;e.readUnsignedInt(r)||(this.currentSegment.tracks.pop(),this.currentTrack=null)}break;case T.FlagDefault:{if(!this.currentTrack)break;this.currentTrack.isDefault=!!e.readUnsignedInt(r)}break;case T.CodecID:{if(!this.currentTrack)break;this.currentTrack.codecId=e.readString(r)}break;case T.CodecPrivate:{if(!this.currentTrack)break;this.currentTrack.codecPrivate=e.readBytes(r)}break;case T.Language:{if(!this.currentTrack)break;this.currentTrack.languageCode=e.readString(r),Ft(this.currentTrack.languageCode)||(this.currentTrack.languageCode=L)}break;case T.Video:{if(this.currentTrack?.info?.type!=="video")break;this.readContiguousElements(e,r)}break;case T.PixelWidth:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.width=e.readUnsignedInt(r)}break;case T.PixelHeight:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.height=e.readUnsignedInt(r)}break;case T.Colour:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.colorSpace={},this.readContiguousElements(e,r)}break;case T.MatrixCoefficients:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;let i=e.readUnsignedInt(r),a=It[i]??null;this.currentTrack.info.colorSpace.matrix=a}break;case T.Range:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;this.currentTrack.info.colorSpace.fullRange=e.readUnsignedInt(r)===2}break;case T.TransferCharacteristics:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;let i=e.readUnsignedInt(r),a=Rt[i]??null;this.currentTrack.info.colorSpace.transfer=a}break;case T.Primaries:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;let i=e.readUnsignedInt(r),a=Pt[i]??null;this.currentTrack.info.colorSpace.primaries=a}break;case T.Projection:{if(this.currentTrack?.info?.type!=="video")break;this.readContiguousElements(e,r)}break;case T.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!=="video")break;let a=-e.readFloat(r);try{this.currentTrack.info.rotation=Ct(a)}catch{}}break;case T.Audio:{if(this.currentTrack?.info?.type!=="audio")break;this.readContiguousElements(e,r)}break;case T.SamplingFrequency:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.sampleRate=e.readFloat(r)}break;case T.Channels:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.numberOfChannels=e.readUnsignedInt(r)}break;case T.BitDepth:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.bitDepth=e.readUnsignedInt(r)}break;case T.CuePoint:{if(!this.currentSegment)break;this.readContiguousElements(e,r),this.currentCueTime=null}break;case T.CueTime:this.currentCueTime=e.readUnsignedInt(r);break;case T.CueTrackPositions:{if(this.currentCueTime===null)break;p(this.currentSegment);let i={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(i),this.readContiguousElements(e,r),(i.trackId===-1||i.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case T.CueTrack:{let i=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!i)break;i.trackId=e.readUnsignedInt(r)}break;case T.CueClusterPosition:{let i=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!i)break;p(this.currentSegment),i.clusterPosition=this.currentSegment.dataStartPos+e.readUnsignedInt(r)}break;case T.Timestamp:{if(!this.currentCluster)break;this.currentCluster.timestamp=e.readUnsignedInt(r)}break;case T.SimpleBlock:{if(!this.currentCluster)break;let i=e.readVarInt(),a=e.readS16(),c=!!(e.readU8()&128);this.getTrackDataInCluster(this.currentCluster,i).blocks.push({timestamp:a,duration:0,isKeyFrame:c,referencedTimestamps:[],data:e.readBytes(r-(e.pos-s))})}break;case T.BlockGroup:{if(!this.currentCluster)break;if(this.readContiguousElements(e,r),this.currentBlock){for(let i=0;i<this.currentBlock.referencedTimestamps.length;i++)this.currentBlock.referencedTimestamps[i]+=this.currentBlock.timestamp;this.currentBlock=null}}break;case T.Block:{if(!this.currentCluster)break;let i=e.readVarInt(),a=e.readS16(),o=e.readU8(),c=this.getTrackDataInCluster(this.currentCluster,i);this.currentBlock={timestamp:a,duration:0,isKeyFrame:!0,referencedTimestamps:[],data:e.readBytes(r-(e.pos-s))},c.blocks.push(this.currentBlock)}break;case T.BlockDuration:{if(!this.currentBlock)break;this.currentBlock.duration=e.readUnsignedInt(r)}break;case T.ReferenceBlock:{if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1;let i=e.readSignedInt(r);this.currentBlock.referencedTimestamps.push(i)}break}e.pos=s+r}},Xt=class{constructor(e){this.internalTrack=e,this.packetToClusterLocation=new WeakMap}getId(){return this.internalTrack.id}getCodec(){throw new Error("Not implemented on base class.")}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getLanguageCode(){return this.internalTrack.languageCode}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}getTimeResolution(){return this.internalTrack.segment.timestampFactor}async getFirstPacket(e){return this.performClusterLookup(()=>{let t=this.internalTrack.segment.clusters[0]??null;if(t?.isKnownToBeFirstCluster){let r=t;for(;r;){if(r.trackData.get(this.internalTrack.id))return{clusterIndex:D(this.internalTrack.clusters,r.elementStartPos,i=>i.elementStartPos),blockIndex:0,correctBlockFound:!0};r=r.nextCluster}}return{clusterIndex:-1,blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,e)}intoTimescale(e){return Fe(e*this.internalTrack.segment.timestampFactor,14)}async getPacket(e,t){let r=this.intoTimescale(e);return this.performClusterLookup(()=>this.findBlockInClustersForTimestamp(r),r,r,t)}async getNextPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw new Error("Packet was not created from this track.");let s=r.cluster.trackData.get(this.internalTrack.id),i=s.blocks[r.blockIndex],a=D(this.internalTrack.clusters,r.cluster.elementStartPos,o=>o.elementStartPos);return p(a!==-1),this.performClusterLookup(()=>{if(r.blockIndex+1<s.blocks.length)return{clusterIndex:a,blockIndex:r.blockIndex+1,correctBlockFound:!0};{let o=r.cluster;for(;o.nextCluster;)if(o=o.nextCluster,o.trackData.get(this.internalTrack.id)){let l=D(this.internalTrack.clusters,o.elementStartPos,d=>d.elementStartPos);return p(l!==-1),{clusterIndex:l,blockIndex:0,correctBlockFound:!0}}return{clusterIndex:a,blockIndex:-1,correctBlockFound:!1}}},i.timestamp,1/0,t)}async getKeyPacket(e,t){let r=this.intoTimescale(e);return this.performClusterLookup(()=>this.findKeyBlockInClustersForTimestamp(r),r,r,t)}async getNextKeyPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw new Error("Packet was not created from this track.");let s=r.cluster.trackData.get(this.internalTrack.id),i=s.blocks[r.blockIndex],a=D(this.internalTrack.clusters,r.cluster.elementStartPos,o=>o.elementStartPos);return p(a!==-1),this.performClusterLookup(()=>{let o=s.blocks.findIndex((c,l)=>c.isKeyFrame&&l>r.blockIndex);if(o!==-1)return{clusterIndex:a,blockIndex:o,correctBlockFound:!0};{let c=r.cluster;for(;c.nextCluster;){c=c.nextCluster;let l=c.trackData.get(this.internalTrack.id);if(l&&l.firstKeyFrameTimestamp!==null){let d=D(this.internalTrack.clusters,c.elementStartPos,h=>h.elementStartPos);p(d!==-1);let u=l.blocks.findIndex(h=>h.isKeyFrame);return p(u!==-1),{clusterIndex:d,blockIndex:u,correctBlockFound:!0}}}return{clusterIndex:a,blockIndex:-1,correctBlockFound:!1}}},i.timestamp,1/0,t)}async fetchPacketInCluster(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).blocks[t];p(i);let a=r.metadataOnly?z:i.data,o=i.timestamp/this.internalTrack.segment.timestampFactor,c=i.duration/this.internalTrack.segment.timestampFactor,l=new A(a,i.isKeyFrame?"key":"delta",o,c,e.dataStartPos+t,i.data.byteLength);return this.packetToClusterLocation.set(l,{cluster:e,blockIndex:t}),l}findBlockInClustersForTimestamp(e){let t=F(this.internalTrack.clusters,e,i=>i.trackData.get(this.internalTrack.id).startTimestamp),r=-1,s=!1;if(t!==-1){let a=this.internalTrack.clusters[t].trackData.get(this.internalTrack.id),o=F(a.presentationTimestamps,e,c=>c.timestamp);p(o!==-1),r=a.presentationTimestamps[o].blockIndex,s=e<a.endTimestamp}return{clusterIndex:t,blockIndex:r,correctBlockFound:s}}findKeyBlockInClustersForTimestamp(e){let t=F(this.internalTrack.clustersWithKeyFrame,e,a=>a.trackData.get(this.internalTrack.id).firstKeyFrameTimestamp),r=-1,s=-1,i=!1;if(t!==-1){let a=this.internalTrack.clustersWithKeyFrame[t];r=D(this.internalTrack.clusters,a.elementStartPos,d=>d.elementStartPos),p(r!==-1);let o=a.trackData.get(this.internalTrack.id),c=Et(o.presentationTimestamps,d=>o.blocks[d.blockIndex].isKeyFrame&&d.timestamp<=e);p(c!==-1),s=o.presentationTimestamps[c].blockIndex,i=e<o.endTimestamp}return{clusterIndex:r,blockIndex:s,correctBlockFound:i}}async performClusterLookup(e,t,r,s){let{demuxer:i,segment:a}=this.internalTrack,o=await a.clusterLookupMutex.acquire();try{let{clusterIndex:c,blockIndex:l,correctBlockFound:d}=e();if(d){let y=this.internalTrack.clusters[c];return this.fetchPacketInCluster(y,l,s)}let u=i.metadataReader,h=i.clusterReader,m=null,f=c,w=l,g=F(this.internalTrack.cuePoints,t,y=>y.time),b=g!==-1?this.internalTrack.cuePoints[g]:null,k=!1;if(c===-1)u.pos=b?.clusterPosition??a.clusterSeekStartPos,k=u.pos===a.clusterSeekStartPos;else{let y=this.internalTrack.clusters[c];!b||y.elementStartPos>=b.clusterPosition?(u.pos=y.elementEndPos,m=y):u.pos=b.clusterPosition}for(;u.pos<a.elementEndPos;){if(m){let R=m.trackData.get(this.internalTrack.id);if(R&&R.startTimestamp>r)break;if(m.nextCluster){u.pos=m.nextCluster.elementEndPos,m=m.nextCluster;continue}}await u.reader.loadRange(u.pos,u.pos+ye);let y=u.pos,x=u.readElementHeader(),v=x.id,_=x.size,E=u.pos;if(v===T.Cluster){let R=D(a.clusters,y,lr=>lr.elementStartPos),I;R===-1?(u.pos=y,I=await i.readCluster(a)):I=a.clusters[R],m&&(m.nextCluster=I),m=I,k&&(I.isKnownToBeFirstCluster=!0,k=!1);let{clusterIndex:N,blockIndex:ae,correctBlockFound:wn}=e();if(wn){let lr=this.internalTrack.clusters[N];return this.fetchPacketInCluster(lr,ae,s)}N!==-1&&(f=N,w=ae)}if(_===null){v===T.Cluster?(p(m),_=m.elementEndPos-E):(h.pos=E,_=(await h.searchForNextElementId(Nt,a.elementEndPos)??a.elementEndPos)-E);let R=E+_;if(R>a.elementEndPos-Lt)break;if(h.pos=R,h.readElementId()===T.Segment){a.elementEndPos=R;break}}u.pos=E+_}let P=null,S=f!==-1?this.internalTrack.clusters[f]:null;if(S&&(P=await this.fetchPacketInCluster(S,w,s)),!P&&b&&(!S||S.elementStartPos<b.clusterPosition)){let x=this.internalTrack.cuePoints[g-1]?.time??-1/0;return this.performClusterLookup(e,x,r,s)}return P}finally{o()}}},Vr=class extends Xt{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getRotation(){return this.internalTrack.info.rotation}async getColorSpace(){return{primaries:this.internalTrack.info.colorSpace?.primaries,transfer:this.internalTrack.info.colorSpace?.transfer,matrix:this.internalTrack.info.colorSpace?.matrix,fullRange:this.internalTrack.info.colorSpace?.fullRange}}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;return(this.internalTrack.info.codec==="vp9"||this.internalTrack.info.codec==="av1"||this.internalTrack.info.codec==="avc"&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec==="hevc"&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({})),{codec:Bt({width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcCodecInfo:this.internalTrack.info.codec==="avc"&&e?_s(e.data):null,hevcCodecInfo:this.internalTrack.info.codec==="hevc"&&e?Fs(e.data):null,vp9CodecInfo:this.internalTrack.info.codec==="vp9"&&e?Mt(e.data):null,av1CodecInfo:this.internalTrack.info.codec==="av1"&&e?Vt(e.data):null}),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace??void 0}})():null}},Nr=class extends Xt{constructor(e){super(e),this.decoderConfig=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfig??={codec:Ot({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}:null}},si=n=>{let e=new Map;for(let i=0;i<n.length;i++){let a=n[i];e.set(a.timestamp,a)}let t=new Set,r=[],s=i=>{if(!t.has(i)){t.add(i);for(let a=0;a<i.referencedTimestamps.length;a++){let o=i.referencedTimestamps[a],c=e.get(o);c&&s(c)}r.push(i)}};for(let i=0;i<n.length;i++)s(n[i]);return r};var Ve=class{constructor(e){this.reader=e,this.pos=0,this.fileSize=null}readBytes(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);return this.pos+=e,new Uint8Array(t.buffer,r,e)}readU16(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+2);return this.pos+=2,e.getUint16(t,!1)}readU32(){let{view:e,offset:t}=this.reader.getViewAndOffset(this.pos,this.pos+4);return this.pos+=4,e.getUint32(t,!1)}readAscii(e){let{view:t,offset:r}=this.reader.getViewAndOffset(this.pos,this.pos+e);this.pos+=e;let s="";for(let i=0;i<e;i++)s+=String.fromCharCode(t.getUint8(r+i));return s}readId3(){return this.readAscii(3)!=="ID3"?(this.pos-=3,null):(this.pos+=3,{size:ni(this.readU32())})}readNextFrameHeader(e){for(p(this.fileSize),e??=this.fileSize;this.pos<=e-4;){let t=this.readU32();this.pos-=4;let r=Ws(t,this);if(r)return r}return null}},ni=n=>{let e=2130706432,t=0;for(;e!==0;)t>>=1,t|=n&e,e>>=8;return t};var Qt=class extends H{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.allSamples=[],this.tracks=[],this.reader=new Ve(e._mainReader)}async readMetadata(){return this.metadataPromise??=(async()=>{let e=await this.input.source.getSize();this.reader.fileSize=e,await this.reader.reader.loadRange(0,e);let t=this.reader.readId3();t&&(this.reader.pos+=t.size);let r=0;for(;;){let s=this.reader.readNextFrameHeader();if(!s)break;let i=Hs(s.mpegVersionId,s.channel);this.reader.pos=s.startPos+i;let a=this.reader.readU32(),o=a===Ns||a===Ls;if(this.reader.pos=s.startPos+s.totalSize-1,o)continue;this.firstFrameHeader||(this.firstFrameHeader=s);let c=s.audioSamplesInFrame/s.sampleRate,l={timestamp:r/s.sampleRate,duration:c,dataStart:s.startPos,dataSize:s.totalSize};this.allSamples.push(l),r+=s.audioSamplesInFrame}if(!this.firstFrameHeader)throw new Error("No MP3 frames found.");this.tracks=[new M(new Hr(this))]})()}async getMimeType(){return"audio/mpeg"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();let e=U(this.allSamples);return p(e),e.timestamp+e.duration}},Hr=class{constructor(e){this.demuxer=e}getId(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return p(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate/this.demuxer.firstFrameHeader.audioSamplesInFrame}computeDuration(){return this.demuxer.computeDuration()}getLanguageCode(){return L}getCodec(){return"mp3"}getNumberOfChannels(){return p(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.channel===3?1:2}getSampleRate(){return p(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate}async getDecoderConfig(){return p(this.demuxer.firstFrameHeader),{codec:"mp3",numberOfChannels:this.demuxer.firstFrameHeader.channel===3?1:2,sampleRate:this.demuxer.firstFrameHeader.sampleRate}}getPacketAtIndex(e,t){if(e===-1)return null;let r=this.demuxer.allSamples[e];if(!r)return null;let s;return t.metadataOnly?s=z:(this.demuxer.reader.pos=r.dataStart,s=this.demuxer.reader.readBytes(r.dataSize)),new A(s,"key",r.timestamp,r.duration,e,r.dataSize)}async getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){let r=D(this.demuxer.allSamples,e.timestamp,s=>s.timestamp);if(r===-1)throw new Error("Packet was not created from this track.");return this.getPacketAtIndex(r+1,t)}async getPacket(e,t){let r=F(this.demuxer.allSamples,e,s=>s.timestamp);return this.getPacketAtIndex(r,t)}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}};var Yt=class extends H{constructor(e){super(e),this.readingMutex=new se,this.metadataPromise=null,this.fileSize=null,this.bitstreams=[],this.tracks=[],this.reader=new Ae(new W(e.source,64*2**20))}async readMetadata(){return this.metadataPromise??=(async()=>{for(this.fileSize=await this.input.source.getSize();this.reader.pos<this.fileSize-Be;){await this.reader.reader.loadRange(this.reader.pos,this.reader.pos+ke);let e=this.reader.readPageHeader();if(!e||!!!(e.headerType&2))break;this.bitstreams.push({serialNumber:e.serialNumber,bosPage:e,description:null,numberOfChannels:-1,sampleRate:-1,codecInfo:{codec:null,vorbisInfo:null,opusInfo:null},lastMetadataPacket:null}),this.reader.pos=e.headerStartPos+e.totalSize}for(let e of this.bitstreams){let t=await this.readPacket(this.reader,e.bosPage,0);t&&(t.data.byteLength>=7&&t.data[0]===1&&t.data[1]===118&&t.data[2]===111&&t.data[3]===114&&t.data[4]===98&&t.data[5]===105&&t.data[6]===115?await this.readVorbisMetadata(t,e):t.data.byteLength>=8&&t.data[0]===79&&t.data[1]===112&&t.data[2]===117&&t.data[3]===115&&t.data[4]===72&&t.data[5]===101&&t.data[6]===97&&t.data[7]===100&&await this.readOpusMetadata(t,e),e.codecInfo.codec!==null&&this.tracks.push(new M(new Wr(e,this))))}})()}async readVorbisMetadata(e,t){let r=await this.findNextPacketStart(this.reader,e);if(!r)return;let s=await this.readPacket(this.reader,r.startPage,r.startSegmentIndex);if(!s||(r=await this.findNextPacketStart(this.reader,s),!r))return;let i=await this.readPacket(this.reader,r.startPage,r.startSegmentIndex);if(!i||s.data[0]!==3||i.data[0]!==5)return;let a=[],o=u=>{for(;a.push(Math.min(255,u)),!(u<255);)u-=255};o(e.data.length),o(s.data.length);let c=new Uint8Array(1+a.length+e.data.length+s.data.length+i.data.length);c[0]=a.length,c.set(a,1),c.set(e.data,1+a.length),c.set(s.data,1+a.length+e.data.length),c.set(i.data,1+a.length+e.data.length+s.data.length),t.codecInfo.codec="vorbis",t.description=c,t.lastMetadataPacket=i;let l=G(e.data);t.numberOfChannels=l.getUint8(11),t.sampleRate=l.getUint32(12,!0);let d=l.getUint8(28);t.codecInfo.vorbisInfo={blocksizes:[1<<(d&15),1<<(d>>4)],modeBlockflags:Os(i.data).modeBlockflags}}async readOpusMetadata(e,t){let r=await this.findNextPacketStart(this.reader,e);if(!r)return;let s=await this.readPacket(this.reader,r.startPage,r.startSegmentIndex);if(!s)return;t.codecInfo.codec="opus",t.description=e.data,t.lastMetadataPacket=s;let i=As(e.data);t.numberOfChannels=i.outputChannelCount,t.sampleRate=i.inputSampleRate,t.codecInfo.opusInfo={preSkip:i.preSkip}}async readPacket(e,t,r){p(r<t.lacingValues.length),p(this.fileSize);let s=0;for(let h=0;h<r;h++)s+=t.lacingValues[h];let i=t,a=s,o=r,c=[];e:for(;;){await e.reader.loadRange(i.dataStartPos,i.dataStartPos+i.dataSize),e.pos=i.dataStartPos;let h=e.readBytes(i.dataSize);for(;;){if(o===i.lacingValues.length){c.push(h.subarray(s,a));break}let m=i.lacingValues[o];if(a+=m,m<255){c.push(h.subarray(s,a));break e}o++}for(;;){if(e.pos=i.headerStartPos+i.totalSize,e.pos>=this.fileSize-Be)return null;await e.reader.loadRange(e.pos,e.pos+ke);let m=e.readPageHeader();if(!m)return null;if(i=m,i.serialNumber===t.serialNumber)break}s=0,a=0,o=0}let l=c.reduce((h,m)=>h+m.length,0),d=new Uint8Array(l),u=0;for(let h=0;h<c.length;h++){let m=c[h];d.set(m,u),u+=m.length}return{data:d,endPage:i,endSegmentIndex:o}}async findNextPacketStart(e,t){if(p(this.fileSize!==null),t.endSegmentIndex<t.endPage.lacingValues.length-1)return{startPage:t.endPage,startSegmentIndex:t.endSegmentIndex+1};if(!!(t.endPage.headerType&4))return null;for(e.pos=t.endPage.headerStartPos+t.endPage.totalSize;;){if(e.pos>=this.fileSize-Be)return null;await e.reader.loadRange(e.pos,e.pos+ke);let s=e.readPageHeader();if(!s)return null;if(s.serialNumber===t.endPage.serialNumber)return{startPage:s,startSegmentIndex:0};e.pos=s.headerStartPos+s.totalSize}}async getMimeType(){await this.readMetadata();let e=await Promise.all(this.tracks.map(t=>t.getCodecParameterString()));return Ks({codecStrings:e.filter(Boolean)})}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.computeDuration()));return Math.max(0,...t)}},Wr=class{constructor(e,t){this.bitstream=e,this.demuxer=t,this.encodedPacketToMetadata=new WeakMap,this.internalSampleRate=e.codecInfo.codec==="opus"?Ts:e.sampleRate}getId(){return this.bitstream.serialNumber}getNumberOfChannels(){return this.bitstream.numberOfChannels}getSampleRate(){return this.bitstream.sampleRate}getTimeResolution(){return this.bitstream.sampleRate}getCodec(){return this.bitstream.codecInfo.codec}async getDecoderConfig(){return p(this.bitstream.codecInfo.codec),{codec:this.bitstream.codecInfo.codec,numberOfChannels:this.bitstream.numberOfChannels,sampleRate:this.bitstream.sampleRate,description:this.bitstream.description??void 0}}getLanguageCode(){return L}async getFirstTimestamp(){return 0}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}granulePositionToTimestampInSamples(e){return this.bitstream.codecInfo.codec==="opus"?(p(this.bitstream.codecInfo.opusInfo),e-this.bitstream.codecInfo.opusInfo.preSkip):e}createEncodedPacketFromOggPacket(e,t,r){if(!e)return null;let{durationInSamples:s,vorbisBlockSize:i}=qs(e.data,this.bitstream.codecInfo,t.vorbisLastBlocksize),a=new A(r.metadataOnly?z:e.data,"key",Math.max(0,t.timestampInSamples)/this.internalSampleRate,s/this.internalSampleRate,e.endPage.headerStartPos+e.endSegmentIndex,e.data.byteLength);return this.encodedPacketToMetadata.set(a,{packet:e,timestampInSamples:t.timestampInSamples,durationInSamples:s,vorbisBlockSize:i}),a}async getFirstPacket(e,t=!0){let r=t?await this.demuxer.readingMutex.acquire():null;try{p(this.bitstream.lastMetadataPacket);let s=await this.demuxer.findNextPacketStart(this.demuxer.reader,this.bitstream.lastMetadataPacket);if(!s)return null;let i=0;this.bitstream.codecInfo.codec==="opus"&&(p(this.bitstream.codecInfo.opusInfo),i-=this.bitstream.codecInfo.opusInfo.preSkip);let a=await this.demuxer.readPacket(this.demuxer.reader,s.startPage,s.startSegmentIndex);return this.createEncodedPacketFromOggPacket(a,{timestampInSamples:i,vorbisLastBlocksize:null},e)}finally{r?.()}}async getNextPacket(e,t){let r=await this.demuxer.readingMutex.acquire();try{let s=this.encodedPacketToMetadata.get(e);if(!s)throw new Error("Packet was not created from this track.");let i=await this.demuxer.findNextPacketStart(this.demuxer.reader,s.packet);if(!i)return null;let a=s.timestampInSamples+s.durationInSamples,o=await this.demuxer.readPacket(this.demuxer.reader,i.startPage,i.startSegmentIndex);return this.createEncodedPacketFromOggPacket(o,{timestampInSamples:a,vorbisLastBlocksize:s.vorbisBlockSize},t)}finally{r()}}async getPacket(e,t){let r=await this.demuxer.readingMutex.acquire();try{p(this.demuxer.fileSize!==null);let s=Fe(e*this.internalSampleRate,14);if(s===0)return this.getFirstPacket(t,!1);if(s<0)return null;let i=this.demuxer.reader;p(this.bitstream.lastMetadataPacket);let a=await this.demuxer.findNextPacketStart(i,this.bitstream.lastMetadataPacket);if(!a)return null;let o=a.startPage,c=this.demuxer.fileSize,l=[o];e:for(;o.headerStartPos+o.totalSize<c;){let S=o.headerStartPos,y=Math.floor((S+c)/2),x=y;for(;;){let v=Math.min(x+Gs,c-Be);if(await i.reader.loadRange(x,v),i.pos=x,!i.findNextPageHeader(v)){c=y+Be;continue e}await i.reader.loadRange(i.pos,i.pos+ke);let E=i.readPageHeader();p(E);let R=!1;if(E.serialNumber===this.bitstream.serialNumber)R=!0;else{await i.reader.loadRange(E.headerStartPos,E.headerStartPos+E.totalSize),i.pos=E.headerStartPos;let N=i.readBytes(E.totalSize);R=$s(N)===E.checksum}if(!R){x=E.headerStartPos+4;continue}if(R&&E.serialNumber!==this.bitstream.serialNumber){x=E.headerStartPos+E.totalSize;continue}if(E.granulePosition===-1){x=E.headerStartPos+E.totalSize;continue}this.granulePositionToTimestampInSamples(E.granulePosition)>s?c=E.headerStartPos:(o=E,l.push(E));continue e}}let d=a.startPage;for(let S of l){if(S.granulePosition===o.granulePosition)break;(!d||S.headerStartPos>d.headerStartPos)&&(d=S)}let u=d,h=[u];for(;!(u.serialNumber===this.bitstream.serialNumber&&u.granulePosition===o.granulePosition);){i.pos=u.headerStartPos+u.totalSize,await i.reader.loadRange(i.pos,i.pos+ke);let S=i.readPageHeader();p(S),u=S,u.serialNumber===this.bitstream.serialNumber&&h.push(u)}p(u.granulePosition!==-1);let m=null,f,w,g=u,b=0;if(u.headerStartPos===a.startPage.headerStartPos)f=this.granulePositionToTimestampInSamples(0),w=!0,m=0;else{f=0,w=!1;for(let x=u.lacingValues.length-1;x>=0;x--)if(u.lacingValues[x]<255){m=x+1;break}if(m===null)throw new Error("Invalid page with granule position: no packets end on this page.");b=m-1;let S={data:z,endPage:g,endSegmentIndex:b};if(await this.demuxer.findNextPacketStart(i,S)){let x=en(h,u,m);p(x);let v=Js(h,x.page,x.segmentIndex);v&&(u=v.page,m=v.segmentIndex)}else for(;;){let x=en(h,u,m);if(!x)break;let v=Js(h,x.page,x.segmentIndex);if(!v)break;if(u=v.page,m=v.segmentIndex,x.page.headerStartPos!==g.headerStartPos){g=x.page,b=x.segmentIndex;break}}}let k=null,P=null;for(;u!==null;){p(m!==null);let S=await this.demuxer.readPacket(i,u,m);if(!S)break;if(!(u.headerStartPos===a.startPage.headerStartPos&&m<a.startSegmentIndex)){let v=this.createEncodedPacketFromOggPacket(S,{timestampInSamples:f,vorbisLastBlocksize:P?.vorbisBlockSize??null},t);p(v);let _=this.encodedPacketToMetadata.get(v);if(p(_),!w&&S.endPage.headerStartPos===g.headerStartPos&&S.endSegmentIndex===b?(f=this.granulePositionToTimestampInSamples(u.granulePosition),w=!0,v=this.createEncodedPacketFromOggPacket(S,{timestampInSamples:f-_.durationInSamples,vorbisLastBlocksize:P?.vorbisBlockSize??null},t),p(v),_=this.encodedPacketToMetadata.get(v),p(_)):f+=_.durationInSamples,k=v,P=_,w&&(Math.max(f,0)>s||Math.max(_.timestampInSamples,0)===s))break}let x=await this.demuxer.findNextPacketStart(i,S);if(!x)break;u=x.startPage,m=x.startSegmentIndex}return k}finally{r()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}},Js=(n,e,t)=>{let r=e,s=t;e:for(;;){for(s--,s;s>=0;s--)if(r.lacingValues[s]<255){s++;break e}if(p(s===-1),!(r.headerType&1)){s=0;break}let a=Pr(n,o=>o.headerStartPos<r.headerStartPos);if(!a)return null;r=a,s=r.lacingValues.length}if(p(s!==-1),s===r.lacingValues.length){let i=n[n.indexOf(r)+1];p(i),r=i,s=0}return{page:r,segmentIndex:s}},en=(n,e,t)=>{if(t>0)return{page:e,segmentIndex:t-1};let r=Pr(n,s=>s.headerStartPos<e.headerStartPos);return r?{page:r,segmentIndex:r.lacingValues.length-1}:null};var Q=class{},et=class extends Q{async _getMajorBrand(e){if(await e._mainReader.source.getSize()<12)return null;let r=new ge(e._mainReader);return r.pos=4,r.readAscii(4)!=="ftyp"?null:r.readAscii(4)}_createDemuxer(e){return new qt(e)}},Zt=class extends et{async _canReadInput(e){let t=await this._getMajorBrand(e);return!!t&&t!=="qt "}get name(){return"MP4"}get mimeType(){return"video/mp4"}},Jt=class extends et{async _canReadInput(e){return await this._getMajorBrand(e)==="qt "}get name(){return"QuickTime File Format"}get mimeType(){return"video/quicktime"}},tt=class extends Q{async isSupportedEBMLOfDocType(e,t){if(await e._mainReader.source.getSize()<8)return!1;let s=new we(e._mainReader),i=s.readVarIntSize();if(i<1||i>8||s.readUnsignedInt(i)!==T.EBML)return!1;let o=s.readElementSize();if(o===null)return!1;let c=s.pos;for(;s.pos<c+o;){let{id:l,size:d}=s.readElementHeader(),u=s.pos;if(d===null)return!1;switch(l){case T.EBMLVersion:if(s.readUnsignedInt(d)!==1)return!1;break;case T.EBMLReadVersion:if(s.readUnsignedInt(d)!==1)return!1;break;case T.DocType:if(s.readString(d)!==t)return!1;break;case T.DocTypeVersion:if(s.readUnsignedInt(d)>4)return!1;break}s.pos=u+d}return!0}_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"matroska")}_createDemuxer(e){return new Gt(e)}get name(){return"Matroska"}get mimeType(){return"video/x-matroska"}},er=class extends tt{_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"webm")}get name(){return"WebM"}get mimeType(){return"video/webm"}},tr=class extends Q{async _canReadInput(e){let t=await e._mainReader.source.getSize();if(t<4)return!1;let r=new Ve(e._mainReader);r.fileSize=t;let s=r.readId3();s&&(r.pos+=s.size);let i=r.pos;await r.reader.loadRange(r.pos,r.pos+4096);let a=r.readNextFrameHeader(Math.min(i+4096,t));if(!a)return!1;if(s)return!0;r.pos=a.startPos+a.totalSize,await r.reader.loadRange(r.pos,r.pos+4);let o=r.readNextFrameHeader(r.pos+4);return!(!o||a.channel!==o.channel||a.sampleRate!==o.sampleRate)}_createDemuxer(e){return new Qt(e)}get name(){return"MP3"}get mimeType(){return"audio/mpeg"}},rr=class extends Q{async _canReadInput(e){if(await e._mainReader.source.getSize()<12)return!1;let r=new Se(e._mainReader),s=r.readAscii(4);return s!=="RIFF"&&s!=="RIFX"&&s!=="RF64"?!1:(r.pos=8,r.readAscii(4)==="WAVE")}_createDemuxer(e){return new jt(e)}get name(){return"WAVE"}get mimeType(){return"audio/wav"}},sr=class extends Q{async _canReadInput(e){return await e._mainReader.source.getSize()<4?!1:new Ae(e._mainReader).readAscii(4)==="OggS"}_createDemuxer(e){return new Yt(e)}get name(){return"Ogg"}get mimeType(){return"application/ogg"}},tn=new Zt,rn=new Jt,sn=new tt,nn=new er,an=new tr,on=new rr,cn=new sr,Ne=[tn,rn,sn,nn,on,cn,an];var ie=class{constructor(e){if(this._demuxerPromise=null,this._format=null,!e||typeof e!="object")throw new TypeError("options must be an object.");if(!Array.isArray(e.formats)||e.formats.some(t=>!(t instanceof Q)))throw new TypeError("options.formats must be an array of InputFormat.");if(!(e.source instanceof Te))throw new TypeError("options.source must be a Source.");this._formats=e.formats,this._source=e.source,this._mainReader=new W(e.source)}_getDemuxer(){return this._demuxerPromise??=(async()=>{await this._mainReader.loadRange(0,4096);for(let e of this._formats)if(await e._canReadInput(this))return this._format=e,e._createDemuxer(this);throw new Error("Input has an unsupported or unrecognizable format.")})()}get source(){return this._source}async getFormat(){return await this._getDemuxer(),p(this._format),this._format}async computeDuration(){return(await this._getDemuxer()).computeDuration()}async getTracks(){return(await this._getDemuxer()).getTracks()}async getVideoTracks(){return(await this.getTracks()).filter(t=>t.isVideoTrack())}async getPrimaryVideoTrack(){return(await this.getTracks()).find(t=>t.isVideoTrack())??null}async getAudioTracks(){return(await this.getTracks()).filter(t=>t.isAudioTrack())}async getPrimaryAudioTrack(){return(await this.getTracks()).find(t=>t.isAudioTrack())??null}async getMimeType(){return(await this._getDemuxer()).getMimeType()}};var nr=class{count=0;#e=new Map;register(e,t){this.#e.set(e,t)}unregister(e){this.#e.delete(e)}dispatch(e,t){this.#e.get(e)?.(t)}};var dn=n=>Ee.host(e=>({async world(){n.count++}}));async function rt(n){return n instanceof Blob?new Ze(n):new Je(n)}var ir=class{machina;thread;static async setup(e){let t=new nr,r=await Ee.thread({label:"OmnitoolDriver",workerUrl:e.workerUrl,setupHost:dn(t)});return new this(t,r)}constructor(e,t){this.machina=e,this.thread=t}async hello(){return this.thread.work.hello()}async getAudioDuration(e){return await(await new ie({source:await rt(e),formats:Ne}).getPrimaryAudioTrack())?.computeDuration()}async getVideoDuration(e){return await(await new ie({source:await rt(e),formats:Ne}).getPrimaryVideoTrack())?.computeDuration()}decode(e){let t=null,r=new TransformStream({async transform(i,a){let o=await e.onFrame?.(i)??i;t?.close(),a.enqueue(o),t=o}}),s=new TransformStream;return this.thread.work.decode[Pe]({transfer:[r.writable,s.writable]})({source:e.source,video:r.writable,audio:s.writable}),{audio:s.readable,video:r.readable}}async encode({readables:e,config:t}){let s=await(await window.showSaveFilePicker()).createWritable(),i=new WritableStream({async write(a){await s.write(a)},async close(){await s.close()}});return await this.thread.work.encode[Pe]({transfer:[e.audio,e.video,i]})({readables:e,config:t,bridge:i})}async composite(e){let t=this.#e(e);return await this.thread.work.composite[Pe]({transfer:t})(e)}#e(e){let t=[],r=s=>{if(Array.isArray(s))for(let i of s)r(i);else s&&typeof s=="object"&&"kind"in s&&s.kind==="image"&&s.frame instanceof VideoFrame&&t.push(s.frame)};return r(e),t}};var ii=new URL("../driver/driver.worker.bundle.min.js",import.meta.url),ar={driver:ir.setup({workerUrl:ii})};function O(n,e,t,r){return new(t||(t=Promise))(function(s,i){function a(l){try{c(r.next(l))}catch(d){i(d)}}function o(l){try{c(r.throw(l))}catch(d){i(d)}}function c(l){var d;l.done?s(l.value):(d=l.value,d instanceof t?d:new t(function(u){u(d)})).then(a,o)}c((r=r.apply(n,e||[])).next())})}var ve=class{constructor(){this.listeners={}}on(e,t,r){if(this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t),r?.once){let s=()=>{this.un(e,s),this.un(e,t)};return this.on(e,s),s}return()=>this.un(e,t)}un(e,t){var r;(r=this.listeners[e])===null||r===void 0||r.delete(t)}once(e,t){return this.on(e,t,{once:!0})}unAll(){this.listeners={}}emit(e,...t){this.listeners[e]&&this.listeners[e].forEach(r=>r(...t))}},or={decode:function(n,e){return O(this,void 0,void 0,function*(){let t=new AudioContext({sampleRate:e});return t.decodeAudioData(n).finally(()=>t.close())})},createBuffer:function(n,e){return typeof n[0]=="number"&&(n=[n]),function(t){let r=t[0];if(r.some(s=>s>1||s<-1)){let s=r.length,i=0;for(let a=0;a<s;a++){let o=Math.abs(r[a]);o>i&&(i=o)}for(let a of t)for(let o=0;o<s;o++)a[o]/=i}}(n),{duration:e,length:n[0].length,sampleRate:n[0].length/e,numberOfChannels:n.length,getChannelData:t=>n?.[t],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function un(n,e){let t=e.xmlns?document.createElementNS(e.xmlns,n):document.createElement(n);for(let[r,s]of Object.entries(e))if(r==="children"&&s)for(let[i,a]of Object.entries(s))a instanceof Node?t.appendChild(a):typeof a=="string"?t.appendChild(document.createTextNode(a)):t.appendChild(un(i,a));else r==="style"?Object.assign(t.style,s):r==="textContent"?t.textContent=s:t.setAttribute(r,s.toString());return t}function ln(n,e,t){let r=un(n,e||{});return t?.appendChild(r),r}var ai=Object.freeze({__proto__:null,createElement:ln,default:ln}),oi={fetchBlob:function(n,e,t){return O(this,void 0,void 0,function*(){let r=yield fetch(n,t);if(r.status>=400)throw new Error(`Failed to fetch ${n}: ${r.status} (${r.statusText})`);return function(s,i){O(this,void 0,void 0,function*(){if(!s.body||!s.headers)return;let a=s.body.getReader(),o=Number(s.headers.get("Content-Length"))||0,c=0,l=u=>O(this,void 0,void 0,function*(){c+=u?.length||0;let h=Math.round(c/o*100);i(h)}),d=()=>O(this,void 0,void 0,function*(){let u;try{u=yield a.read()}catch{return}u.done||(l(u.value),yield d())});d()})}(r.clone(),e),r.blob()})}},jr=class extends ve{constructor(e){super(),this.isExternalMedia=!1,e.media?(this.media=e.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),e.mediaControls&&(this.media.controls=!0),e.autoplay&&(this.media.autoplay=!0),e.playbackRate!=null&&this.onMediaEvent("canplay",()=>{e.playbackRate!=null&&(this.media.playbackRate=e.playbackRate)},{once:!0})}onMediaEvent(e,t,r){return this.media.addEventListener(e,t,r),()=>this.media.removeEventListener(e,t,r)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){let e=this.getSrc();e.startsWith("blob:")&&URL.revokeObjectURL(e)}canPlayType(e){return this.media.canPlayType(e)!==""}setSrc(e,t){let r=this.getSrc();if(e&&r===e)return;this.revokeSrc();let s=t instanceof Blob&&(this.canPlayType(t.type)||!e)?URL.createObjectURL(t):e;if(r&&this.media.removeAttribute("src"),s||e)try{this.media.src=s}catch{this.media.src=e}}destroy(){this.isExternalMedia||(this.media.pause(),this.media.remove(),this.revokeSrc(),this.media.removeAttribute("src"),this.media.load())}setMediaElement(e){this.media=e}play(){return O(this,void 0,void 0,function*(){return this.media.play()})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(e){this.media.currentTime=Math.max(0,Math.min(e,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(e){this.media.volume=e}getMuted(){return this.media.muted}setMuted(e){this.media.muted=e}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(e,t){t!=null&&(this.media.preservesPitch=t),this.media.playbackRate=e}getMediaElement(){return this.media}setSinkId(e){return this.media.setSinkId(e)}},nt=class n extends ve{constructor(e,t){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=e;let r=this.parentFromOptionsContainer(e.container);this.parent=r;let[s,i]=this.initHtml();r.appendChild(s),this.container=s,this.scrollContainer=i.querySelector(".scroll"),this.wrapper=i.querySelector(".wrapper"),this.canvasWrapper=i.querySelector(".canvases"),this.progressWrapper=i.querySelector(".progress"),this.cursor=i.querySelector(".cursor"),t&&i.appendChild(t),this.initEvents()}parentFromOptionsContainer(e){let t;if(typeof e=="string"?t=document.querySelector(e):e instanceof HTMLElement&&(t=e),!t)throw new Error("Container not found");return t}initEvents(){let e=t=>{let r=this.wrapper.getBoundingClientRect(),s=t.clientX-r.left,i=t.clientY-r.top;return[s/r.width,i/r.height]};if(this.wrapper.addEventListener("click",t=>{let[r,s]=e(t);this.emit("click",r,s)}),this.wrapper.addEventListener("dblclick",t=>{let[r,s]=e(t);this.emit("dblclick",r,s)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{let{scrollLeft:t,scrollWidth:r,clientWidth:s}=this.scrollContainer,i=t/r,a=(t+s)/r;this.emit("scroll",i,a,t,t+s)}),typeof ResizeObserver=="function"){let t=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{t().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){let e=this.parent.clientWidth;e===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=e,this.reRender())}initDrag(){this.subscriptions.push(function(e,t,r,s,i=3,a=0,o=100){if(!e)return()=>{};let c=matchMedia("(pointer: coarse)").matches,l=()=>{},d=u=>{if(u.button!==a)return;u.preventDefault(),u.stopPropagation();let h=u.clientX,m=u.clientY,f=!1,w=Date.now(),g=y=>{if(y.preventDefault(),y.stopPropagation(),c&&Date.now()-w<o)return;let x=y.clientX,v=y.clientY,_=x-h,E=v-m;if(f||Math.abs(_)>i||Math.abs(E)>i){let R=e.getBoundingClientRect(),{left:I,top:N}=R;f||(r?.(h-I,m-N),f=!0),t(_,E,x-I,v-N),h=x,m=v}},b=y=>{if(f){let x=y.clientX,v=y.clientY,_=e.getBoundingClientRect(),{left:E,top:R}=_;s?.(x-E,v-R)}l()},k=y=>{y.relatedTarget&&y.relatedTarget!==document.documentElement||b(y)},P=y=>{f&&(y.stopPropagation(),y.preventDefault())},S=y=>{f&&y.preventDefault()};document.addEventListener("pointermove",g),document.addEventListener("pointerup",b),document.addEventListener("pointerout",k),document.addEventListener("pointercancel",k),document.addEventListener("touchmove",S,{passive:!1}),document.addEventListener("click",P,{capture:!0}),l=()=>{document.removeEventListener("pointermove",g),document.removeEventListener("pointerup",b),document.removeEventListener("pointerout",k),document.removeEventListener("pointercancel",k),document.removeEventListener("touchmove",S),setTimeout(()=>{document.removeEventListener("click",P,{capture:!0})},10)}};return e.addEventListener("pointerdown",d),()=>{l(),e.removeEventListener("pointerdown",d)}}(this.wrapper,(e,t,r)=>{this.emit("drag",Math.max(0,Math.min(1,r/this.wrapper.getBoundingClientRect().width)))},e=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,e/this.wrapper.getBoundingClientRect().width)))},e=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,e/this.wrapper.getBoundingClientRect().width)))}))}getHeight(e,t){var r;let s=((r=this.audioData)===null||r===void 0?void 0:r.numberOfChannels)||1;if(e==null)return 128;if(!isNaN(Number(e)))return Number(e);if(e==="auto"){let i=this.parent.clientHeight||128;return t?.every(a=>!a.overlay)?i/s:i}return 128}initHtml(){let e=document.createElement("div"),t=e.attachShadow({mode:"open"}),r=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return t.innerHTML=`
1
+ var w_=Object.create;var ef=Object.defineProperty;var __=Object.getOwnPropertyDescriptor;var S_=Object.getOwnPropertyNames;var T_=Object.getPrototypeOf,v_=Object.prototype.hasOwnProperty;var b=(i,e)=>()=>(i&&(e=i(i=0)),e);var tf=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var k_=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of S_(e))!v_.call(i,s)&&s!==t&&ef(i,s,{get:()=>e[s],enumerable:!(r=__(e,s))||r.enumerable});return i};var rf=(i,e,t)=>(t=i!=null?w_(T_(i)):{},k_(e||!i||!i.__esModule?ef(t,"default",{value:i,enumerable:!0}):t,i));var A,ou,pa,L,G=b(()=>{"use strict";A=(i=>(i.Application="application",i.WebGLPipes="webgl-pipes",i.WebGLPipesAdaptor="webgl-pipes-adaptor",i.WebGLSystem="webgl-system",i.WebGPUPipes="webgpu-pipes",i.WebGPUPipesAdaptor="webgpu-pipes-adaptor",i.WebGPUSystem="webgpu-system",i.CanvasSystem="canvas-system",i.CanvasPipesAdaptor="canvas-pipes-adaptor",i.CanvasPipes="canvas-pipes",i.Asset="asset",i.LoadParser="load-parser",i.ResolveParser="resolve-parser",i.CacheParser="cache-parser",i.DetectionParser="detection-parser",i.MaskEffect="mask-effect",i.BlendMode="blend-mode",i.TextureSource="texture-source",i.Environment="environment",i.ShapeBuilder="shape-builder",i.Batcher="batcher",i))(A||{}),ou=i=>{if(typeof i=="function"||typeof i=="object"&&i.extension){if(!i.extension)throw new Error("Extension class must have an extension object");i={...typeof i.extension!="object"?{type:i.extension}:i.extension,ref:i}}if(typeof i=="object")i={...i};else throw new Error("Invalid extension type");return typeof i.type=="string"&&(i.type=[i.type]),i},pa=(i,e)=>ou(i).priority??e,L={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...i){return i.map(ou).forEach(e=>{e.type.forEach(t=>this._removeHandlers[t]?.(e))}),this},add(...i){return i.map(ou).forEach(e=>{e.type.forEach(t=>{let r=this._addHandlers,s=this._queue;r[t]?r[t]?.(e):(s[t]=s[t]||[],s[t]?.push(e))})}),this},handle(i,e,t){let r=this._addHandlers,s=this._removeHandlers;if(r[i]||s[i])throw new Error(`Extension type ${i} already has a handler`);r[i]=e,s[i]=t;let n=this._queue;return n[i]&&(n[i]?.forEach(o=>e(o)),delete n[i]),this},handleByMap(i,e){return this.handle(i,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByNamedList(i,e,t=-1){return this.handle(i,r=>{e.findIndex(n=>n.name===r.name)>=0||(e.push({name:r.name,value:r.ref}),e.sort((n,o)=>pa(o.value,t)-pa(n.value,t)))},r=>{let s=e.findIndex(n=>n.name===r.name);s!==-1&&e.splice(s,1)})},handleByList(i,e,t=-1){return this.handle(i,r=>{e.includes(r.ref)||(e.push(r.ref),e.sort((s,n)=>pa(n,t)-pa(s,t)))},r=>{let s=e.indexOf(r.ref);s!==-1&&e.splice(s,1)})},mixin(i,...e){for(let t of e)Object.defineProperties(i.prototype,Object.getOwnPropertyDescriptors(t))}}});var jm=tf((m3,au)=>{"use strict";var wS=Object.prototype.hasOwnProperty,Oe="~";function Vs(){}Object.create&&(Vs.prototype=Object.create(null),new Vs().__proto__||(Oe=!1));function _S(i,e,t){this.fn=i,this.context=e,this.once=t||!1}function Hm(i,e,t,r,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var n=new _S(t,r||i,s),o=Oe?Oe+e:e;return i._events[o]?i._events[o].fn?i._events[o]=[i._events[o],n]:i._events[o].push(n):(i._events[o]=n,i._eventsCount++),i}function ga(i,e){--i._eventsCount===0?i._events=new Vs:delete i._events[e]}function Me(){this._events=new Vs,this._eventsCount=0}Me.prototype.eventNames=function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)wS.call(t,r)&&e.push(Oe?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Me.prototype.listeners=function(e){var t=Oe?Oe+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,n=r.length,o=new Array(n);s<n;s++)o[s]=r[s].fn;return o};Me.prototype.listenerCount=function(e){var t=Oe?Oe+e:e,r=this._events[t];return r?r.fn?1:r.length:0};Me.prototype.emit=function(e,t,r,s,n,o){var a=Oe?Oe+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,h;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,r),!0;case 4:return c.fn.call(c.context,t,r,s),!0;case 5:return c.fn.call(c.context,t,r,s,n),!0;case 6:return c.fn.call(c.context,t,r,s,n,o),!0}for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c.fn.apply(c.context,u)}else{var d=c.length,f;for(h=0;h<d;h++)switch(c[h].once&&this.removeListener(e,c[h].fn,void 0,!0),l){case 1:c[h].fn.call(c[h].context);break;case 2:c[h].fn.call(c[h].context,t);break;case 3:c[h].fn.call(c[h].context,t,r);break;case 4:c[h].fn.call(c[h].context,t,r,s);break;default:if(!u)for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c[h].fn.apply(c[h].context,u)}}return!0};Me.prototype.on=function(e,t,r){return Hm(this,e,t,r,!1)};Me.prototype.once=function(e,t,r){return Hm(this,e,t,r,!0)};Me.prototype.removeListener=function(e,t,r,s){var n=Oe?Oe+e:e;if(!this._events[n])return this;if(!t)return ga(this,n),this;var o=this._events[n];if(o.fn)o.fn===t&&(!s||o.once)&&(!r||o.context===r)&&ga(this,n);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||s&&!o[a].once||r&&o[a].context!==r)&&c.push(o[a]);c.length?this._events[n]=c.length===1?c[0]:c:ga(this,n)}return this};Me.prototype.removeAllListeners=function(e){var t;return e?(t=Oe?Oe+e:e,this._events[t]&&ga(this,t)):(this._events=new Vs,this._eventsCount=0),this};Me.prototype.off=Me.prototype.removeListener;Me.prototype.addListener=Me.prototype.on;Me.prefixed=Oe;Me.EventEmitter=Me;typeof au<"u"&&(au.exports=Me)});var $m,ie,He=b(()=>{$m=rf(jm(),1),ie=$m.default});var SS,qt,_e,tt,ep,qm,cu,TS,xa,tp,rp,Xm,Ym,Km,Ws,vS,kS,PS,CS,hu,Zm,ES,lu,uu,Qm,du,ht,Jm,ip,sp=b(()=>{SS={grad:.9,turn:360,rad:360/(2*Math.PI)},qt=function(i){return typeof i=="string"?i.length>0:typeof i=="number"},_e=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*i)/t+0},tt=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),i>t?t:i>e?i:e},ep=function(i){return(i=isFinite(i)?i%360:0)>0?i:i+360},qm=function(i){return{r:tt(i.r,0,255),g:tt(i.g,0,255),b:tt(i.b,0,255),a:tt(i.a)}},cu=function(i){return{r:_e(i.r),g:_e(i.g),b:_e(i.b),a:_e(i.a,3)}},TS=/^#([0-9a-f]{3,8})$/i,xa=function(i){var e=i.toString(16);return e.length<2?"0"+e:e},tp=function(i){var e=i.r,t=i.g,r=i.b,s=i.a,n=Math.max(e,t,r),o=n-Math.min(e,t,r),a=o?n===e?(t-r)/o:n===t?2+(r-e)/o:4+(e-t)/o:0;return{h:60*(a<0?a+6:a),s:n?o/n*100:0,v:n/255*100,a:s}},rp=function(i){var e=i.h,t=i.s,r=i.v,s=i.a;e=e/360*6,t/=100,r/=100;var n=Math.floor(e),o=r*(1-t),a=r*(1-(e-n)*t),c=r*(1-(1-e+n)*t),l=n%6;return{r:255*[r,a,o,o,c,r][l],g:255*[c,r,r,a,o,o][l],b:255*[o,o,c,r,r,a][l],a:s}},Xm=function(i){return{h:ep(i.h),s:tt(i.s,0,100),l:tt(i.l,0,100),a:tt(i.a)}},Ym=function(i){return{h:_e(i.h),s:_e(i.s),l:_e(i.l),a:_e(i.a,3)}},Km=function(i){return rp((t=(e=i).s,{h:e.h,s:(t*=((r=e.l)<50?r:100-r)/100)>0?2*t/(r+t)*100:0,v:r+t,a:e.a}));var e,t,r},Ws=function(i){return{h:(e=tp(i)).h,s:(s=(200-(t=e.s))*(r=e.v)/100)>0&&s<200?t*r/100/(s<=100?s:200-s)*100:0,l:s/2,a:e.a};var e,t,r,s},vS=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,kS=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,PS=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,CS=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hu={string:[[function(i){var e=TS.exec(i);return e?(i=e[1]).length<=4?{r:parseInt(i[0]+i[0],16),g:parseInt(i[1]+i[1],16),b:parseInt(i[2]+i[2],16),a:i.length===4?_e(parseInt(i[3]+i[3],16)/255,2):1}:i.length===6||i.length===8?{r:parseInt(i.substr(0,2),16),g:parseInt(i.substr(2,2),16),b:parseInt(i.substr(4,2),16),a:i.length===8?_e(parseInt(i.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(i){var e=PS.exec(i)||CS.exec(i);return e?e[2]!==e[4]||e[4]!==e[6]?null:qm({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(i){var e=vS.exec(i)||kS.exec(i);if(!e)return null;var t,r,s=Xm({h:(t=e[1],r=e[2],r===void 0&&(r="deg"),Number(t)*(SS[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return Km(s)},"hsl"]],object:[[function(i){var e=i.r,t=i.g,r=i.b,s=i.a,n=s===void 0?1:s;return qt(e)&&qt(t)&&qt(r)?qm({r:Number(e),g:Number(t),b:Number(r),a:Number(n)}):null},"rgb"],[function(i){var e=i.h,t=i.s,r=i.l,s=i.a,n=s===void 0?1:s;if(!qt(e)||!qt(t)||!qt(r))return null;var o=Xm({h:Number(e),s:Number(t),l:Number(r),a:Number(n)});return Km(o)},"hsl"],[function(i){var e=i.h,t=i.s,r=i.v,s=i.a,n=s===void 0?1:s;if(!qt(e)||!qt(t)||!qt(r))return null;var o=function(a){return{h:ep(a.h),s:tt(a.s,0,100),v:tt(a.v,0,100),a:tt(a.a)}}({h:Number(e),s:Number(t),v:Number(r),a:Number(n)});return rp(o)},"hsv"]]},Zm=function(i,e){for(var t=0;t<e.length;t++){var r=e[t][0](i);if(r)return[r,e[t][1]]}return[null,void 0]},ES=function(i){return typeof i=="string"?Zm(i.trim(),hu.string):typeof i=="object"&&i!==null?Zm(i,hu.object):[null,void 0]},lu=function(i,e){var t=Ws(i);return{h:t.h,s:tt(t.s+100*e,0,100),l:t.l,a:t.a}},uu=function(i){return(299*i.r+587*i.g+114*i.b)/1e3/255},Qm=function(i,e){var t=Ws(i);return{h:t.h,s:t.s,l:tt(t.l+100*e,0,100),a:t.a}},du=function(){function i(e){this.parsed=ES(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return i.prototype.isValid=function(){return this.parsed!==null},i.prototype.brightness=function(){return _e(uu(this.rgba),2)},i.prototype.isDark=function(){return uu(this.rgba)<.5},i.prototype.isLight=function(){return uu(this.rgba)>=.5},i.prototype.toHex=function(){return e=cu(this.rgba),t=e.r,r=e.g,s=e.b,o=(n=e.a)<1?xa(_e(255*n)):"","#"+xa(t)+xa(r)+xa(s)+o;var e,t,r,s,n,o},i.prototype.toRgb=function(){return cu(this.rgba)},i.prototype.toRgbString=function(){return e=cu(this.rgba),t=e.r,r=e.g,s=e.b,(n=e.a)<1?"rgba("+t+", "+r+", "+s+", "+n+")":"rgb("+t+", "+r+", "+s+")";var e,t,r,s,n},i.prototype.toHsl=function(){return Ym(Ws(this.rgba))},i.prototype.toHslString=function(){return e=Ym(Ws(this.rgba)),t=e.h,r=e.s,s=e.l,(n=e.a)<1?"hsla("+t+", "+r+"%, "+s+"%, "+n+")":"hsl("+t+", "+r+"%, "+s+"%)";var e,t,r,s,n},i.prototype.toHsv=function(){return e=tp(this.rgba),{h:_e(e.h),s:_e(e.s),v:_e(e.v),a:_e(e.a,3)};var e},i.prototype.invert=function(){return ht({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},i.prototype.saturate=function(e){return e===void 0&&(e=.1),ht(lu(this.rgba,e))},i.prototype.desaturate=function(e){return e===void 0&&(e=.1),ht(lu(this.rgba,-e))},i.prototype.grayscale=function(){return ht(lu(this.rgba,-1))},i.prototype.lighten=function(e){return e===void 0&&(e=.1),ht(Qm(this.rgba,e))},i.prototype.darken=function(e){return e===void 0&&(e=.1),ht(Qm(this.rgba,-e))},i.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},i.prototype.alpha=function(e){return typeof e=="number"?ht({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):_e(this.rgba.a,3);var t},i.prototype.hue=function(e){var t=Ws(this.rgba);return typeof e=="number"?ht({h:e,s:t.s,l:t.l,a:t.a}):_e(t.h)},i.prototype.isEqual=function(e){return this.toHex()===ht(e).toHex()},i}(),ht=function(i){return i instanceof du?i:new du(i)},Jm=[],ip=function(i){i.forEach(function(e){Jm.indexOf(e)<0&&(e(du,hu),Jm.push(e))})}});function np(i,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},r={};for(var s in t)r[t[s]]=s;var n={};i.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,c,l=r[this.toHex()];if(l)return l;if(o?.closest){var u=this.toRgb(),h=1/0,d="black";if(!n.length)for(var f in t)n[f]=new i(t[f]).toRgb();for(var m in t){var p=(a=u,c=n[m],Math.pow(a.r-c.r,2)+Math.pow(a.g-c.g,2)+Math.pow(a.b-c.b,2));p<h&&(h=p,d=m)}return d}},e.string.push([function(o){var a=o.toLowerCase(),c=a==="transparent"?"#0000":t[a];return c?new i(c).toRgb():null},"name"])}var op=b(()=>{});var Di,X,je=b(()=>{sp();op();ip([np]);Di=class Hs{constructor(e=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=e}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(e){return this.value=e,this}set value(e){if(e instanceof Hs)this._value=this._cloneSource(e._value),this._int=e._int,this._components.set(e._components);else{if(e===null)throw new Error("Cannot set Color#value to null");(this._value===null||!this._isSourceEqual(this._value,e))&&(this._value=this._cloneSource(e),this._normalize(this._value))}}get value(){return this._value}_cloneSource(e){return typeof e=="string"||typeof e=="number"||e instanceof Number||e===null?e:Array.isArray(e)||ArrayBuffer.isView(e)?e.slice(0):typeof e=="object"&&e!==null?{...e}:e}_isSourceEqual(e,t){let r=typeof e;if(r!==typeof t)return!1;if(r==="number"||r==="string"||e instanceof Number)return e===t;if(Array.isArray(e)&&Array.isArray(t)||ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return e.length!==t.length?!1:e.every((n,o)=>n===t[o]);if(e!==null&&t!==null){let n=Object.keys(e),o=Object.keys(t);return n.length!==o.length?!1:n.every(a=>e[a]===t[a])}return e===t}toRgba(){let[e,t,r,s]=this._components;return{r:e,g:t,b:r,a:s}}toRgb(){let[e,t,r]=this._components;return{r:e,g:t,b:r}}toRgbaString(){let[e,t,r]=this.toUint8RgbArray();return`rgba(${e},${t},${r},${this.alpha})`}toUint8RgbArray(e){let[t,r,s]=this._components;return this._arrayRgb||(this._arrayRgb=[]),e||(e=this._arrayRgb),e[0]=Math.round(t*255),e[1]=Math.round(r*255),e[2]=Math.round(s*255),e}toArray(e){this._arrayRgba||(this._arrayRgba=[]),e||(e=this._arrayRgba);let[t,r,s,n]=this._components;return e[0]=t,e[1]=r,e[2]=s,e[3]=n,e}toRgbArray(e){this._arrayRgb||(this._arrayRgb=[]),e||(e=this._arrayRgb);let[t,r,s]=this._components;return e[0]=t,e[1]=r,e[2]=s,e}toNumber(){return this._int}toBgrNumber(){let[e,t,r]=this.toUint8RgbArray();return(r<<16)+(t<<8)+e}toLittleEndianNumber(){let e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){let[t,r,s,n]=Hs._temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=r,this._components[2]*=s,this._components[3]*=n,this._refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this._refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let r=this._int>>16&255,s=this._int>>8&255,n=this._int&255;return t&&(r=r*e+.5|0,s=s*e+.5|0,n=n*e+.5|0),(e*255<<24)+(r<<16)+(s<<8)+n}toHex(){let e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){let t=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-t.length)+t}setAlpha(e){return this._components[3]=this._clamp(e),this}_normalize(e){let t,r,s,n;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){let o=e;t=(o>>16&255)/255,r=(o>>8&255)/255,s=(o&255)/255,n=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,r,s,n=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,r,s,n=255]=e,t/=255,r/=255,s/=255,n/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){let a=Hs.HEX_PATTERN.exec(e);a&&(e=`#${a[2]}`)}let o=ht(e);o.isValid()&&({r:t,g:r,b:s,a:n}=o.rgba,t/=255,r/=255,s/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=r,this._components[2]=s,this._components[3]=n,this._refreshInt();else throw new Error(`Unable to convert color ${e}`)}_refreshInt(){this._clamp(this._components);let[e,t,r]=this._components;this._int=(e*255<<16)+(t*255<<8)+(r*255|0)}_clamp(e,t=0,r=1){return typeof e=="number"?Math.min(Math.max(e,t),r):(e.forEach((s,n)=>{e[n]=Math.min(Math.max(s,t),r)}),e)}static isColorLike(e){return typeof e=="number"||typeof e=="string"||e instanceof Number||e instanceof Hs||Array.isArray(e)||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Float32Array||e.r!==void 0&&e.g!==void 0&&e.b!==void 0||e.r!==void 0&&e.g!==void 0&&e.b!==void 0&&e.a!==void 0||e.h!==void 0&&e.s!==void 0&&e.l!==void 0||e.h!==void 0&&e.s!==void 0&&e.l!==void 0&&e.a!==void 0||e.h!==void 0&&e.s!==void 0&&e.v!==void 0||e.h!==void 0&&e.s!==void 0&&e.v!==void 0&&e.a!==void 0}};Di.shared=new Di;Di._temp=new Di;Di.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;X=Di});var ap,cp=b(()=>{"use strict";ap={cullArea:null,cullable:!1,cullableChildren:!0}});var lp,up,hp,fu=b(()=>{"use strict";lp=Math.PI*2,up=180/Math.PI,hp=Math.PI/180});var Y,mu,vt=b(()=>{"use strict";Y=class i{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new i(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return mu.x=0,mu.y=0,mu}},mu=new Y});var F,AS,IS,re=b(()=>{fu();vt();F=class i{constructor(e=1,t=0,r=0,s=1,n=0,o=0){this.array=null,this.a=e,this.b=t,this.c=r,this.d=s,this.tx=n,this.ty=o}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,r,s,n,o){return this.a=e,this.b=t,this.c=r,this.d=s,this.tx=n,this.ty=o,this}toArray(e,t){this.array||(this.array=new Float32Array(9));let r=t||this.array;return e?(r[0]=this.a,r[1]=this.b,r[2]=0,r[3]=this.c,r[4]=this.d,r[5]=0,r[6]=this.tx,r[7]=this.ty,r[8]=1):(r[0]=this.a,r[1]=this.c,r[2]=this.tx,r[3]=this.b,r[4]=this.d,r[5]=this.ty,r[6]=0,r[7]=0,r[8]=1),r}apply(e,t){t=t||new Y;let r=e.x,s=e.y;return t.x=this.a*r+this.c*s+this.tx,t.y=this.b*r+this.d*s+this.ty,t}applyInverse(e,t){t=t||new Y;let r=this.a,s=this.b,n=this.c,o=this.d,a=this.tx,c=this.ty,l=1/(r*o+n*-s),u=e.x,h=e.y;return t.x=o*l*u+-n*l*h+(c*n-a*o)*l,t.y=r*l*h+-s*l*u+(-c*r+a*s)*l,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){let t=Math.cos(e),r=Math.sin(e),s=this.a,n=this.c,o=this.tx;return this.a=s*t-this.b*r,this.b=s*r+this.b*t,this.c=n*t-this.d*r,this.d=n*r+this.d*t,this.tx=o*t-this.ty*r,this.ty=o*r+this.ty*t,this}append(e){let t=this.a,r=this.b,s=this.c,n=this.d;return this.a=e.a*t+e.b*s,this.b=e.a*r+e.b*n,this.c=e.c*t+e.d*s,this.d=e.c*r+e.d*n,this.tx=e.tx*t+e.ty*s+this.tx,this.ty=e.tx*r+e.ty*n+this.ty,this}appendFrom(e,t){let r=e.a,s=e.b,n=e.c,o=e.d,a=e.tx,c=e.ty,l=t.a,u=t.b,h=t.c,d=t.d;return this.a=r*l+s*h,this.b=r*u+s*d,this.c=n*l+o*h,this.d=n*u+o*d,this.tx=a*l+c*h+t.tx,this.ty=a*u+c*d+t.ty,this}setTransform(e,t,r,s,n,o,a,c,l){return this.a=Math.cos(a+l)*n,this.b=Math.sin(a+l)*n,this.c=-Math.sin(a-c)*o,this.d=Math.cos(a-c)*o,this.tx=e-(r*this.a+s*this.c),this.ty=t-(r*this.b+s*this.d),this}prepend(e){let t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){let r=this.a,s=this.c;this.a=r*e.a+this.b*e.c,this.b=r*e.b+this.b*e.d,this.c=s*e.a+this.d*e.c,this.d=s*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){let t=this.a,r=this.b,s=this.c,n=this.d,o=e.pivot,a=-Math.atan2(-s,n),c=Math.atan2(r,t),l=Math.abs(a+c);return l<1e-5||Math.abs(lp-l)<1e-5?(e.rotation=c,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=a,e.skew.y=c),e.scale.x=Math.sqrt(t*t+r*r),e.scale.y=Math.sqrt(s*s+n*n),e.position.x=this.tx+(o.x*t+o.y*s),e.position.y=this.ty+(o.x*r+o.y*n),e}invert(){let e=this.a,t=this.b,r=this.c,s=this.d,n=this.tx,o=e*s-t*r;return this.a=s/o,this.b=-t/o,this.c=-r/o,this.d=e/o,this.tx=(r*this.ty-s*n)/o,this.ty=-(e*this.ty-t*n)/o,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){let e=new i;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}equals(e){return e.a===this.a&&e.b===this.b&&e.c===this.c&&e.d===this.d&&e.tx===this.tx&&e.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return IS.identity()}static get shared(){return AS.identity()}},AS=new F,IS=new F});var ze,pu=b(()=>{"use strict";ze=class i{constructor(e,t,r){this._x=t||0,this._y=r||0,this._observer=e}clone(e){return new i(e??this._observer,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this._observer._onUpdate(this)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this._observer._onUpdate(this)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=${this._x} y=${this._y} scope=${this._observer}]`}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this._observer._onUpdate(this))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this._observer._onUpdate(this))}}});function K(i="default"){return gu[i]===void 0&&(gu[i]=-1),++gu[i]}var gu,Ue=b(()=>{"use strict";gu={default:-1}});function N(i,e,t=3){if(dp[e])return;let r=new Error().stack;typeof r>"u"?console.warn("PixiJS Deprecation Warning: ",`${e}
2
+ Deprecated since v${i}`):(r=r.split(`
3
+ `).splice(t).join(`
4
+ `),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${e}
5
+ Deprecated since v${i}`),console.warn(r),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${e}
6
+ Deprecated since v${i}`),console.warn(r))),dp[e]=!0}var dp,$,fp,pe=b(()=>{"use strict";dp={},$="8.0.0",fp="8.3.4"});var Wr,xu=b(()=>{"use strict";Wr=class{constructor(e,t){this._pool=[],this._count=0,this._index=0,this._classType=e,t&&this.prepopulate(t)}prepopulate(e){for(let t=0;t<e;t++)this._pool[this._index++]=new this._classType;this._count+=e}get(e){let t;return this._index>0?t=this._pool[--this._index]:t=new this._classType,t.init?.(e),t}return(e){e.reset?.(),this._pool[this._index++]=e}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){this._pool.length=0,this._index=0}}});var yu,be,Hr=b(()=>{xu();yu=class{constructor(){this._poolsByClass=new Map}prepopulate(e,t){this.getPool(e).prepopulate(t)}get(e,t){return this.getPool(e).get(t)}return(e){this.getPool(e.constructor).return(e)}getPool(e){return this._poolsByClass.has(e)||this._poolsByClass.set(e,new Wr(e)),this._poolsByClass.get(e)}stats(){let e={};return this._poolsByClass.forEach(t=>{let r=e[t._classType.name]?t._classType.name+t._classType.ID:t._classType.name;e[r]={free:t.totalFree,used:t.totalUsed,size:t.totalSize}}),e}},be=new yu});var mp,pp=b(()=>{pe();mp={get isCachedAsTexture(){return!!this.renderGroup?.isCachedAsTexture},cacheAsTexture(i){typeof i=="boolean"&&i===!1?this.disableRenderGroup():(this.enableRenderGroup(),this.renderGroup.enableCacheAsTexture(i===!0?{}:i))},updateCacheTexture(){this.renderGroup?.updateCacheTexture()},get cacheAsBitmap(){return this.isCachedAsTexture},set cacheAsBitmap(i){N("v8.6.0","cacheAsBitmap is deprecated, use cacheAsTexture instead."),this.cacheAsTexture(i)}}});function ya(i,e,t){let r=i.length,s;if(e>=r||t===0)return;t=e+t>r?r-e:t;let n=r-t;for(s=e;s<n;++s)i[s]=i[s+t];i.length=n}var bu=b(()=>{"use strict"});var gp,xp=b(()=>{bu();pe();gp={allowChildren:!0,removeChildren(i=0,e){let t=e??this.children.length,r=t-i,s=[];if(r>0&&r<=t){for(let o=t-1;o>=i;o--){let a=this.children[o];a&&(s.push(a),a.parent=null)}ya(this.children,i,t);let n=this.renderGroup||this.parentRenderGroup;n&&n.removeChildren(s);for(let o=0;o<s.length;++o){let a=s[o];a.parentRenderLayer?.detach(a),this.emit("childRemoved",a,this,o),s[o].emit("removed",this)}return s.length>0&&this._didViewChangeTick++,s}else if(r===0&&this.children.length===0)return s;throw new RangeError("removeChildren: numeric values are outside the acceptable range.")},removeChildAt(i){let e=this.getChildAt(i);return this.removeChild(e)},getChildAt(i){if(i<0||i>=this.children.length)throw new Error(`getChildAt: Index (${i}) does not exist.`);return this.children[i]},setChildIndex(i,e){if(e<0||e>=this.children.length)throw new Error(`The index ${e} supplied is out of bounds ${this.children.length}`);this.getChildIndex(i),this.addChildAt(i,e)},getChildIndex(i){let e=this.children.indexOf(i);if(e===-1)throw new Error("The supplied Container must be a child of the caller");return e},addChildAt(i,e){this.allowChildren||N($,"addChildAt: Only Containers will be allowed to add children in v8.0.0");let{children:t}=this;if(e<0||e>t.length)throw new Error(`${i}addChildAt: The index ${e} supplied is out of bounds ${t.length}`);if(i.parent){let s=i.parent.children.indexOf(i);if(i.parent===this&&s===e)return i;s!==-1&&i.parent.children.splice(s,1)}e===t.length?t.push(i):t.splice(e,0,i),i.parent=this,i.didChange=!0,i._updateFlags=15;let r=this.renderGroup||this.parentRenderGroup;return r&&r.addChild(i),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",i,this,e),i.emit("added",this),i},swapChildren(i,e){if(i===e)return;let t=this.getChildIndex(i),r=this.getChildIndex(e);this.children[t]=e,this.children[r]=i;let s=this.renderGroup||this.parentRenderGroup;s&&(s.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){this.parent?.removeChild(this)},reparentChild(...i){return i.length===1?this.reparentChildAt(i[0],this.children.length):(i.forEach(e=>this.reparentChildAt(e,this.children.length)),i[0])},reparentChildAt(i,e){if(i.parent===this)return this.setChildIndex(i,e),i;let t=i.worldTransform.clone();i.removeFromParent(),this.addChildAt(i,e);let r=this.worldTransform.clone();return r.invert(),t.prepend(r),i.setFromMatrix(t),i}}});var yp,bp=b(()=>{"use strict";yp={collectRenderables(i,e,t){this.parentRenderLayer&&this.parentRenderLayer!==t||this.globalDisplayStatus<7||!this.includeInBuild||(this.sortableChildren&&this.sortChildren(),this.isSimple?this.collectRenderablesSimple(i,e,t):this.renderGroup?e.renderPipes.renderGroup.addRenderGroup(this.renderGroup,i):this.collectRenderablesWithEffects(i,e,t))},collectRenderablesSimple(i,e,t){let r=this.children,s=r.length;for(let n=0;n<s;n++)r[n].collectRenderables(i,e,t)},collectRenderablesWithEffects(i,e,t){let{renderPipes:r}=e;for(let s=0;s<this.effects.length;s++){let n=this.effects[s];r[n.pipe].push(n,this,i)}this.collectRenderablesSimple(i,e,t);for(let s=this.effects.length-1;s>=0;s--){let n=this.effects[s];r[n.pipe].pop(n,this,i)}}}});var js,wp=b(()=>{"use strict";js=class{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let e=0;e<this.filters.length;e++)this.filters[e].destroy();this.filters=null,this.filterArea=null}}});var wu,ba,_p=b(()=>{G();Hr();wu=class{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(e=>{this.add({test:e.test,maskClass:e})}))}add(e){this._tests.push(e)}getMaskEffect(e){this._initialized||this.init();for(let t=0;t<this._tests.length;t++){let r=this._tests[t];if(r.test(e))return be.get(r.maskClass,e)}return e}returnMaskEffect(e){be.return(e)}},ba=new wu;L.handleByList(A.MaskEffect,ba._effectClasses)});var Sp,Tp=b(()=>{wp();_p();Sp={_maskEffect:null,_maskOptions:{inverse:!1},_filterEffect:null,effects:[],_markStructureAsChanged(){let i=this.renderGroup||this.parentRenderGroup;i&&(i.structureDidChange=!0)},addEffect(i){this.effects.indexOf(i)===-1&&(this.effects.push(i),this.effects.sort((t,r)=>t.priority-r.priority),this._markStructureAsChanged(),this._updateIsSimple())},removeEffect(i){let e=this.effects.indexOf(i);e!==-1&&(this.effects.splice(e,1),this._markStructureAsChanged(),this._updateIsSimple())},set mask(i){let e=this._maskEffect;e?.mask!==i&&(e&&(this.removeEffect(e),ba.returnMaskEffect(e),this._maskEffect=null),i!=null&&(this._maskEffect=ba.getMaskEffect(i),this.addEffect(this._maskEffect)))},get mask(){return this._maskEffect?.mask},setMask(i){this._maskOptions={...this._maskOptions,...i},i.mask&&(this.mask=i.mask),this._markStructureAsChanged()},set filters(i){!Array.isArray(i)&&i&&(i=[i]);let e=this._filterEffect||(this._filterEffect=new js);i=i;let t=i?.length>0,r=e.filters?.length>0,s=t!==r;i=Array.isArray(i)?i.slice(0):i,e.filters=Object.freeze(i),s&&(t?this.addEffect(e):(this.removeEffect(e),e.filters=i??null))},get filters(){return this._filterEffect?.filters},set filterArea(i){this._filterEffect||(this._filterEffect=new js),this._filterEffect.filterArea=i},get filterArea(){return this._filterEffect?.filterArea}}});var vp,kp=b(()=>{pe();vp={label:null,get name(){return N($,"Container.name property has been removed, use Container.label instead"),this.label},set name(i){N($,"Container.name property has been removed, use Container.label instead"),this.label=i},getChildByName(i,e=!1){return this.getChildByLabel(i,e)},getChildByLabel(i,e=!1){let t=this.children;for(let r=0;r<t.length;r++){let s=t[r];if(s.label===i||i instanceof RegExp&&i.test(s.label))return s}if(e)for(let r=0;r<t.length;r++){let n=t[r].getChildByLabel(i,!0);if(n)return n}return null},getChildrenByLabel(i,e=!1,t=[]){let r=this.children;for(let s=0;s<r.length;s++){let n=r[s];(n.label===i||i instanceof RegExp&&i.test(n.label))&&t.push(n)}if(e)for(let s=0;s<r.length;s++)r[s].getChildrenByLabel(i,!0,t);return t}}});var wa,Z,$e=b(()=>{vt();wa=[new Y,new Y,new Y,new Y],Z=class i{constructor(e=0,t=0,r=0,s=0){this.type="rectangle",this.x=Number(e),this.y=Number(t),this.width=Number(r),this.height=Number(s)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new i(0,0,0,0)}clone(){return new i(this.x,this.y,this.width,this.height)}copyFromBounds(e){return this.x=e.minX,this.y=e.minY,this.width=e.maxX-e.minX,this.height=e.maxY-e.minY,this}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.copyFrom(this),e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e<this.x+this.width&&t>=this.y&&t<this.y+this.height}strokeContains(e,t,r,s=.5){let{width:n,height:o}=this;if(n<=0||o<=0)return!1;let a=this.x,c=this.y,l=r*(1-s),u=r-l,h=a-l,d=a+n+l,f=c-l,m=c+o+l,p=a+u,g=a+n-u,y=c+u,x=c+o-u;return e>=h&&e<=d&&t>=f&&t<=m&&!(e>p&&e<g&&t>y&&t<x)}intersects(e,t){if(!t){let M=this.x<e.x?e.x:this.x;if((this.right>e.right?e.right:this.right)<=M)return!1;let C=this.y<e.y?e.y:this.y;return(this.bottom>e.bottom?e.bottom:this.bottom)>C}let r=this.left,s=this.right,n=this.top,o=this.bottom;if(s<=r||o<=n)return!1;let a=wa[0].set(e.left,e.top),c=wa[1].set(e.left,e.bottom),l=wa[2].set(e.right,e.top),u=wa[3].set(e.right,e.bottom);if(l.x<=a.x||c.y<=a.y)return!1;let h=Math.sign(t.a*t.d-t.b*t.c);if(h===0||(t.apply(a,a),t.apply(c,c),t.apply(l,l),t.apply(u,u),Math.max(a.x,c.x,l.x,u.x)<=r||Math.min(a.x,c.x,l.x,u.x)>=s||Math.max(a.y,c.y,l.y,u.y)<=n||Math.min(a.y,c.y,l.y,u.y)>=o))return!1;let d=h*(c.y-a.y),f=h*(a.x-c.x),m=d*r+f*n,p=d*s+f*n,g=d*r+f*o,y=d*s+f*o;if(Math.max(m,p,g,y)<=d*a.x+f*a.y||Math.min(m,p,g,y)>=d*u.x+f*u.y)return!1;let x=h*(a.y-l.y),w=h*(l.x-a.x),_=x*r+w*n,S=x*s+w*n,T=x*r+w*o,k=x*s+w*o;return!(Math.max(_,S,T,k)<=x*a.x+w*a.y||Math.min(_,S,T,k)>=x*u.x+w*u.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){let t=Math.max(this.x,e.x),r=Math.min(this.x+this.width,e.x+e.width),s=Math.max(this.y,e.y),n=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(r-t,0),this.y=s,this.height=Math.max(n-s,0),this}ceil(e=1,t=.001){let r=Math.ceil((this.x+this.width-t)*e)/e,s=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=r-this.x,this.height=s-this.y,this}enlarge(e){let t=Math.min(this.x,e.x),r=Math.max(this.x+this.width,e.x+e.width),s=Math.min(this.y,e.y),n=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=r-t,this.y=s,this.height=n-s,this}getBounds(e){return e||(e=new i),e.copyFrom(this),e}containsRect(e){if(this.width<=0||this.height<=0)return!1;let t=e.x,r=e.y,s=e.x+e.width,n=e.y+e.height;return t>=this.x&&t<this.x+this.width&&r>=this.y&&r<this.y+this.height&&s>=this.x&&s<this.x+this.width&&n>=this.y&&n<this.y+this.height}set(e,t,r,s){return this.x=e,this.y=t,this.width=r,this.height=s,this}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}});var Pp,le,dt=b(()=>{re();$e();Pp=new F,le=class i{constructor(e=1/0,t=1/0,r=-1/0,s=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=Pp,this.minX=e,this.minY=t,this.maxX=r,this.maxY=s}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new Z);let e=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(e.x=0,e.y=0,e.width=0,e.height=0):e.copyFromBounds(this),e}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=Pp,this}set(e,t,r,s){this.minX=e,this.minY=t,this.maxX=r,this.maxY=s}addFrame(e,t,r,s,n){n||(n=this.matrix);let o=n.a,a=n.b,c=n.c,l=n.d,u=n.tx,h=n.ty,d=this.minX,f=this.minY,m=this.maxX,p=this.maxY,g=o*e+c*t+u,y=a*e+l*t+h;g<d&&(d=g),y<f&&(f=y),g>m&&(m=g),y>p&&(p=y),g=o*r+c*t+u,y=a*r+l*t+h,g<d&&(d=g),y<f&&(f=y),g>m&&(m=g),y>p&&(p=y),g=o*e+c*s+u,y=a*e+l*s+h,g<d&&(d=g),y<f&&(f=y),g>m&&(m=g),y>p&&(p=y),g=o*r+c*s+u,y=a*r+l*s+h,g<d&&(d=g),y<f&&(f=y),g>m&&(m=g),y>p&&(p=y),this.minX=d,this.minY=f,this.maxX=m,this.maxY=p}addRect(e,t){this.addFrame(e.x,e.y,e.x+e.width,e.y+e.height,t)}addBounds(e,t){this.addFrame(e.minX,e.minY,e.maxX,e.maxY,t)}addBoundsMask(e){this.minX=this.minX>e.minX?this.minX:e.minX,this.minY=this.minY>e.minY?this.minY:e.minY,this.maxX=this.maxX<e.maxX?this.maxX:e.maxX,this.maxY=this.maxY<e.maxY?this.maxY:e.maxY}applyMatrix(e){let t=this.minX,r=this.minY,s=this.maxX,n=this.maxY,{a:o,b:a,c,d:l,tx:u,ty:h}=e,d=o*t+c*r+u,f=a*t+l*r+h;this.minX=d,this.minY=f,this.maxX=d,this.maxY=f,d=o*s+c*r+u,f=a*s+l*r+h,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=o*t+c*n+u,f=a*t+l*n+h,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY,d=o*s+c*n+u,f=a*s+l*n+h,this.minX=d<this.minX?d:this.minX,this.minY=f<this.minY?f:this.minY,this.maxX=d>this.maxX?d:this.maxX,this.maxY=f>this.maxY?f:this.maxY}fit(e){return this.minX<e.left&&(this.minX=e.left),this.maxX>e.right&&(this.maxX=e.right),this.minY<e.top&&(this.minY=e.top),this.maxY>e.bottom&&(this.maxY=e.bottom),this}fitBounds(e,t,r,s){return this.minX<e&&(this.minX=e),this.maxX>t&&(this.maxX=t),this.minY<r&&(this.minY=r),this.maxY>s&&(this.maxY=s),this}pad(e,t=e){return this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new i(this.minX,this.minY,this.maxX,this.maxY)}scale(e,t=e){return this.minX*=e,this.minY*=t,this.maxX*=e,this.maxY*=t,this}get x(){return this.minX}set x(e){let t=this.maxX-this.minX;this.minX=e,this.maxX=e+t}get y(){return this.minY}set y(e){let t=this.maxY-this.minY;this.minY=e,this.maxY=e+t}get width(){return this.maxX-this.minX}set width(e){this.maxX=this.minX+e}get height(){return this.maxY-this.minY}set height(e){this.maxY=this.minY+e}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(e,t,r,s){let n=this.minX,o=this.minY,a=this.maxX,c=this.maxY;s||(s=this.matrix);let l=s.a,u=s.b,h=s.c,d=s.d,f=s.tx,m=s.ty;for(let p=t;p<r;p+=2){let g=e[p],y=e[p+1],x=l*g+h*y+f,w=u*g+d*y+m;n=x<n?x:n,o=w<o?w:o,a=x>a?x:a,c=w>c?w:c}this.minX=n,this.minY=o,this.maxX=a,this.maxY=c}containsPoint(e,t){return this.minX<=e&&this.minY<=t&&this.maxX>=e&&this.maxY>=t}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}copyFrom(e){return this.minX=e.minX,this.minY=e.minY,this.maxX=e.maxX,this.maxY=e.maxY,this}}});var ge,Ze,jr=b(()=>{re();xu();dt();ge=new Wr(F),Ze=new Wr(le)});var MS,Cp,Ep=b(()=>{re();dt();jr();MS=new F,Cp={getFastGlobalBounds(i,e){e||(e=new le),e.clear(),this._getGlobalBoundsRecursive(!!i,e,this.parentRenderLayer),e.isValid||e.set(0,0,0,0);let t=this.renderGroup||this.parentRenderGroup;return e.applyMatrix(t.worldTransform),e},_getGlobalBoundsRecursive(i,e,t){let r=e;if(i&&this.parentRenderLayer&&this.parentRenderLayer!==t||this.localDisplayStatus!==7||!this.measurable)return;let s=!!this.effects.length;if((this.renderGroup||s)&&(r=Ze.get().clear()),this.boundsArea)e.addRect(this.boundsArea,this.worldTransform);else{if(this.renderPipeId){let o=this.bounds;r.addFrame(o.minX,o.minY,o.maxX,o.maxY,this.groupTransform)}let n=this.children;for(let o=0;o<n.length;o++)n[o]._getGlobalBoundsRecursive(i,r,t)}if(s){let n=!1,o=this.renderGroup||this.parentRenderGroup;for(let a=0;a<this.effects.length;a++)this.effects[a].addBounds&&(n||(n=!0,r.applyMatrix(o.worldTransform)),this.effects[a].addBounds(r,!0));n&&(r.applyMatrix(o.worldTransform.copyTo(MS).invert()),e.addBounds(r,this.relativeGroupTransform)),e.addBounds(r),Ze.return(r)}else this.renderGroup&&(e.addBounds(r,this.relativeGroupTransform),Ze.return(r))}}});function _a(i,e,t){t.clear();let r,s;return i.parent?e?r=i.parent.worldTransform:(s=ge.get().identity(),r=Sa(i,s)):r=F.IDENTITY,Ap(i,t,r,e),s&&ge.return(s),t.isValid||t.set(0,0,0,0),t}function Ap(i,e,t,r){if(!i.visible||!i.measurable)return;let s;r?s=i.worldTransform:(i.updateLocalTransform(),s=ge.get(),s.appendFrom(i.localTransform,t));let n=e,o=!!i.effects.length;if(o&&(e=Ze.get().clear()),i.boundsArea)e.addRect(i.boundsArea,s);else{i.bounds&&(e.matrix=s,e.addBounds(i.bounds));for(let a=0;a<i.children.length;a++)Ap(i.children[a],e,s,r)}if(o){for(let a=0;a<i.effects.length;a++)i.effects[a].addBounds?.(e);n.addBounds(e,F.IDENTITY),Ze.return(e)}r||ge.return(s)}function Sa(i,e){let t=i.parent;return t&&(Sa(t,e),t.updateLocalTransform(),e.append(t.localTransform)),e}var Ta=b(()=>{re();jr()});function va(i,e){if(i===16777215||!e)return e;if(e===16777215||!i)return i;let t=i>>16&255,r=i>>8&255,s=i&255,n=e>>16&255,o=e>>8&255,a=e&255,c=t*n/255|0,l=r*o/255|0,u=s*a/255|0;return(c<<16)+(l<<8)+u}var _u=b(()=>{"use strict"});function Su(i,e){return i===Ip?e:e===Ip?i:va(i,e)}var Ip,Mp=b(()=>{_u();Ip=16777215});function $s(i){return((i&255)<<16)+(i&65280)+(i>>16&255)}var Bp,Fp=b(()=>{Ta();jr();Mp();Bp={getGlobalAlpha(i){if(i)return this.renderGroup?this.renderGroup.worldAlpha:this.parentRenderGroup?this.parentRenderGroup.worldAlpha*this.alpha:this.alpha;let e=this.alpha,t=this.parent;for(;t;)e*=t.alpha,t=t.parent;return e},getGlobalTransform(i,e){if(e)return i.copyFrom(this.worldTransform);this.updateLocalTransform();let t=Sa(this,ge.get().identity());return i.appendFrom(this.localTransform,t),ge.return(t),i},getGlobalTint(i){if(i)return this.renderGroup?$s(this.renderGroup.worldColor):this.parentRenderGroup?$s(Su(this.localColor,this.parentRenderGroup.worldColor)):this.tint;let e=this.localColor,t=this.parent;for(;t;)e=Su(e,t.localColor),t=t.parent;return $s(e)}}});function ka(i,e,t){return e.clear(),t||(t=F.IDENTITY),Rp(i,e,t,i,!0),e.isValid||e.set(0,0,0,0),e}function Rp(i,e,t,r,s){let n;if(s)n=ge.get(),n=t.copyTo(n);else{if(!i.visible||!i.measurable)return;i.updateLocalTransform();let c=i.localTransform;n=ge.get(),n.appendFrom(c,t)}let o=e,a=!!i.effects.length;if(a&&(e=Ze.get().clear()),i.boundsArea)e.addRect(i.boundsArea,n);else{i.renderPipeId&&(e.matrix=n,e.addBounds(i.bounds));let c=i.children;for(let l=0;l<c.length;l++)Rp(c[l],e,n,r,!1)}if(a){for(let c=0;c<i.effects.length;c++)i.effects[c].addLocalBounds?.(e,r);o.addBounds(e,F.IDENTITY),Ze.return(e)}ge.return(n)}var Tu=b(()=>{re();jr()});function vu(i,e){let t=i.children;for(let r=0;r<t.length;r++){let s=t[r],n=s.uid,o=(s._didViewChangeTick&65535)<<16|s._didContainerChangeTick&65535,a=e.index;(e.data[a]!==n||e.data[a+1]!==o)&&(e.data[e.index]=n,e.data[e.index+1]=o,e.didChange=!0),e.index=a+2,s.children.length&&vu(s,e)}return e.didChange}var Dp=b(()=>{"use strict"});var BS,Op,zp=b(()=>{re();dt();Ta();Tu();Dp();BS=new F,Op={_localBoundsCacheId:-1,_localBoundsCacheData:null,_setWidth(i,e){let t=Math.sign(this.scale.x)||1;e!==0?this.scale.x=i/e*t:this.scale.x=t},_setHeight(i,e){let t=Math.sign(this.scale.y)||1;e!==0?this.scale.y=i/e*t:this.scale.y=t},getLocalBounds(){this._localBoundsCacheData||(this._localBoundsCacheData={data:[],index:1,didChange:!1,localBounds:new le});let i=this._localBoundsCacheData;return i.index=1,i.didChange=!1,i.data[0]!==this._didViewChangeTick&&(i.didChange=!0,i.data[0]=this._didViewChangeTick),vu(this,i),i.didChange&&ka(this,i.localBounds,BS),i.localBounds},getBounds(i,e){return _a(this,i,e||new le)}}});var Up,Gp=b(()=>{"use strict";Up={_onRender:null,set onRender(i){let e=this.renderGroup||this.parentRenderGroup;if(!i){this._onRender&&e?.removeOnRender(this),this._onRender=null;return}this._onRender||e?.addOnRender(this),this._onRender=i},get onRender(){return this._onRender}}});function FS(i,e){return i._zIndex-e._zIndex}var Np,Lp=b(()=>{"use strict";Np={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(i){this._zIndex!==i&&(this._zIndex=i,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(FS))}}});var Vp,Wp=b(()=>{vt();jr();Vp={getGlobalPosition(i=new Y,e=!1){return this.parent?this.parent.toGlobal(this._position,i,e):(i.x=this._position.x,i.y=this._position.y),i},toGlobal(i,e,t=!1){let r=this.getGlobalTransform(ge.get(),t);return e=r.apply(i,e),ge.return(r),e},toLocal(i,e,t,r){e&&(i=e.toGlobal(i,t,r));let s=this.getGlobalTransform(ge.get(),r);return t=s.applyInverse(i,t),ge.return(s),t}}});var Oi,ku=b(()=>{Ue();Oi=class{constructor(){this.uid=K("instructionSet"),this.instructions=[],this.instructionSize=0,this.renderables=[],this.gcTick=0}reset(){this.instructionSize=0}add(e){this.instructions[this.instructionSize++]=e}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}});function Xt(i){return i+=i===0?1:0,--i,i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1}function Pu(i){return!(i&i-1)&&!!i}var qs=b(()=>{"use strict"});function Pa(i){let e={};for(let t in i)i[t]!==void 0&&(e[t]=i[t]);return e}var Cu=b(()=>{"use strict"});function RS(i){let e=Hp[i];return e===void 0&&(Hp[i]=K("resource")),e}var Hp,jp,rt,zi=b(()=>{He();Ue();pe();Hp=Object.create(null);jp=class $p extends ie{constructor(e={}){super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,e={...$p.defaultOptions,...e},this.addressMode=e.addressMode,this.addressModeU=e.addressModeU??this.addressModeU,this.addressModeV=e.addressModeV??this.addressModeV,this.addressModeW=e.addressModeW??this.addressModeW,this.scaleMode=e.scaleMode,this.magFilter=e.magFilter??this.magFilter,this.minFilter=e.minFilter??this.minFilter,this.mipmapFilter=e.mipmapFilter??this.mipmapFilter,this.lodMinClamp=e.lodMinClamp,this.lodMaxClamp=e.lodMaxClamp,this.compare=e.compare,this.maxAnisotropy=e.maxAnisotropy??1}set addressMode(e){this.addressModeU=e,this.addressModeV=e,this.addressModeW=e}get addressMode(){return this.addressModeU}set wrapMode(e){N($,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=e}get wrapMode(){return this.addressMode}set scaleMode(e){this.magFilter=e,this.minFilter=e,this.mipmapFilter=e}get scaleMode(){return this.magFilter}set maxAnisotropy(e){this._maxAnisotropy=Math.min(e,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){let e=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=RS(e),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};jp.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};rt=jp});var qp,we,Yt=b(()=>{He();qs();Cu();Ue();zi();qp=class Xp extends ie{constructor(e={}){super(),this.options=e,this.uid=K("textureSource"),this._resourceType="textureSource",this._resourceId=K("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,e={...Xp.defaultOptions,...e},this.label=e.label??"",this.resource=e.resource,this.autoGarbageCollect=e.autoGarbageCollect,this._resolution=e.resolution,e.width?this.pixelWidth=e.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,e.height?this.pixelHeight=e.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=e.format,this.dimension=e.dimensions,this.mipLevelCount=e.mipLevelCount,this.autoGenerateMipmaps=e.autoGenerateMipmaps,this.sampleCount=e.sampleCount,this.antialias=e.antialias,this.alphaMode=e.alphaMode,this.style=new rt(Pa(e)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(e){this.style!==e&&(this._style?.off("change",this._onStyleChange,this),this._style=e,this._style?.on("change",this._onStyleChange,this),this._onStyleChange())}get addressMode(){return this._style.addressMode}set addressMode(e){this._style.addressMode=e}get repeatMode(){return this._style.addressMode}set repeatMode(e){this._style.addressMode=e}get magFilter(){return this._style.magFilter}set magFilter(e){this._style.magFilter=e}get minFilter(){return this._style.minFilter}set minFilter(e){this._style.minFilter=e}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(e){this._style.mipmapFilter=e}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(e){this._style.lodMinClamp=e}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(e){this._style.lodMaxClamp=e}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){let e=this._resolution;if(this.resize(this.resourceWidth/e,this.resourceHeight/e))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=K("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){let{resource:e}=this;return e.naturalWidth||e.videoWidth||e.displayWidth||e.width}get resourceHeight(){let{resource:e}=this;return e.naturalHeight||e.videoHeight||e.displayHeight||e.height}get resolution(){return this._resolution}set resolution(e){this._resolution!==e&&(this._resolution=e,this.width=this.pixelWidth/e,this.height=this.pixelHeight/e)}resize(e,t,r){r||(r=this._resolution),e||(e=this.width),t||(t=this.height);let s=Math.round(e*r),n=Math.round(t*r);return this.width=s/r,this.height=n/r,this._resolution=r,this.pixelWidth===s&&this.pixelHeight===n?!1:(this._refreshPOT(),this.pixelWidth=s,this.pixelHeight=n,this.emit("resize",this),this._resourceId=K("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(e){this._style.wrapMode=e}get wrapMode(){return this._style.wrapMode}set scaleMode(e){this._style.scaleMode=e}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=Pu(this.pixelWidth)&&Pu(this.pixelHeight)}static test(e){throw new Error("Unimplemented")}};qp.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};we=qp});function DS(){for(let i=0;i<16;i++){let e=[];Eu.push(e);for(let t=0;t<16;t++){let r=Ca($r[i]*$r[t]+Xr[i]*qr[t]),s=Ca(qr[i]*$r[t]+Yr[i]*qr[t]),n=Ca($r[i]*Xr[t]+Xr[i]*Yr[t]),o=Ca(qr[i]*Xr[t]+Yr[i]*Yr[t]);for(let a=0;a<16;a++)if($r[a]===r&&qr[a]===s&&Xr[a]===n&&Yr[a]===o){e.push(a);break}}}for(let i=0;i<16;i++){let e=new F;e.set($r[i],qr[i],Xr[i],Yr[i],0,0),Yp.push(e)}}var $r,qr,Xr,Yr,Eu,Yp,Ca,se,Kp=b(()=>{re();$r=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],qr=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Xr=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Yr=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Eu=[],Yp=[],Ca=Math.sign;DS();se={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:i=>$r[i],uY:i=>qr[i],vX:i=>Xr[i],vY:i=>Yr[i],inv:i=>i&8?i&15:-i&7,add:(i,e)=>Eu[i][e],sub:(i,e)=>Eu[i][se.inv(e)],rotate180:i=>i^4,isVertical:i=>(i&3)===2,byDirection:(i,e)=>Math.abs(i)*2<=Math.abs(e)?e>=0?se.S:se.N:Math.abs(e)*2<=Math.abs(i)?i>0?se.E:se.W:e>0?i>0?se.SE:se.SW:i>0?se.NE:se.NW,matrixAppendRotationInv:(i,e,t=0,r=0)=>{let s=Yp[se.inv(e)];s.tx=t,s.ty=r,i.append(s)}}});var Au,Zp=b(()=>{"use strict";Au=()=>{}});var Kr,Iu=b(()=>{G();Yt();Kr=class extends we{constructor(e){let t=e.resource||new Float32Array(e.width*e.height*4),r=e.format;r||(t instanceof Float32Array?r="rgba32float":t instanceof Int32Array||t instanceof Uint32Array?r="rgba32uint":t instanceof Int16Array||t instanceof Uint16Array?r="rgba16uint":(t instanceof Int8Array,r="bgra8unorm")),super({...e,resource:t,format:r}),this.uploadMethodId="buffer"}static test(e){return e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}};Kr.extension=A.TextureSource});var Qp,Ea,Jp=b(()=>{re();Qp=new F,Ea=class{constructor(e,t){this.mapCoord=new F,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,typeof t>"u"?this.clampMargin=e.width<10?0:.5:this.clampMargin=t,this.isSimple=!1,this.texture=e}get texture(){return this._texture}set texture(e){this.texture!==e&&(this._texture?.removeListener("update",this.update,this),this._texture=e,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(e,t){t===void 0&&(t=e);let r=this.mapCoord;for(let s=0;s<e.length;s+=2){let n=e[s],o=e[s+1];t[s]=n*r.a+o*r.c+r.tx,t[s+1]=n*r.b+o*r.d+r.ty}return t}update(){let e=this._texture;this._updateID++;let t=e.uvs;this.mapCoord.set(t.x1-t.x0,t.y1-t.y0,t.x3-t.x0,t.y3-t.y0,t.x0,t.y0);let r=e.orig,s=e.trim;s&&(Qp.set(r.width/s.width,0,0,r.height/s.height,-s.x/s.width,-s.y/s.height),this.mapCoord.append(Qp));let n=e.source,o=this.uClampFrame,a=this.clampMargin/n._resolution,c=this.clampOffset/n._resolution;return o[0]=(e.frame.x+a+c)/n.width,o[1]=(e.frame.y+a+c)/n.height,o[2]=(e.frame.x+e.frame.width-a+c)/n.width,o[3]=(e.frame.y+e.frame.height-a+c)/n.height,this.uClampOffset[0]=this.clampOffset/n.pixelWidth,this.uClampOffset[1]=this.clampOffset/n.pixelHeight,this.isSimple=e.frame.width===n.width&&e.frame.height===n.height&&e.rotate===0,!0}}});var O,ve=b(()=>{He();Kp();$e();Ue();pe();Zp();Iu();Yt();Jp();O=class extends ie{constructor({source:e,label:t,frame:r,orig:s,trim:n,defaultAnchor:o,defaultBorders:a,rotate:c,dynamic:l}={}){if(super(),this.uid=K("texture"),this.uvs={x0:0,y0:0,x1:0,y1:0,x2:0,y2:0,x3:0,y3:0},this.frame=new Z,this.noFrame=!1,this.dynamic=!1,this.isTexture=!0,this.label=t,this.source=e?.source??new we,this.noFrame=!r,r)this.frame.copyFrom(r);else{let{width:u,height:h}=this._source;this.frame.width=u,this.frame.height=h}this.orig=s||this.frame,this.trim=n,this.rotate=c??0,this.defaultAnchor=o,this.defaultBorders=a,this.destroyed=!1,this.dynamic=l||!1,this.updateUvs()}set source(e){this._source&&this._source.off("resize",this.update,this),this._source=e,e.on("resize",this.update,this),this.emit("update",this)}get source(){return this._source}get textureMatrix(){return this._textureMatrix||(this._textureMatrix=new Ea(this)),this._textureMatrix}get width(){return this.orig.width}get height(){return this.orig.height}updateUvs(){let{uvs:e,frame:t}=this,{width:r,height:s}=this._source,n=t.x/r,o=t.y/s,a=t.width/r,c=t.height/s,l=this.rotate;if(l){let u=a/2,h=c/2,d=n+u,f=o+h;l=se.add(l,se.NW),e.x0=d+u*se.uX(l),e.y0=f+h*se.uY(l),l=se.add(l,2),e.x1=d+u*se.uX(l),e.y1=f+h*se.uY(l),l=se.add(l,2),e.x2=d+u*se.uX(l),e.y2=f+h*se.uY(l),l=se.add(l,2),e.x3=d+u*se.uX(l),e.y3=f+h*se.uY(l)}else e.x0=n,e.y0=o,e.x1=n+a,e.y1=o,e.x2=n+a,e.y2=o+c,e.x3=n,e.y3=o+c}destroy(e=!1){this._source&&e&&(this._source.destroy(),this._source=null),this._textureMatrix=null,this.destroyed=!0,this.emit("destroy",this),this.removeAllListeners()}update(){this.noFrame&&(this.frame.width=this._source.width,this.frame.height=this._source.height),this.updateUvs(),this.emit("update",this)}get baseTexture(){return N($,"Texture.baseTexture is now Texture.source"),this._source}};O.EMPTY=new O({label:"EMPTY",source:new we({label:"EMPTY"})});O.EMPTY.destroy=Au;O.WHITE=new O({source:new Kr({resource:new Uint8Array([255,255,255,255]),width:1,height:1,alphaMode:"premultiply-alpha-on-upload",label:"WHITE"}),label:"WHITE"});O.WHITE.destroy=Au});var OS,Mu,Be,Ui=b(()=>{qs();Yt();ve();zi();OS=0,Mu=class{constructor(e){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this.textureStyle=new rt(this.textureOptions)}createTexture(e,t,r){let s=new we({...this.textureOptions,width:e,height:t,resolution:1,antialias:r,autoGarbageCollect:!1});return new O({source:s,label:`texturePool_${OS++}`})}getOptimalTexture(e,t,r=1,s){let n=Math.ceil(e*r-1e-6),o=Math.ceil(t*r-1e-6);n=Xt(n),o=Xt(o);let a=(n<<17)+(o<<1)+(s?1:0);this._texturePool[a]||(this._texturePool[a]=[]);let c=this._texturePool[a].pop();return c||(c=this.createTexture(n,o,s)),c.source._resolution=r,c.source.width=n/r,c.source.height=o/r,c.source.pixelWidth=n,c.source.pixelHeight=o,c.frame.x=0,c.frame.y=0,c.frame.width=e,c.frame.height=t,c.updateUvs(),this._poolKeyHash[c.uid]=a,c}getSameSizeTexture(e,t=!1){let r=e.source;return this.getOptimalTexture(e.width,e.height,r._resolution,t)}returnTexture(e,t=!1){let r=this._poolKeyHash[e.uid];t&&(e.source.style=this.textureStyle),this._texturePool[r].push(e)}clear(e){if(e=e!==!1,e)for(let t in this._texturePool){let r=this._texturePool[t];if(r)for(let s=0;s<r.length;s++)r[s].destroy(!0)}this._texturePool={}}},Be=new Mu});var Aa,eg=b(()=>{re();ku();Ui();Aa=class{constructor(){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new F,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.gcTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new Oi,this._onRenderContainers=[],this.textureNeedsUpdate=!0,this.isCachedAsTexture=!1,this._matrixDirty=7}init(e){this.root=e,e._onRender&&this.addOnRender(e),e.didChange=!0;let t=e.children;for(let r=0;r<t.length;r++){let s=t[r];s._updateFlags=15,this.addChild(s)}}enableCacheAsTexture(e={}){this.textureOptions=e,this.isCachedAsTexture=!0,this.textureNeedsUpdate=!0}disableCacheAsTexture(){this.isCachedAsTexture=!1,this.texture&&(Be.returnTexture(this.texture),this.texture=null)}updateCacheTexture(){this.textureNeedsUpdate=!0}reset(){this.renderGroupChildren.length=0;for(let e in this.childrenToUpdate){let t=this.childrenToUpdate[e];t.list.fill(null),t.index=0}this.childrenRenderablesToUpdate.index=0,this.childrenRenderablesToUpdate.list.fill(null),this.root=null,this.updateTick=0,this.structureDidChange=!0,this._onRenderContainers.length=0,this.renderGroupParent=null,this.disableCacheAsTexture()}get localTransform(){return this.root.localTransform}addRenderGroupChild(e){e.renderGroupParent&&e.renderGroupParent._removeRenderGroupChild(e),e.renderGroupParent=this,this.renderGroupChildren.push(e)}_removeRenderGroupChild(e){let t=this.renderGroupChildren.indexOf(e);t>-1&&this.renderGroupChildren.splice(t,1),e.renderGroupParent=null}addChild(e){if(this.structureDidChange=!0,e.parentRenderGroup=this,e.updateTick=-1,e.parent===this.root?e.relativeRenderGroupDepth=1:e.relativeRenderGroupDepth=e.parent.relativeRenderGroupDepth+1,e.didChange=!0,this.onChildUpdate(e),e.renderGroup){this.addRenderGroupChild(e.renderGroup);return}e._onRender&&this.addOnRender(e);let t=e.children;for(let r=0;r<t.length;r++)this.addChild(t[r])}removeChild(e){if(this.structureDidChange=!0,e._onRender&&(e.renderGroup||this.removeOnRender(e)),e.parentRenderGroup=null,e.renderGroup){this._removeRenderGroupChild(e.renderGroup);return}let t=e.children;for(let r=0;r<t.length;r++)this.removeChild(t[r])}removeChildren(e){for(let t=0;t<e.length;t++)this.removeChild(e[t])}onChildUpdate(e){let t=this.childrenToUpdate[e.relativeRenderGroupDepth];t||(t=this.childrenToUpdate[e.relativeRenderGroupDepth]={index:0,list:[]}),t.list[t.index++]=e}updateRenderable(e){e.globalDisplayStatus<7||(this.instructionSet.renderPipes[e.renderPipeId].updateRenderable(e),e.didViewUpdate=!1)}onChildViewUpdate(e){this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++]=e}get isRenderable(){return this.root.localDisplayStatus===7&&this.worldAlpha>0}addOnRender(e){this._onRenderContainers.push(e)}removeOnRender(e){this._onRenderContainers.splice(this._onRenderContainers.indexOf(e),1)}runOnRender(e){for(let t=0;t<this._onRenderContainers.length;t++)this._onRenderContainers[t]._onRender(e)}destroy(){this.disableCacheAsTexture(),this.renderGroupParent=null,this.root=null,this.childrenRenderablesToUpdate=null,this.childrenToUpdate=null,this.renderGroupChildren=null,this._onRenderContainers=null,this.instructionSet=null}getChildren(e=[]){let t=this.root.children;for(let r=0;r<t.length;r++)this._getChildren(t[r],e);return e}_getChildren(e,t=[]){if(t.push(e),e.renderGroup)return t;let r=e.children;for(let s=0;s<r.length;s++)this._getChildren(r[s],t);return t}invalidateMatrices(){this._matrixDirty=7}get inverseWorldTransform(){return(this._matrixDirty&1)===0?this._inverseWorldTransform:(this._matrixDirty&=-2,this._inverseWorldTransform||(this._inverseWorldTransform=new F),this._inverseWorldTransform.copyFrom(this.worldTransform).invert())}get textureOffsetInverseTransform(){return(this._matrixDirty&2)===0?this._textureOffsetInverseTransform:(this._matrixDirty&=-3,this._textureOffsetInverseTransform||(this._textureOffsetInverseTransform=new F),this._textureOffsetInverseTransform.copyFrom(this.inverseWorldTransform).translate(-this._textureBounds.x,-this._textureBounds.y))}get inverseParentTextureTransform(){if((this._matrixDirty&4)===0)return this._inverseParentTextureTransform;this._matrixDirty&=-5;let e=this._parentCacheAsTextureRenderGroup;return e?(this._inverseParentTextureTransform||(this._inverseParentTextureTransform=new F),this._inverseParentTextureTransform.copyFrom(this.worldTransform).prepend(e.inverseWorldTransform).translate(-e._textureBounds.x,-e._textureBounds.y)):this.worldTransform}get cacheToLocalTransform(){return this._parentCacheAsTextureRenderGroup?this._parentCacheAsTextureRenderGroup.textureOffsetInverseTransform:null}}});function tg(i,e,t={}){for(let r in e)!t[r]&&e[r]!==void 0&&(i[r]=e[r])}var rg=b(()=>{"use strict"});var Bu,Fu,Ru,ig,zS,Du,ft,Xs=b(()=>{He();je();cp();G();re();fu();pu();Ue();pe();Hr();pp();xp();bp();Tp();kp();Ep();Fp();zp();Gp();Lp();Wp();eg();rg();Bu=new ze(null),Fu=new ze(null),Ru=new ze(null,1,1),ig=1,zS=2,Du=4,ft=class i extends ie{constructor(e={}){super(),this.uid=K("renderable"),this._updateFlags=15,this.renderGroup=null,this.parentRenderGroup=null,this.parentRenderGroupIndex=0,this.didChange=!1,this.didViewUpdate=!1,this.relativeRenderGroupDepth=0,this.children=[],this.parent=null,this.includeInBuild=!0,this.measurable=!0,this.isSimple=!0,this.updateTick=-1,this.localTransform=new F,this.relativeGroupTransform=new F,this.groupTransform=this.relativeGroupTransform,this.destroyed=!1,this._position=new ze(this,0,0),this._scale=Ru,this._pivot=Fu,this._skew=Bu,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._rotation=0,this.localColor=16777215,this.localAlpha=1,this.groupAlpha=1,this.groupColor=16777215,this.groupColorAlpha=4294967295,this.localBlendMode="inherit",this.groupBlendMode="normal",this.localDisplayStatus=7,this.globalDisplayStatus=7,this._didContainerChangeTick=0,this._didViewChangeTick=0,this._didLocalTransformChangeId=-1,this.effects=[],tg(this,e,{children:!0,parent:!0,effects:!0}),e.children?.forEach(t=>this.addChild(t)),e.parent?.addChild(this)}static mixin(e){N("8.8.0","Container.mixin is deprecated, please use extensions.mixin instead."),L.mixin(i,e)}set _didChangeId(e){this._didViewChangeTick=e>>12&4095,this._didContainerChangeTick=e&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...e){if(this.allowChildren||N($,"addChild: Only Containers will be allowed to add children in v8.0.0"),e.length>1){for(let s=0;s<e.length;s++)this.addChild(e[s]);return e[0]}let t=e[0],r=this.renderGroup||this.parentRenderGroup;return t.parent===this?(this.children.splice(this.children.indexOf(t),1),this.children.push(t),r&&(r.structureDidChange=!0),t):(t.parent&&t.parent.removeChild(t),this.children.push(t),this.sortableChildren&&(this.sortDirty=!0),t.parent=this,t.didChange=!0,t._updateFlags=15,r&&r.addChild(t),this.emit("childAdded",t,this,this.children.length-1),t.emit("added",this),this._didViewChangeTick++,t._zIndex!==0&&t.depthOfChildModified(),t)}removeChild(...e){if(e.length>1){for(let s=0;s<e.length;s++)this.removeChild(e[s]);return e[0]}let t=e[0],r=this.children.indexOf(t);return r>-1&&(this._didViewChangeTick++,this.children.splice(r,1),this.renderGroup?this.renderGroup.removeChild(t):this.parentRenderGroup&&this.parentRenderGroup.removeChild(t),t.parentRenderLayer&&t.parentRenderLayer.detach(t),t.parent=null,this.emit("childRemoved",t,this,r),t.emit("removed",this)),t}_onUpdate(e){e&&e===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(e){!!this.renderGroup!==e&&(e?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;let e=this.parentRenderGroup;e?.removeChild(this),this.renderGroup=be.get(Aa,this),this.groupTransform=F.IDENTITY,e?.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;let e=this.parentRenderGroup;e?.removeChild(this),be.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,e?.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new F),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(e){this._position.x=e}get y(){return this._position.y}set y(e){this._position.y=e}get position(){return this._position}set position(e){this._position.copyFrom(e)}get rotation(){return this._rotation}set rotation(e){this._rotation!==e&&(this._rotation=e,this._onUpdate(this._skew))}get angle(){return this.rotation*up}set angle(e){this.rotation=e*hp}get pivot(){return this._pivot===Fu&&(this._pivot=new ze(this,0,0)),this._pivot}set pivot(e){this._pivot===Fu&&(this._pivot=new ze(this,0,0)),typeof e=="number"?this._pivot.set(e):this._pivot.copyFrom(e)}get skew(){return this._skew===Bu&&(this._skew=new ze(this,0,0)),this._skew}set skew(e){this._skew===Bu&&(this._skew=new ze(this,0,0)),this._skew.copyFrom(e)}get scale(){return this._scale===Ru&&(this._scale=new ze(this,1,1)),this._scale}set scale(e){this._scale===Ru&&(this._scale=new ze(this,0,0)),typeof e=="number"?this._scale.set(e):this._scale.copyFrom(e)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(e){let t=this.getLocalBounds().width;this._setWidth(e,t)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(e){let t=this.getLocalBounds().height;this._setHeight(e,t)}getSize(e){e||(e={});let t=this.getLocalBounds();return e.width=Math.abs(this.scale.x*t.width),e.height=Math.abs(this.scale.y*t.height),e}setSize(e,t){let r=this.getLocalBounds();typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,r.width),t!==void 0&&this._setHeight(t,r.height)}_updateSkew(){let e=this._rotation,t=this._skew;this._cx=Math.cos(e+t._y),this._sx=Math.sin(e+t._y),this._cy=-Math.sin(e-t._x),this._sy=Math.cos(e-t._x)}updateTransform(e){return this.position.set(typeof e.x=="number"?e.x:this.position.x,typeof e.y=="number"?e.y:this.position.y),this.scale.set(typeof e.scaleX=="number"?e.scaleX||1:this.scale.x,typeof e.scaleY=="number"?e.scaleY||1:this.scale.y),this.rotation=typeof e.rotation=="number"?e.rotation:this.rotation,this.skew.set(typeof e.skewX=="number"?e.skewX:this.skew.x,typeof e.skewY=="number"?e.skewY:this.skew.y),this.pivot.set(typeof e.pivotX=="number"?e.pivotX:this.pivot.x,typeof e.pivotY=="number"?e.pivotY:this.pivot.y),this}setFromMatrix(e){e.decompose(this)}updateLocalTransform(){let e=this._didContainerChangeTick;if(this._didLocalTransformChangeId===e)return;this._didLocalTransformChangeId=e;let t=this.localTransform,r=this._scale,s=this._pivot,n=this._position,o=r._x,a=r._y,c=s._x,l=s._y;t.a=this._cx*o,t.b=this._sx*o,t.c=this._cy*a,t.d=this._sy*a,t.tx=n._x-(c*t.a+l*t.c),t.ty=n._y-(c*t.b+l*t.d)}set alpha(e){e!==this.localAlpha&&(this.localAlpha=e,this._updateFlags|=ig,this._onUpdate())}get alpha(){return this.localAlpha}set tint(e){let r=X.shared.setValue(e??16777215).toBgrNumber();r!==this.localColor&&(this.localColor=r,this._updateFlags|=ig,this._onUpdate())}get tint(){return $s(this.localColor)}set blendMode(e){this.localBlendMode!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=zS,this.localBlendMode=e,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(e){let t=e?2:0;(this.localDisplayStatus&2)!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Du,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(this.localDisplayStatus&4)}set culled(e){let t=e?0:4;(this.localDisplayStatus&4)!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Du,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(e){let t=e?1:0;(this.localDisplayStatus&1)!==t&&(this._updateFlags|=Du,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(e=!1){if(this.destroyed)return;this.destroyed=!0;let t;if(this.children.length&&(t=this.removeChildren(0,this.children.length)),this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),(typeof e=="boolean"?e:e?.children)&&t)for(let s=0;s<t.length;++s)t[s].destroy(e);this.renderGroup?.destroy(),this.renderGroup=null}};L.mixin(ft,gp,Cp,Vp,Up,Op,Sp,vp,Np,ap,mp,Bp,yp)});var dr,Ia=b(()=>{vt();dr=class i{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=i.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new Y,this.page=new Y,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,r){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,r,s,n){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}});function US(i){return function(e){return e.test(i)}}function Ys(i){var e={userAgent:"",platform:"",maxTouchPoints:0};!i&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof i=="string"?e.userAgent=i:i&&i.userAgent&&(e={userAgent:i.userAgent,platform:i.platform,maxTouchPoints:i.maxTouchPoints||0});var t=e.userAgent,r=t.split("[FBAN");typeof r[1]<"u"&&(t=r[0]),r=t.split("Twitter"),typeof r[1]<"u"&&(t=r[0]);var s=US(t),n={apple:{phone:s(Ou)&&!s(Kt),ipod:s(sg),tablet:!s(Ou)&&(s(ng)||mg(e))&&!s(Kt),universal:s(og),device:(s(Ou)||s(sg)||s(ng)||s(og)||mg(e))&&!s(Kt)},amazon:{phone:s(Gi),tablet:!s(Gi)&&s(Ma),device:s(Gi)||s(Ma)},android:{phone:!s(Kt)&&s(Gi)||!s(Kt)&&s(zu),tablet:!s(Kt)&&!s(Gi)&&!s(zu)&&(s(Ma)||s(ag)),device:!s(Kt)&&(s(Gi)||s(Ma)||s(zu)||s(ag))||s(/\bokhttp\b/i)},windows:{phone:s(Kt),tablet:s(cg),device:s(Kt)||s(cg)},other:{blackberry:s(lg),blackberry10:s(ug),opera:s(hg),firefox:s(fg),chrome:s(dg),device:s(lg)||s(ug)||s(hg)||s(fg)||s(dg)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}var Ou,sg,ng,og,zu,ag,Gi,Ma,Kt,cg,lg,ug,hg,dg,fg,mg,Uu=b(()=>{Ou=/iPhone/i,sg=/iPod/i,ng=/iPad/i,og=/\biOS-universal(?:.+)Mac\b/i,zu=/\bAndroid(?:.+)Mobile\b/i,ag=/Android/i,Gi=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,Ma=/Silk/i,Kt=/Windows Phone/i,cg=/\bWindows(?:.+)ARM\b/i,lg=/BlackBerry/i,ug=/BB10/i,hg=/Opera Mini/i,dg=/\b(CriOS|Chrome)(?:.+)Mobile/i,fg=/Mobile(?:.+)Firefox\b/i,mg=function(i){return typeof i<"u"&&i.platform==="MacIntel"&&typeof i.maxTouchPoints=="number"&&i.maxTouchPoints>1&&typeof MSStream>"u"}});var pg=b(()=>{Uu();Uu()});var GS,gg,xg=b(()=>{pg();GS=Ys.default??Ys,gg=GS(globalThis.navigator)});var NS,Ba,LS,VS,yg,bg,WS,HS,jS,Gu,_g,Sg=b(()=>{Ia();G();xg();bu();NS=9,Ba=100,LS=0,VS=0,yg=2,bg=1,WS=-1e3,HS=-1e3,jS=2,Gu=class wg{constructor(e,t=gg){this._mobileInfo=t,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pool=[],this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook(),this._renderer=e}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}_createTouchHook(){let e=document.createElement("button");e.style.width=`${bg}px`,e.style.height=`${bg}px`,e.style.position="absolute",e.style.top=`${WS}px`,e.style.left=`${HS}px`,e.style.zIndex=jS.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){if(this._isActive)return;this._isActive=!0,this._div||(this._div=document.createElement("div"),this._div.style.width=`${Ba}px`,this._div.style.height=`${Ba}px`,this._div.style.position="absolute",this._div.style.top=`${LS}px`,this._div.style.left=`${VS}px`,this._div.style.zIndex=yg.toString(),this._div.style.pointerEvents="none"),this._activateOnTab&&(this._onKeyDown=this._onKeyDown.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)),this._deactivateOnMouseMove&&(this._onMouseMove=this._onMouseMove.bind(this),globalThis.document.addEventListener("mousemove",this._onMouseMove,!0));let e=this._renderer.view.canvas;if(e.parentNode)e.parentNode.appendChild(this._div),this._initAccessibilitySetup();else{let t=new MutationObserver(()=>{e.parentNode&&(e.parentNode.appendChild(this._div),t.disconnect(),this._initAccessibilitySetup())});t.observe(document.body,{childList:!0,subtree:!0})}}_initAccessibilitySetup(){this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered&&this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){if(!(!this._isActive||this._isMobileAccessibility)){this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),this._activateOnTab&&globalThis.addEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.remove(this);for(let e of this._children)e._accessibleDiv&&e._accessibleDiv.parentNode&&(e._accessibleDiv.parentNode.removeChild(e._accessibleDiv),e._accessibleDiv=null),e._accessibleActive=!1;this._pool.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),this._div&&this._div.parentNode&&this._div.parentNode.removeChild(this._div),this._pool=[],this._children=[]}}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);let t=e.children;if(t)for(let r=0;r<t.length;r++)this._updateAccessibleObjects(t[r])}init(e){let r={accessibilityOptions:{...wg.defaultOptions,...e?.accessibilityOptions||{}}};this.debug=r.accessibilityOptions.debug,this._activateOnTab=r.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=r.accessibilityOptions.deactivateOnMouseMove,r.accessibilityOptions.enabledByDefault?this._activate():this._activateOnTab&&(this._onKeyDown=this._onKeyDown.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)),this._renderer.runners.postrender.remove(this)}postrender(){let e=performance.now();if(this._mobileInfo.android.device&&e<this._androidUpdateCount||(this._androidUpdateCount=e+this._androidUpdateFrequency,!this._renderer.renderingToScreen||!this._renderer.view.canvas))return;let t=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(let r of this._children)r._renderId===this._renderId&&t.add(this._children.indexOf(r))}for(let r=this._children.length-1;r>=0;r--){let s=this._children[r];t.has(r)||(s._accessibleDiv&&s._accessibleDiv.parentNode&&(s._accessibleDiv.parentNode.removeChild(s._accessibleDiv),this._pool.push(s._accessibleDiv),s._accessibleDiv=null),s._accessibleActive=!1,ya(this._children,r,1))}if(this._renderer.renderingToScreen){let{x:r,y:s,width:n,height:o}=this._renderer.screen,a=this._div;a.style.left=`${r}px`,a.style.top=`${s}px`,a.style.width=`${n}px`,a.style.height=`${o}px`}for(let r=0;r<this._children.length;r++){let s=this._children[r];if(!s._accessibleActive||!s._accessibleDiv)continue;let n=s._accessibleDiv,o=s.hitArea||s.getBounds().rectangle;if(s.hitArea){let a=s.worldTransform,c=this._renderer.resolution,l=this._renderer.resolution;n.style.left=`${(a.tx+o.x*a.a)*c}px`,n.style.top=`${(a.ty+o.y*a.d)*l}px`,n.style.width=`${o.width*a.a*c}px`,n.style.height=`${o.height*a.d*l}px`}else{this._capHitArea(o);let a=this._renderer.resolution,c=this._renderer.resolution;n.style.left=`${o.x*a}px`,n.style.top=`${o.y*c}px`,n.style.width=`${o.width*a}px`,n.style.height=`${o.height*c}px`}}this._renderId++}_updateDebugHTML(e){e.innerHTML=`type: ${e.type}</br> title : ${e.title}</br> tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);let{width:t,height:r}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>r&&(e.height=r-e.y)}_addChild(e){let t=this._pool.pop();t||(e.accessibleType==="button"?t=document.createElement("button"):(t=document.createElement(e.accessibleType),t.style.cssText=`
7
+ color: transparent;
8
+ pointer-events: none;
9
+ padding: 0;
10
+ margin: 0;
11
+ border: 0;
12
+ outline: 0;
13
+ background: transparent;
14
+ box-sizing: border-box;
15
+ user-select: none;
16
+ -webkit-user-select: none;
17
+ -moz-user-select: none;
18
+ -ms-user-select: none;
19
+ `,e.accessibleText&&(t.innerText=e.accessibleText)),t.style.width=`${Ba}px`,t.style.height=`${Ba}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=yg.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`container ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this._updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.container=e,this._children.push(e),this._div.appendChild(e._accessibleDiv),e.interactive&&(e._accessibleDiv.tabIndex=e.tabIndex)}_dispatchEvent(e,t){let{container:r}=e.target,s=this._renderer.events.rootBoundary,n=Object.assign(new dr(s),{target:r});s.rootTarget=this._renderer.lastObjectRendered,t.forEach(o=>s.dispatchEvent(n,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode!==NS||!this._activateOnTab||this._activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this._deactivate()}destroy(){this._deactivate(),this._destroyTouchHook(),this._div=null,this._pool=null,this._children=null,this._renderer=null,this._activateOnTab&&globalThis.removeEventListener("keydown",this._onKeyDown)}setAccessibilityEnabled(e){e?this._activate():this._deactivate()}};Gu.extension={type:[A.WebGLSystem,A.WebGPUSystem],name:"accessibility"};Gu.defaultOptions={enabledByDefault:!1,debug:!1,activateOnTab:!0,deactivateOnMouseMove:!0};_g=Gu});var Tg,vg=b(()=>{"use strict";Tg={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,accessibleType:"button",accessibleText:null,accessiblePointerEvents:"auto",accessibleChildren:!0,_accessibleActive:!1,_accessibleDiv:null,_renderId:-1}});var kg=b(()=>{G();Xs();Sg();vg();L.add(_g);L.mixin(ft,Tg)});var Ks,Pg=b(()=>{G();Ks=class{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let t,r;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,r=globalThis.innerHeight;else{let{clientWidth:s,clientHeight:n}=this._resizeTo;t=s,r=n}this.renderer.resize(t,r),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}};Ks.extension=A.Application});var fr,Fa=b(()=>{"use strict";fr=(i=>(i[i.INTERACTION=50]="INTERACTION",i[i.HIGH=25]="HIGH",i[i.NORMAL=0]="NORMAL",i[i.LOW=-25]="LOW",i[i.UTILITY=-50]="UTILITY",i))(fr||{})});var Ni,Cg=b(()=>{"use strict";Ni=class{constructor(e,t=null,r=0,s=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=e,this._context=t,this.priority=r,this._once=s}match(e,t=null){return this._fn===e&&this._context===t}emit(e){this._fn&&(this._context?this._fn.call(this._context,e):this._fn(e));let t=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);let t=this.next;return this.next=e?null:t,this.previous=null,t}}});var Eg,mt,Ra=b(()=>{Fa();Cg();Eg=class Qe{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new Ni(null,null,1/0),this.deltaMS=1/Qe.targetFPMS,this.elapsedMS=1/Qe.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,r=fr.NORMAL){return this._addListener(new Ni(e,t,r))}addOnce(e,t,r=fr.NORMAL){return this._addListener(new Ni(e,t,r,!0))}_addListener(e){let t=this._head.next,r=this._head;if(!t)e.connect(r);else{for(;t;){if(e.priority>t.priority){e.connect(r);break}r=t,t=t.next}e.previous||e.connect(r)}return this._startIfPossible(),this}remove(e,t){let r=this._head.next;for(;r;)r.match(e,t)?r=r.destroy():r=r.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){let n=e-this._lastFrame|0;if(n<this._minElapsedMS)return;this._lastFrame=e-n%this._minElapsedMS}this.deltaMS=t,this.deltaTime=this.deltaMS*Qe.targetFPMS;let r=this._head,s=r.next;for(;s;)s=s.emit(this);r.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=e}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(e){let t=Math.min(this.maxFPS,e),r=Math.min(Math.max(0,t)/1e3,Qe.targetFPMS);this._maxElapsedMS=1/r}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(e){if(e===0)this._minElapsedMS=0;else{let t=Math.max(this.minFPS,e);this._minElapsedMS=1/(t/1e3)}}static get shared(){if(!Qe._shared){let e=Qe._shared=new Qe;e.autoStart=!0,e._protected=!0}return Qe._shared}static get system(){if(!Qe._system){let e=Qe._system=new Qe;e.autoStart=!0,e._protected=!0}return Qe._system}};Eg.targetFPMS=.06;mt=Eg});var Zs,Ag=b(()=>{G();Fa();Ra();Zs=class{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{set(t){this._ticker&&this._ticker.remove(this.render,this),this._ticker=t,t&&t.add(this.render,this,fr.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?mt.shared:new mt,e.autoStart&&this.start()}static destroy(){if(this._ticker){let e=this._ticker;this.ticker=null,e.destroy()}}};Zs.extension=A.Application});var Nu=b(()=>{G();Pg();Ag();L.add(Ks);L.add(Zs)});function q(...i){Lu!==Ig&&(Lu++,Lu===Ig?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...i))}var Lu,Ig,Ge=b(()=>{"use strict";Lu=0,Ig=500});var Vu,kt,Wu=b(()=>{Fa();Ra();Vu=class{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this._tickerAdded||!this.domElement||(mt.system.add(this._tickerUpdate,this,fr.INTERACTION),this._tickerAdded=!0)}removeTickerListener(){this._tickerAdded&&(mt.system.remove(this._tickerUpdate,this),this._tickerAdded=!1)}pointerMoved(){this._didMove=!0}_update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}let e=this.events._rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(this.events.supportsPointerEvents?new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,pointerId:e.pointerId}):new MouseEvent("mousemove",{clientX:e.clientX,clientY:e.clientY}))}_tickerUpdate(e){this._deltaTime+=e.deltaTime,!(this._deltaTime<this.interactionFrequency)&&(this._deltaTime=0,this._update())}},kt=new Vu});var Zt,Da=b(()=>{vt();Ia();Zt=class extends dr{constructor(){super(...arguments),this.client=new Y,this.movement=new Y,this.offset=new Y,this.global=new Y,this.screen=new Y}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(e,t,r){return e.worldTransform.applyInverse(r||this.global,t)}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(e,t,r,s,n,o,a,c,l,u,h,d,f,m,p){throw new Error("Method not implemented.")}}});var Ne,Hu=b(()=>{Da();Ne=class extends Zt{constructor(){super(...arguments),this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}});var Pt,ju=b(()=>{Da();Pt=class extends Zt{constructor(){super(...arguments),this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}};Pt.DOM_DELTA_PIXEL=0;Pt.DOM_DELTA_LINE=1;Pt.DOM_DELTA_PAGE=2});var $S,qS,Qs,Oa,Mg=b(()=>{He();vt();Ge();Wu();Da();Hu();ju();$S=2048,qS=new Y,Qs=new Y,Oa=class{constructor(e){this.dispatch=new ie,this.moveOnAll=!1,this.enableGlobalMoveEvents=!0,this.mappingState={trackingData:{}},this.eventPool=new Map,this._allInteractiveElements=[],this._hitElements=[],this._isPointerMoveEvent=!1,this.rootTarget=e,this.hitPruneFn=this.hitPruneFn.bind(this),this.hitTestFn=this.hitTestFn.bind(this),this.mapPointerDown=this.mapPointerDown.bind(this),this.mapPointerMove=this.mapPointerMove.bind(this),this.mapPointerOut=this.mapPointerOut.bind(this),this.mapPointerOver=this.mapPointerOver.bind(this),this.mapPointerUp=this.mapPointerUp.bind(this),this.mapPointerUpOutside=this.mapPointerUpOutside.bind(this),this.mapWheel=this.mapWheel.bind(this),this.mappingTable={},this.addEventMapping("pointerdown",this.mapPointerDown),this.addEventMapping("pointermove",this.mapPointerMove),this.addEventMapping("pointerout",this.mapPointerOut),this.addEventMapping("pointerleave",this.mapPointerOut),this.addEventMapping("pointerover",this.mapPointerOver),this.addEventMapping("pointerup",this.mapPointerUp),this.addEventMapping("pointerupoutside",this.mapPointerUpOutside),this.addEventMapping("wheel",this.mapWheel)}addEventMapping(e,t){this.mappingTable[e]||(this.mappingTable[e]=[]),this.mappingTable[e].push({fn:t,priority:0}),this.mappingTable[e].sort((r,s)=>r.priority-s.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;let t=this.mappingTable[e.type];if(t)for(let r=0,s=t.length;r<s;r++)t[r].fn(e);else q(`[EventBoundary]: Event mapping not defined for ${e.type}`)}hitTest(e,t){kt.pauseUpdate=!0;let s=this._isPointerMoveEvent&&this.enableGlobalMoveEvents?"hitTestMoveRecursive":"hitTestRecursive",n=this[s](this.rootTarget,this.rootTarget.eventMode,qS.set(e,t),this.hitTestFn,this.hitPruneFn);return n&&n[0]}propagate(e,t){if(!e.target)return;let r=e.composedPath();e.eventPhase=e.CAPTURING_PHASE;for(let s=0,n=r.length-1;s<n;s++)if(e.currentTarget=r[s],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return;if(e.eventPhase=e.AT_TARGET,e.currentTarget=e.target,this.notifyTarget(e,t),!(e.propagationStopped||e.propagationImmediatelyStopped)){e.eventPhase=e.BUBBLING_PHASE;for(let s=r.length-2;s>=0;s--)if(e.currentTarget=r[s],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,r=this._allInteractiveElements){if(r.length===0)return;e.eventPhase=e.BUBBLING_PHASE;let s=Array.isArray(t)?t:[t];for(let n=r.length-1;n>=0;n--)s.forEach(o=>{e.currentTarget=r[n],this.notifyTarget(e,o)})}propagationPath(e){let t=[e];for(let r=0;r<$S&&e!==this.rootTarget&&e.parent;r++){if(!e.parent)throw new Error("Cannot find propagation path to disconnected target");t.push(e.parent),e=e.parent}return t.reverse(),t}hitTestMoveRecursive(e,t,r,s,n,o=!1){let a=!1;if(this._interactivePrune(e))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(kt.pauseUpdate=!1),e.interactiveChildren&&e.children){let u=e.children;for(let h=u.length-1;h>=0;h--){let d=u[h],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,r,s,n,o||n(e,r));if(f){if(f.length>0&&!f[f.length-1].parent)continue;let m=e.isInteractive();(f.length>0||m)&&(m&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),a=!0}}}let c=this._isInteractive(t),l=e.isInteractive();return l&&l&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:c&&!n(e,r)&&s(e,r)?l?[e]:[]:null}hitTestRecursive(e,t,r,s,n){if(this._interactivePrune(e)||n(e,r))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(kt.pauseUpdate=!1),e.interactiveChildren&&e.children){let c=e.children,l=r;for(let u=c.length-1;u>=0;u--){let h=c[u],d=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,l,s,n);if(d){if(d.length>0&&!d[d.length-1].parent)continue;let f=e.isInteractive();return(d.length>0||f)&&d.push(e),d}}}let o=this._isInteractive(t),a=e.isInteractive();return o&&s(e,r)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!e||!e.visible||!e.renderable||!e.measurable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren}hitPruneFn(e,t){if(e.hitArea&&(e.worldTransform.applyInverse(t,Qs),!e.hitArea.contains(Qs.x,Qs.y)))return!0;if(e.effects&&e.effects.length)for(let r=0;r<e.effects.length;r++){let s=e.effects[r];if(s.containsPoint&&!s.containsPoint(t,this.hitTestFn))return!0}return!1}hitTestFn(e,t){return e.hitArea?!0:e?.containsPoint?(e.worldTransform.applyInverse(t,Qs),e.containsPoint(Qs)):!1}notifyTarget(e,t){if(!e.currentTarget.isInteractive())return;t??(t=e.type);let r=`on${t}`;e.currentTarget[r]?.(e);let s=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this._notifyListeners(e,s),e.eventPhase===e.AT_TARGET&&this._notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Ne)){q("EventBoundary cannot map a non-pointer event as a pointer event");return}let t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){let s=t.button===2;this.dispatchEvent(t,s?"rightdown":"mousedown")}let r=this.trackingData(e.pointerId);r.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){if(!(e instanceof Ne)){q("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;let t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;let r=t.pointerType==="mouse"||t.pointerType==="pen",s=this.trackingData(e.pointerId),n=this.findMountedTarget(s.overTargets);if(s.overTargets?.length>0&&n!==t.target){let c=e.type==="mousemove"?"mouseout":"pointerout",l=this.createPointerEvent(e,c,n);if(this.dispatchEvent(l,"pointerout"),r&&this.dispatchEvent(l,"mouseout"),!t.composedPath().includes(n)){let u=this.createPointerEvent(e,"pointerleave",n);for(u.eventPhase=u.AT_TARGET;u.target&&!t.composedPath().includes(u.target);)u.currentTarget=u.target,this.notifyTarget(u),r&&this.notifyTarget(u,"mouseleave"),u.target=u.target.parent;this.freeEvent(u)}this.freeEvent(l)}if(n!==t.target){let c=e.type==="mousemove"?"mouseover":"pointerover",l=this.clonePointerEvent(t,c);this.dispatchEvent(l,"pointerover"),r&&this.dispatchEvent(l,"mouseover");let u=n?.parent;for(;u&&u!==this.rootTarget.parent&&u!==t.target;)u=u.parent;if(!u||u===this.rootTarget.parent){let d=this.clonePointerEvent(t,"pointerenter");for(d.eventPhase=d.AT_TARGET;d.target&&d.target!==n&&d.target!==this.rootTarget.parent;)d.currentTarget=d.target,this.notifyTarget(d),r&&this.notifyTarget(d,"mouseenter"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(l)}let o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),r&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=t.target?.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,s.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){if(!(e instanceof Ne)){q("EventBoundary cannot map a non-pointer event as a pointer event");return}let t=this.trackingData(e.pointerId),r=this.createPointerEvent(e),s=r.pointerType==="mouse"||r.pointerType==="pen";this.dispatchEvent(r,"pointerover"),s&&this.dispatchEvent(r,"mouseover"),r.pointerType==="mouse"&&(this.cursor=r.target?.cursor);let n=this.clonePointerEvent(r,"pointerenter");for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),s&&this.notifyTarget(n,"mouseenter"),n.target=n.target.parent;t.overTargets=r.composedPath(),this.freeEvent(r),this.freeEvent(n)}mapPointerOut(e){if(!(e instanceof Ne)){q("EventBoundary cannot map a non-pointer event as a pointer event");return}let t=this.trackingData(e.pointerId);if(t.overTargets){let r=e.pointerType==="mouse"||e.pointerType==="pen",s=this.findMountedTarget(t.overTargets),n=this.createPointerEvent(e,"pointerout",s);this.dispatchEvent(n),r&&this.dispatchEvent(n,"mouseout");let o=this.createPointerEvent(e,"pointerleave",s);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),r&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(n),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Ne)){q("EventBoundary cannot map a non-pointer event as a pointer event");return}let t=performance.now(),r=this.createPointerEvent(e);if(this.dispatchEvent(r,"pointerup"),r.pointerType==="touch")this.dispatchEvent(r,"touchend");else if(r.pointerType==="mouse"||r.pointerType==="pen"){let a=r.button===2;this.dispatchEvent(r,a?"rightup":"mouseup")}let s=this.trackingData(e.pointerId),n=this.findMountedTarget(s.pressTargetsByButton[e.button]),o=n;if(n&&!r.composedPath().includes(n)){let a=n;for(;a&&!r.composedPath().includes(a);){if(r.currentTarget=a,this.notifyTarget(r,"pointerupoutside"),r.pointerType==="touch")this.notifyTarget(r,"touchendoutside");else if(r.pointerType==="mouse"||r.pointerType==="pen"){let c=r.button===2;this.notifyTarget(r,c?"rightupoutside":"mouseupoutside")}a=a.parent}delete s.pressTargetsByButton[e.button],o=a}if(o){let a=this.clonePointerEvent(r,"click");a.target=o,a.path=null,s.clicksByButton[e.button]||(s.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});let c=s.clicksByButton[e.button];if(c.target===a.target&&t-c.timeStamp<200?++c.clickCount:c.clickCount=1,c.target=a.target,c.timeStamp=t,a.detail=c.clickCount,a.pointerType==="mouse"){let l=a.button===2;this.dispatchEvent(a,l?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(r)}mapPointerUpOutside(e){if(!(e instanceof Ne)){q("EventBoundary cannot map a non-pointer event as a pointer event");return}let t=this.trackingData(e.pointerId),r=this.findMountedTarget(t.pressTargetsByButton[e.button]),s=this.createPointerEvent(e);if(r){let n=r;for(;n;)s.currentTarget=n,this.notifyTarget(s,"pointerupoutside"),s.pointerType==="touch"?this.notifyTarget(s,"touchendoutside"):(s.pointerType==="mouse"||s.pointerType==="pen")&&this.notifyTarget(s,s.button===2?"rightupoutside":"mouseupoutside"),n=n.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(s)}mapWheel(e){if(!(e instanceof Pt)){q("EventBoundary cannot map a non-wheel event as a wheel event");return}let t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let r=1;r<e.length&&e[r].parent===t;r++)t=e[r];return t}createPointerEvent(e,t,r){let s=this.allocateEvent(Ne);return this.copyPointerData(e,s),this.copyMouseData(e,s),this.copyData(e,s),s.nativeEvent=e.nativeEvent,s.originalEvent=e,s.target=r??this.hitTest(s.global.x,s.global.y)??this._hitElements[0],typeof t=="string"&&(s.type=t),s}createWheelEvent(e){let t=this.allocateEvent(Pt);return this.copyWheelData(e,t),this.copyMouseData(e,t),this.copyData(e,t),t.nativeEvent=e.nativeEvent,t.originalEvent=e,t.target=this.hitTest(t.global.x,t.global.y),t}clonePointerEvent(e,t){let r=this.allocateEvent(Ne);return r.nativeEvent=e.nativeEvent,r.originalEvent=e.originalEvent,this.copyPointerData(e,r),this.copyMouseData(e,r),this.copyData(e,r),r.target=e.target,r.path=e.composedPath().slice(),r.type=t??r.type,r}copyWheelData(e,t){t.deltaMode=e.deltaMode,t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ}copyPointerData(e,t){e instanceof Ne&&t instanceof Ne&&(t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist)}copyMouseData(e,t){e instanceof Zt&&t instanceof Zt&&(t.altKey=e.altKey,t.button=e.button,t.buttons=e.buttons,t.client.copyFrom(e.client),t.ctrlKey=e.ctrlKey,t.metaKey=e.metaKey,t.movement.copyFrom(e.movement),t.screen.copyFrom(e.screen),t.shiftKey=e.shiftKey,t.global.copyFrom(e.global))}copyData(e,t){t.isTrusted=e.isTrusted,t.srcElement=e.srcElement,t.timeStamp=performance.now(),t.type=e.type,t.detail=e.detail,t.view=e.view,t.which=e.which,t.layer.copyFrom(e.layer),t.page.copyFrom(e.page)}trackingData(e){return this.mappingState.trackingData[e]||(this.mappingState.trackingData[e]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[e]}allocateEvent(e){this.eventPool.has(e)||this.eventPool.set(e,[]);let t=this.eventPool.get(e).pop()||new e(this);return t.eventPhase=t.NONE,t.currentTarget=null,t.defaultPrevented=!1,t.path=null,t.target=null,t}freeEvent(e){if(e.manager!==this)throw new Error("It is illegal to free an event not managed by this EventBoundary!");let t=e.constructor;this.eventPool.has(t)||this.eventPool.set(t,[]),this.eventPool.get(t).push(e)}_notifyListeners(e,t){let r=e.currentTarget._events[t];if(r)if("fn"in r)r.once&&e.currentTarget.removeListener(t,r.fn,void 0,!0),r.fn.call(r.context,e);else for(let s=0,n=r.length;s<n&&!e.propagationImmediatelyStopped;s++)r[s].once&&e.currentTarget.removeListener(t,r[s].fn,void 0,!0),r[s].fn.call(r[s].context,e)}}});var XS,YS,qu,za,Xu=b(()=>{G();Mg();Wu();Hu();ju();XS=1,YS={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},qu=class $u{constructor(e){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=e,this.rootBoundary=new Oa(null),kt.init(this),this.autoPreventDefault=!0,this._eventsAdded=!1,this._rootPointerEvent=new Ne(null),this._rootWheelEvent=new Pt(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy({...$u.defaultEventFeatures},{set:(t,r,s)=>(r==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=s),t[r]=s,!0)}),this._onPointerDown=this._onPointerDown.bind(this),this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._onPointerOverOut=this._onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){let{canvas:t,resolution:r}=this.renderer;this.setTargetElement(t),this.resolution=r,$u._defaultEventMode=e.eventMode??"passive",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(e){e||(e="default");let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this._currentCursor===e)return;this._currentCursor=e;let r=this.cursorStyles[e];if(r)switch(typeof r){case"string":t&&(this.domElement.style.cursor=r);break;case"function":r(e);break;case"object":t&&Object.assign(this.domElement.style,r);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this._rootPointerEvent}_onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let t=this._normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let r=0,s=t.length;r<s;r++){let n=t[r],o=this._bootstrapEvent(this._rootPointerEvent,n);this.rootBoundary.mapEvent(o)}this.setCursor(this.rootBoundary.cursor)}_onPointerMove(e){if(!this.features.move)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,kt.pointerMoved();let t=this._normalizeToPointerData(e);for(let r=0,s=t.length;r<s;r++){let n=this._bootstrapEvent(this._rootPointerEvent,t[r]);this.rootBoundary.mapEvent(n)}this.setCursor(this.rootBoundary.cursor)}_onPointerUp(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);let r=t!==this.domElement?"outside":"",s=this._normalizeToPointerData(e);for(let n=0,o=s.length;n<o;n++){let a=this._bootstrapEvent(this._rootPointerEvent,s[n]);a.type+=r,this.rootBoundary.mapEvent(a)}this.setCursor(this.rootBoundary.cursor)}_onPointerOverOut(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let t=this._normalizeToPointerData(e);for(let r=0,s=t.length;r<s;r++){let n=this._bootstrapEvent(this._rootPointerEvent,t[r]);this.rootBoundary.mapEvent(n)}this.setCursor(this.rootBoundary.cursor)}onWheel(e){if(!this.features.wheel)return;let t=this.normalizeWheelEvent(e);this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.rootBoundary.mapEvent(t)}setTargetElement(e){this._removeEvents(),this.domElement=e,kt.domElement=e,this._addEvents()}_addEvents(){if(this._eventsAdded||!this.domElement)return;kt.addTickerListener();let e=this.domElement.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):this.supportsPointerEvents&&(e.touchAction="none")),this.supportsPointerEvents?(globalThis.document.addEventListener("pointermove",this._onPointerMove,!0),this.domElement.addEventListener("pointerdown",this._onPointerDown,!0),this.domElement.addEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.addEventListener("pointerover",this._onPointerOverOut,!0),globalThis.addEventListener("pointerup",this._onPointerUp,!0)):(globalThis.document.addEventListener("mousemove",this._onPointerMove,!0),this.domElement.addEventListener("mousedown",this._onPointerDown,!0),this.domElement.addEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.addEventListener("mouseover",this._onPointerOverOut,!0),globalThis.addEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.addEventListener("touchstart",this._onPointerDown,!0),this.domElement.addEventListener("touchend",this._onPointerUp,!0),this.domElement.addEventListener("touchmove",this._onPointerMove,!0))),this.domElement.addEventListener("wheel",this.onWheel,{passive:!0,capture:!0}),this._eventsAdded=!0}_removeEvents(){if(!this._eventsAdded||!this.domElement)return;kt.removeTickerListener();let e=this.domElement.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):this.supportsPointerEvents&&(e.touchAction="")),this.supportsPointerEvents?(globalThis.document.removeEventListener("pointermove",this._onPointerMove,!0),this.domElement.removeEventListener("pointerdown",this._onPointerDown,!0),this.domElement.removeEventListener("pointerleave",this._onPointerOverOut,!0),this.domElement.removeEventListener("pointerover",this._onPointerOverOut,!0),globalThis.removeEventListener("pointerup",this._onPointerUp,!0)):(globalThis.document.removeEventListener("mousemove",this._onPointerMove,!0),this.domElement.removeEventListener("mousedown",this._onPointerDown,!0),this.domElement.removeEventListener("mouseout",this._onPointerOverOut,!0),this.domElement.removeEventListener("mouseover",this._onPointerOverOut,!0),globalThis.removeEventListener("mouseup",this._onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.removeEventListener("touchstart",this._onPointerDown,!0),this.domElement.removeEventListener("touchend",this._onPointerUp,!0),this.domElement.removeEventListener("touchmove",this._onPointerMove,!0))),this.domElement.removeEventListener("wheel",this.onWheel,!0),this.domElement=null,this._eventsAdded=!1}mapPositionToPoint(e,t,r){let s=this.domElement.isConnected?this.domElement.getBoundingClientRect():{x:0,y:0,width:this.domElement.width,height:this.domElement.height,left:0,top:0},n=1/this.resolution;e.x=(t-s.left)*(this.domElement.width/s.width)*n,e.y=(r-s.top)*(this.domElement.height/s.height)*n}_normalizeToPointerData(e){let t=[];if(this.supportsTouchEvents&&e instanceof TouchEvent)for(let r=0,s=e.changedTouches.length;r<s;r++){let n=e.changedTouches[r];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.isNormalized=!0,n.type=e.type,t.push(n)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){let r=e;typeof r.isPrimary>"u"&&(r.isPrimary=!0),typeof r.width>"u"&&(r.width=1),typeof r.height>"u"&&(r.height=1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="mouse"),typeof r.pointerId>"u"&&(r.pointerId=XS),typeof r.pressure>"u"&&(r.pressure=.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),r.isNormalized=!0,t.push(r)}else t.push(e);return t}normalizeWheelEvent(e){let t=this._rootWheelEvent;return this._transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}_bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this._transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=YS[e.type]||e.type),e}_transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};qu.extension={name:"events",type:[A.WebGLSystem,A.CanvasSystem,A.WebGPUSystem],priority:-1};qu.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};za=qu});var Bg,Fg=b(()=>{Xu();Ia();Bg={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,get interactive(){return this.eventMode==="dynamic"||this.eventMode==="static"},set interactive(i){this.eventMode=i?"static":"passive"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??za.defaultEventMode},set eventMode(i){this._internalEventMode=i},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(i,e,t){let r=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,s=typeof t=="object"?t.signal:void 0,n=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;i=r?`${i}capture`:i;let a=typeof e=="function"?e:e.handleEvent,c=this;s&&s.addEventListener("abort",()=>{c.off(i,a,o)}),n?c.once(i,a,o):c.on(i,a,o)},removeEventListener(i,e,t){let r=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,s=typeof e=="function"?void 0:e;i=r?`${i}capture`:i,e=typeof e=="function"?e:e.handleEvent,this.off(i,e,s)},dispatchEvent(i){if(!(i instanceof dr))throw new Error("Container cannot propagate events outside of the Federated Events API");return i.defaultPrevented=!1,i.path=null,i.target=this,i.manager.dispatchEvent(i),!i.defaultPrevented}}});var Rg=b(()=>{G();Xs();Xu();Fg();L.add(za);L.mixin(ft,Bg)});var Js,Dg=b(()=>{G();Js=class{constructor(e){this._attachedDomElements=[],this._renderer=e,this._renderer.runners.postrender.add(this),this._domElement=document.createElement("div"),this._domElement.style.position="absolute",this._domElement.style.top="0",this._domElement.style.left="0",this._domElement.style.pointerEvents="none",this._domElement.style.zIndex="1000"}addRenderable(e,t){this._attachedDomElements.includes(e)||this._attachedDomElements.push(e)}updateRenderable(e){}validateRenderable(e){return!0}postrender(){let e=this._attachedDomElements;if(e.length===0){this._domElement.remove();return}let t=this._renderer.view.canvas;this._domElement.parentNode!==t.parentNode&&t.parentNode?.appendChild(this._domElement);let r=parseFloat(t.style.width)/t.width*this._renderer.resolution,s=parseFloat(t.style.height)/t.height*this._renderer.resolution;this._domElement.style.transform=`translate(${t.offsetLeft}px, ${t.offsetTop}px) scale(${r}, ${s})`;for(let n=0;n<e.length;n++){let o=e[n],a=o.element;if(!o.parent||o.globalDisplayStatus<7)a?.remove(),e.splice(n,1),n--;else{this._domElement.contains(a)||(a.style.position="absolute",a.style.pointerEvents="auto",this._domElement.appendChild(a));let c=o.worldTransform,l=o._anchor,u=o.width*l.x,h=o.height*l.y;a.style.transformOrigin=`${u}px ${h}px`,a.style.transform=`matrix(${c.a}, ${c.b}, ${c.c}, ${c.d}, ${c.tx-u}, ${c.ty-h})`,a.style.opacity=o.groupAlpha.toString()}}}destroy(){this._renderer.runners.postrender.remove(this);for(let e=0;e<this._attachedDomElements.length;e++)this._attachedDomElements[e].element?.remove();this._attachedDomElements.length=0,this._domElement.remove(),this._renderer=null}};Js.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"dom"}});var Li,Yu=b(()=>{dt();Xs();Li=class extends ft{constructor(e){super(e),this.canBundle=!0,this.allowChildren=!1,this._roundPixels=0,this._lastUsed=-1,this._gpuData=Object.create(null),this._bounds=new le(0,1,0,0),this._boundsDirty=!0}get bounds(){return this._boundsDirty?(this.updateBounds(),this._boundsDirty=!1,this._bounds):this._bounds}get roundPixels(){return!!this._roundPixels}set roundPixels(e){this._roundPixels=e?1:0}containsPoint(e){let t=this.bounds,{x:r,y:s}=e;return r>=t.minX&&r<=t.maxX&&s>=t.minY&&s<=t.maxY}onViewUpdate(){if(this._didViewChangeTick++,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;let e=this.renderGroup||this.parentRenderGroup;e&&e.onChildViewUpdate(this)}destroy(e){super.destroy(e),this._bounds=null;for(let t in this._gpuData)this._gpuData[t].destroy?.();this._gpuData=null}collectRenderablesSimple(e,t,r){let{renderPipes:s}=t;s.blendMode.setBlendMode(this,this.groupBlendMode,e),s[this.renderPipeId].addRenderable(this,e),this.didViewUpdate=!1;let o=this.children,a=o.length;for(let c=0;c<a;c++)o[c].collectRenderables(e,t,r)}}});var Og=b(()=>{G();Dg();L.add(Js)});var Ku,zg=b(()=>{"use strict";Ku=(i=>(i[i.Low=0]="Low",i[i.Normal=1]="Normal",i[i.High=2]="High",i))(Ku||{})});var Ug,Gg=b(()=>{"use strict";Ug={createCanvas:(i,e)=>{let t=document.createElement("canvas");return t.width=i,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(i,e)=>fetch(i,e),parseXML:i=>new DOMParser().parseFromString(i,"text/xml")}});var Ng,xe,Ct=b(()=>{Gg();Ng=Ug,xe={get(){return Ng},set(i){Ng=i}}});function pt(i){if(typeof i!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(i)}`)}function en(i){return i.split("?")[0].split("#")[0]}function KS(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ZS(i,e,t){return i.replace(new RegExp(KS(e),"g"),t)}function QS(i,e){let t="",r=0,s=-1,n=0,o=-1;for(let a=0;a<=i.length;++a){if(a<i.length)o=i.charCodeAt(a);else{if(o===47)break;o=47}if(o===47){if(!(s===a-1||n===1))if(s!==a-1&&n===2){if(t.length<2||r!==2||t.charCodeAt(t.length-1)!==46||t.charCodeAt(t.length-2)!==46){if(t.length>2){let c=t.lastIndexOf("/");if(c!==t.length-1){c===-1?(t="",r=0):(t=t.slice(0,c),r=t.length-1-t.lastIndexOf("/")),s=a,n=0;continue}}else if(t.length===2||t.length===1){t="",r=0,s=a,n=0;continue}}e&&(t.length>0?t+="/..":t="..",r=2)}else t.length>0?t+=`/${i.slice(s+1,a)}`:t=i.slice(s+1,a),r=a-s-1;s=a,n=0}else o===46&&n!==-1?++n:n=-1}return t}var Zr,Zu=b(()=>{Ct();Zr={toPosix(i){return ZS(i,"\\","/")},isUrl(i){return/^https?:/.test(this.toPosix(i))},isDataUrl(i){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(i)},isBlobUrl(i){return i.startsWith("blob:")},hasProtocol(i){return/^[^/:]+:/.test(this.toPosix(i))},getProtocol(i){pt(i),i=this.toPosix(i);let e=/^file:\/\/\//.exec(i);if(e)return e[0];let t=/^[^/:]+:\/{0,2}/.exec(i);return t?t[0]:""},toAbsolute(i,e,t){if(pt(i),this.isDataUrl(i)||this.isBlobUrl(i))return i;let r=en(this.toPosix(e??xe.get().getBaseUrl())),s=en(this.toPosix(t??this.rootname(r)));return i=this.toPosix(i),i.startsWith("/")?Zr.join(s,i.slice(1)):this.isAbsolute(i)?i:this.join(r,i)},normalize(i){if(pt(i),i.length===0)return".";if(this.isDataUrl(i)||this.isBlobUrl(i))return i;i=this.toPosix(i);let e="",t=i.startsWith("/");this.hasProtocol(i)&&(e=this.rootname(i),i=i.slice(e.length));let r=i.endsWith("/");return i=QS(i,!1),i.length>0&&r&&(i+="/"),t?`/${i}`:e+i},isAbsolute(i){return pt(i),i=this.toPosix(i),this.hasProtocol(i)?!0:i.startsWith("/")},join(...i){if(i.length===0)return".";let e;for(let t=0;t<i.length;++t){let r=i[t];if(pt(r),r.length>0)if(e===void 0)e=r;else{let s=i[t-1]??"";this.joinExtensions.includes(this.extname(s).toLowerCase())?e+=`/../${r}`:e+=`/${r}`}}return e===void 0?".":this.normalize(e)},dirname(i){if(pt(i),i.length===0)return".";i=this.toPosix(i);let e=i.charCodeAt(0),t=e===47,r=-1,s=!0,n=this.getProtocol(i),o=i;i=i.slice(n.length);for(let a=i.length-1;a>=1;--a)if(e=i.charCodeAt(a),e===47){if(!s){r=a;break}}else s=!1;return r===-1?t?"/":this.isUrl(o)?n+i:n:t&&r===1?"//":n+i.slice(0,r)},rootname(i){pt(i),i=this.toPosix(i);let e="";if(i.startsWith("/")?e="/":e=this.getProtocol(i),this.isUrl(i)){let t=i.indexOf("/",e.length);t!==-1?e=i.slice(0,t):e=i,e.endsWith("/")||(e+="/")}return e},basename(i,e){pt(i),e&&pt(e),i=en(this.toPosix(i));let t=0,r=-1,s=!0,n;if(e!==void 0&&e.length>0&&e.length<=i.length){if(e.length===i.length&&e===i)return"";let o=e.length-1,a=-1;for(n=i.length-1;n>=0;--n){let c=i.charCodeAt(n);if(c===47){if(!s){t=n+1;break}}else a===-1&&(s=!1,a=n+1),o>=0&&(c===e.charCodeAt(o)?--o===-1&&(r=n):(o=-1,r=a))}return t===r?r=a:r===-1&&(r=i.length),i.slice(t,r)}for(n=i.length-1;n>=0;--n)if(i.charCodeAt(n)===47){if(!s){t=n+1;break}}else r===-1&&(s=!1,r=n+1);return r===-1?"":i.slice(t,r)},extname(i){pt(i),i=en(this.toPosix(i));let e=-1,t=0,r=-1,s=!0,n=0;for(let o=i.length-1;o>=0;--o){let a=i.charCodeAt(o);if(a===47){if(!s){t=o+1;break}continue}r===-1&&(s=!1,r=o+1),a===46?e===-1?e=o:n!==1&&(n=1):e!==-1&&(n=-1)}return e===-1||r===-1||n===0||n===1&&e===r-1&&e===t+1?"":i.slice(e,r)},parse(i){pt(i);let e={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return e;i=en(this.toPosix(i));let t=i.charCodeAt(0),r=this.isAbsolute(i),s,n="";e.root=this.rootname(i),r||this.hasProtocol(i)?s=1:s=0;let o=-1,a=0,c=-1,l=!0,u=i.length-1,h=0;for(;u>=s;--u){if(t=i.charCodeAt(u),t===47){if(!l){a=u+1;break}continue}c===-1&&(l=!1,c=u+1),t===46?o===-1?o=u:h!==1&&(h=1):o!==-1&&(h=-1)}return o===-1||c===-1||h===0||h===1&&o===c-1&&o===a+1?c!==-1&&(a===0&&r?e.base=e.name=i.slice(1,c):e.base=e.name=i.slice(a,c)):(a===0&&r?(e.name=i.slice(1,o),e.base=i.slice(1,c)):(e.name=i.slice(a,o),e.base=i.slice(a,c)),e.ext=i.slice(o,c)),e.dir=this.dirname(i),n&&(e.dir=n+e.dir),e},sep:"/",delimiter:":",joinExtensions:[".html"]}});var mr,Qu=b(()=>{"use strict";mr=(i,e,t=!1)=>(Array.isArray(i)||(i=[i]),e?i.map(r=>typeof r=="string"||t?e(r):r):i)});function Lg(i,e,t,r,s){let n=e[t];for(let o=0;o<n.length;o++){let a=n[o];t<e.length-1?Lg(i.replace(r[t],a),e,t+1,r,s):s.push(i.replace(r[t],a))}}function Vg(i){let e=/\{(.*?)\}/g,t=i.match(e),r=[];if(t){let s=[];t.forEach(n=>{let o=n.substring(1,n.length-1).split(",");s.push(o)}),Lg(i,s,0,t,r)}else r.push(i);return r}var Wg=b(()=>{"use strict"});var Ju,Hg=b(()=>{"use strict";Ju=i=>!Array.isArray(i)});function JS(i){return i.split(".").pop().split("?").shift().split("#").shift()}var tn,jg=b(()=>{Ge();Zu();Qu();Wg();Hg();tn=class{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{let t=e;this._defaultSearchParams=Object.keys(t).map(r=>`${encodeURIComponent(r)}=${encodeURIComponent(t[r])}`).join("&")}}getAlias(e){let{alias:t,src:r}=e;return mr(t||r,n=>typeof n=="string"?n:Array.isArray(n)?n.map(o=>o?.src??o):n?.src?n.src:n,!0)}addManifest(e){this._manifest&&q("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){let r=[],s=t;Array.isArray(t)||(s=Object.entries(t).map(([n,o])=>typeof o=="string"||Array.isArray(o)?{alias:n,src:o}:{alias:n,...o})),s.forEach(n=>{let o=n.src,a=n.alias,c;if(typeof a=="string"){let l=this._createBundleAssetId(e,a);r.push(l),c=[a,l]}else{let l=a.map(u=>this._createBundleAssetId(e,u));r.push(...l),c=[...a,...l]}this.add({...n,alias:c,src:o})}),this._bundles[e]=r}add(e){let t=[];Array.isArray(e)?t.push(...e):t.push(e);let r;r=n=>{this.hasKey(n)&&q(`[Resolver] already has key: ${n} overwriting`)},mr(t).forEach(n=>{let{src:o}=n,{data:a,format:c,loadParser:l}=n,u=mr(o).map(f=>typeof f=="string"?Vg(f):Array.isArray(f)?f:[f]),h=this.getAlias(n);Array.isArray(h)?h.forEach(r):r(h);let d=[];u.forEach(f=>{f.forEach(m=>{let p={};if(typeof m!="object"){p.src=m;for(let g=0;g<this._parsers.length;g++){let y=this._parsers[g];if(y.test(m)){p=y.parse(m);break}}}else a=m.data??a,c=m.format??c,l=m.loadParser??l,p={...p,...m};if(!h)throw new Error(`[Resolver] alias is undefined for this asset: ${p.src}`);p=this._buildResolvedAsset(p,{aliases:h,data:a,format:c,loadParser:l}),d.push(p)})}),h.forEach(f=>{this._assetMap[f]=d})})}resolveBundle(e){let t=Ju(e);e=mr(e);let r={};return e.forEach(s=>{let n=this._bundles[s];if(n){let o=this.resolve(n),a={};for(let c in o){let l=o[c];a[this._extractAssetIdFromBundle(s,c)]=l}r[s]=a}}),t?r[e[0]]:r}resolveUrl(e){let t=this.resolve(e);if(typeof e!="string"){let r={};for(let s in t)r[s]=t[s].src;return r}return t.src}resolve(e){let t=Ju(e);e=mr(e);let r={};return e.forEach(s=>{if(!this._resolverHash[s])if(this._assetMap[s]){let n=this._assetMap[s],o=this._getPreferredOrder(n);o?.priority.forEach(a=>{o.params[a].forEach(c=>{let l=n.filter(u=>u[a]?u[a]===c:!1);l.length&&(n=l)})}),this._resolverHash[s]=n[0]}else this._resolverHash[s]=this._buildResolvedAsset({alias:[s],src:s},{});r[s]=this._resolverHash[s]}),t?r[e[0]]:r}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;t<e.length;t++){let r=e[t],s=this._preferredOrder.find(n=>n.params.format.includes(r.format));if(s)return s}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;let t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}_buildResolvedAsset(e,t){let{aliases:r,data:s,loadParser:n,format:o}=t;return(this._basePath||this._rootPath)&&(e.src=Zr.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=r??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...s||{},...e.data},e.loadParser=n??e.loadParser,e.format=o??e.format??JS(e.src),e}};tn.RETINA_PREFIX=/@([0-9\.]+)x/});var eh,$g=b(()=>{"use strict";eh=(i,e)=>{let t=e.split("?")[1];return t&&(i+=`?${t}`),i}});var qg,th,Xg=b(()=>{$e();Yt();ve();qg=class rn{constructor(e,t){this.linkedSheets=[];let r=e;e?.source instanceof we&&(r={texture:e,data:t});let{texture:s,data:n,cachePrefix:o=""}=r;this.cachePrefix=o,this._texture=s instanceof O?s:null,this.textureSource=s.source,this.textures={},this.animations={},this.data=n;let a=parseFloat(n.meta.scale);a?(this.resolution=a,s.source.resolution=this.resolution):this.resolution=s.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=rn.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e,r=rn.BATCH_SIZE;for(;t-e<r&&t<this._frameKeys.length;){let s=this._frameKeys[t],n=this._frames[s],o=n.frame;if(o){let a=null,c=null,l=n.trimmed!==!1&&n.sourceSize?n.sourceSize:n.frame,u=new Z(0,0,Math.floor(l.w)/this.resolution,Math.floor(l.h)/this.resolution);n.rotated?a=new Z(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.h)/this.resolution,Math.floor(o.w)/this.resolution):a=new Z(Math.floor(o.x)/this.resolution,Math.floor(o.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution),n.trimmed!==!1&&n.spriteSourceSize&&(c=new Z(Math.floor(n.spriteSourceSize.x)/this.resolution,Math.floor(n.spriteSourceSize.y)/this.resolution,Math.floor(o.w)/this.resolution,Math.floor(o.h)/this.resolution)),this.textures[s]=new O({source:this.textureSource,frame:a,orig:u,trim:c,rotate:n.rotated?2:0,defaultAnchor:n.anchor,defaultBorders:n.borders,label:s.toString()})}t++}}_processAnimations(){let e=this.data.animations||{};for(let t in e){this.animations[t]=[];for(let r=0;r<e[t].length;r++){let s=e[t][r];this.animations[t].push(this.textures[s])}}}_parseComplete(){let e=this._callback;this._callback=null,this._batchIndex=0,e.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*rn.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*rn.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(e=!1){for(let t in this.textures)this.textures[t].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,e&&(this._texture?.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};qg.BATCH_SIZE=1e3;th=qg});function Yg(i,e,t){let r={};if(i.forEach(s=>{r[s]=e}),Object.keys(e.textures).forEach(s=>{r[`${e.cachePrefix}${s}`]=e.textures[s]}),!t){let s=Zr.dirname(i[0]);e.linkedSheets.forEach((n,o)=>{let a=Yg([`${s}/${e.data.meta.related_multi_packs[o]}`],n,!0);Object.assign(r,a)})}return r}var eT,Kg,Zg=b(()=>{zg();jg();$g();G();ve();Zu();Xg();eT=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];Kg={extension:A.Asset,cache:{test:i=>i instanceof th,getCacheableAssets:(i,e)=>Yg(i,e,!1)},resolver:{extension:{type:A.ResolveParser,name:"resolveSpritesheet"},test:i=>{let t=i.split("?")[0].split("."),r=t.pop(),s=t.pop();return r==="json"&&eT.includes(s)},parse:i=>{let e=i.split(".");return{resolution:parseFloat(tn.RETINA_PREFIX.exec(i)?.[1]??"1"),format:e[e.length-2],src:i}}},loader:{name:"spritesheetLoader",extension:{type:A.LoadParser,priority:Ku.Normal,name:"spritesheetLoader"},async testParse(i,e){return Zr.extname(e.src).toLowerCase()===".json"&&!!i.frames},async parse(i,e,t){let{texture:r,imageFilename:s,textureOptions:n,cachePrefix:o}=e?.data??{},a=Zr.dirname(e.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let c;if(r instanceof O)c=r;else{let h=eh(a+(s??i.meta.image),e.src);c=(await t.load([{src:h,data:n}]))[h]}let l=new th({texture:c.source,data:i,cachePrefix:o});await l.parse();let u=i?.meta?.related_multi_packs;if(Array.isArray(u)){let h=[];for(let f of u){if(typeof f!="string")continue;let m=a+f;e.data?.ignoreMultiPack||(m=eh(m,e.src),h.push(t.load({src:m,data:{textureOptions:n,ignoreMultiPack:!0}})))}let d=await Promise.all(h);l.linkedSheets=d,d.forEach(f=>{f.linkedSheets=[l].concat(l.linkedSheets.filter(m=>m!==f))})}return l},async unload(i,e,t){await t.unload(i.textureSource._sourceOrigin),i.destroy(!1)}}}});var Ua=b(()=>{G();Zg();L.add(Kg)});function Ga(i,e,t){let{width:r,height:s}=t.orig,n=t.trim;if(n){let o=n.width,a=n.height;i.minX=n.x-e._x*r,i.maxX=i.minX+o,i.minY=n.y-e._y*s,i.maxY=i.minY+a}else i.minX=-e._x*r,i.maxX=i.minX+r,i.minY=-e._y*s,i.maxY=i.minY+s}var rh=b(()=>{"use strict"});var sn,Qg=b(()=>{pu();ve();rh();pe();Yu();sn=class i extends Li{constructor(e=O.EMPTY){e instanceof O&&(e={texture:e});let{texture:t=O.EMPTY,anchor:r,roundPixels:s,width:n,height:o,...a}=e;super({label:"Sprite",...a}),this.renderPipeId="sprite",this.batched=!0,this._visualBounds={minX:0,maxX:1,minY:0,maxY:0},this._anchor=new ze({_onUpdate:()=>{this.onViewUpdate()}}),r?this.anchor=r:t.defaultAnchor&&(this.anchor=t.defaultAnchor),this.texture=t,this.allowChildren=!1,this.roundPixels=s??!1,n!==void 0&&(this.width=n),o!==void 0&&(this.height=o)}static from(e,t=!1){return e instanceof O?new i(e):new i(O.from(e,t))}set texture(e){e||(e=O.EMPTY);let t=this._texture;t!==e&&(t&&t.dynamic&&t.off("update",this.onViewUpdate,this),e.dynamic&&e.on("update",this.onViewUpdate,this),this._texture=e,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get visualBounds(){return Ga(this._visualBounds,this._anchor,this._texture),this._visualBounds}get sourceBounds(){return N("8.6.1","Sprite.sourceBounds is deprecated, use visualBounds instead."),this.visualBounds}updateBounds(){let e=this._anchor,t=this._texture,r=this._bounds,{width:s,height:n}=t.orig;r.minX=-e._x*s,r.maxX=r.minX+s,r.minY=-e._y*n,r.maxY=r.minY+n}destroy(e=!1){if(super.destroy(e),typeof e=="boolean"?e:e?.texture){let r=typeof e=="boolean"?e:e?.textureSource;this._texture.destroy(r)}this._texture=null,this._visualBounds=null,this._bounds=null,this._anchor=null,this._gpuData=null}get anchor(){return this._anchor}set anchor(e){typeof e=="number"?this._anchor.set(e):this._anchor.copyFrom(e)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(e){this._setWidth(e,this._texture.orig.width),this._width=e}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(e){this._setHeight(e,this._texture.orig.height),this._height=e}getSize(e){return e||(e={}),e.width=Math.abs(this.scale.x)*this._texture.orig.width,e.height=Math.abs(this.scale.y)*this._texture.orig.height,e}setSize(e,t){typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,this._texture.orig.width),t!==void 0&&this._setHeight(t,this._texture.orig.height)}}});function Na(i,e,t){let r=tT;i.measurable=!0,_a(i,t,r),e.addBoundsMask(r),i.measurable=!1}var tT,ih=b(()=>{dt();Ta();tT=new le});function La(i,e,t){let r=Ze.get();i.measurable=!0;let s=ge.get().identity(),n=Jg(i,t,s);ka(i,r,n),i.measurable=!1,e.addBoundsMask(r),ge.return(s),Ze.return(r)}function Jg(i,e,t){return i?(i!==e&&(Jg(i.parent,e,t),i.updateLocalTransform(),t.append(i.localTransform)),t):(q("Mask bounds, renderable is not inside the root container"),t)}var sh=b(()=>{Tu();jr();Ge()});var nn,ex=b(()=>{G();Qg();ih();sh();nn=class{constructor(e){this.priority=0,this.inverse=!1,this.pipe="alphaMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e,this.renderMaskToTexture=!(e instanceof sn),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask=null}addBounds(e,t){this.inverse||Na(this.mask,e,t)}addLocalBounds(e,t){La(this.mask,e,t)}containsPoint(e,t){let r=this.mask;return t(r,e)}destroy(){this.reset()}static test(e){return e instanceof sn}};nn.extension=A.MaskEffect});var on,tx=b(()=>{G();on=class{constructor(e){this.priority=0,this.pipe="colorMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e}destroy(){}static test(e){return typeof e=="number"}};on.extension=A.MaskEffect});var an,rx=b(()=>{G();Xs();ih();sh();an=class{constructor(e){this.priority=0,this.pipe="stencilMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null}addBounds(e,t){Na(this.mask,e,t)}addLocalBounds(e,t){La(this.mask,e,t)}containsPoint(e,t){let r=this.mask;return t(r,e)}destroy(){this.reset()}static test(e){return e instanceof ft}};an.extension=A.MaskEffect});var cn,ix=b(()=>{Ct();G();Yt();cn=class extends we{constructor(e){e.resource||(e.resource=xe.get().createCanvas()),e.width||(e.width=e.resource.width,e.autoDensity||(e.width/=e.resolution)),e.height||(e.height=e.resource.height,e.autoDensity||(e.height/=e.resolution)),super(e),this.uploadMethodId="image",this.autoDensity=e.autoDensity,this.resizeCanvas(),this.transparent=!!e.transparent}resizeCanvas(){this.autoDensity&&"style"in this.resource&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(e=this.width,t=this.height,r=this._resolution){let s=super.resize(e,t,r);return s&&this.resizeCanvas(),s}static test(e){return globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&e instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}};cn.extension=A.TextureSource});var Et,Va=b(()=>{G();Yt();Et=class extends we{constructor(e){super(e),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(e){return globalThis.HTMLImageElement&&e instanceof HTMLImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||globalThis.VideoFrame&&e instanceof VideoFrame}};Et.extension=A.TextureSource});async function sx(){return nh??(nh=(async()=>{let e=document.createElement("canvas").getContext("webgl");if(!e)return"premultiply-alpha-on-upload";let t=await new Promise(o=>{let a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!t)return"premultiply-alpha-on-upload";let r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.NONE),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t);let n=new Uint8Array(4);return e.readPixels(0,0,1,1,e.RGBA,e.UNSIGNED_BYTE,n),e.deleteFramebuffer(s),e.deleteTexture(r),e.getExtension("WEBGL_lose_context")?.loseContext(),n[0]<=n[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),nh}var nh,nx=b(()=>{"use strict"});var Wa,ax,cx=b(()=>{G();Ra();nx();Yt();Wa=class ox extends we{constructor(e){super(e),this.isReady=!1,this.uploadMethodId="video",e={...ox.defaultOptions,...e},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=e.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=e.autoPlay!==!1,this.alphaMode=e.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),e.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){let e=mt.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-e)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;let e=this.resource,t=this.options;return(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(t.preload||e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlayThrough),e.addEventListener("error",this._onError,!0)),this.alphaMode=await sx(),this._load=new Promise((r,s)=>{this.isValid?r(this):(this._resolve=r,this._reject=s,t.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${t.preloadTimeoutMs}ms`))})),e.load())}),this._load}_onError(e){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){let e=this.resource;return!e.paused&&!e.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){let e=this.resource;this.isValid&&(this.isReady=!0,this.resize(e.videoWidth,e.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();let e=this.resource;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlayThrough),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(mt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(mt.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(mt.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement}};Wa.extension=A.TextureSource;Wa.defaultOptions={...we.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};Wa.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};ax=Wa});var oh,ye,ln=b(()=>{Ge();Qu();oh=class{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){let t=this._cache.get(e);return t||q(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){let r=mr(e),s;for(let c=0;c<this.parsers.length;c++){let l=this.parsers[c];if(l.test(t)){s=l.getCacheableAssets(r,t);break}}let n=new Map(Object.entries(s||{}));s||r.forEach(c=>{n.set(c,t)});let o=[...n.keys()],a={cacheKeys:o,keys:r};r.forEach(c=>{this._cacheMap.set(c,a)}),o.forEach(c=>{let l=s?s[c]:t;this._cache.has(c)&&this._cache.get(c)!==l&&q("[Cache] already has key:",c),this._cache.set(c,n.get(c))})}remove(e){if(!this._cacheMap.has(e)){q(`[Assets] Asset id ${e} was not found in the Cache`);return}let t=this._cacheMap.get(e);t.cacheKeys.forEach(s=>{this._cache.delete(s)}),t.keys.forEach(s=>{this._cacheMap.delete(s)})}get parsers(){return this._parsers}},ye=new oh});function lx(i={}){let e=i&&i.resource,t=e?i.resource:i,r=e?i:{resource:i};for(let s=0;s<ah.length;s++){let n=ah[s];if(n.test(t))return new n(r)}throw new Error(`Could not find a source type for resource: ${r.resource}`)}function ux(i={},e=!1){let t=i&&i.resource,r=t?i.resource:i,s=t?i:{resource:i};if(!e&&ye.has(r))return ye.get(r);let n=new O({source:lx(s)});return n.on("destroy",()=>{ye.has(r)&&ye.remove(r)}),e||ye.set(r,n),n}function hx(i,e=!1){return typeof i=="string"?ye.get(i):i instanceof we?new O({source:i}):ux(i,e)}var ah,ch=b(()=>{ln();G();Yt();ve();ah=[];L.handleByList(A.TextureSource,ah);O.from=hx;we.from=lx});var Ha=b(()=>{G();ex();tx();rx();Iu();ix();Va();cx();ch();L.add(nn,on,an,ax,Et,cn,Kr)});var it,un=b(()=>{"use strict";it=class{constructor(e){this.resources=Object.create(null),this._dirty=!0;let t=0;for(let r in e){let s=e[r];this.setResource(s,t++)}this._updateKey()}_updateKey(){if(!this._dirty)return;this._dirty=!1;let e=[],t=0;for(let r in this.resources)e[t++]=this.resources[r]._resourceId;this._key=e.join("|")}setResource(e,t){let r=this.resources[t];e!==r&&(r&&e.off?.("change",this.onResourceChange,this),e.on?.("change",this.onResourceChange,this),this.resources[t]=e,this._dirty=!0)}getResource(e){return this.resources[e]}_touch(e){let t=this.resources;for(let r in t)t[r]._touched=e}destroy(){let e=this.resources;for(let t in e)e[t].off?.("change",this.onResourceChange,this);this.resources=null}onResourceChange(e){if(this._dirty=!0,e.destroyed){let t=this.resources;for(let r in t)t[r]===e&&(t[r]=null)}else this._updateKey()}}});function fx(i,e,t){let r=2166136261;for(let s=0;s<e;s++)r^=i[s].uid,r=Math.imul(r,16777619),r>>>=0;return dx[r]||rT(i,e,r,t)}function rT(i,e,t,r){let s={},n=0;for(let a=0;a<r;a++){let c=a<e?i[a]:O.EMPTY.source;s[n++]=c.source,s[n++]=c.style}let o=new it(s);return dx[t]=o,o}var dx,mx=b(()=>{un();ve();dx={}});var At,lh=b(()=>{"use strict";At=class{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData),this.size=this.rawBinaryData.byteLength}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}get float64View(){return this._float64Array||(this._float64Array=new Float64Array(this.rawBinaryData)),this._float64Array}get bigUint64View(){return this._bigUint64Array||(this._bigUint64Array=new BigUint64Array(this.rawBinaryData)),this._bigUint64Array}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this.uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}});function uh(i,e){let t=i.byteLength/8|0,r=new Float64Array(i,0,t);new Float64Array(e,0,t).set(r);let n=i.byteLength-t*8;if(n>0){let o=new Uint8Array(i,t*8,n);new Uint8Array(e,t*8,n).set(o)}}var px=b(()=>{"use strict"});var gx,xx=b(()=>{"use strict";gx={normal:"normal-npm",add:"add-npm",screen:"screen-npm"}});function Qt(i,e){return e.alphaMode==="no-premultiply-alpha"&&gx[i]||i}var hn=b(()=>{xx()});function $a(){return(!ja||ja?.isContextLost())&&(ja=xe.get().createCanvas().getContext("webgl",{})),ja}var ja,hh=b(()=>{Ct()});function sT(i){let e="";for(let t=0;t<i;++t)t>0&&(e+=`
20
+ else `),t<i-1&&(e+=`if(test == ${t}.0){}`);return e}function yx(i,e){if(i===0)throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");let t=e.createShader(e.FRAGMENT_SHADER);try{for(;;){let r=iT.replace(/%forloop%/gi,sT(i));if(e.shaderSource(t,r),e.compileShader(t),!e.getShaderParameter(t,e.COMPILE_STATUS))i=i/2|0;else break}}finally{e.deleteShader(t)}return i}var iT,bx=b(()=>{"use strict";iT=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
21
+ `)});function wx(){if(Vi)return Vi;let i=$a();return Vi=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),Vi=yx(Vi,i),i.getExtension("WEBGL_lose_context")?.loseContext(),Vi}var Vi,_x=b(()=>{hh();bx();Vi=null});var qa,Sx=b(()=>{"use strict";qa=class{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let e=0;e<this.count;e++){let t=this.textures[e];this.textures[e]=null,this.ids[t.uid]=null}this.count=0}}});function Tx(){return fh>0?kx[--fh]:new dh}function vx(i){kx[fh++]=i}var dh,kx,fh,dn,Px,Ex,Ax=b(()=>{Ue();lh();pe();px();hn();_x();Sx();dh=class{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.textures=new qa,this.blendMode="normal",this.topology="triangle-strip",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null}},kx=[],fh=0;dn=0,Px=class Cx{constructor(e){this.uid=K("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],e={...Cx.defaultOptions,...e},e.maxTextures||(N("v8.8.0","maxTextures is a required option for Batcher now, please pass it in the options"),e.maxTextures=wx());let{maxTextures:t,attributesInitialSize:r,indicesInitialSize:s}=e;this.attributeBuffer=new At(r*4),this.indexBuffer=new Uint16Array(s),this.maxTextures=t}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let e=0;e<this.batchIndex;e++)vx(this.batches[e]);this.batchIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(e){this._elements[this.elementSize++]=e,e._indexStart=this.indexSize,e._attributeStart=this.attributeSize,e._batcher=this,this.indexSize+=e.indexSize,this.attributeSize+=e.attributeSize*this.vertexSize}checkAndUpdateTexture(e,t){let r=e._batch.textures.ids[t._source.uid];return!r&&r!==0?!1:(e._textureId=r,e.texture=t,!0)}updateElement(e){this.dirty=!0;let t=this.attributeBuffer;e.packAsQuad?this.packQuadAttributes(e,t.float32View,t.uint32View,e._attributeStart,e._textureId):this.packAttributes(e,t.float32View,t.uint32View,e._attributeStart,e._textureId)}break(e){let t=this._elements;if(!t[this.elementStart])return;let r=Tx(),s=r.textures;s.clear();let n=t[this.elementStart],o=Qt(n.blendMode,n.texture._source),a=n.topology;this.attributeSize*4>this.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);let c=this.attributeBuffer.float32View,l=this.attributeBuffer.uint32View,u=this.indexBuffer,h=this._batchIndexSize,d=this._batchIndexStart,f="startBatch",m=this.maxTextures;for(let p=this.elementStart;p<this.elementSize;++p){let g=t[p];t[p]=null;let x=g.texture._source,w=Qt(g.blendMode,x),_=o!==w||a!==g.topology;if(x._batchTick===dn&&!_){g._textureId=x._textureBindLocation,h+=g.indexSize,g.packAsQuad?(this.packQuadAttributes(g,c,l,g._attributeStart,g._textureId),this.packQuadIndex(u,g._indexStart,g._attributeStart/this.vertexSize)):(this.packAttributes(g,c,l,g._attributeStart,g._textureId),this.packIndex(g,u,g._indexStart,g._attributeStart/this.vertexSize)),g._batch=r;continue}x._batchTick=dn,(s.count>=m||_)&&(this._finishBatch(r,d,h-d,s,o,a,e,f),f="renderBatch",d=h,o=w,a=g.topology,r=Tx(),s=r.textures,s.clear(),++dn),g._textureId=x._textureBindLocation=s.count,s.ids[x.uid]=s.count,s.textures[s.count++]=x,g._batch=r,h+=g.indexSize,g.packAsQuad?(this.packQuadAttributes(g,c,l,g._attributeStart,g._textureId),this.packQuadIndex(u,g._indexStart,g._attributeStart/this.vertexSize)):(this.packAttributes(g,c,l,g._attributeStart,g._textureId),this.packIndex(g,u,g._indexStart,g._attributeStart/this.vertexSize))}s.count>0&&(this._finishBatch(r,d,h-d,s,o,a,e,f),d=h,++dn),this.elementStart=this.elementSize,this._batchIndexStart=d,this._batchIndexSize=h}_finishBatch(e,t,r,s,n,o,a,c){e.gpuBindGroup=null,e.bindGroup=null,e.action=c,e.batcher=this,e.textures=s,e.blendMode=n,e.topology=o,e.start=t,e.size=r,++dn,this.batches[this.batchIndex++]=e,a.add(e)}finish(e){this.break(e)}ensureAttributeBuffer(e){e*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(e*4)}ensureIndexBuffer(e){e<=this.indexBuffer.length||this._resizeIndexBuffer(e)}_resizeAttributeBuffer(e){let t=Math.max(e,this.attributeBuffer.size*2),r=new At(t);uh(this.attributeBuffer.rawBinaryData,r.rawBinaryData),this.attributeBuffer=r}_resizeIndexBuffer(e){let t=this.indexBuffer,r=Math.max(e,t.length*1.5);r+=r%2;let s=r>65535?new Uint32Array(r):new Uint16Array(r);if(s.BYTES_PER_ELEMENT!==t.BYTES_PER_ELEMENT)for(let n=0;n<t.length;n++)s[n]=t[n];else uh(t.buffer,s.buffer);this.indexBuffer=s}packQuadIndex(e,t,r){e[t]=r+0,e[t+1]=r+1,e[t+2]=r+2,e[t+3]=r+0,e[t+4]=r+2,e[t+5]=r+3}packIndex(e,t,r,s){let n=e.indices,o=e.indexSize,a=e.indexOffset,c=e.attributeOffset;for(let l=0;l<o;l++)t[r++]=s+n[l+a]-c}destroy(){for(let e=0;e<this.batches.length;e++)vx(this.batches[e]);this.batches=null;for(let e=0;e<this._elements.length;e++)this._elements[e]._batch=null;this._elements=null,this.indexBuffer=null,this.attributeBuffer.destroy(),this.attributeBuffer=null}};Px.defaultOptions={maxTextures:null,attributesInitialSize:4,indicesInitialSize:6};Ex=Px});var ee,Wi=b(()=>{"use strict";ee=(i=>(i[i.MAP_READ=1]="MAP_READ",i[i.MAP_WRITE=2]="MAP_WRITE",i[i.COPY_SRC=4]="COPY_SRC",i[i.COPY_DST=8]="COPY_DST",i[i.INDEX=16]="INDEX",i[i.VERTEX=32]="VERTEX",i[i.UNIFORM=64]="UNIFORM",i[i.STORAGE=128]="STORAGE",i[i.INDIRECT=256]="INDIRECT",i[i.QUERY_RESOLVE=512]="QUERY_RESOLVE",i[i.STATIC=1024]="STATIC",i))(ee||{})});var ke,Hi=b(()=>{He();Ue();Wi();ke=class extends ie{constructor(e){let{data:t,size:r}=e,{usage:s,label:n,shrinkToFit:o}=e;super(),this.uid=K("buffer"),this._resourceType="buffer",this._resourceId=K("resource"),this._touched=0,this._updateID=1,this._dataInt32=null,this.shrinkToFit=!0,this.destroyed=!1,t instanceof Array&&(t=new Float32Array(t)),this._data=t,r??(r=t?.byteLength);let a=!!t;this.descriptor={size:r,usage:s,mappedAtCreation:a,label:n},this.shrinkToFit=o??!0}get data(){return this._data}set data(e){this.setDataWithSize(e,e.length,!0)}get dataInt32(){return this._dataInt32||(this._dataInt32=new Int32Array(this.data.buffer)),this._dataInt32}get static(){return!!(this.descriptor.usage&ee.STATIC)}set static(e){e?this.descriptor.usage|=ee.STATIC:this.descriptor.usage&=~ee.STATIC}setDataWithSize(e,t,r){if(this._updateID++,this._updateSize=t*e.BYTES_PER_ELEMENT,this._data===e){r&&this.emit("update",this);return}let s=this._data;if(this._data=e,this._dataInt32=null,!s||s.length!==e.length){!this.shrinkToFit&&s&&e.byteLength<s.byteLength?r&&this.emit("update",this):(this.descriptor.size=e.byteLength,this._resourceId=K("resource"),this.emit("change",this));return}r&&this.emit("update",this)}update(e){this._updateSize=e??this._updateSize,this._updateID++,this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._data=null,this.descriptor=null,this.removeAllListeners()}}});function mh(i,e){if(!(i instanceof ke)){let t=e?ee.INDEX:ee.VERTEX;i instanceof Array&&(e?(i=new Uint32Array(i),t=ee.INDEX|ee.COPY_DST):(i=new Float32Array(i),t=ee.VERTEX|ee.COPY_DST)),i=new ke({data:i,label:e?"index-mesh-buffer":"vertex-mesh-buffer",usage:t})}return i}var Ix=b(()=>{Hi();Wi()});function Mx(i,e,t){let r=i.getAttribute(e);if(!r)return t.minX=0,t.minY=0,t.maxX=0,t.maxY=0,t;let s=r.buffer.data,n=1/0,o=1/0,a=-1/0,c=-1/0,l=s.BYTES_PER_ELEMENT,u=(r.offset||0)/l,h=(r.stride||8)/l;for(let d=u;d<s.length;d+=h){let f=s[d],m=s[d+1];f>a&&(a=f),m>c&&(c=m),f<n&&(n=f),m<o&&(o=m)}return t.minX=n,t.minY=o,t.maxX=a,t.maxY=c,t}var Bx=b(()=>{"use strict"});function nT(i){return(i instanceof ke||Array.isArray(i)||i.BYTES_PER_ELEMENT)&&(i={buffer:i}),i.buffer=mh(i.buffer,!1),i}var It,fn=b(()=>{He();dt();Ue();Hi();Ix();Bx();It=class extends ie{constructor(e={}){super(),this.uid=K("geometry"),this._layoutKey=0,this.instanceCount=1,this._bounds=new le,this._boundsDirty=!0;let{attributes:t,indexBuffer:r,topology:s}=e;if(this.buffers=[],this.attributes={},t)for(let n in t)this.addAttribute(n,t[n]);this.instanceCount=e.instanceCount??1,r&&this.addIndex(r),this.topology=s||"triangle-list"}onBufferUpdate(){this._boundsDirty=!0,this.emit("update",this)}getAttribute(e){return this.attributes[e]}getIndex(){return this.indexBuffer}getBuffer(e){return this.getAttribute(e).buffer}getSize(){for(let e in this.attributes){let t=this.attributes[e];return t.buffer.data.length/(t.stride/4||t.size)}return 0}addAttribute(e,t){let r=nT(t);this.buffers.indexOf(r.buffer)===-1&&(this.buffers.push(r.buffer),r.buffer.on("update",this.onBufferUpdate,this),r.buffer.on("change",this.onBufferUpdate,this)),this.attributes[e]=r}addIndex(e){this.indexBuffer=mh(e,!0),this.buffers.push(this.indexBuffer)}get bounds(){return this._boundsDirty?(this._boundsDirty=!1,Mx(this,"aPosition",this._bounds)):this._bounds}destroy(e=!1){this.emit("destroy",this),this.removeAllListeners(),e&&this.buffers.forEach(t=>t.destroy()),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}});var oT,aT,Xa,Fx=b(()=>{Hi();Wi();fn();oT=new Float32Array(1),aT=new Uint32Array(1),Xa=class extends It{constructor(){let t=new ke({data:oT,label:"attribute-batch-buffer",usage:ee.VERTEX|ee.COPY_DST,shrinkToFit:!1}),r=new ke({data:aT,label:"index-batch-buffer",usage:ee.INDEX|ee.COPY_DST,shrinkToFit:!1}),s=24;super({attributes:{aPosition:{buffer:t,format:"float32x2",stride:s,offset:0},aUV:{buffer:t,format:"float32x2",stride:s,offset:8},aColor:{buffer:t,format:"unorm8x4",stride:s,offset:16},aTextureIdAndRound:{buffer:t,format:"uint16x2",stride:s,offset:20}},indexBuffer:r})}}});function ji(i,e){let t=Rx[i];return t===void 0&&(ph[e]===void 0&&(ph[e]=1),Rx[i]=t=ph[e]++),t}var ph,Rx,Ya=b(()=>{"use strict";ph=Object.create(null),Rx=Object.create(null)});function Dx(){if(!Ka){Ka="mediump";let i=$a();i&&i.getShaderPrecisionFormat&&(Ka=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision?"highp":"mediump")}return Ka}var Ka,Ox=b(()=>{hh()});function zx(i,e,t){return e?i:t?(i=i.replace("out vec4 finalColor;",""),`
22
+
23
+ #ifdef GL_ES // This checks if it is WebGL1
24
+ #define in varying
25
+ #define finalColor gl_FragColor
26
+ #define texture texture2D
27
+ #endif
28
+ ${i}
29
+ `):`
30
+
31
+ #ifdef GL_ES // This checks if it is WebGL1
32
+ #define in attribute
33
+ #define out varying
34
+ #endif
35
+ ${i}
36
+ `}var Ux=b(()=>{"use strict"});function Gx(i,e,t){let r=t?e.maxSupportedFragmentPrecision:e.maxSupportedVertexPrecision;if(i.substring(0,9)!=="precision"){let s=t?e.requestedFragmentPrecision:e.requestedVertexPrecision;return s==="highp"&&r!=="highp"&&(s="mediump"),`precision ${s} float;
37
+ ${i}`}else if(r!=="highp"&&i.substring(0,15)==="precision highp")return i.replace("precision highp","precision mediump");return i}var Nx=b(()=>{"use strict"});function Lx(i,e){return e?`#version 300 es
38
+ ${i}`:i}var Vx=b(()=>{"use strict"});function Wx(i,{name:e="pixi-program"},t=!0){e=e.replace(/\s+/g,"-"),e+=t?"-fragment":"-vertex";let r=t?cT:lT;return r[e]?(r[e]++,e+=`-${r[e]}`):r[e]=1,i.indexOf("#define SHADER_NAME")!==-1?i:`${`#define SHADER_NAME ${e}`}
39
+ ${i}`}var cT,lT,Hx=b(()=>{"use strict";cT={},lT={}});function jx(i,e){return e?i.replace("#version 300 es",""):i}var $x=b(()=>{"use strict"});var gh,xh,qx,$i,Za=b(()=>{Ya();Ox();Ux();Nx();Vx();Hx();$x();gh={stripVersion:jx,ensurePrecision:Gx,addProgramDefines:zx,setProgramName:Wx,insertVersion:Lx},xh=Object.create(null),qx=class yh{constructor(e){e={...yh.defaultOptions,...e};let t=e.fragment.indexOf("#version 300 es")!==-1,r={stripVersion:t,ensurePrecision:{requestedFragmentPrecision:e.preferredFragmentPrecision,requestedVertexPrecision:e.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:Dx()},setProgramName:{name:e.name},addProgramDefines:t,insertVersion:t},s=e.fragment,n=e.vertex;Object.keys(gh).forEach(o=>{let a=r[o];s=gh[o](s,a,!0),n=gh[o](n,a,!1)}),this.fragment=s,this.vertex=n,this.transformFeedbackVaryings=e.transformFeedbackVaryings,this._key=ji(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null}static from(e){let t=`${e.vertex}:${e.fragment}`;return xh[t]||(xh[t]=new yh(e)),xh[t]}};qx.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};$i=qx});function Qr(i){return Xx[i]??Xx.float32}var Xx,Qa=b(()=>{"use strict";Xx={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}}});function Yx({source:i,entryPoint:e}){let t={},r=i.indexOf(`fn ${e}`);if(r!==-1){let s=i.indexOf("->",r);if(s!==-1){let n=i.substring(r,s),o=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g,a;for(;(a=o.exec(n))!==null;){let c=uT[a[3]]??"float32";t[a[2]]={location:parseInt(a[1],10),format:c,stride:Qr(c).stride,offset:0,instance:!1,start:0}}}}return t}var uT,Kx=b(()=>{Qa();uT={f32:"float32","vec2<f32>":"float32x2","vec3<f32>":"float32x3","vec4<f32>":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2<i32>":"sint32x2","vec3<i32>":"sint32x3","vec4<i32>":"sint32x4",u32:"uint32","vec2<u32>":"uint32x2","vec3<u32>":"uint32x3","vec4<u32>":"uint32x4",bool:"uint32","vec2<bool>":"uint32x2","vec3<bool>":"uint32x3","vec4<bool>":"uint32x4"}});function Ja(i){let e=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,t=/@group\((\d+)\)/,r=/@binding\((\d+)\)/,s=/var(<[^>]+>)? (\w+)/,n=/:\s*(\w+)/,o=/struct\s+(\w+)\s*{([^}]+)}/g,a=/(\w+)\s*:\s*([\w\<\>]+)/g,c=/struct\s+(\w+)/,l=i.match(e)?.map(h=>({group:parseInt(h.match(t)[1],10),binding:parseInt(h.match(r)[1],10),name:h.match(s)[2],isUniform:h.match(s)[1]==="<uniform>",type:h.match(n)[1]}));if(!l)return{groups:[],structs:[]};let u=i.match(o)?.map(h=>{let d=h.match(c)[1],f=h.match(a).reduce((m,p)=>{let[g,y]=p.split(":");return m[g.trim()]=y.trim(),m},{});return f?{name:d,members:f}:null}).filter(({name:h})=>l.some(d=>d.type===h))??[];return{groups:l,structs:u}}var Zx=b(()=>{"use strict"});var qi,Qx=b(()=>{"use strict";qi=(i=>(i[i.VERTEX=1]="VERTEX",i[i.FRAGMENT=2]="FRAGMENT",i[i.COMPUTE=4]="COMPUTE",i))(qi||{})});function Jx({groups:i}){let e=[];for(let t=0;t<i.length;t++){let r=i[t];e[r.group]||(e[r.group]=[]),r.isUniform?e[r.group].push({binding:r.binding,visibility:qi.VERTEX|qi.FRAGMENT,buffer:{type:"uniform"}}):r.type==="sampler"?e[r.group].push({binding:r.binding,visibility:qi.FRAGMENT,sampler:{type:"filtering"}}):r.type==="texture_2d"&&e[r.group].push({binding:r.binding,visibility:qi.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d",multisampled:!1}})}return e}var ey=b(()=>{Qx()});function ty({groups:i}){let e=[];for(let t=0;t<i.length;t++){let r=i[t];e[r.group]||(e[r.group]={}),e[r.group][r.name]=r.binding}return e}var ry=b(()=>{"use strict"});function iy(i,e){let t=new Set,r=new Set,s=[...i.structs,...e.structs].filter(o=>t.has(o.name)?!1:(t.add(o.name),!0)),n=[...i.groups,...e.groups].filter(o=>{let a=`${o.name}-${o.binding}`;return r.has(a)?!1:(r.add(a),!0)});return{structs:s,groups:n}}var sy=b(()=>{"use strict"});var bh,pr,ec=b(()=>{Ya();Kx();Zx();ey();ry();sy();bh=Object.create(null),pr=class i{constructor(e){this._layoutKey=0,this._attributeLocationsKey=0;let{fragment:t,vertex:r,layout:s,gpuLayout:n,name:o}=e;if(this.name=o,this.fragment=t,this.vertex=r,t.source===r.source){let a=Ja(t.source);this.structsAndGroups=a}else{let a=Ja(r.source),c=Ja(t.source);this.structsAndGroups=iy(a,c)}this.layout=s??ty(this.structsAndGroups),this.gpuLayout=n??Jx(this.structsAndGroups),this.autoAssignGlobalUniforms=this.layout[0]?.globalUniforms!==void 0,this.autoAssignLocalUniforms=this.layout[1]?.localUniforms!==void 0,this._generateProgramKey()}_generateProgramKey(){let{vertex:e,fragment:t}=this,r=e.source+t.source+e.entryPoint+t.entryPoint;this._layoutKey=ji(r,"program")}get attributeData(){return this._attributeData??(this._attributeData=Yx(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null}static from(e){let t=`${e.vertex.source}:${e.fragment.source}:${e.fragment.entryPoint}:${e.vertex.entryPoint}`;return bh[t]||(bh[t]=new i(e)),bh[t]}}});function wh(i,e,t){if(i)for(let r in i){let s=r.toLocaleLowerCase(),n=e[s];if(n){let o=i[r];r==="header"&&(o=o.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),t&&n.push(`//----${t}----//`),n.push(o)}else q(`${r} placement hook does not exist in shader`)}}var ny=b(()=>{Ge()});function _h(i){let e={};return(i.match(hT)?.map(r=>r.replace(/[{()}]/g,""))??[]).forEach(r=>{e[r]=[]}),e}var hT,oy=b(()=>{"use strict";hT=/\{\{(.*?)\}\}/g});function ay(i,e){let t,r=/@in\s+([^;]+);/g;for(;(t=r.exec(i))!==null;)e.push(t[1])}function Sh(i,e,t=!1){let r=[];ay(e,r),i.forEach(a=>{a.header&&ay(a.header,r)});let s=r;t&&s.sort();let n=s.map((a,c)=>` @location(${c}) ${a},`).join(`
40
+ `),o=e.replace(/@in\s+[^;]+;\s*/g,"");return o=o.replace("{{in}}",`
41
+ ${n}
42
+ `),o}var cy=b(()=>{"use strict"});function ly(i,e){let t,r=/@out\s+([^;]+);/g;for(;(t=r.exec(i))!==null;)e.push(t[1])}function dT(i){let t=/\b(\w+)\s*:/g.exec(i);return t?t[1]:""}function fT(i){let e=/@.*?\s+/g;return i.replace(e,"")}function uy(i,e){let t=[];ly(e,t),i.forEach(c=>{c.header&&ly(c.header,t)});let r=0,s=t.sort().map(c=>c.indexOf("builtin")>-1?c:`@location(${r++}) ${c}`).join(`,
43
+ `),n=t.sort().map(c=>` var ${fT(c)};`).join(`
44
+ `),o=`return VSOutput(
45
+ ${t.sort().map(c=>` ${dT(c)}`).join(`,
46
+ `)});`,a=e.replace(/@out\s+[^;]+;\s*/g,"");return a=a.replace("{{struct}}",`
47
+ ${s}
48
+ `),a=a.replace("{{start}}",`
49
+ ${n}
50
+ `),a=a.replace("{{return}}",`
51
+ ${o}
52
+ `),a}var hy=b(()=>{"use strict"});function Th(i,e){let t=i;for(let r in e){let s=e[r];s.join(`
53
+ `).length?t=t.replace(`{{${r}}}`,`//-----${r} START-----//
54
+ ${s.join(`
55
+ `)}
56
+ //----${r} FINISH----//`):t=t.replace(`{{${r}}}`,"")}return t}var dy=b(()=>{"use strict"});function fy({template:i,bits:e}){let t=py(i,e);if(gr[t])return gr[t];let{vertex:r,fragment:s}=pT(i,e);return gr[t]=gy(r,s,e),gr[t]}function my({template:i,bits:e}){let t=py(i,e);return gr[t]||(gr[t]=gy(i.vertex,i.fragment,e)),gr[t]}function pT(i,e){let t=e.map(o=>o.vertex).filter(o=>!!o),r=e.map(o=>o.fragment).filter(o=>!!o),s=Sh(t,i.vertex,!0);s=uy(t,s);let n=Sh(r,i.fragment,!0);return{vertex:s,fragment:n}}function py(i,e){return e.map(t=>(vh.has(t)||vh.set(t,mT++),vh.get(t))).sort((t,r)=>t-r).join("-")+i.vertex+i.fragment}function gy(i,e,t){let r=_h(i),s=_h(e);return t.forEach(n=>{wh(n.vertex,r,n.name),wh(n.fragment,s,n.name)}),{vertex:Th(i,r),fragment:Th(e,s)}}var gr,vh,mT,xy=b(()=>{ny();oy();cy();hy();dy();gr=Object.create(null),vh=new Map,mT=0});var yy,by,wy,_y,Sy=b(()=>{"use strict";yy=`
57
+ @in aPosition: vec2<f32>;
58
+ @in aUV: vec2<f32>;
59
+
60
+ @out @builtin(position) vPosition: vec4<f32>;
61
+ @out vUV : vec2<f32>;
62
+ @out vColor : vec4<f32>;
63
+
64
+ {{header}}
65
+
66
+ struct VSOutput {
67
+ {{struct}}
68
+ };
69
+
70
+ @vertex
71
+ fn main( {{in}} ) -> VSOutput {
72
+
73
+ var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;
74
+ var modelMatrix = mat3x3<f32>(
75
+ 1.0, 0.0, 0.0,
76
+ 0.0, 1.0, 0.0,
77
+ 0.0, 0.0, 1.0
78
+ );
79
+ var position = aPosition;
80
+ var uv = aUV;
81
+
82
+ {{start}}
83
+
84
+ vColor = vec4<f32>(1., 1., 1., 1.);
85
+
86
+ {{main}}
87
+
88
+ vUV = uv;
89
+
90
+ var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;
91
+
92
+ vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);
93
+
94
+ vColor *= globalUniforms.uWorldColorAlpha;
95
+
96
+ {{end}}
97
+
98
+ {{return}}
99
+ };
100
+ `,by=`
101
+ @in vUV : vec2<f32>;
102
+ @in vColor : vec4<f32>;
103
+
104
+ {{header}}
105
+
106
+ @fragment
107
+ fn main(
108
+ {{in}}
109
+ ) -> @location(0) vec4<f32> {
110
+
111
+ {{start}}
112
+
113
+ var outColor:vec4<f32>;
114
+
115
+ {{main}}
116
+
117
+ var finalColor:vec4<f32> = outColor * vColor;
118
+
119
+ {{end}}
120
+
121
+ return finalColor;
122
+ };
123
+ `,wy=`
124
+ in vec2 aPosition;
125
+ in vec2 aUV;
126
+
127
+ out vec4 vColor;
128
+ out vec2 vUV;
129
+
130
+ {{header}}
131
+
132
+ void main(void){
133
+
134
+ mat3 worldTransformMatrix = uWorldTransformMatrix;
135
+ mat3 modelMatrix = mat3(
136
+ 1.0, 0.0, 0.0,
137
+ 0.0, 1.0, 0.0,
138
+ 0.0, 0.0, 1.0
139
+ );
140
+ vec2 position = aPosition;
141
+ vec2 uv = aUV;
142
+
143
+ {{start}}
144
+
145
+ vColor = vec4(1.);
146
+
147
+ {{main}}
148
+
149
+ vUV = uv;
150
+
151
+ mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;
152
+
153
+ gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
154
+
155
+ vColor *= uWorldColorAlpha;
156
+
157
+ {{end}}
158
+ }
159
+ `,_y=`
160
+
161
+ in vec4 vColor;
162
+ in vec2 vUV;
163
+
164
+ out vec4 finalColor;
165
+
166
+ {{header}}
167
+
168
+ void main(void) {
169
+
170
+ {{start}}
171
+
172
+ vec4 outColor;
173
+
174
+ {{main}}
175
+
176
+ finalColor = outColor * vColor;
177
+
178
+ {{end}}
179
+ }
180
+ `});var Ty,vy,ky=b(()=>{"use strict";Ty={name:"global-uniforms-bit",vertex:{header:`
181
+ struct GlobalUniforms {
182
+ uProjectionMatrix:mat3x3<f32>,
183
+ uWorldTransformMatrix:mat3x3<f32>,
184
+ uWorldColorAlpha: vec4<f32>,
185
+ uResolution: vec2<f32>,
186
+ }
187
+
188
+ @group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
189
+ `}},vy={name:"global-uniforms-bit",vertex:{header:`
190
+ uniform mat3 uProjectionMatrix;
191
+ uniform mat3 uWorldTransformMatrix;
192
+ uniform vec4 uWorldColorAlpha;
193
+ uniform vec2 uResolution;
194
+ `}}});function Xi({bits:i,name:e}){let t=fy({template:{fragment:by,vertex:yy},bits:[Ty,...i]});return pr.from({name:e,vertex:{source:t.vertex,entryPoint:"main"},fragment:{source:t.fragment,entryPoint:"main"}})}function Yi({bits:i,name:e}){return new $i({name:e,...my({template:{vertex:wy,fragment:_y},bits:[vy,...i]})})}var tc=b(()=>{Za();ec();xy();Sy();ky()});var rc,ic,kh=b(()=>{"use strict";rc={name:"color-bit",vertex:{header:`
195
+ @in aColor: vec4<f32>;
196
+ `,main:`
197
+ vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
198
+ `}},ic={name:"color-bit",vertex:{header:`
199
+ in vec4 aColor;
200
+ `,main:`
201
+ vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
202
+ `}}});function gT(i){let e=[];if(i===1)e.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;"),e.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let t=0;for(let r=0;r<i;r++)e.push(`@group(1) @binding(${t++}) var textureSource${r+1}: texture_2d<f32>;`),e.push(`@group(1) @binding(${t++}) var textureSampler${r+1}: sampler;`)}return e.join(`
203
+ `)}function xT(i){let e=[];if(i===1)e.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{e.push("switch vTextureId {");for(let t=0;t<i;t++)t===i-1?e.push(" default:{"):e.push(` case ${t}:{`),e.push(` outColor = textureSampleGrad(textureSource${t+1}, textureSampler${t+1}, vUV, uvDx, uvDy);`),e.push(" break;}");e.push("}")}return e.join(`
204
+ `)}function sc(i){return Ph[i]||(Ph[i]={name:"texture-batch-bit",vertex:{header:`
205
+ @in aTextureIdAndRound: vec2<u32>;
206
+ @out @interpolate(flat) vTextureId : u32;
207
+ `,main:`
208
+ vTextureId = aTextureIdAndRound.y;
209
+ `,end:`
210
+ if(aTextureIdAndRound.x == 1)
211
+ {
212
+ vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
213
+ }
214
+ `},fragment:{header:`
215
+ @in @interpolate(flat) vTextureId: u32;
216
+
217
+ ${gT(i)}
218
+ `,main:`
219
+ var uvDx = dpdx(vUV);
220
+ var uvDy = dpdy(vUV);
221
+
222
+ ${xT(i)}
223
+ `}}),Ph[i]}function yT(i){let e=[];for(let t=0;t<i;t++)t>0&&e.push("else"),t<i-1&&e.push(`if(vTextureId < ${t}.5)`),e.push("{"),e.push(` outColor = texture(uTextures[${t}], vUV);`),e.push("}");return e.join(`
224
+ `)}function nc(i){return Ch[i]||(Ch[i]={name:"texture-batch-bit",vertex:{header:`
225
+ in vec2 aTextureIdAndRound;
226
+ out float vTextureId;
227
+
228
+ `,main:`
229
+ vTextureId = aTextureIdAndRound.y;
230
+ `,end:`
231
+ if(aTextureIdAndRound.x == 1.)
232
+ {
233
+ gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
234
+ }
235
+ `},fragment:{header:`
236
+ in float vTextureId;
237
+
238
+ uniform sampler2D uTextures[${i}];
239
+
240
+ `,main:`
241
+
242
+ ${yT(i)}
243
+ `}}),Ch[i]}var Ph,Ch,Eh=b(()=>{"use strict";Ph={};Ch={}});var Ki,Zi,oc=b(()=>{"use strict";Ki={name:"round-pixels-bit",vertex:{header:`
244
+ fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
245
+ {
246
+ return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
247
+ }
248
+ `}},Zi={name:"round-pixels-bit",vertex:{header:`
249
+ vec2 roundPixels(vec2 position, vec2 targetSize)
250
+ {
251
+ return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
252
+ }
253
+ `}}});var Ah,Py,Cy=b(()=>{"use strict";Ah=["f32","i32","vec2<f32>","vec3<f32>","vec4<f32>","mat2x2<f32>","mat3x3<f32>","mat4x4<f32>","mat3x2<f32>","mat4x2<f32>","mat2x3<f32>","mat4x3<f32>","mat2x4<f32>","mat3x4<f32>","vec2<i32>","vec3<i32>","vec4<i32>"],Py=Ah.reduce((i,e)=>(i[e]=!0,i),{})});function Ey(i,e){switch(i){case"f32":return 0;case"vec2<f32>":return new Float32Array(2*e);case"vec3<f32>":return new Float32Array(3*e);case"vec4<f32>":return new Float32Array(4*e);case"mat2x2<f32>":return new Float32Array([1,0,0,1]);case"mat3x3<f32>":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4<f32>":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var Ay=b(()=>{"use strict"});var Iy,Le,xr=b(()=>{Ue();Ya();Cy();Ay();Iy=class My{constructor(e,t){this._touched=0,this.uid=K("uniform"),this._resourceType="uniformGroup",this._resourceId=K("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,t={...My.defaultOptions,...t},this.uniformStructures=e;let r={};for(let s in e){let n=e[s];if(n.name=s,n.size=n.size??1,!Py[n.type])throw new Error(`Uniform type ${n.type} is not supported. Supported uniform types are: ${Ah.join(", ")}`);n.value??(n.value=Ey(n.type,n.size)),r[s]=n.value}this.uniforms=r,this._dirtyId=1,this.ubo=t.ubo,this.isStatic=t.isStatic,this._signature=ji(Object.keys(r).map(s=>`${s}-${e[s].type}`).join("-"),"uniform-group")}update(){this._dirtyId++}};Iy.defaultOptions={ubo:!1,isStatic:!1};Le=Iy});function ac(i){let e=By[i];if(e)return e;let t=new Int32Array(i);for(let r=0;r<i;r++)t[r]=r;return e=By[i]=new Le({uTextures:{value:t,type:"i32",size:i}},{isStatic:!0}),e}var By,Ih=b(()=>{xr();By={}});var Mt,mn=b(()=>{"use strict";Mt=(i=>(i[i.WEBGL=1]="WEBGL",i[i.WEBGPU=2]="WEBGPU",i[i.BOTH=3]="BOTH",i))(Mt||{})});var Bt,pn=b(()=>{He();Ue();Za();un();ec();mn();xr();Bt=class i extends ie{constructor(e){super(),this.uid=K("shader"),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[];let{gpuProgram:t,glProgram:r,groups:s,resources:n,compatibleRenderers:o,groupMap:a}=e;this.gpuProgram=t,this.glProgram=r,o===void 0&&(o=0,t&&(o|=Mt.WEBGPU),r&&(o|=Mt.WEBGL)),this.compatibleRenderers=o;let c={};if(!n&&!s&&(n={}),n&&s)throw new Error("[Shader] Cannot have both resources and groups");if(!t&&s&&!a)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!t&&s&&a)for(let l in a)for(let u in a[l]){let h=a[l][u];c[h]={group:l,binding:u,name:h}}else if(t&&s&&!a){let l=t.structsAndGroups.groups;a={},l.forEach(u=>{a[u.group]=a[u.group]||{},a[u.group][u.binding]=u.name,c[u.name]=u})}else if(n){s={},a={},t&&t.structsAndGroups.groups.forEach(h=>{a[h.group]=a[h.group]||{},a[h.group][h.binding]=h.name,c[h.name]=h});let l=0;for(let u in n)c[u]||(s[99]||(s[99]=new it,this._ownedBindGroups.push(s[99])),c[u]={group:99,binding:l,name:u},a[99]=a[99]||{},a[99][l]=u,l++);for(let u in n){let h=u,d=n[u];!d.source&&!d._resourceType&&(d=new Le(d));let f=c[h];f&&(s[f.group]||(s[f.group]=new it,this._ownedBindGroups.push(s[f.group])),s[f.group].setResource(d,f.binding))}}this.groups=s,this._uniformBindMap=a,this.resources=this._buildResourceAccessor(s,c)}addResource(e,t,r){var s,n;(s=this._uniformBindMap)[t]||(s[t]={}),(n=this._uniformBindMap[t])[r]||(n[r]=e),this.groups[t]||(this.groups[t]=new it,this._ownedBindGroups.push(this.groups[t]))}_buildResourceAccessor(e,t){let r={};for(let s in t){let n=t[s];Object.defineProperty(r,n.name,{get(){return e[n.group].getResource(n.binding)},set(o){e[n.group].setResource(o,n.binding)}})}return r}destroy(e=!1){this.emit("destroy",this),e&&(this.gpuProgram?.destroy(),this.glProgram?.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(t=>{t.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null}static from(e){let{gpu:t,gl:r,...s}=e,n,o;return t&&(n=pr.from(t)),r&&(o=$i.from(r)),new i({gpuProgram:n,glProgram:o,...s})}}});var cc,Fy=b(()=>{tc();kh();Eh();oc();Ih();pn();cc=class extends Bt{constructor(e){let t=Yi({name:"batch",bits:[ic,nc(e),Zi]}),r=Xi({name:"batch",bits:[rc,sc(e),Ki]});super({glProgram:t,gpuProgram:r,resources:{batchSamplers:ac(e)}})}}});var Mh,Ry,Oy,zy=b(()=>{G();Ax();Fx();Fy();Mh=null,Ry=class Dy extends Ex{constructor(e){super(e),this.geometry=new Xa,this.name=Dy.extension.name,this.vertexSize=6,Mh??(Mh=new cc(e.maxTextures)),this.shader=Mh}packAttributes(e,t,r,s,n){let o=n<<16|e.roundPixels&65535,a=e.transform,c=a.a,l=a.b,u=a.c,h=a.d,d=a.tx,f=a.ty,{positions:m,uvs:p}=e,g=e.color,y=e.attributeOffset,x=y+e.attributeSize;for(let w=y;w<x;w++){let _=w*2,S=m[_],T=m[_+1];t[s++]=c*S+u*T+d,t[s++]=h*T+l*S+f,t[s++]=p[_],t[s++]=p[_+1],r[s++]=g,r[s++]=o}}packQuadAttributes(e,t,r,s,n){let o=e.texture,a=e.transform,c=a.a,l=a.b,u=a.c,h=a.d,d=a.tx,f=a.ty,m=e.bounds,p=m.maxX,g=m.minX,y=m.maxY,x=m.minY,w=o.uvs,_=e.color,S=n<<16|e.roundPixels&65535;t[s+0]=c*g+u*x+d,t[s+1]=h*x+l*g+f,t[s+2]=w.x0,t[s+3]=w.y0,r[s+4]=_,r[s+5]=S,t[s+6]=c*p+u*x+d,t[s+7]=h*x+l*p+f,t[s+8]=w.x1,t[s+9]=w.y1,r[s+10]=_,r[s+11]=S,t[s+12]=c*p+u*y+d,t[s+13]=h*y+l*p+f,t[s+14]=w.x2,t[s+15]=w.y2,r[s+16]=_,r[s+17]=S,t[s+18]=c*g+u*y+d,t[s+19]=h*y+l*g+f,t[s+20]=w.x3,t[s+21]=w.y3,r[s+22]=_,r[s+23]=S}};Ry.extension={type:[A.Batcher],name:"default"};Oy=Ry});function Uy(i,e,t,r,s,n,o,a=null){let c=0;t*=e,s*=n;let l=a.a,u=a.b,h=a.c,d=a.d,f=a.tx,m=a.ty;for(;c<o;){let p=i[t],g=i[t+1];r[s]=l*p+h*g+f,r[s+1]=u*p+d*g+m,s+=n,t+=e,c++}}function Gy(i,e,t,r){let s=0;for(e*=t;s<r;)i[e]=0,i[e+1]=0,e+=t,s++}var Ny=b(()=>{"use strict"});function Bh(i,e,t,r,s){let n=e.a,o=e.b,a=e.c,c=e.d,l=e.tx,u=e.ty;t||(t=0),r||(r=2),s||(s=i.length/r-t);let h=t*r;for(let d=0;d<s;d++){let f=i[h],m=i[h+1];i[h]=n*f+a*m+l,i[h+1]=o*f+c*m+u,h+=r}}var Ly=b(()=>{"use strict"});var bT,Jr,Fh=b(()=>{re();_u();bT=new F,Jr=class{constructor(){this.packAsQuad=!1,this.batcherName="default",this.topology="triangle-list",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.renderable&&this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){let e=this.baseColor,t=e>>16|e&65280|(e&255)<<16,r=this.renderable;return r?va(t,r.groupColor)+(this.alpha*r.groupAlpha*255<<24):t+(this.alpha*255<<24)}get transform(){return this.renderable?.groupTransform||bT}copyTo(e){e.indexOffset=this.indexOffset,e.indexSize=this.indexSize,e.attributeOffset=this.attributeOffset,e.attributeSize=this.attributeSize,e.baseColor=this.baseColor,e.alpha=this.alpha,e.texture=this.texture,e.geometryData=this.geometryData,e.topology=this.topology}reset(){this.applyTransform=!0,this.renderable=null,this.topology="triangle-list"}}});var Qi,Vy,Wy,Hy=b(()=>{G();Qi={extension:{type:A.ShapeBuilder,name:"circle"},build(i,e){let t,r,s,n,o,a;if(i.type==="circle"){let _=i;if(o=a=_.radius,o<=0)return!1;t=_.x,r=_.y,s=n=0}else if(i.type==="ellipse"){let _=i;if(o=_.halfWidth,a=_.halfHeight,o<=0||a<=0)return!1;t=_.x,r=_.y,s=n=0}else{let _=i,S=_.width/2,T=_.height/2;t=_.x+S,r=_.y+T,o=a=Math.max(0,Math.min(_.radius,Math.min(S,T))),s=S-o,n=T-a}if(s<0||n<0)return!1;let c=Math.ceil(2.3*Math.sqrt(o+a)),l=c*8+(s?4:0)+(n?4:0);if(l===0)return!1;if(c===0)return e[0]=e[6]=t+s,e[1]=e[3]=r+n,e[2]=e[4]=t-s,e[5]=e[7]=r-n,!0;let u=0,h=c*4+(s?2:0)+2,d=h,f=l,m=s+o,p=n,g=t+m,y=t-m,x=r+p;if(e[u++]=g,e[u++]=x,e[--h]=x,e[--h]=y,n){let _=r-p;e[d++]=y,e[d++]=_,e[--f]=_,e[--f]=g}for(let _=1;_<c;_++){let S=Math.PI/2*(_/c),T=s+Math.cos(S)*o,k=n+Math.sin(S)*a,M=t+T,P=t-T,C=r+k,E=r-k;e[u++]=M,e[u++]=C,e[--h]=C,e[--h]=P,e[d++]=P,e[d++]=E,e[--f]=E,e[--f]=M}m=s,p=n+a,g=t+m,y=t-m,x=r+p;let w=r-p;return e[u++]=g,e[u++]=x,e[--f]=w,e[--f]=g,s&&(e[u++]=y,e[u++]=x,e[--f]=w,e[--f]=y),!0},triangulate(i,e,t,r,s,n){if(i.length===0)return;let o=0,a=0;for(let u=0;u<i.length;u+=2)o+=i[u],a+=i[u+1];o/=i.length/2,a/=i.length/2;let c=r;e[c*t]=o,e[c*t+1]=a;let l=c++;for(let u=0;u<i.length;u+=2)e[c*t]=i[u],e[c*t+1]=i[u+1],u>0&&(s[n++]=c,s[n++]=l,s[n++]=c-1),c++;s[n++]=l+1,s[n++]=l,s[n++]=c-1}},Vy={...Qi,extension:{...Qi.extension,name:"ellipse"}},Wy={...Qi,extension:{...Qi.extension,name:"roundedRectangle"}}});function jy(i){let e=i.length;if(e<6)return 1;let t=0;for(let r=0,s=i[e-2],n=i[e-1];r<e;r+=2){let o=i[r],a=i[r+1];t+=(o-s)*(a+n),s=o,n=a}return t<0?-1:1}var $y=b(()=>{"use strict"});function qy(i,e,t,r,s,n,o,a){let c=i-t*s,l=e-r*s,u=i+t*n,h=e+r*n,d,f;o?(d=r,f=-t):(d=-r,f=t);let m=c+d,p=l+f,g=u+d,y=h+f;return a.push(m,p),a.push(g,y),2}function ei(i,e,t,r,s,n,o,a){let c=t-i,l=r-e,u=Math.atan2(c,l),h=Math.atan2(s-i,n-e);a&&u<h?u+=Math.PI*2:!a&&u>h&&(h+=Math.PI*2);let d=u,f=h-u,m=Math.abs(f),p=Math.sqrt(c*c+l*l),g=(15*m*Math.sqrt(p)/Math.PI>>0)+1,y=f/g;if(d+=y,a){o.push(i,e),o.push(t,r);for(let x=1,w=d;x<g;x++,w+=y)o.push(i,e),o.push(i+Math.sin(w)*p,e+Math.cos(w)*p);o.push(i,e),o.push(s,n)}else{o.push(t,r),o.push(i,e);for(let x=1,w=d;x<g;x++,w+=y)o.push(i+Math.sin(w)*p,e+Math.cos(w)*p),o.push(i,e);o.push(s,n),o.push(i,e)}return g*2}function Xy(i,e,t,r,s,n){let o=1e-4;if(i.length===0)return;let a=e,c=a.alignment;if(e.alignment!==.5){let te=jy(i);t&&(te*=-1),c=(c-.5)*te+.5}let l=new Y(i[0],i[1]),u=new Y(i[i.length-2],i[i.length-1]),h=r,d=Math.abs(l.x-u.x)<o&&Math.abs(l.y-u.y)<o;if(h){i=i.slice(),d&&(i.pop(),i.pop(),u.set(i[i.length-2],i[i.length-1]));let te=(l.x+u.x)*.5,rr=(u.y+l.y)*.5;i.unshift(te,rr),i.push(te,rr)}let f=s,m=i.length/2,p=i.length,g=f.length/2,y=a.width/2,x=y*y,w=a.miterLimit*a.miterLimit,_=i[0],S=i[1],T=i[2],k=i[3],M=0,P=0,C=-(S-k),E=_-T,R=0,j=0,he=Math.sqrt(C*C+E*E);C/=he,E/=he,C*=y,E*=y;let ds=c,V=(1-ds)*2,H=ds*2;h||(a.cap==="round"?p+=ei(_-C*(V-H)*.5,S-E*(V-H)*.5,_-C*V,S-E*V,_+C*H,S+E*H,f,!0)+2:a.cap==="square"&&(p+=qy(_,S,C,E,V,H,!0,f))),f.push(_-C*V,S-E*V),f.push(_+C*H,S+E*H);for(let te=1;te<m-1;++te){_=i[(te-1)*2],S=i[(te-1)*2+1],T=i[te*2],k=i[te*2+1],M=i[(te+1)*2],P=i[(te+1)*2+1],C=-(S-k),E=_-T,he=Math.sqrt(C*C+E*E),C/=he,E/=he,C*=y,E*=y,R=-(k-P),j=T-M,he=Math.sqrt(R*R+j*j),R/=he,j/=he,R*=y,j*=y;let rr=T-_,fs=S-k,ms=T-M,ps=P-k,Kd=rr*ms+fs*ps,Ln=fs*ms-ps*rr,gs=Ln<0;if(Math.abs(Ln)<.001*Math.abs(Kd)){f.push(T-C*V,k-E*V),f.push(T+C*H,k+E*H),Kd>=0&&(a.join==="round"?p+=ei(T,k,T-C*V,k-E*V,T-R*V,k-j*V,f,!1)+4:p+=2,f.push(T-R*H,k-j*H),f.push(T+R*V,k+j*V));continue}let Zd=(-C+_)*(-E+k)-(-C+T)*(-E+S),Qd=(-R+M)*(-j+k)-(-R+T)*(-j+P),Vn=(rr*Qd-ms*Zd)/Ln,Wn=(ps*Zd-fs*Qd)/Ln,il=(Vn-T)*(Vn-T)+(Wn-k)*(Wn-k),_r=T+(Vn-T)*V,Sr=k+(Wn-k)*V,Tr=T-(Vn-T)*H,vr=k-(Wn-k)*H,y_=Math.min(rr*rr+fs*fs,ms*ms+ps*ps),Jd=gs?V:H,b_=y_+Jd*Jd*x;il<=b_?a.join==="bevel"||il/x>w?(gs?(f.push(_r,Sr),f.push(T+C*H,k+E*H),f.push(_r,Sr),f.push(T+R*H,k+j*H)):(f.push(T-C*V,k-E*V),f.push(Tr,vr),f.push(T-R*V,k-j*V),f.push(Tr,vr)),p+=2):a.join==="round"?gs?(f.push(_r,Sr),f.push(T+C*H,k+E*H),p+=ei(T,k,T+C*H,k+E*H,T+R*H,k+j*H,f,!0)+4,f.push(_r,Sr),f.push(T+R*H,k+j*H)):(f.push(T-C*V,k-E*V),f.push(Tr,vr),p+=ei(T,k,T-C*V,k-E*V,T-R*V,k-j*V,f,!1)+4,f.push(T-R*V,k-j*V),f.push(Tr,vr)):(f.push(_r,Sr),f.push(Tr,vr)):(f.push(T-C*V,k-E*V),f.push(T+C*H,k+E*H),a.join==="round"?gs?p+=ei(T,k,T+C*H,k+E*H,T+R*H,k+j*H,f,!0)+2:p+=ei(T,k,T-C*V,k-E*V,T-R*V,k-j*V,f,!1)+2:a.join==="miter"&&il/x<=w&&(gs?(f.push(Tr,vr),f.push(Tr,vr)):(f.push(_r,Sr),f.push(_r,Sr)),p+=2),f.push(T-R*V,k-j*V),f.push(T+R*H,k+j*H),p+=2)}_=i[(m-2)*2],S=i[(m-2)*2+1],T=i[(m-1)*2],k=i[(m-1)*2+1],C=-(S-k),E=_-T,he=Math.sqrt(C*C+E*E),C/=he,E/=he,C*=y,E*=y,f.push(T-C*V,k-E*V),f.push(T+C*H,k+E*H),h||(a.cap==="round"?p+=ei(T-C*(V-H)*.5,k-E*(V-H)*.5,T-C*V,k-E*V,T+C*H,k+E*H,f,!1)+2:a.cap==="square"&&(p+=qy(T,k,C,E,V,H,!1,f)));let x_=1e-4*1e-4;for(let te=g;te<p+g-2;++te)_=f[te*2],S=f[te*2+1],T=f[(te+1)*2],k=f[(te+1)*2+1],M=f[(te+2)*2],P=f[(te+2)*2+1],!(Math.abs(_*(k-P)+T*(P-S)+M*(S-k))<x_)&&n.push(te,te+1,te+2)}var Yy=b(()=>{vt();$y()});function Ky(i,e,t,r){let s=1e-4;if(i.length===0)return;let n=i[0],o=i[1],a=i[i.length-2],c=i[i.length-1],l=e||Math.abs(n-a)<s&&Math.abs(o-c)<s,u=t,h=i.length/2,d=u.length/2;for(let f=0;f<h;f++)u.push(i[f*2]),u.push(i[f*2+1]);for(let f=0;f<h-1;f++)r.push(d+f,d+f+1);l&&r.push(d+h-1,d)}var Zy=b(()=>{});function hc(i,e,t=2){let r=e&&e.length,s=r?e[0]*t:i.length,n=Jy(i,0,s,t,!0),o=[];if(!n||n.next===n.prev)return o;let a,c,l;if(r&&(n=PT(i,e,n,t)),i.length>80*t){a=1/0,c=1/0;let u=-1/0,h=-1/0;for(let d=t;d<s;d+=t){let f=i[d],m=i[d+1];f<a&&(a=f),m<c&&(c=m),f>u&&(u=f),m>h&&(h=m)}l=Math.max(u-a,h-c),l=l!==0?32767/l:0}return xn(n,o,t,a,c,l,0),o}function Jy(i,e,t,r,s){let n;if(s===zT(i,e,t,r)>0)for(let o=e;o<t;o+=r)n=Qy(o/r|0,i[o],i[o+1],n);else for(let o=t-r;o>=e;o-=r)n=Qy(o/r|0,i[o],i[o+1],n);return n&&Ji(n,n.next)&&(bn(n),n=n.next),n}function ti(i,e){if(!i)return i;e||(e=i);let t=i,r;do if(r=!1,!t.steiner&&(Ji(t,t.next)||ue(t.prev,t,t.next)===0)){if(bn(t),t=e=t.prev,t===t.next)break;r=!0}else t=t.next;while(r||t!==e);return e}function xn(i,e,t,r,s,n,o){if(!i)return;!o&&n&&MT(i,r,s,n);let a=i;for(;i.prev!==i.next;){let c=i.prev,l=i.next;if(n?TT(i,r,s,n):ST(i)){e.push(c.i,i.i,l.i),bn(i),i=l.next,a=l.next;continue}if(i=l,i===a){o?o===1?(i=vT(ti(i),e),xn(i,e,t,r,s,n,2)):o===2&&kT(i,e,t,r,s,n):xn(ti(i),e,t,r,s,n,1);break}}}function ST(i){let e=i.prev,t=i,r=i.next;if(ue(e,t,r)>=0)return!1;let s=e.x,n=t.x,o=r.x,a=e.y,c=t.y,l=r.y,u=Math.min(s,n,o),h=Math.min(a,c,l),d=Math.max(s,n,o),f=Math.max(a,c,l),m=r.next;for(;m!==e;){if(m.x>=u&&m.x<=d&&m.y>=h&&m.y<=f&&gn(s,a,n,c,o,l,m.x,m.y)&&ue(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function TT(i,e,t,r){let s=i.prev,n=i,o=i.next;if(ue(s,n,o)>=0)return!1;let a=s.x,c=n.x,l=o.x,u=s.y,h=n.y,d=o.y,f=Math.min(a,c,l),m=Math.min(u,h,d),p=Math.max(a,c,l),g=Math.max(u,h,d),y=Rh(f,m,e,t,r),x=Rh(p,g,e,t,r),w=i.prevZ,_=i.nextZ;for(;w&&w.z>=y&&_&&_.z<=x;){if(w.x>=f&&w.x<=p&&w.y>=m&&w.y<=g&&w!==s&&w!==o&&gn(a,u,c,h,l,d,w.x,w.y)&&ue(w.prev,w,w.next)>=0||(w=w.prevZ,_.x>=f&&_.x<=p&&_.y>=m&&_.y<=g&&_!==s&&_!==o&&gn(a,u,c,h,l,d,_.x,_.y)&&ue(_.prev,_,_.next)>=0))return!1;_=_.nextZ}for(;w&&w.z>=y;){if(w.x>=f&&w.x<=p&&w.y>=m&&w.y<=g&&w!==s&&w!==o&&gn(a,u,c,h,l,d,w.x,w.y)&&ue(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;_&&_.z<=x;){if(_.x>=f&&_.x<=p&&_.y>=m&&_.y<=g&&_!==s&&_!==o&&gn(a,u,c,h,l,d,_.x,_.y)&&ue(_.prev,_,_.next)>=0)return!1;_=_.nextZ}return!0}function vT(i,e){let t=i;do{let r=t.prev,s=t.next.next;!Ji(r,s)&&tb(r,t,t.next,s)&&yn(r,s)&&yn(s,r)&&(e.push(r.i,t.i,s.i),bn(t),bn(t.next),t=i=s),t=t.next}while(t!==i);return ti(t)}function kT(i,e,t,r,s,n){let o=i;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&RT(o,a)){let c=rb(o,a);o=ti(o,o.next),c=ti(c,c.next),xn(o,e,t,r,s,n,0),xn(c,e,t,r,s,n,0);return}a=a.next}o=o.next}while(o!==i)}function PT(i,e,t,r){let s=[];for(let n=0,o=e.length;n<o;n++){let a=e[n]*r,c=n<o-1?e[n+1]*r:i.length,l=Jy(i,a,c,r,!1);l===l.next&&(l.steiner=!0),s.push(FT(l))}s.sort(CT);for(let n=0;n<s.length;n++)t=ET(s[n],t);return t}function CT(i,e){let t=i.x-e.x;if(t===0&&(t=i.y-e.y,t===0)){let r=(i.next.y-i.y)/(i.next.x-i.x),s=(e.next.y-e.y)/(e.next.x-e.x);t=r-s}return t}function ET(i,e){let t=AT(i,e);if(!t)return e;let r=rb(t,i);return ti(r,r.next),ti(t,t.next)}function AT(i,e){let t=e,r=i.x,s=i.y,n=-1/0,o;if(Ji(i,t))return t;do{if(Ji(i,t.next))return t.next;if(s<=t.y&&s>=t.next.y&&t.next.y!==t.y){let h=t.x+(s-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(h<=r&&h>n&&(n=h,o=t.x<t.next.x?t:t.next,h===r))return o}t=t.next}while(t!==e);if(!o)return null;let a=o,c=o.x,l=o.y,u=1/0;t=o;do{if(r>=t.x&&t.x>=c&&r!==t.x&&eb(s<l?r:n,s,c,l,s<l?n:r,s,t.x,t.y)){let h=Math.abs(s-t.y)/(r-t.x);yn(t,i)&&(h<u||h===u&&(t.x>o.x||t.x===o.x&&IT(o,t)))&&(o=t,u=h)}t=t.next}while(t!==a);return o}function IT(i,e){return ue(i.prev,i,e.prev)<0&&ue(e.next,i,i.next)<0}function MT(i,e,t,r){let s=i;do s.z===0&&(s.z=Rh(s.x,s.y,e,t,r)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==i);s.prevZ.nextZ=null,s.prevZ=null,BT(s)}function BT(i){let e,t=1;do{let r=i,s;i=null;let n=null;for(e=0;r;){e++;let o=r,a=0;for(let l=0;l<t&&(a++,o=o.nextZ,!!o);l++);let c=t;for(;a>0||c>0&&o;)a!==0&&(c===0||!o||r.z<=o.z)?(s=r,r=r.nextZ,a--):(s=o,o=o.nextZ,c--),n?n.nextZ=s:i=s,s.prevZ=n,n=s;r=o}n.nextZ=null,t*=2}while(e>1);return i}function Rh(i,e,t,r,s){return i=(i-t)*s|0,e=(e-r)*s|0,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,i|e<<1}function FT(i){let e=i,t=i;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==i);return t}function eb(i,e,t,r,s,n,o,a){return(s-o)*(e-a)>=(i-o)*(n-a)&&(i-o)*(r-a)>=(t-o)*(e-a)&&(t-o)*(n-a)>=(s-o)*(r-a)}function gn(i,e,t,r,s,n,o,a){return!(i===o&&e===a)&&eb(i,e,t,r,s,n,o,a)}function RT(i,e){return i.next.i!==e.i&&i.prev.i!==e.i&&!DT(i,e)&&(yn(i,e)&&yn(e,i)&&OT(i,e)&&(ue(i.prev,i,e.prev)||ue(i,e.prev,e))||Ji(i,e)&&ue(i.prev,i,i.next)>0&&ue(e.prev,e,e.next)>0)}function ue(i,e,t){return(e.y-i.y)*(t.x-e.x)-(e.x-i.x)*(t.y-e.y)}function Ji(i,e){return i.x===e.x&&i.y===e.y}function tb(i,e,t,r){let s=uc(ue(i,e,t)),n=uc(ue(i,e,r)),o=uc(ue(t,r,i)),a=uc(ue(t,r,e));return!!(s!==n&&o!==a||s===0&&lc(i,t,e)||n===0&&lc(i,r,e)||o===0&&lc(t,i,r)||a===0&&lc(t,e,r))}function lc(i,e,t){return e.x<=Math.max(i.x,t.x)&&e.x>=Math.min(i.x,t.x)&&e.y<=Math.max(i.y,t.y)&&e.y>=Math.min(i.y,t.y)}function uc(i){return i>0?1:i<0?-1:0}function DT(i,e){let t=i;do{if(t.i!==i.i&&t.next.i!==i.i&&t.i!==e.i&&t.next.i!==e.i&&tb(t,t.next,i,e))return!0;t=t.next}while(t!==i);return!1}function yn(i,e){return ue(i.prev,i,i.next)<0?ue(i,e,i.next)>=0&&ue(i,i.prev,e)>=0:ue(i,e,i.prev)<0||ue(i,i.next,e)<0}function OT(i,e){let t=i,r=!1,s=(i.x+e.x)/2,n=(i.y+e.y)/2;do t.y>n!=t.next.y>n&&t.next.y!==t.y&&s<(t.next.x-t.x)*(n-t.y)/(t.next.y-t.y)+t.x&&(r=!r),t=t.next;while(t!==i);return r}function rb(i,e){let t=Dh(i.i,i.x,i.y),r=Dh(e.i,e.x,e.y),s=i.next,n=e.prev;return i.next=e,e.prev=i,t.next=s,s.prev=t,r.next=t,t.prev=r,n.next=r,r.prev=n,r}function Qy(i,e,t,r){let s=Dh(i,e,t);return r?(s.next=r.next,s.prev=r,r.next.prev=s,r.next=s):(s.prev=s,s.next=s),s}function bn(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function Dh(i,e,t){return{i,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function zT(i,e,t,r){let s=0;for(let n=e,o=t-r;n<t;n+=r)s+=(i[o]-i[n])*(i[n+1]+i[o+1]),o=n;return s}var ib=b(()=>{});var sb,nb=b(()=>{ib();He();sb=hc.default||hc});function dc(i,e,t,r,s,n,o){let a=sb(i,e,2);if(!a)return;for(let l=0;l<a.length;l+=3)n[o++]=a[l]+s,n[o++]=a[l+1]+s,n[o++]=a[l+2]+s;let c=s*r;for(let l=0;l<i.length;l+=2)t[c]=i[l],t[c+1]=i[l+1],c+=r}var Oh=b(()=>{nb()});var UT,ob,ab=b(()=>{G();Oh();UT=[],ob={extension:{type:A.ShapeBuilder,name:"polygon"},build(i,e){for(let t=0;t<i.points.length;t++)e[t]=i.points[t];return!0},triangulate(i,e,t,r,s,n){dc(i,UT,e,t,r,s,n)}}});var cb,lb=b(()=>{G();cb={extension:{type:A.ShapeBuilder,name:"rectangle"},build(i,e){let t=i,r=t.x,s=t.y,n=t.width,o=t.height;return n>0&&o>0?(e[0]=r,e[1]=s,e[2]=r+n,e[3]=s,e[4]=r+n,e[5]=s+o,e[6]=r,e[7]=s+o,!0):!1},triangulate(i,e,t,r,s,n){let o=0;r*=t,e[r+o]=i[0],e[r+o+1]=i[1],o+=t,e[r+o]=i[2],e[r+o+1]=i[3],o+=t,e[r+o]=i[6],e[r+o+1]=i[7],o+=t,e[r+o]=i[4],e[r+o+1]=i[5],o+=t;let a=r/t;s[n++]=a,s[n++]=a+1,s[n++]=a+2,s[n++]=a+1,s[n++]=a+3,s[n++]=a+2}}});var ub,hb=b(()=>{G();ub={extension:{type:A.ShapeBuilder,name:"triangle"},build(i,e){return e[0]=i.x,e[1]=i.y,e[2]=i.x2,e[3]=i.y2,e[4]=i.x3,e[5]=i.y3,!0},triangulate(i,e,t,r,s,n){let o=0;r*=t,e[r+o]=i[0],e[r+o+1]=i[1],o+=t,e[r+o]=i[2],e[r+o+1]=i[3],o+=t,e[r+o]=i[4],e[r+o+1]=i[5];let a=r/t;s[n++]=a,s[n++]=a+1,s[n++]=a+2}}});function fb(i,e){for(let t=0;t<e.length;t++){let r=e[t];i.addColorStop(r.offset,r.color)}}function mb(i,e){let t=xe.get().createCanvas(i,e),r=t.getContext("2d");return{canvas:t,context:r}}function GT(i){let e=i[0]??{};return(typeof e=="number"||i[1])&&(N("8.5.2","use options object instead"),e={type:"linear",start:{x:i[0],y:i[1]},end:{x:i[2],y:i[3]},textureSpace:i[4],textureSize:i[5]??qe.defaultLinearOptions.textureSize}),e}var db,Uh,qe,es=b(()=>{je();Ct();re();Va();ve();Ue();pe();Cu();db=[{offset:0,color:"white"},{offset:1,color:"black"}],Uh=class zh{constructor(...e){this.uid=K("fillGradient"),this.type="linear",this.colorStops=[];let t=GT(e);t={...t.type==="radial"?zh.defaultRadialOptions:zh.defaultLinearOptions,...Pa(t)},this._textureSize=t.textureSize,this._wrapMode=t.wrapMode,t.type==="radial"?(this.center=t.center,this.outerCenter=t.outerCenter??this.center,this.innerRadius=t.innerRadius,this.outerRadius=t.outerRadius,this.scale=t.scale,this.rotation=t.rotation):(this.start=t.start,this.end=t.end),this.textureSpace=t.textureSpace,this.type=t.type,t.colorStops.forEach(s=>{this.addColorStop(s.offset,s.color)})}addColorStop(e,t){return this.colorStops.push({offset:e,color:X.shared.setValue(t).toHexa()}),this}buildLinearGradient(){if(this.texture)return;let{x:e,y:t}=this.start,{x:r,y:s}=this.end,n=r-e,o=s-t,a=n<0||o<0;if(this._wrapMode==="clamp-to-edge"){if(n<0){let g=e;e=r,r=g,n*=-1}if(o<0){let g=t;t=s,s=g,o*=-1}}let c=this.colorStops.length?this.colorStops:db,l=this._textureSize,{canvas:u,context:h}=mb(l,1),d=a?h.createLinearGradient(this._textureSize,0,0,0):h.createLinearGradient(0,0,this._textureSize,0);fb(d,c),h.fillStyle=d,h.fillRect(0,0,l,1),this.texture=new O({source:new Et({resource:u,addressMode:this._wrapMode})});let f=Math.sqrt(n*n+o*o),m=Math.atan2(o,n),p=new F;p.scale(f/l,1),p.rotate(m),p.translate(e,t),this.textureSpace==="local"&&p.scale(l,l),this.transform=p}buildGradient(){this.type==="linear"?this.buildLinearGradient():this.buildRadialGradient()}buildRadialGradient(){if(this.texture)return;let e=this.colorStops.length?this.colorStops:db,t=this._textureSize,{canvas:r,context:s}=mb(t,t),{x:n,y:o}=this.center,{x:a,y:c}=this.outerCenter,l=this.innerRadius,u=this.outerRadius,h=a-u,d=c-u,f=t/(u*2),m=(n-h)*f,p=(o-d)*f,g=s.createRadialGradient(m,p,l*f,(a-h)*f,(c-d)*f,u*f);fb(g,e),s.fillStyle=e[e.length-1].color,s.fillRect(0,0,t,t),s.fillStyle=g,s.translate(m,p),s.rotate(this.rotation),s.scale(1,this.scale),s.translate(-m,-p),s.fillRect(0,0,t,t),this.texture=new O({source:new Et({resource:r,addressMode:this._wrapMode})});let y=new F;y.scale(1/f,1/f),y.translate(h,d),this.textureSpace==="local"&&y.scale(t,t),this.transform=y}get styleKey(){return this.uid}destroy(){this.texture?.destroy(!0),this.texture=null}};Uh.defaultLinearOptions={start:{x:0,y:0},end:{x:0,y:1},colorStops:[],textureSpace:"local",type:"linear",textureSize:256,wrapMode:"clamp-to-edge"};Uh.defaultRadialOptions={center:{x:.5,y:.5},innerRadius:0,outerRadius:.5,colorStops:[],scale:1,textureSpace:"local",type:"radial",textureSize:256,wrapMode:"clamp-to-edge"};qe=Uh});function pb(i,e,t,r){let s=e.matrix?i.copyFrom(e.matrix).invert():i.identity();if(e.textureSpace==="local"){let o=t.getBounds(LT);e.width&&o.pad(e.width);let{x:a,y:c}=o,l=1/o.width,u=1/o.height,h=-a*l,d=-c*u,f=s.a,m=s.b,p=s.c,g=s.d;s.a*=l,s.b*=l,s.c*=u,s.d*=u,s.tx=h*f+d*p+s.tx,s.ty=h*m+d*g+s.ty}else s.translate(e.texture.frame.x,e.texture.frame.y),s.scale(1/e.texture.source.width,1/e.texture.source.height);let n=e.texture.source.style;return!(e.fill instanceof qe)&&n.addressMode==="clamp-to-edge"&&(n.addressMode="repeat",n.update()),r&&s.append(NT.copyFrom(r).invert()),s}var NT,LT,gb=b(()=>{re();$e();es();NT=new F,LT=new Z});function yb(i,e){let{geometryData:t,batches:r}=e;r.length=0,t.indices.length=0,t.vertices.length=0,t.uvs.length=0;for(let s=0;s<i.instructions.length;s++){let n=i.instructions[s];if(n.action==="texture")HT(n.data,r,t);else if(n.action==="fill"||n.action==="stroke"){let o=n.action==="stroke",a=n.data.path.shapePath,c=n.data.style,l=n.data.hole;o&&l&&xb(l.shapePath,c,!0,r,t),l&&(a.shapePrimitives[a.shapePrimitives.length-1].holes=l.shapePath.shapePrimitives),xb(a,c,o,r,t)}}}function HT(i,e,t){let r=[],s=fc.rectangle,n=VT;n.x=i.dx,n.y=i.dy,n.width=i.dw,n.height=i.dh;let o=i.transform;if(!s.build(n,r))return;let{vertices:a,uvs:c,indices:l}=t,u=l.length,h=a.length/2;o&&Bh(r,o),s.triangulate(r,a,2,h,l,u);let d=i.image,f=d.uvs;c.push(f.x0,f.y0,f.x1,f.y1,f.x3,f.y3,f.x2,f.y2);let m=be.get(Jr);m.indexOffset=u,m.indexSize=l.length-u,m.attributeOffset=h,m.attributeSize=a.length/2-h,m.baseColor=i.style,m.alpha=i.alpha,m.texture=d,m.geometryData=t,e.push(m)}function xb(i,e,t,r,s){let{vertices:n,uvs:o,indices:a}=s;i.shapePrimitives.forEach(({shape:c,transform:l,holes:u})=>{let h=[],d=fc[c.type];if(!d.build(c,h))return;let f=a.length,m=n.length/2,p="triangle-list";if(l&&Bh(h,l),t){let w=c.closePath??!0,_=e;_.pixelLine?(Ky(h,w,n,a),p="line-list"):Xy(h,_,!1,w,n,a)}else if(u){let w=[],_=h.slice();jT(u).forEach(T=>{w.push(_.length/2),_.push(...T)}),dc(_,w,n,2,m,a,f)}else d.triangulate(h,n,2,m,a,f);let g=o.length/2,y=e.texture;if(y!==O.WHITE){let w=pb(WT,e,c,l);Uy(n,2,m,o,g,2,n.length/2-m,w)}else Gy(o,g,2,n.length/2-m);let x=be.get(Jr);x.indexOffset=f,x.indexSize=a.length-f,x.attributeOffset=m,x.attributeSize=n.length/2-m,x.baseColor=e.color,x.alpha=e.alpha,x.texture=y,x.geometryData=s,x.topology=p,r.push(x)})}function jT(i){let e=[];for(let t=0;t<i.length;t++){let r=i[t].shape,s=[];fc[r.type].build(r,s)&&e.push(s)}return e}var fc,VT,WT,bb=b(()=>{G();re();$e();Ny();Ly();ve();Hr();Fh();Hy();Yy();Zy();ab();lb();hb();gb();Oh();fc={};L.handleByMap(A.ShapeBuilder,fc);L.add(cb,ob,ub,Qi,Vy,Wy);VT=new Z,WT=new F});var Gh,Nh,Vh,ts,mc=b(()=>{G();mx();zy();ku();pe();Hr();bb();Gh=class{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}},Nh=class{constructor(){this.instructions=new Oi}init(e){this.batcher=new Oy({maxTextures:e}),this.instructions.reset()}get geometry(){return N(fp,"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}},Vh=class Lh{constructor(e){this._gpuContextHash={},this._graphicsDataContextHash=Object.create(null),this._renderer=e,e.renderableGC.addManagedHash(this,"_gpuContextHash"),e.renderableGC.addManagedHash(this,"_graphicsDataContextHash")}init(e){Lh.defaultOptions.bezierSmoothness=e?.bezierSmoothness??Lh.defaultOptions.bezierSmoothness}getContextRenderData(e){return this._graphicsDataContextHash[e.uid]||this._initContextRenderData(e)}updateGpuContext(e){let t=this._gpuContextHash[e.uid]||this._initContext(e);if(e.dirty){t?this._cleanGraphicsContextData(e):t=this._initContext(e),yb(e,t);let r=e.batchMode;e.customShader||r==="no-batch"?t.isBatchable=!1:r==="auto"?t.isBatchable=t.geometryData.vertices.length<400:t.isBatchable=!0,e.dirty=!1}return t}getGpuContext(e){return this._gpuContextHash[e.uid]||this._initContext(e)}_initContextRenderData(e){let t=be.get(Nh,{maxTextures:this._renderer.limits.maxBatchableTextures}),{batches:r,geometryData:s}=this._gpuContextHash[e.uid],n=s.vertices.length,o=s.indices.length;for(let u=0;u<r.length;u++)r[u].applyTransform=!1;let a=t.batcher;a.ensureAttributeBuffer(n),a.ensureIndexBuffer(o),a.begin();for(let u=0;u<r.length;u++){let h=r[u];a.add(h)}a.finish(t.instructions);let c=a.geometry;c.indexBuffer.setDataWithSize(a.indexBuffer,a.indexSize,!0),c.buffers[0].setDataWithSize(a.attributeBuffer.float32View,a.attributeSize,!0);let l=a.batches;for(let u=0;u<l.length;u++){let h=l[u];h.bindGroup=fx(h.textures.textures,h.textures.count,this._renderer.limits.maxBatchableTextures)}return this._graphicsDataContextHash[e.uid]=t,t}_initContext(e){let t=new Gh;return t.context=e,this._gpuContextHash[e.uid]=t,e.on("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[e.uid]}onGraphicsContextDestroy(e){this._cleanGraphicsContextData(e),e.off("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[e.uid]=null}_cleanGraphicsContextData(e){let t=this._gpuContextHash[e.uid];t.isBatchable||this._graphicsDataContextHash[e.uid]&&(be.return(this.getContextRenderData(e)),this._graphicsDataContextHash[e.uid]=null),t.batches&&t.batches.forEach(r=>{be.return(r)})}destroy(){for(let e in this._gpuContextHash)this._gpuContextHash[e]&&this.onGraphicsContextDestroy(this._gpuContextHash[e].context)}};Vh.extension={type:[A.WebGLSystem,A.WebGPUSystem,A.CanvasSystem],name:"graphicsContext"};Vh.defaultOptions={bezierSmoothness:.5};ts=Vh});var $T,Wh,Hh,jh,$h,qh,Xh,Yh,ri,pc=b(()=>{"use strict";$T={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},Wh=0,Hh=1,jh=2,$h=3,qh=4,Xh=5,Yh=class wb{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<Wh)}set blend(e){!!(this.data&1<<Wh)!==e&&(this.data^=1<<Wh)}get offsets(){return!!(this.data&1<<Hh)}set offsets(e){!!(this.data&1<<Hh)!==e&&(this.data^=1<<Hh)}set cullMode(e){if(e==="none"){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace=e==="front"}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(this.data&1<<jh)}set culling(e){!!(this.data&1<<jh)!==e&&(this.data^=1<<jh)}get depthTest(){return!!(this.data&1<<$h)}set depthTest(e){!!(this.data&1<<$h)!==e&&(this.data^=1<<$h)}get depthMask(){return!!(this.data&1<<Xh)}set depthMask(e){!!(this.data&1<<Xh)!==e&&(this.data^=1<<Xh)}get clockwiseFrontFace(){return!!(this.data&1<<qh)}set clockwiseFrontFace(e){!!(this.data&1<<qh)!==e&&(this.data^=1<<qh)}get blendMode(){return this._blendMode}set blendMode(e){this.blend=e!=="none",this._blendMode=e,this._blendModeId=$T[e]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(e){this.offsets=!!e,this._polygonOffset=e}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){let e=new wb;return e.depthTest=!1,e.blend=!0,e}};Yh.default2d=Yh.for2d();ri=Yh});function yr(i,e,t){let r=(i>>24&255)/255;e[t++]=(i&255)/255*r,e[t++]=(i>>8&255)/255*r,e[t++]=(i>>16&255)/255*r,e[t++]=r}var wn=b(()=>{"use strict"});var Kh,_n,_b=b(()=>{G();pc();Hr();wn();Fh();Kh=class{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(e=>{be.return(e)}),this.batches.length=0}},_n=class{constructor(e,t){this.state=ri.for2d(),this.renderer=e,this._adaptor=t,this.renderer.runners.contextChange.add(this)}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(e){let t=e.context,r=!!e._gpuData,s=this.renderer.graphicsContext.updateGpuContext(t);return!!(s.isBatchable||r!==s.isBatchable)}addRenderable(e,t){let r=this.renderer.graphicsContext.updateGpuContext(e.context);e.didViewUpdate&&this._rebuild(e),r.isBatchable?this._addToBatcher(e,t):(this.renderer.renderPipes.batch.break(t),t.add(e))}updateRenderable(e){let r=this._getGpuDataForRenderable(e).batches;for(let s=0;s<r.length;s++){let n=r[s];n._batcher.updateElement(n)}}execute(e){if(!e.isRenderable)return;let t=this.renderer,r=e.context;if(!t.graphicsContext.getGpuContext(r).batches.length)return;let n=r.customShader||this._adaptor.shader;this.state.blendMode=e.groupBlendMode;let o=n.resources.localUniforms.uniforms;o.uTransformMatrix=e.groupTransform,o.uRound=t._roundPixels|e._roundPixels,yr(e.groupColorAlpha,o.uColor,0),this._adaptor.execute(this,e)}_rebuild(e){let t=this._getGpuDataForRenderable(e),r=this.renderer.graphicsContext.updateGpuContext(e.context);t.destroy(),r.isBatchable&&this._updateBatchesForRenderable(e,t)}_addToBatcher(e,t){let r=this.renderer.renderPipes.batch,s=this._getGpuDataForRenderable(e).batches;for(let n=0;n<s.length;n++){let o=s[n];r.addToBatch(o,t)}}_getGpuDataForRenderable(e){return e._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(e)}_initGpuDataForRenderable(e){let t=new Kh;return e._gpuData[this.renderer.uid]=t,t}_updateBatchesForRenderable(e,t){let r=e.context,s=this.renderer.graphicsContext.getGpuContext(r),n=this.renderer._roundPixels|e._roundPixels;t.batches=s.batches.map(o=>{let a=be.get(Jr);return o.copyTo(a),a.renderable=e,a.roundPixels=n,a})}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}};_n.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"graphics"}});var Zh=b(()=>{G();mc();_b();L.add(_n);L.add(ts)});var br,gc=b(()=>{"use strict";br=class{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(e){this._topology=e}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(e){this.texture!==e&&(this.texture=e,this._textureMatrixUpdateId=-1)}get uvs(){let t=this.geometry.getBuffer("aUV"),r=t.data,s=r,n=this.texture.textureMatrix;return n.isSimple||(s=this._transformedUvs,(this._textureMatrixUpdateId!==n._updateID||this._uvUpdateId!==t._updateID)&&((!s||s.length<r.length)&&(s=this._transformedUvs=new Float32Array(r.length)),this._textureMatrixUpdateId=n._updateID,this._uvUpdateId=t._updateID,n.multiplyUvs(r,s))),s}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}}});var xc,Sn,Sb=b(()=>{G();re();un();xr();hn();wn();gc();xc=class{destroy(){}},Sn=class{constructor(e,t){this.localUniforms=new Le({uTransformMatrix:{value:new F,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new it({0:this.localUniforms}),this.renderer=e,this._adaptor=t,this._adaptor.init()}validateRenderable(e){let t=this._getMeshData(e),r=t.batched,s=e.batched;if(t.batched=s,r!==s)return!0;if(s){let n=e._geometry;if(n.indices.length!==t.indexSize||n.positions.length!==t.vertexSize)return t.indexSize=n.indices.length,t.vertexSize=n.positions.length,!0;let o=this._getBatchableMesh(e);return o.texture.uid!==e._texture.uid&&(o._textureMatrixUpdateId=-1),!o._batcher.checkAndUpdateTexture(o,e._texture)}return!1}addRenderable(e,t){let r=this.renderer.renderPipes.batch,{batched:s}=this._getMeshData(e);if(s){let n=this._getBatchableMesh(e);n.setTexture(e._texture),n.geometry=e._geometry,r.addToBatch(n,t)}else r.break(t),t.add(e)}updateRenderable(e){if(e.batched){let t=this._getBatchableMesh(e);t.setTexture(e._texture),t.geometry=e._geometry,t._batcher.updateElement(t)}}execute(e){if(!e.isRenderable)return;e.state.blendMode=Qt(e.groupBlendMode,e.texture._source);let t=this.localUniforms;t.uniforms.uTransformMatrix=e.groupTransform,t.uniforms.uRound=this.renderer._roundPixels|e._roundPixels,t.update(),yr(e.groupColorAlpha,t.uniforms.uColor,0),this._adaptor.execute(this,e)}_getMeshData(e){var t,r;return(t=e._gpuData)[r=this.renderer.uid]||(t[r]=new xc),e._gpuData[this.renderer.uid].meshData||this._initMeshData(e)}_initMeshData(e){return e._gpuData[this.renderer.uid].meshData={batched:e.batched,indexSize:e._geometry.indices?.length,vertexSize:e._geometry.positions?.length},e._gpuData[this.renderer.uid].meshData}_getBatchableMesh(e){var t,r;return(t=e._gpuData)[r=this.renderer.uid]||(t[r]=new xc),e._gpuData[this.renderer.uid].batchableMesh||this._initBatchableMesh(e)}_initBatchableMesh(e){let t=new br;return t.renderable=e,t.setTexture(e._texture),t.transform=e.groupTransform,t.roundPixels=this.renderer._roundPixels|e._roundPixels,e._gpuData[this.renderer.uid].batchableMesh=t,t}destroy(){this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}};Sn.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"mesh"}});var Qh=b(()=>{G();Sb();L.add(Sn)});var yc,Tb=b(()=>{"use strict";yc=class{execute(e,t){let r=e.state,s=e.renderer,n=t.shader||e.defaultShader;n.resources.uTexture=t.texture._source,n.resources.uniforms=e.localUniforms;let o=s.gl,a=e.getBuffers(t);s.shader.bind(n),s.state.set(r),s.geometry.bind(a.geometry,n.glProgram);let l=a.geometry.indexBuffer.data.BYTES_PER_ELEMENT===2?o.UNSIGNED_SHORT:o.UNSIGNED_INT;o.drawElements(o.TRIANGLES,t.particleChildren.length*6,l,0)}}});function Jh(i,e=null){let t=i*6;if(t>65535?e||(e=new Uint32Array(t)):e||(e=new Uint16Array(t)),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let r=0,s=0;r<t;r+=6,s+=4)e[r+0]=s+0,e[r+1]=s+1,e[r+2]=s+2,e[r+3]=s+0,e[r+4]=s+2,e[r+5]=s+3;return e}var vb=b(()=>{"use strict"});function Pb(i){return{dynamicUpdate:kb(i,!0),staticUpdate:kb(i,!1)}}function kb(i,e){let t=[];t.push(`
254
+
255
+ var index = 0;
256
+
257
+ for (let i = 0; i < ps.length; ++i)
258
+ {
259
+ const p = ps[i];
260
+
261
+ `);let r=0;for(let n in i){let o=i[n];if(e!==o.dynamic)continue;t.push(`offset = index + ${r}`),t.push(o.code);let a=Qr(o.format);r+=a.stride/4}t.push(`
262
+ index += stride * 4;
263
+ }
264
+ `),t.unshift(`
265
+ var stride = ${r};
266
+ `);let s=t.join(`
267
+ `);return new Function("ps","f32v","u32v",s)}var Cb=b(()=>{Qa()});function qT(i){let e=[];for(let t in i){let r=i[t];e.push(t,r.code,r.dynamic?"d":"s")}return e.join("_")}var bc,Eb=b(()=>{Hi();Wi();fn();Qa();lh();vb();Cb();bc=class{constructor(e){this._size=0,this._generateParticleUpdateCache={};let t=this._size=e.size??1e3,r=e.properties,s=0,n=0;for(let u in r){let h=r[u],d=Qr(h.format);h.dynamic?n+=d.stride:s+=d.stride}this._dynamicStride=n/4,this._staticStride=s/4,this.staticAttributeBuffer=new At(t*4*s),this.dynamicAttributeBuffer=new At(t*4*n),this.indexBuffer=Jh(t);let o=new It,a=0,c=0;this._staticBuffer=new ke({data:new Float32Array(1),label:"static-particle-buffer",shrinkToFit:!1,usage:ee.VERTEX|ee.COPY_DST}),this._dynamicBuffer=new ke({data:new Float32Array(1),label:"dynamic-particle-buffer",shrinkToFit:!1,usage:ee.VERTEX|ee.COPY_DST});for(let u in r){let h=r[u],d=Qr(h.format);h.dynamic?(o.addAttribute(h.attributeName,{buffer:this._dynamicBuffer,stride:this._dynamicStride*4,offset:a*4,format:h.format}),a+=d.size):(o.addAttribute(h.attributeName,{buffer:this._staticBuffer,stride:this._staticStride*4,offset:c*4,format:h.format}),c+=d.size)}o.addIndex(this.indexBuffer);let l=this.getParticleUpdate(r);this._dynamicUpload=l.dynamicUpdate,this._staticUpload=l.staticUpdate,this.geometry=o}getParticleUpdate(e){let t=qT(e);return this._generateParticleUpdateCache[t]?this._generateParticleUpdateCache[t]:(this._generateParticleUpdateCache[t]=this.generateParticleUpdate(e),this._generateParticleUpdateCache[t])}generateParticleUpdate(e){return Pb(e)}update(e,t){e.length>this._size&&(t=!0,this._size=Math.max(e.length,this._size*1.5|0),this.staticAttributeBuffer=new At(this._size*this._staticStride*4*4),this.dynamicAttributeBuffer=new At(this._size*this._dynamicStride*4*4),this.indexBuffer=Jh(this._size),this.geometry.indexBuffer.setDataWithSize(this.indexBuffer,this.indexBuffer.byteLength,!0));let r=this.dynamicAttributeBuffer;if(this._dynamicUpload(e,r.float32View,r.uint32View),this._dynamicBuffer.setDataWithSize(this.dynamicAttributeBuffer.float32View,e.length*this._dynamicStride*4,!0),t){let s=this.staticAttributeBuffer;this._staticUpload(e,s.float32View,s.uint32View),this._staticBuffer.setDataWithSize(s.float32View,e.length*this._staticStride*4,!0)}}destroy(){this._staticBuffer.destroy(),this._dynamicBuffer.destroy(),this.geometry.destroy()}}});var Ab,Ib=b(()=>{Ab=`varying vec2 vUV;
268
+ varying vec4 vColor;
269
+
270
+ uniform sampler2D uTexture;
271
+
272
+ void main(void){
273
+ vec4 color = texture2D(uTexture, vUV) * vColor;
274
+ gl_FragColor = color;
275
+ }`});var Mb,Bb=b(()=>{Mb=`attribute vec2 aVertex;
276
+ attribute vec2 aUV;
277
+ attribute vec4 aColor;
278
+
279
+ attribute vec2 aPosition;
280
+ attribute float aRotation;
281
+
282
+ uniform mat3 uTranslationMatrix;
283
+ uniform float uRound;
284
+ uniform vec2 uResolution;
285
+ uniform vec4 uColor;
286
+
287
+ varying vec2 vUV;
288
+ varying vec4 vColor;
289
+
290
+ vec2 roundPixels(vec2 position, vec2 targetSize)
291
+ {
292
+ return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
293
+ }
294
+
295
+ void main(void){
296
+ float cosRotation = cos(aRotation);
297
+ float sinRotation = sin(aRotation);
298
+ float x = aVertex.x * cosRotation - aVertex.y * sinRotation;
299
+ float y = aVertex.x * sinRotation + aVertex.y * cosRotation;
300
+
301
+ vec2 v = vec2(x, y);
302
+ v = v + aPosition;
303
+
304
+ gl_Position = vec4((uTranslationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);
305
+
306
+ if(uRound == 1.0)
307
+ {
308
+ gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
309
+ }
310
+
311
+ vUV = aUV;
312
+ vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uColor;
313
+ }
314
+ `});var ed,Fb=b(()=>{ed=`
315
+ struct ParticleUniforms {
316
+ uProjectionMatrix:mat3x3<f32>,
317
+ uColor:vec4<f32>,
318
+ uResolution:vec2<f32>,
319
+ uRoundPixels:f32,
320
+ };
321
+
322
+ @group(0) @binding(0) var<uniform> uniforms: ParticleUniforms;
323
+
324
+ @group(1) @binding(0) var uTexture: texture_2d<f32>;
325
+ @group(1) @binding(1) var uSampler : sampler;
326
+
327
+ struct VSOutput {
328
+ @builtin(position) position: vec4<f32>,
329
+ @location(0) uv : vec2<f32>,
330
+ @location(1) color : vec4<f32>,
331
+ };
332
+ @vertex
333
+ fn mainVertex(
334
+ @location(0) aVertex: vec2<f32>,
335
+ @location(1) aPosition: vec2<f32>,
336
+ @location(2) aUV: vec2<f32>,
337
+ @location(3) aColor: vec4<f32>,
338
+ @location(4) aRotation: f32,
339
+ ) -> VSOutput {
340
+
341
+ let v = vec2(
342
+ aVertex.x * cos(aRotation) - aVertex.y * sin(aRotation),
343
+ aVertex.x * sin(aRotation) + aVertex.y * cos(aRotation)
344
+ ) + aPosition;
345
+
346
+ let position = vec4((uniforms.uProjectionMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);
347
+
348
+ let vColor = vec4(aColor.rgb * aColor.a, aColor.a) * uniforms.uColor;
349
+
350
+ return VSOutput(
351
+ position,
352
+ aUV,
353
+ vColor,
354
+ );
355
+ }
356
+
357
+ @fragment
358
+ fn mainFragment(
359
+ @location(0) uv: vec2<f32>,
360
+ @location(1) color: vec4<f32>,
361
+ @builtin(position) position: vec4<f32>,
362
+ ) -> @location(0) vec4<f32> {
363
+
364
+ var sample = textureSample(uTexture, uSampler, uv) * color;
365
+
366
+ return sample;
367
+ }`});var wc,Rb=b(()=>{je();re();Za();ec();pn();ve();zi();Ib();Bb();Fb();wc=class extends Bt{constructor(){let e=$i.from({vertex:Mb,fragment:Ab}),t=pr.from({fragment:{source:ed,entryPoint:"mainFragment"},vertex:{source:ed,entryPoint:"mainVertex"}});super({glProgram:e,gpuProgram:t,resources:{uTexture:O.WHITE.source,uSampler:new rt({}),uniforms:{uTranslationMatrix:{value:new F,type:"mat3x3<f32>"},uColor:{value:new X(16777215),type:"vec4<f32>"},uRound:{value:1,type:"f32"},uResolution:{value:[0,0],type:"vec2<f32>"}}}})}}});var rs,td=b(()=>{re();xr();hn();pc();wn();Eb();Rb();rs=class{constructor(e,t){this.state=ri.for2d(),this.localUniforms=new Le({uTranslationMatrix:{value:new F,type:"mat3x3<f32>"},uColor:{value:new Float32Array(4),type:"vec4<f32>"},uRound:{value:1,type:"f32"},uResolution:{value:[0,0],type:"vec2<f32>"}}),this.renderer=e,this.adaptor=t,this.defaultShader=new wc,this.state=ri.for2d()}validateRenderable(e){return!1}addRenderable(e,t){this.renderer.renderPipes.batch.break(t),t.add(e)}getBuffers(e){return e._gpuData[this.renderer.uid]||this._initBuffer(e)}_initBuffer(e){return e._gpuData[this.renderer.uid]=new bc({size:e.particleChildren.length,properties:e._properties}),e._gpuData[this.renderer.uid]}updateRenderable(e){}execute(e){let t=e.particleChildren;if(t.length===0)return;let r=this.renderer,s=this.getBuffers(e);e.texture||(e.texture=t[0].texture);let n=this.state;s.update(t,e._childrenDirty),e._childrenDirty=!1,n.blendMode=Qt(e.blendMode,e.texture._source);let o=this.localUniforms.uniforms,a=o.uTranslationMatrix;e.worldTransform.copyTo(a),a.prepend(r.globalUniforms.globalUniformData.projectionMatrix),o.uResolution=r.globalUniforms.globalUniformData.resolution,o.uRound=r._roundPixels|e._roundPixels,yr(e.groupColorAlpha,o.uColor,0),this.adaptor.execute(this,e)}destroy(){this.defaultShader&&(this.defaultShader.destroy(),this.defaultShader=null)}}});var Tn,Db=b(()=>{G();Tb();td();Tn=class extends rs{constructor(e){super(e,new yc)}};Tn.extension={type:[A.WebGLPipes],name:"particle"}});var _c,Ob=b(()=>{"use strict";_c=class{execute(e,t){let r=e.renderer,s=t.shader||e.defaultShader;s.groups[0]=r.renderPipes.uniformBatch.getUniformBindGroup(e.localUniforms,!0),s.groups[1]=r.texture.getTextureBindGroup(t.texture);let n=e.state,o=e.getBuffers(t);r.encoder.draw({geometry:o.geometry,shader:t.shader||e.defaultShader,state:n,size:t.particleChildren.length*6})}}});var vn,zb=b(()=>{G();Ob();td();vn=class extends rs{constructor(e){super(e,new _c)}};vn.extension={type:[A.WebGPUPipes],name:"particle"}});var rd=b(()=>{G();Db();zb();L.add(Tn);L.add(vn)});function kn(i,e){let{texture:t,bounds:r}=i;Ga(r,e._anchor,t);let s=e._style._getFinalPadding();r.minX-=s,r.minY-=s,r.maxX-=s,r.maxY-=s}var id=b(()=>{rh()});var is,sd=b(()=>{"use strict";is=class{constructor(){this.batcherName="default",this.topology="triangle-list",this.attributeSize=4,this.indexSize=6,this.packAsQuad=!0,this.roundPixels=0,this._attributeStart=0,this._batcher=null,this._batch=null}get blendMode(){return this.renderable.groupBlendMode}get color(){return this.renderable.groupColorAlpha}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.bounds=null}destroy(){}}});var Sc,Ub=b(()=>{sd();Sc=class extends is{constructor(e){super(),this._renderer=e,e.runners.resolutionChange.add(this)}resolutionChange(){let e=this.renderable;e._autoResolution&&e.onViewUpdate()}destroy(){this._renderer.canvasText.returnTexture(this.texture),this._renderer=null}}});var Pn,Gb=b(()=>{G();id();Ub();Pn=class{constructor(e){this._renderer=e}validateRenderable(e){return e._didTextUpdate}addRenderable(e,t){let r=this._getGpuText(e);e._didTextUpdate&&(this._updateGpuText(e),e._didTextUpdate=!1),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){let t=this._getGpuText(e);t._batcher.updateElement(t)}_updateGpuText(e){let t=this._getGpuText(e);t.texture&&this._renderer.canvasText.returnTexture(t.texture),e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,t.texture=t.texture=this._renderer.canvasText.getTexture(e),kn(t,e)}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new Sc(this._renderer);return t.renderable=e,t.transform=e.groupTransform,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}};Pn.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"text"}});var Nb,Jt,Tc=b(()=>{re();Ue();Nb={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}},Jt=class{constructor(e,t){this.uid=K("fillPattern"),this.transform=new F,this._styleKey=null,this.texture=e,this.transform.scale(1/e.frame.width,1/e.frame.height),t&&(e.source.style.addressModeU=Nb[t].addressModeU,e.source.style.addressModeV=Nb[t].addressModeV)}setTransform(e){let t=this.texture;this.transform.copyFrom(e),this.transform.invert(),this.transform.scale(1/t.frame.width,1/t.frame.height),this._styleKey=null}get styleKey(){return this._styleKey?this._styleKey:(this._styleKey=`fill-pattern-${this.uid}-${this.texture.uid}-${this.transform.toArray().join("-")}`,this._styleKey)}}});var Vb=tf((W6,Lb)=>{Lb.exports=YT;var nd={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},XT=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function YT(i){var e=[];return i.replace(XT,function(t,r,s){var n=r.toLowerCase();for(s=ZT(s),n=="m"&&s.length>2&&(e.push([r].concat(s.splice(0,2))),n="l",r=r=="m"?"l":"L");;){if(s.length==nd[n])return s.unshift(r),e.push(s);if(s.length<nd[n])throw new Error("malformed path data");e.push([r].concat(s.splice(0,nd[n])))}}),e}var KT=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function ZT(i){var e=i.match(KT);return e?e.map(Number):[]}});function Hb(i,e){let t=(0,Wb.default)(i),r=[],s=null,n=0,o=0;for(let a=0;a<t.length;a++){let c=t[a],l=c[0],u=c;switch(l){case"M":n=u[1],o=u[2],e.moveTo(n,o);break;case"m":n+=u[1],o+=u[2],e.moveTo(n,o);break;case"H":n=u[1],e.lineTo(n,o);break;case"h":n+=u[1],e.lineTo(n,o);break;case"V":o=u[1],e.lineTo(n,o);break;case"v":o+=u[1],e.lineTo(n,o);break;case"L":n=u[1],o=u[2],e.lineTo(n,o);break;case"l":n+=u[1],o+=u[2],e.lineTo(n,o);break;case"C":n=u[5],o=u[6],e.bezierCurveTo(u[1],u[2],u[3],u[4],n,o);break;case"c":e.bezierCurveTo(n+u[1],o+u[2],n+u[3],o+u[4],n+u[5],o+u[6]),n+=u[5],o+=u[6];break;case"S":n=u[3],o=u[4],e.bezierCurveToShort(u[1],u[2],n,o);break;case"s":e.bezierCurveToShort(n+u[1],o+u[2],n+u[3],o+u[4]),n+=u[3],o+=u[4];break;case"Q":n=u[3],o=u[4],e.quadraticCurveTo(u[1],u[2],n,o);break;case"q":e.quadraticCurveTo(n+u[1],o+u[2],n+u[3],o+u[4]),n+=u[3],o+=u[4];break;case"T":n=u[1],o=u[2],e.quadraticCurveToShort(n,o);break;case"t":n+=u[1],o+=u[2],e.quadraticCurveToShort(n,o);break;case"A":n=u[6],o=u[7],e.arcToSvg(u[1],u[2],u[3],u[4],u[5],n,o);break;case"a":n+=u[6],o+=u[7],e.arcToSvg(u[1],u[2],u[3],u[4],u[5],n,o);break;case"Z":case"z":e.closePath(),r.length>0&&(s=r.pop(),s?(n=s.startX,o=s.startY):(n=0,o=0)),s=null;break;default:q(`Unknown SVG path command: ${l}`)}l!=="Z"&&l!=="z"&&s===null&&(s={startX:n,startY:o},r.push(s))}return e}var Wb,jb=b(()=>{Wb=rf(Vb(),1);Ge()});var vc,$b=b(()=>{$e();vc=class i{constructor(e=0,t=0,r=0){this.type="circle",this.x=e,this.y=t,this.radius=r}clone(){return new i(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;let r=this.radius*this.radius,s=this.x-e,n=this.y-t;return s*=s,n*=n,s+n<=r}strokeContains(e,t,r,s=.5){if(this.radius===0)return!1;let n=this.x-e,o=this.y-t,a=this.radius,c=(1-s)*r,l=Math.sqrt(n*n+o*o);return l<=a+c&&l>a-(r-c)}getBounds(e){return e||(e=new Z),e.x=this.x-this.radius,e.y=this.y-this.radius,e.width=this.radius*2,e.height=this.radius*2,e}copyFrom(e){return this.x=e.x,this.y=e.y,this.radius=e.radius,this}copyTo(e){return e.copyFrom(this),e}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}});var kc,qb=b(()=>{$e();kc=class i{constructor(e=0,t=0,r=0,s=0){this.type="ellipse",this.x=e,this.y=t,this.halfWidth=r,this.halfHeight=s}clone(){return new i(this.x,this.y,this.halfWidth,this.halfHeight)}contains(e,t){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let r=(e-this.x)/this.halfWidth,s=(t-this.y)/this.halfHeight;return r*=r,s*=s,r+s<=1}strokeContains(e,t,r,s=.5){let{halfWidth:n,halfHeight:o}=this;if(n<=0||o<=0)return!1;let a=r*(1-s),c=r-a,l=n-c,u=o-c,h=n+a,d=o+a,f=e-this.x,m=t-this.y,p=f*f/(l*l)+m*m/(u*u),g=f*f/(h*h)+m*m/(d*d);return p>1&&g<=1}getBounds(e){return e||(e=new Z),e.x=this.x-this.halfWidth,e.y=this.y-this.halfHeight,e.width=this.halfWidth*2,e.height=this.halfHeight*2,e}copyFrom(e){return this.x=e.x,this.y=e.y,this.halfWidth=e.halfWidth,this.halfHeight=e.halfHeight,this}copyTo(e){return e.copyFrom(this),e}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}});function Xb(i,e,t,r,s,n){let o=i-t,a=e-r,c=s-t,l=n-r,u=o*c+a*l,h=c*c+l*l,d=-1;h!==0&&(d=u/h);let f,m;d<0?(f=t,m=r):d>1?(f=s,m=n):(f=t+d*c,m=r+d*l);let p=i-f,g=e-m;return p*p+g*g}var Yb=b(()=>{"use strict"});var QT,JT,ss,Kb=b(()=>{Yb();$e();ss=class i{constructor(...e){this.type="polygon";let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){let r=[];for(let s=0,n=t.length;s<n;s++)r.push(t[s].x,t[s].y);t=r}this.points=t,this.closePath=!0}isClockwise(){let e=0,t=this.points,r=t.length;for(let s=0;s<r;s+=2){let n=t[s],o=t[s+1],a=t[(s+2)%r],c=t[(s+3)%r];e+=(a-n)*(c+o)}return e<0}containsPolygon(e){let t=this.getBounds(QT),r=e.getBounds(JT);if(!t.containsRect(r))return!1;let s=e.points;for(let n=0;n<s.length;n+=2){let o=s[n],a=s[n+1];if(!this.contains(o,a))return!1}return!0}clone(){let e=this.points.slice(),t=new i(e);return t.closePath=this.closePath,t}contains(e,t){let r=!1,s=this.points.length/2;for(let n=0,o=s-1;n<s;o=n++){let a=this.points[n*2],c=this.points[n*2+1],l=this.points[o*2],u=this.points[o*2+1];c>t!=u>t&&e<(l-a)*((t-c)/(u-c))+a&&(r=!r)}return r}strokeContains(e,t,r,s=.5){let n=r*r,o=n*(1-s),a=n-o,{points:c}=this,l=c.length-(this.closePath?0:2);for(let u=0;u<l;u+=2){let h=c[u],d=c[u+1],f=c[(u+2)%c.length],m=c[(u+3)%c.length],p=Xb(e,t,h,d,f,m),g=Math.sign((f-h)*(t-d)-(m-d)*(e-h));if(p<=(g<0?a:o))return!0}return!1}getBounds(e){e||(e=new Z);let t=this.points,r=1/0,s=-1/0,n=1/0,o=-1/0;for(let a=0,c=t.length;a<c;a+=2){let l=t[a],u=t[a+1];r=l<r?l:r,s=l>s?l:s,n=u<n?u:n,o=u>o?u:o}return e.x=r,e.width=s-r,e.y=n,e.height=o-n,e}copyFrom(e){return this.points=e.points.slice(),this.closePath=e.closePath,this}copyTo(e){return e.copyFrom(this),e}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((e,t)=>`${e}, ${t}`,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return this.points[this.points.length-2]}get y(){return this.points[this.points.length-1]}}});var Pc,Cc,Zb=b(()=>{$e();Pc=(i,e,t,r,s,n,o)=>{let a=i-t,c=e-r,l=Math.sqrt(a*a+c*c);return l>=s-n&&l<=s+o},Cc=class i{constructor(e=0,t=0,r=0,s=0,n=20){this.type="roundedRectangle",this.x=e,this.y=t,this.width=r,this.height=s,this.radius=n}getBounds(e){return e||(e=new Z),e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}clone(){return new i(this.x,this.y,this.width,this.height,this.radius)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.copyFrom(this),e}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){let r=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+r&&t<=this.y+this.height-r||e>=this.x+r&&e<=this.x+this.width-r)return!0;let s=e-(this.x+r),n=t-(this.y+r),o=r*r;if(s*s+n*n<=o||(s=e-(this.x+this.width-r),s*s+n*n<=o)||(n=t-(this.y+this.height-r),s*s+n*n<=o)||(s=e-(this.x+r),s*s+n*n<=o))return!0}return!1}strokeContains(e,t,r,s=.5){let{x:n,y:o,width:a,height:c,radius:l}=this,u=r*(1-s),h=r-u,d=n+l,f=o+l,m=a-l*2,p=c-l*2,g=n+a,y=o+c;return(e>=n-u&&e<=n+h||e>=g-h&&e<=g+u)&&t>=f&&t<=f+p||(t>=o-u&&t<=o+h||t>=y-h&&t<=y+u)&&e>=d&&e<=d+m?!0:e<d&&t<f&&Pc(e,t,d,f,l,h,u)||e>g-l&&t<f&&Pc(e,t,g-l,f,l,h,u)||e>g-l&&t>y-l&&Pc(e,t,g-l,y-l,l,h,u)||e<d&&t>y-l&&Pc(e,t,d,y-l,l,h,u)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}});function Ac(i,e,t,r,s,n,o,a,c,l){let h=Math.min(.99,Math.max(0,l??ts.defaultOptions.bezierSmoothness)),d=(tv-h)/1;return d*=d,rv(e,t,r,s,n,o,a,c,i,d),i}function rv(i,e,t,r,s,n,o,a,c,l){ad(i,e,t,r,s,n,o,a,c,l,0),c.push(o,a)}function ad(i,e,t,r,s,n,o,a,c,l,u){if(u>ev)return;let h=Math.PI,d=(i+t)/2,f=(e+r)/2,m=(t+s)/2,p=(r+n)/2,g=(s+o)/2,y=(n+a)/2,x=(d+m)/2,w=(f+p)/2,_=(m+g)/2,S=(p+y)/2,T=(x+_)/2,k=(w+S)/2;if(u>0){let M=o-i,P=a-e,C=Math.abs((t-o)*P-(r-a)*M),E=Math.abs((s-o)*P-(n-a)*M),R,j;if(C>Ec&&E>Ec){if((C+E)*(C+E)<=l*(M*M+P*P)){if(ns<od){c.push(T,k);return}let he=Math.atan2(n-r,s-t);if(R=Math.abs(he-Math.atan2(r-e,t-i)),j=Math.abs(Math.atan2(a-n,o-s)-he),R>=h&&(R=2*h-R),j>=h&&(j=2*h-j),R+j<ns){c.push(T,k);return}if(ii!==0){if(R>ii){c.push(t,r);return}if(j>ii){c.push(s,n);return}}}}else if(C>Ec){if(C*C<=l*(M*M+P*P)){if(ns<od){c.push(T,k);return}if(R=Math.abs(Math.atan2(n-r,s-t)-Math.atan2(r-e,t-i)),R>=h&&(R=2*h-R),R<ns){c.push(t,r),c.push(s,n);return}if(ii!==0&&R>ii){c.push(t,r);return}}}else if(E>Ec){if(E*E<=l*(M*M+P*P)){if(ns<od){c.push(T,k);return}if(R=Math.abs(Math.atan2(a-n,o-s)-Math.atan2(n-r,s-t)),R>=h&&(R=2*h-R),R<ns){c.push(t,r),c.push(s,n);return}if(ii!==0&&R>ii){c.push(s,n);return}}}else if(M=T-(i+o)/2,P=k-(e+a)/2,M*M+P*P<=l){c.push(T,k);return}}ad(i,e,d,f,x,w,T,k,c,l,u+1),ad(T,k,_,S,g,y,o,a,c,l,u+1)}var ev,Ec,tv,od,ns,ii,cd=b(()=>{mc();ev=8,Ec=11920929e-14,tv=1,od=.01,ns=0,ii=0});function Jb(i,e,t,r,s,n,o,a){let l=Math.min(.99,Math.max(0,a??ts.defaultOptions.bezierSmoothness)),u=(nv-l)/1;return u*=u,av(e,t,r,s,n,o,i,u),i}function av(i,e,t,r,s,n,o,a){ld(o,i,e,t,r,s,n,a,0),o.push(s,n)}function ld(i,e,t,r,s,n,o,a,c){if(c>iv)return;let l=Math.PI,u=(e+r)/2,h=(t+s)/2,d=(r+n)/2,f=(s+o)/2,m=(u+d)/2,p=(h+f)/2,g=n-e,y=o-t,x=Math.abs((r-n)*y-(s-o)*g);if(x>sv){if(x*x<=a*(g*g+y*y)){if(Qb<ov){i.push(m,p);return}let w=Math.abs(Math.atan2(o-s,n-r)-Math.atan2(s-t,r-e));if(w>=l&&(w=2*l-w),w<Qb){i.push(m,p);return}}}else if(g=m-(e+n)/2,y=p-(t+o)/2,g*g+y*y<=a){i.push(m,p);return}ld(i,e,t,u,h,m,p,a,c+1),ld(i,m,p,d,f,n,o,a,c+1)}var iv,sv,nv,ov,Qb,e0=b(()=>{mc();iv=8,sv=11920929e-14,nv=1,ov=.01,Qb=0});function Ic(i,e,t,r,s,n,o,a){let c=Math.abs(s-n);(!o&&s>n||o&&n>s)&&(c=2*Math.PI-c),a||(a=Math.max(6,Math.floor(6*Math.pow(r,1/3)*(c/Math.PI)))),a=Math.max(a,3);let l=c/a,u=s;l*=o?-1:1;for(let h=0;h<a+1;h++){let d=Math.cos(u),f=Math.sin(u),m=e+d*r,p=t+f*r;i.push(m,p),u+=l}}var ud=b(()=>{"use strict"});function t0(i,e,t,r,s,n){let o=i[i.length-2],c=i[i.length-1]-t,l=o-e,u=s-t,h=r-e,d=Math.abs(c*h-l*u);if(d<1e-8||n===0){(i[i.length-2]!==e||i[i.length-1]!==t)&&i.push(e,t);return}let f=c*c+l*l,m=u*u+h*h,p=c*u+l*h,g=n*Math.sqrt(f)/d,y=n*Math.sqrt(m)/d,x=g*p/f,w=y*p/m,_=g*h+y*l,S=g*u+y*c,T=l*(y+x),k=c*(y+x),M=h*(g+w),P=u*(g+w),C=Math.atan2(k-S,T-_),E=Math.atan2(P-S,M-_);Ic(i,_+e,S+t,n,C,E,l*u>h*c)}var r0=b(()=>{ud()});function cv(i,e){let t=e===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(e/4),r=e===1.5707963267948966?.551915024494:t,s=Math.cos(i),n=Math.sin(i),o=Math.cos(i+e),a=Math.sin(i+e);return[{x:s-n*r,y:n+s*r},{x:o+a*r,y:a-o*r},{x:o,y:a}]}function s0(i,e,t,r,s,n,o,a=0,c=0,l=0){if(n===0||o===0)return;let u=Math.sin(a*Cn/360),h=Math.cos(a*Cn/360),d=h*(e-r)/2+u*(t-s)/2,f=-u*(e-r)/2+h*(t-s)/2;if(d===0&&f===0)return;n=Math.abs(n),o=Math.abs(o);let m=Math.pow(d,2)/Math.pow(n,2)+Math.pow(f,2)/Math.pow(o,2);m>1&&(n*=Math.sqrt(m),o*=Math.sqrt(m)),lv(e,t,r,s,n,o,c,l,u,h,d,f,hd);let{ang1:p,ang2:g}=hd,{centerX:y,centerY:x}=hd,w=Math.abs(g)/(Cn/4);Math.abs(1-w)<1e-7&&(w=1);let _=Math.max(Math.ceil(w),1);g/=_;let S=i[i.length-2],T=i[i.length-1],k={x:0,y:0};for(let M=0;M<_;M++){let P=cv(p,g),{x:C,y:E}=dd(P[0],n,o,h,u,y,x,k),{x:R,y:j}=dd(P[1],n,o,h,u,y,x,k),{x:he,y:ds}=dd(P[2],n,o,h,u,y,x,k);Ac(i,S,T,C,E,R,j,he,ds),S=he,T=ds,p+=g}}var Cn,hd,dd,i0,lv,n0=b(()=>{cd();Cn=Math.PI*2,hd={centerX:0,centerY:0,ang1:0,ang2:0},dd=({x:i,y:e},t,r,s,n,o,a,c)=>{i*=t,e*=r;let l=s*i-n*e,u=n*i+s*e;return c.x=l+o,c.y=u+a,c};i0=(i,e,t,r)=>{let s=i*r-e*t<0?-1:1,n=i*t+e*r;return n>1&&(n=1),n<-1&&(n=-1),s*Math.acos(n)},lv=(i,e,t,r,s,n,o,a,c,l,u,h,d)=>{let f=Math.pow(s,2),m=Math.pow(n,2),p=Math.pow(u,2),g=Math.pow(h,2),y=f*m-f*g-m*p;y<0&&(y=0),y/=f*g+m*p,y=Math.sqrt(y)*(o===a?-1:1);let x=y*s/n*h,w=y*-n/s*u,_=l*x-c*w+(i+t)/2,S=c*x+l*w+(e+r)/2,T=(u-x)/s,k=(h-w)/n,M=(-u-x)/s,P=(-h-w)/n,C=i0(1,0,T,k),E=i0(T,k,M,P);a===0&&E>0&&(E-=Cn),a===1&&E<0&&(E+=Cn),d.centerX=_,d.centerY=S,d.ang1=C,d.ang2=E}});function o0(i,e,t){let r=(o,a)=>{let c=a.x-o.x,l=a.y-o.y,u=Math.sqrt(c*c+l*l),h=c/u,d=l/u;return{len:u,nx:h,ny:d}},s=(o,a)=>{o===0?i.moveTo(a.x,a.y):i.lineTo(a.x,a.y)},n=e[e.length-1];for(let o=0;o<e.length;o++){let a=e[o%e.length],c=a.radius??t;if(c<=0){s(o,a),n=a;continue}let l=e[(o+1)%e.length],u=r(a,n),h=r(a,l);if(u.len<1e-4||h.len<1e-4){s(o,a),n=a;continue}let d=Math.asin(u.nx*h.ny-u.ny*h.nx),f=1,m=!1;u.nx*h.nx-u.ny*-h.ny<0?d<0?d=Math.PI+d:(d=Math.PI-d,f=-1,m=!0):d>0&&(f=-1,m=!0);let p=d/2,g,y=Math.abs(Math.cos(p)*c/Math.sin(p));y>Math.min(u.len/2,h.len/2)?(y=Math.min(u.len/2,h.len/2),g=Math.abs(y*Math.sin(p)/Math.cos(p))):g=c;let x=a.x+h.nx*y+-h.ny*g*f,w=a.y+h.ny*y+h.nx*g*f,_=Math.atan2(u.ny,u.nx)+Math.PI/2*f,S=Math.atan2(h.ny,h.nx)-Math.PI/2*f;o===0&&i.moveTo(x+Math.cos(_)*g,w+Math.sin(_)*g),i.arc(x,w,g,_,S,m),n=a}}function a0(i,e,t,r){let s=(a,c)=>Math.sqrt((a.x-c.x)**2+(a.y-c.y)**2),n=(a,c,l)=>({x:a.x+(c.x-a.x)*l,y:a.y+(c.y-a.y)*l}),o=e.length;for(let a=0;a<o;a++){let c=e[(a+1)%o],l=c.radius??t;if(l<=0){a===0?i.moveTo(c.x,c.y):i.lineTo(c.x,c.y);continue}let u=e[a],h=e[(a+2)%o],d=s(u,c),f;if(d<1e-4)f=c;else{let g=Math.min(d/2,l);f=n(c,u,g/d)}let m=s(h,c),p;if(m<1e-4)p=c;else{let g=Math.min(m/2,l);p=n(c,h,g/m)}a===0?i.moveTo(f.x,f.y):i.lineTo(f.x,f.y),i.quadraticCurveTo(c.x,c.y,p.x,p.y,r)}}var c0=b(()=>{"use strict"});var uv,Mc,l0=b(()=>{$b();qb();Kb();$e();Zb();dt();cd();e0();ud();r0();n0();c0();uv=new Z,Mc=class{constructor(e){this.shapePrimitives=[],this._currentPoly=null,this._bounds=new le,this._graphicsPath2D=e,this.signed=e.checkForHoles}moveTo(e,t){return this.startPoly(e,t),this}lineTo(e,t){this._ensurePoly();let r=this._currentPoly.points,s=r[r.length-2],n=r[r.length-1];return(s!==e||n!==t)&&r.push(e,t),this}arc(e,t,r,s,n,o){this._ensurePoly(!1);let a=this._currentPoly.points;return Ic(a,e,t,r,s,n,o),this}arcTo(e,t,r,s,n){this._ensurePoly();let o=this._currentPoly.points;return t0(o,e,t,r,s,n),this}arcToSvg(e,t,r,s,n,o,a){let c=this._currentPoly.points;return s0(c,this._currentPoly.lastX,this._currentPoly.lastY,o,a,e,t,r,s,n),this}bezierCurveTo(e,t,r,s,n,o,a){this._ensurePoly();let c=this._currentPoly;return Ac(this._currentPoly.points,c.lastX,c.lastY,e,t,r,s,n,o,a),this}quadraticCurveTo(e,t,r,s,n){this._ensurePoly();let o=this._currentPoly;return Jb(this._currentPoly.points,o.lastX,o.lastY,e,t,r,s,n),this}closePath(){return this.endPoly(!0),this}addPath(e,t){this.endPoly(),t&&!t.isIdentity()&&(e=e.clone(!0),e.transform(t));let r=this.shapePrimitives,s=r.length;for(let n=0;n<e.instructions.length;n++){let o=e.instructions[n];this[o.action](...o.data)}if(e.checkForHoles&&r.length-s>1){let n=null;for(let o=s;o<r.length;o++){let a=r[o];if(a.shape.type==="polygon"){let c=a.shape,l=n?.shape;l&&l.containsPolygon(c)?(n.holes||(n.holes=[]),n.holes.push(a),r.copyWithin(o,o+1),r.length--,o--):n=a}}}return this}finish(e=!1){this.endPoly(e)}rect(e,t,r,s,n){return this.drawShape(new Z(e,t,r,s),n),this}circle(e,t,r,s){return this.drawShape(new vc(e,t,r),s),this}poly(e,t,r){let s=new ss(e);return s.closePath=t,this.drawShape(s,r),this}regularPoly(e,t,r,s,n=0,o){s=Math.max(s|0,3);let a=-1*Math.PI/2+n,c=Math.PI*2/s,l=[];for(let u=0;u<s;u++){let h=a-u*c;l.push(e+r*Math.cos(h),t+r*Math.sin(h))}return this.poly(l,!0,o),this}roundPoly(e,t,r,s,n,o=0,a){if(s=Math.max(s|0,3),n<=0)return this.regularPoly(e,t,r,s,o);let c=r*Math.sin(Math.PI/s)-.001;n=Math.min(n,c);let l=-1*Math.PI/2+o,u=Math.PI*2/s,h=(s-2)*Math.PI/s/2;for(let d=0;d<s;d++){let f=d*u+l,m=e+r*Math.cos(f),p=t+r*Math.sin(f),g=f+Math.PI+h,y=f-Math.PI-h,x=m+n*Math.cos(g),w=p+n*Math.sin(g),_=m+n*Math.cos(y),S=p+n*Math.sin(y);d===0?this.moveTo(x,w):this.lineTo(x,w),this.quadraticCurveTo(m,p,_,S,a)}return this.closePath()}roundShape(e,t,r=!1,s){return e.length<3?this:(r?a0(this,e,t,s):o0(this,e,t),this.closePath())}filletRect(e,t,r,s,n){if(n===0)return this.rect(e,t,r,s);let o=Math.min(r,s)/2,a=Math.min(o,Math.max(-o,n)),c=e+r,l=t+s,u=a<0?-a:0,h=Math.abs(a);return this.moveTo(e,t+h).arcTo(e+u,t+u,e+h,t,h).lineTo(c-h,t).arcTo(c-u,t+u,c,t+h,h).lineTo(c,l-h).arcTo(c-u,l-u,e+r-h,l,h).lineTo(e+h,l).arcTo(e+u,l-u,e,l-h,h).closePath()}chamferRect(e,t,r,s,n,o){if(n<=0)return this.rect(e,t,r,s);let a=Math.min(n,Math.min(r,s)/2),c=e+r,l=t+s,u=[e+a,t,c-a,t,c,t+a,c,l-a,c-a,l,e+a,l,e,l-a,e,t+a];for(let h=u.length-1;h>=2;h-=2)u[h]===u[h-2]&&u[h-1]===u[h-3]&&u.splice(h-1,2);return this.poly(u,!0,o)}ellipse(e,t,r,s,n){return this.drawShape(new kc(e,t,r,s),n),this}roundRect(e,t,r,s,n,o){return this.drawShape(new Cc(e,t,r,s,n),o),this}drawShape(e,t){return this.endPoly(),this.shapePrimitives.push({shape:e,transform:t}),this}startPoly(e,t){let r=this._currentPoly;return r&&this.endPoly(),r=new ss,r.points.push(e,t),this._currentPoly=r,this}endPoly(e=!1){let t=this._currentPoly;return t&&t.points.length>2&&(t.closePath=e,this.shapePrimitives.push({shape:t})),this._currentPoly=null,this}_ensurePoly(e=!0){if(!this._currentPoly&&(this._currentPoly=new ss,e)){let t=this.shapePrimitives[this.shapePrimitives.length-1];if(t){let r=t.shape.x,s=t.shape.y;if(t.transform&&!t.transform.isIdentity()){let n=t.transform,o=r;r=n.a*r+n.c*s+n.tx,s=n.b*o+n.d*s+n.ty}this._currentPoly.points.push(r,s)}else this._currentPoly.points.push(0,0)}}buildPath(){let e=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let t=0;t<e.instructions.length;t++){let r=e.instructions[t];this[r.action](...r.data)}this.finish()}get bounds(){let e=this._bounds;e.clear();let t=this.shapePrimitives;for(let r=0;r<t.length;r++){let s=t[r],n=s.shape.getBounds(uv);s.transform?e.addRect(n,s.transform):e.addRect(n)}return e}}});function En(i,e){return i?i.prepend(e):e.clone()}var wr,fd=b(()=>{vt();Ue();Ge();jb();l0();wr=class i{constructor(e,t=!1){this.instructions=[],this.uid=K("graphicsPath"),this._dirty=!0,this.checkForHoles=t,typeof e=="string"?Hb(e,this):this.instructions=e?.slice()??[]}get shapePath(){return this._shapePath||(this._shapePath=new Mc(this)),this._dirty&&(this._dirty=!1,this._shapePath.buildPath()),this._shapePath}addPath(e,t){return e=e.clone(),this.instructions.push({action:"addPath",data:[e,t]}),this._dirty=!0,this}arc(...e){return this.instructions.push({action:"arc",data:e}),this._dirty=!0,this}arcTo(...e){return this.instructions.push({action:"arcTo",data:e}),this._dirty=!0,this}arcToSvg(...e){return this.instructions.push({action:"arcToSvg",data:e}),this._dirty=!0,this}bezierCurveTo(...e){return this.instructions.push({action:"bezierCurveTo",data:e}),this._dirty=!0,this}bezierCurveToShort(e,t,r,s,n){let o=this.instructions[this.instructions.length-1],a=this.getLastPoint(Y.shared),c=0,l=0;if(!o||o.action!=="bezierCurveTo")c=a.x,l=a.y;else{c=o.data[2],l=o.data[3];let u=a.x,h=a.y;c=u+(u-c),l=h+(h-l)}return this.instructions.push({action:"bezierCurveTo",data:[c,l,e,t,r,s,n]}),this._dirty=!0,this}closePath(){return this.instructions.push({action:"closePath",data:[]}),this._dirty=!0,this}ellipse(...e){return this.instructions.push({action:"ellipse",data:e}),this._dirty=!0,this}lineTo(...e){return this.instructions.push({action:"lineTo",data:e}),this._dirty=!0,this}moveTo(...e){return this.instructions.push({action:"moveTo",data:e}),this}quadraticCurveTo(...e){return this.instructions.push({action:"quadraticCurveTo",data:e}),this._dirty=!0,this}quadraticCurveToShort(e,t,r){let s=this.instructions[this.instructions.length-1],n=this.getLastPoint(Y.shared),o=0,a=0;if(!s||s.action!=="quadraticCurveTo")o=n.x,a=n.y;else{o=s.data[0],a=s.data[1];let c=n.x,l=n.y;o=c+(c-o),a=l+(l-a)}return this.instructions.push({action:"quadraticCurveTo",data:[o,a,e,t,r]}),this._dirty=!0,this}rect(e,t,r,s,n){return this.instructions.push({action:"rect",data:[e,t,r,s,n]}),this._dirty=!0,this}circle(e,t,r,s){return this.instructions.push({action:"circle",data:[e,t,r,s]}),this._dirty=!0,this}roundRect(...e){return this.instructions.push({action:"roundRect",data:e}),this._dirty=!0,this}poly(...e){return this.instructions.push({action:"poly",data:e}),this._dirty=!0,this}regularPoly(...e){return this.instructions.push({action:"regularPoly",data:e}),this._dirty=!0,this}roundPoly(...e){return this.instructions.push({action:"roundPoly",data:e}),this._dirty=!0,this}roundShape(...e){return this.instructions.push({action:"roundShape",data:e}),this._dirty=!0,this}filletRect(...e){return this.instructions.push({action:"filletRect",data:e}),this._dirty=!0,this}chamferRect(...e){return this.instructions.push({action:"chamferRect",data:e}),this._dirty=!0,this}star(e,t,r,s,n,o,a){n||(n=s/2);let c=-1*Math.PI/2+o,l=r*2,u=Math.PI*2/l,h=[];for(let d=0;d<l;d++){let f=d%2?n:s,m=d*u+c;h.push(e+f*Math.cos(m),t+f*Math.sin(m))}return this.poly(h,!0,a),this}clone(e=!1){let t=new i;if(t.checkForHoles=this.checkForHoles,!e)t.instructions=this.instructions.slice();else for(let r=0;r<this.instructions.length;r++){let s=this.instructions[r];t.instructions.push({action:s.action,data:s.data.slice()})}return t}clear(){return this.instructions.length=0,this._dirty=!0,this}transform(e){if(e.isIdentity())return this;let t=e.a,r=e.b,s=e.c,n=e.d,o=e.tx,a=e.ty,c=0,l=0,u=0,h=0,d=0,f=0,m=0,p=0;for(let g=0;g<this.instructions.length;g++){let y=this.instructions[g],x=y.data;switch(y.action){case"moveTo":case"lineTo":c=x[0],l=x[1],x[0]=t*c+s*l+o,x[1]=r*c+n*l+a;break;case"bezierCurveTo":u=x[0],h=x[1],d=x[2],f=x[3],c=x[4],l=x[5],x[0]=t*u+s*h+o,x[1]=r*u+n*h+a,x[2]=t*d+s*f+o,x[3]=r*d+n*f+a,x[4]=t*c+s*l+o,x[5]=r*c+n*l+a;break;case"quadraticCurveTo":u=x[0],h=x[1],c=x[2],l=x[3],x[0]=t*u+s*h+o,x[1]=r*u+n*h+a,x[2]=t*c+s*l+o,x[3]=r*c+n*l+a;break;case"arcToSvg":c=x[5],l=x[6],m=x[0],p=x[1],x[0]=t*m+s*p,x[1]=r*m+n*p,x[5]=t*c+s*l+o,x[6]=r*c+n*l+a;break;case"circle":x[4]=En(x[3],e);break;case"rect":x[4]=En(x[4],e);break;case"ellipse":x[8]=En(x[8],e);break;case"roundRect":x[5]=En(x[5],e);break;case"addPath":x[0].transform(e);break;case"poly":x[2]=En(x[2],e);break;default:q("unknown transform action",y.action);break}}return this._dirty=!0,this}get bounds(){return this.shapePath.bounds}getLastPoint(e){let t=this.instructions.length-1,r=this.instructions[t];if(!r)return e.x=0,e.y=0,e;for(;r.action==="closePath";){if(t--,t<0)return e.x=0,e.y=0,e;r=this.instructions[t]}switch(r.action){case"moveTo":case"lineTo":e.x=r.data[0],e.y=r.data[1];break;case"quadraticCurveTo":e.x=r.data[2],e.y=r.data[3];break;case"bezierCurveTo":e.x=r.data[4],e.y=r.data[5];break;case"arc":case"arcToSvg":e.x=r.data[5],e.y=r.data[6];break;case"addPath":r.data[0].getLastPoint(e);break}return e}}});function ne(i,e,t){let r=i.getAttribute(e);return r?Number(r):t}var md=b(()=>{"use strict"});function u0(i,e){let t=i.querySelectorAll("defs");for(let r=0;r<t.length;r++){let s=t[r];for(let n=0;n<s.children.length;n++){let o=s.children[n];switch(o.nodeName.toLowerCase()){case"lineargradient":e.defs[o.id]=hv(o);break;case"radialgradient":e.defs[o.id]=dv(o);break;default:break}}}}function hv(i){let e=ne(i,"x1",0),t=ne(i,"y1",0),r=ne(i,"x2",1),s=ne(i,"y2",0),n=i.getAttribute("gradientUnits")||"objectBoundingBox",o=new qe(e,t,r,s,n==="objectBoundingBox"?"local":"global");for(let a=0;a<i.children.length;a++){let c=i.children[a],l=ne(c,"offset",0),u=X.shared.setValue(c.getAttribute("stop-color")).toNumber();o.addColorStop(l,u)}return o}function dv(i){return q("[SVG Parser] Radial gradients are not yet supported"),new qe(0,0,1,0)}var h0=b(()=>{je();Ge();es();md()});function pd(i){let e=i.match(/url\s*\(\s*['"]?\s*#([^'"\s)]+)\s*['"]?\s*\)/i);return e?e[1]:""}var d0=b(()=>{"use strict"});function gd(i,e){let t=i.getAttribute("style"),r={},s={},n={strokeStyle:r,fillStyle:s,useFill:!1,useStroke:!1};for(let o in f0){let a=i.getAttribute(o);a&&m0(e,n,o,a.trim())}if(t){let o=t.split(";");for(let a=0;a<o.length;a++){let c=o[a].trim(),[l,u]=c.split(":");f0[l]&&m0(e,n,l,u.trim())}}return{strokeStyle:n.useStroke?r:null,fillStyle:n.useFill?s:null,useFill:n.useFill,useStroke:n.useStroke}}function m0(i,e,t,r){switch(t){case"stroke":if(r!=="none"){if(r.startsWith("url(")){let s=pd(r);e.strokeStyle.fill=i.defs[s]}else e.strokeStyle.color=X.shared.setValue(r).toNumber();e.useStroke=!0}break;case"stroke-width":e.strokeStyle.width=Number(r);break;case"fill":if(r!=="none"){if(r.startsWith("url(")){let s=pd(r);e.fillStyle.fill=i.defs[s]}else e.fillStyle.color=X.shared.setValue(r).toNumber();e.useFill=!0}break;case"fill-opacity":e.fillStyle.alpha=Number(r);break;case"stroke-opacity":e.strokeStyle.alpha=Number(r);break;case"opacity":e.fillStyle.alpha=Number(r),e.strokeStyle.alpha=Number(r);break}}var f0,p0=b(()=>{je();d0();f0={fill:{type:"paint",default:0},"fill-opacity":{type:"number",default:1},stroke:{type:"paint",default:0},"stroke-width":{type:"number",default:1},"stroke-opacity":{type:"number",default:1},"stroke-linecap":{type:"string",default:"butt"},"stroke-linejoin":{type:"string",default:"miter"},"stroke-miterlimit":{type:"number",default:10},"stroke-dasharray":{type:"string",default:"none"},"stroke-dashoffset":{type:"number",default:0},opacity:{type:"number",default:1}}});function g0(i,e){if(typeof i=="string"){let o=document.createElement("div");o.innerHTML=i.trim(),i=o.querySelector("svg")}let t={context:e,defs:{},path:new wr};u0(i,t);let r=i.children,{fillStyle:s,strokeStyle:n}=gd(i,t);for(let o=0;o<r.length;o++){let a=r[o];a.nodeName.toLowerCase()!=="defs"&&x0(a,t,s,n)}return e}function x0(i,e,t,r){let s=i.children,{fillStyle:n,strokeStyle:o}=gd(i,e);n&&t?t={...t,...n}:n&&(t=n),o&&r?r={...r,...o}:o&&(r=o);let a=!t&&!r;a&&(t={color:0});let c,l,u,h,d,f,m,p,g,y,x,w,_,S,T,k,M;switch(i.nodeName.toLowerCase()){case"path":S=i.getAttribute("d"),i.getAttribute("fill-rule")==="evenodd"&&q("SVG Evenodd fill rule not supported, your svg may render incorrectly"),T=new wr(S,!0),e.context.path(T),t&&e.context.fill(t),r&&e.context.stroke(r);break;case"circle":m=ne(i,"cx",0),p=ne(i,"cy",0),g=ne(i,"r",0),e.context.ellipse(m,p,g,g),t&&e.context.fill(t),r&&e.context.stroke(r);break;case"rect":c=ne(i,"x",0),l=ne(i,"y",0),k=ne(i,"width",0),M=ne(i,"height",0),y=ne(i,"rx",0),x=ne(i,"ry",0),y||x?e.context.roundRect(c,l,k,M,y||x):e.context.rect(c,l,k,M),t&&e.context.fill(t),r&&e.context.stroke(r);break;case"ellipse":m=ne(i,"cx",0),p=ne(i,"cy",0),y=ne(i,"rx",0),x=ne(i,"ry",0),e.context.beginPath(),e.context.ellipse(m,p,y,x),t&&e.context.fill(t),r&&e.context.stroke(r);break;case"line":u=ne(i,"x1",0),h=ne(i,"y1",0),d=ne(i,"x2",0),f=ne(i,"y2",0),e.context.beginPath(),e.context.moveTo(u,h),e.context.lineTo(d,f),r&&e.context.stroke(r);break;case"polygon":_=i.getAttribute("points"),w=_.match(/\d+/g).map(P=>parseInt(P,10)),e.context.poly(w,!0),t&&e.context.fill(t),r&&e.context.stroke(r);break;case"polyline":_=i.getAttribute("points"),w=_.match(/\d+/g).map(P=>parseInt(P,10)),e.context.poly(w,!1),r&&e.context.stroke(r);break;case"g":case"svg":break;default:{q(`[SVG parser] <${i.nodeName}> elements unsupported`);break}}a&&(t=null);for(let P=0;P<s.length;P++)x0(s[P],e,t,r)}var y0=b(()=>{Ge();fd();h0();md();p0()});function fv(i){return X.isColorLike(i)}function b0(i){return i instanceof Jt}function w0(i){return i instanceof qe}function mv(i){return i instanceof O}function pv(i,e,t){let r=X.shared.setValue(e??0);return i.color=r.toNumber(),i.alpha=r.alpha===1?t.alpha:r.alpha,i.texture=O.WHITE,{...t,...i}}function gv(i,e,t){return i.texture=e,{...t,...i}}function _0(i,e,t){return i.fill=e,i.color=16777215,i.texture=e.texture,i.matrix=e.transform,{...t,...i}}function S0(i,e,t){return e.buildGradient(),i.fill=e,i.color=16777215,i.texture=e.texture,i.matrix=e.transform,i.textureSpace=e.textureSpace,{...t,...i}}function xv(i,e){let t={...e,...i},r=X.shared.setValue(t.color);return t.alpha*=r.alpha,t.color=r.toNumber(),t}function er(i,e){if(i==null)return null;let t={},r=i;return fv(i)?pv(t,i,e):mv(i)?gv(t,i,e):b0(i)?_0(t,i,e):w0(i)?S0(t,i,e):r.fill&&b0(r.fill)?_0(r,r.fill,e):r.fill&&w0(r.fill)?S0(r,r.fill,e):xv(r,e)}function os(i,e){let{width:t,alignment:r,miterLimit:s,cap:n,join:o,pixelLine:a,...c}=e,l=er(i,c);return l?{width:t,alignment:r,miterLimit:s,cap:n,join:o,pixelLine:a,...l}:null}var xd=b(()=>{je();ve();es();Tc()});var yv,T0,yd,Je,bd=b(()=>{He();je();re();vt();ve();Ue();pe();dt();fd();y0();xd();yv=new Y,T0=new F,yd=class Ft extends ie{constructor(){super(...arguments),this.uid=K("graphicsContext"),this.dirty=!0,this.batchMode="auto",this.instructions=[],this._activePath=new wr,this._transform=new F,this._fillStyle={...Ft.defaultFillStyle},this._strokeStyle={...Ft.defaultStrokeStyle},this._stateStack=[],this._tick=0,this._bounds=new le,this._boundsDirty=!0}clone(){let e=new Ft;return e.batchMode=this.batchMode,e.instructions=this.instructions.slice(),e._activePath=this._activePath.clone(),e._transform=this._transform.clone(),e._fillStyle={...this._fillStyle},e._strokeStyle={...this._strokeStyle},e._stateStack=this._stateStack.slice(),e._bounds=this._bounds.clone(),e._boundsDirty=!0,e}get fillStyle(){return this._fillStyle}set fillStyle(e){this._fillStyle=er(e,Ft.defaultFillStyle)}get strokeStyle(){return this._strokeStyle}set strokeStyle(e){this._strokeStyle=os(e,Ft.defaultStrokeStyle)}setFillStyle(e){return this._fillStyle=er(e,Ft.defaultFillStyle),this}setStrokeStyle(e){return this._strokeStyle=er(e,Ft.defaultStrokeStyle),this}texture(e,t,r,s,n,o){return this.instructions.push({action:"texture",data:{image:e,dx:r||0,dy:s||0,dw:n||e.frame.width,dh:o||e.frame.height,transform:this._transform.clone(),alpha:this._fillStyle.alpha,style:t?X.shared.setValue(t).toNumber():16777215}}),this.onUpdate(),this}beginPath(){return this._activePath=new wr,this}fill(e,t){let r,s=this.instructions[this.instructions.length-1];return this._tick===0&&s&&s.action==="stroke"?r=s.data.path:r=this._activePath.clone(),r?(e!=null&&(t!==void 0&&typeof e=="number"&&(N($,"GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead"),e={color:e,alpha:t}),this._fillStyle=er(e,Ft.defaultFillStyle)),this.instructions.push({action:"fill",data:{style:this.fillStyle,path:r}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}_initNextPathLocation(){let{x:e,y:t}=this._activePath.getLastPoint(Y.shared);this._activePath.clear(),this._activePath.moveTo(e,t)}stroke(e){let t,r=this.instructions[this.instructions.length-1];return this._tick===0&&r&&r.action==="fill"?t=r.data.path:t=this._activePath.clone(),t?(e!=null&&(this._strokeStyle=os(e,Ft.defaultStrokeStyle)),this.instructions.push({action:"stroke",data:{style:this.strokeStyle,path:t}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}cut(){for(let e=0;e<2;e++){let t=this.instructions[this.instructions.length-1-e],r=this._activePath.clone();if(t&&(t.action==="stroke"||t.action==="fill"))if(t.data.hole)t.data.hole.addPath(r);else{t.data.hole=r;break}}return this._initNextPathLocation(),this}arc(e,t,r,s,n,o){this._tick++;let a=this._transform;return this._activePath.arc(a.a*e+a.c*t+a.tx,a.b*e+a.d*t+a.ty,r,s,n,o),this}arcTo(e,t,r,s,n){this._tick++;let o=this._transform;return this._activePath.arcTo(o.a*e+o.c*t+o.tx,o.b*e+o.d*t+o.ty,o.a*r+o.c*s+o.tx,o.b*r+o.d*s+o.ty,n),this}arcToSvg(e,t,r,s,n,o,a){this._tick++;let c=this._transform;return this._activePath.arcToSvg(e,t,r,s,n,c.a*o+c.c*a+c.tx,c.b*o+c.d*a+c.ty),this}bezierCurveTo(e,t,r,s,n,o,a){this._tick++;let c=this._transform;return this._activePath.bezierCurveTo(c.a*e+c.c*t+c.tx,c.b*e+c.d*t+c.ty,c.a*r+c.c*s+c.tx,c.b*r+c.d*s+c.ty,c.a*n+c.c*o+c.tx,c.b*n+c.d*o+c.ty,a),this}closePath(){return this._tick++,this._activePath?.closePath(),this}ellipse(e,t,r,s){return this._tick++,this._activePath.ellipse(e,t,r,s,this._transform.clone()),this}circle(e,t,r){return this._tick++,this._activePath.circle(e,t,r,this._transform.clone()),this}path(e){return this._tick++,this._activePath.addPath(e,this._transform.clone()),this}lineTo(e,t){this._tick++;let r=this._transform;return this._activePath.lineTo(r.a*e+r.c*t+r.tx,r.b*e+r.d*t+r.ty),this}moveTo(e,t){this._tick++;let r=this._transform,s=this._activePath.instructions,n=r.a*e+r.c*t+r.tx,o=r.b*e+r.d*t+r.ty;return s.length===1&&s[0].action==="moveTo"?(s[0].data[0]=n,s[0].data[1]=o,this):(this._activePath.moveTo(n,o),this)}quadraticCurveTo(e,t,r,s,n){this._tick++;let o=this._transform;return this._activePath.quadraticCurveTo(o.a*e+o.c*t+o.tx,o.b*e+o.d*t+o.ty,o.a*r+o.c*s+o.tx,o.b*r+o.d*s+o.ty,n),this}rect(e,t,r,s){return this._tick++,this._activePath.rect(e,t,r,s,this._transform.clone()),this}roundRect(e,t,r,s,n){return this._tick++,this._activePath.roundRect(e,t,r,s,n,this._transform.clone()),this}poly(e,t){return this._tick++,this._activePath.poly(e,t,this._transform.clone()),this}regularPoly(e,t,r,s,n=0,o){return this._tick++,this._activePath.regularPoly(e,t,r,s,n,o),this}roundPoly(e,t,r,s,n,o){return this._tick++,this._activePath.roundPoly(e,t,r,s,n,o),this}roundShape(e,t,r,s){return this._tick++,this._activePath.roundShape(e,t,r,s),this}filletRect(e,t,r,s,n){return this._tick++,this._activePath.filletRect(e,t,r,s,n),this}chamferRect(e,t,r,s,n,o){return this._tick++,this._activePath.chamferRect(e,t,r,s,n,o),this}star(e,t,r,s,n=0,o=0){return this._tick++,this._activePath.star(e,t,r,s,n,o,this._transform.clone()),this}svg(e){return this._tick++,g0(e,this),this}restore(){let e=this._stateStack.pop();return e&&(this._transform=e.transform,this._fillStyle=e.fillStyle,this._strokeStyle=e.strokeStyle),this}save(){return this._stateStack.push({transform:this._transform.clone(),fillStyle:{...this._fillStyle},strokeStyle:{...this._strokeStyle}}),this}getTransform(){return this._transform}resetTransform(){return this._transform.identity(),this}rotate(e){return this._transform.rotate(e),this}scale(e,t=e){return this._transform.scale(e,t),this}setTransform(e,t,r,s,n,o){return e instanceof F?(this._transform.set(e.a,e.b,e.c,e.d,e.tx,e.ty),this):(this._transform.set(e,t,r,s,n,o),this)}transform(e,t,r,s,n,o){return e instanceof F?(this._transform.append(e),this):(T0.set(e,t,r,s,n,o),this._transform.append(T0),this)}translate(e,t=e){return this._transform.translate(e,t),this}clear(){return this._activePath.clear(),this.instructions.length=0,this.resetTransform(),this.onUpdate(),this}onUpdate(){this.dirty||(this.emit("update",this,16),this.dirty=!0,this._boundsDirty=!0)}get bounds(){if(!this._boundsDirty)return this._bounds;let e=this._bounds;e.clear();for(let t=0;t<this.instructions.length;t++){let r=this.instructions[t],s=r.action;if(s==="fill"){let n=r.data;e.addBounds(n.path.bounds)}else if(s==="texture"){let n=r.data;e.addFrame(n.dx,n.dy,n.dx+n.dw,n.dy+n.dh,n.transform)}if(s==="stroke"){let n=r.data,o=n.style.alignment,a=n.style.width*(1-o),c=n.path.bounds;e.addFrame(c.minX-a,c.minY-a,c.maxX+a,c.maxY+a)}}return e}containsPoint(e){if(!this.bounds.containsPoint(e.x,e.y))return!1;let t=this.instructions,r=!1;for(let s=0;s<t.length;s++){let n=t[s],o=n.data,a=o.path;if(!n.action||!a)continue;let c=o.style,l=a.shapePath.shapePrimitives;for(let u=0;u<l.length;u++){let h=l[u].shape;if(!c||!h)continue;let d=l[u].transform,f=d?d.applyInverse(e,yv):e;if(n.action==="fill")r=h.contains(f.x,f.y);else{let p=c;r=h.strokeContains(f.x,f.y,p.width,p.alignment)}let m=o.hole;if(m){let p=m.shapePath?.shapePrimitives;if(p)for(let g=0;g<p.length;g++)p[g].shape.contains(f.x,f.y)&&(r=!1)}if(r)return!0}}return r}destroy(e=!1){if(this._stateStack.length=0,this._transform=null,this.emit("destroy",this),this.removeAllListeners(),typeof e=="boolean"?e:e?.texture){let r=typeof e=="boolean"?e:e?.textureSource;this._fillStyle.texture&&this._fillStyle.texture.destroy(r),this._strokeStyle.texture&&this._strokeStyle.texture.destroy(r)}this._fillStyle=null,this._strokeStyle=null,this.instructions=null,this._activePath=null,this._bounds=null,this._stateStack=null,this.customShader=null,this._transform=null}};yd.defaultFillStyle={color:16777215,alpha:1,texture:O.WHITE,matrix:null,fill:null,textureSpace:"local"};yd.defaultStrokeStyle={width:1,color:16777215,alpha:1,alignment:.5,miterLimit:10,cap:"butt",join:"miter",texture:O.WHITE,matrix:null,fill:null,textureSpace:"local",pixelLine:!1};Je=yd});function k0(i){let e=[],t=0;for(let r=0;r<v0.length;r++){let s=`_${v0[r]}`;e[t++]=i[s]}return t=P0(i._fill,e,t),t=wv(i._stroke,e,t),t=_v(i.dropShadow,e,t),t=bv(i.filters,e,t),e.join("-")}function bv(i,e,t){if(!i)return t;for(let r of i)e[t++]=r.uid;return t}function P0(i,e,t){return i&&(e[t++]=i.color,e[t++]=i.alpha,e[t++]=i.fill?.styleKey),t}function wv(i,e,t){return i&&(t=P0(i,e,t),e[t++]=i.width,e[t++]=i.alignment,e[t++]=i.cap,e[t++]=i.join,e[t++]=i.miterLimit),t}function _v(i,e,t){return i&&(e[t++]=i.alpha,e[t++]=i.angle,e[t++]=i.blur,e[t++]=i.distance,e[t++]=X.shared.setValue(i.color).toNumber()),t}var v0,C0=b(()=>{je();v0=["align","breakWords","cssOverrides","fontVariant","fontWeight","leading","letterSpacing","lineHeight","padding","textBaseline","trim","whiteSpace","wordWrap","wordWrapWidth","fontFamily","fontStyle","fontSize"]});function Sv(i){let e=i;if(typeof e.dropShadow=="boolean"&&e.dropShadow){let t=st.defaultDropShadow;i.dropShadow={alpha:e.dropShadowAlpha??t.alpha,angle:e.dropShadowAngle??t.angle,blur:e.dropShadowBlur??t.blur,color:e.dropShadowColor??t.color,distance:e.dropShadowDistance??t.distance}}if(e.strokeThickness!==void 0){N($,"strokeThickness is now a part of stroke");let t=e.stroke,r={};if(X.isColorLike(t))r.color=t;else if(t instanceof qe||t instanceof Jt)r.fill=t;else if(Object.hasOwnProperty.call(t,"color")||Object.hasOwnProperty.call(t,"fill"))r=t;else throw new Error("Invalid stroke value.");i.stroke={...r,width:e.strokeThickness}}if(Array.isArray(e.fillGradientStops)){N($,"gradient fill is now a fill pattern: `new FillGradient(...)`");let t;i.fontSize==null?i.fontSize=st.defaultTextStyle.fontSize:typeof i.fontSize=="string"?t=parseInt(i.fontSize,10):t=i.fontSize;let r=new qe({start:{x:0,y:0},end:{x:0,y:(t||0)*1.7}}),s=e.fillGradientStops.map(n=>X.shared.setValue(n).toNumber());s.forEach((n,o)=>{let a=o/(s.length-1);r.addColorStop(a,n)}),i.fill={fill:r}}}var wd,st,An=b(()=>{He();je();pe();es();Tc();bd();xd();C0();wd=class as extends ie{constructor(e={}){super(),Sv(e);let t={...as.defaultTextStyle,...e};for(let r in t){let s=r;this[s]=t[r]}this.update()}get align(){return this._align}set align(e){this._align=e,this.update()}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords=e,this.update()}get dropShadow(){return this._dropShadow}set dropShadow(e){e!==null&&typeof e=="object"?this._dropShadow=this._createProxy({...as.defaultDropShadow,...e}):this._dropShadow=e?this._createProxy({...as.defaultDropShadow}):null,this.update()}get fontFamily(){return this._fontFamily}set fontFamily(e){this._fontFamily=e,this.update()}get fontSize(){return this._fontSize}set fontSize(e){typeof e=="string"?this._fontSize=parseInt(e,10):this._fontSize=e,this.update()}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle=e.toLowerCase(),this.update()}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant=e,this.update()}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight=e,this.update()}get leading(){return this._leading}set leading(e){this._leading=e,this.update()}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing=e,this.update()}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight=e,this.update()}get padding(){return this._padding}set padding(e){this._padding=e,this.update()}get filters(){return this._filters}set filters(e){this._filters=e,this.update()}get trim(){return this._trim}set trim(e){this._trim=e,this.update()}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline=e,this.update()}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace=e,this.update()}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap=e,this.update()}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth=e,this.update()}get fill(){return this._originalFill}set fill(e){e!==this._originalFill&&(this._originalFill=e,this._isFillStyle(e)&&(this._originalFill=this._createProxy({...Je.defaultFillStyle,...e},()=>{this._fill=er({...this._originalFill},Je.defaultFillStyle)})),this._fill=er(e===0?"black":e,Je.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(e){e!==this._originalStroke&&(this._originalStroke=e,this._isFillStyle(e)&&(this._originalStroke=this._createProxy({...Je.defaultStrokeStyle,...e},()=>{this._stroke=os({...this._originalStroke},Je.defaultStrokeStyle)})),this._stroke=os(e,Je.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=k0(this),this._styleKey}update(){this._styleKey=null,this.emit("update",this)}reset(){let e=as.defaultTextStyle;for(let t in e)this[t]=e[t]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new as({align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,textBaseline:this.textBaseline,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,filters:this._filters?[...this._filters]:void 0})}_getFinalPadding(){let e=0;if(this._filters)for(let t=0;t<this._filters.length;t++)e+=this._filters[t].padding;return Math.max(this._padding,e)}destroy(e=!1){if(this.removeAllListeners(),typeof e=="boolean"?e:e?.texture){let r=typeof e=="boolean"?e:e?.textureSource;this._fill?.texture&&this._fill.texture.destroy(r),this._originalFill?.texture&&this._originalFill.texture.destroy(r),this._stroke?.texture&&this._stroke.texture.destroy(r),this._originalStroke?.texture&&this._originalStroke.texture.destroy(r)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(e,t){return new Proxy(e,{set:(r,s,n)=>(r[s]=n,t?.(s,n),this.update(),!0)})}_isFillStyle(e){return(e??null)!==null&&!(X.isColorLike(e)||e instanceof qe||e instanceof Jt)}};wd.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5};wd.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};st=wd});function Bc(i,e,t,r){let s=Tv;s.minX=0,s.minY=0,s.maxX=i.width/r|0,s.maxY=i.height/r|0;let n=Be.getOptimalTexture(s.width,s.height,r,!1);return n.source.uploadMethodId="image",n.source.resource=i,n.source.alphaMode="premultiply-alpha-on-upload",n.frame.width=e/r,n.frame.height=t/r,n.source.emit("update",n.source),n.updateUvs(),n}var Tv,_d=b(()=>{Ui();dt();Tv=new le});var Sd,Rt,In=b(()=>{Ct();qs();Sd=class{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){let r=xe.get().createCanvas();r.width=e,r.height=t;let s=r.getContext("2d");return{canvas:r,context:s}}getOptimalCanvasAndContext(e,t,r=1){e=Math.ceil(e*r-1e-6),t=Math.ceil(t*r-1e-6),e=Xt(e),t=Xt(t);let s=(e<<17)+(t<<1);this._canvasPool[s]||(this._canvasPool[s]=[]);let n=this._canvasPool[s].pop();return n||(n=this._createCanvasAndContext(e,t)),n}returnCanvasAndContext(e){let t=e.canvas,{width:r,height:s}=t,n=(r<<17)+(s<<1);e.context.clearRect(0,0,r,s),this._canvasPool[n].push(e)}clear(){this._canvasPool={}}},Rt=new Sd});function vv(i,e){si||(si=xe.get().createCanvas(256,128),tr=si.getContext("2d",{willReadFrequently:!0}),tr.globalCompositeOperation="copy",tr.globalAlpha=1),(si.width<i||si.height<e)&&(si.width=Xt(i),si.height=Xt(e))}function E0(i,e,t){for(let r=0,s=4*t*e;r<e;++r,s+=4)if(i[s+3]!==0)return!1;return!0}function A0(i,e,t,r,s){let n=4*e;for(let o=r,a=r*n+4*t;o<=s;++o,a+=n)if(i[a+3]!==0)return!1;return!0}function I0(...i){let e=i[0];e.canvas||(e={canvas:i[0],resolution:i[1]});let{canvas:t}=e,r=Math.min(e.resolution??1,1),s=e.width??t.width,n=e.height??t.height,o=e.output;if(vv(s,n),!tr)throw new TypeError("Failed to get canvas 2D context");tr.drawImage(t,0,0,s,n,0,0,s*r,n*r);let c=tr.getImageData(0,0,s,n).data,l=0,u=0,h=s-1,d=n-1;for(;u<n&&E0(c,s,u);)++u;if(u===n)return Z.EMPTY;for(;E0(c,s,d);)--d;for(;A0(c,s,l,u,d);)++l;for(;A0(c,s,h,u,d);)--h;return++h,++d,tr.globalCompositeOperation="source-over",tr.strokeRect(l,u,h-l,d-u),tr.globalCompositeOperation="copy",o??(o=new Z),o.set(l/r,u/r,(h-l)/r,(d-u)/r),o}var si,tr,M0=b(()=>{Ct();qs();$e();si=null,tr=null});function ni(i){let e=typeof i.fontSize=="number"?`${i.fontSize}px`:i.fontSize,t=i.fontFamily;Array.isArray(i.fontFamily)||(t=i.fontFamily.split(","));for(let r=t.length-1;r>=0;r--){let s=t[r].trim();!/([\"\'])[^\'\"]+\1/.test(s)&&!kv.includes(s)&&(s=`"${s}"`),t[r]=s}return`${i.fontStyle} ${i.fontVariant} ${i.fontWeight} ${e} ${t.join(",")}`}var kv,Fc=b(()=>{"use strict";kv=["serif","sans-serif","monospace","cursive","fantasy","system-ui"]});var Td,Dt,Xe,Mn=b(()=>{Ct();Fc();Td={willReadFrequently:!0},Dt=class z{static get experimentalLetterSpacingSupported(){let e=z._experimentalLetterSpacingSupported;if(e===void 0){let t=xe.get().getCanvasRenderingContext2D().prototype;e=z._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,r,s,n,o,a,c,l){this.text=e,this.style=t,this.width=r,this.height=s,this.lines=n,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=c,this.fontProperties=l}static measureText(e=" ",t,r=z._canvas,s=t.wordWrap){let n=ni(t),o=z.measureFont(n);o.fontSize===0&&(o.fontSize=t.fontSize,o.ascent=t.fontSize);let a=z.__context;a.font=n;let l=(s?z._wordWrap(e,t,r):e).split(/(?:\r\n|\r|\n)/),u=new Array(l.length),h=0;for(let y=0;y<l.length;y++){let x=z._measureText(l[y],t.letterSpacing,a);u[y]=x,h=Math.max(h,x)}let d=t._stroke?.width||0,f=h+d;t.dropShadow&&(f+=t.dropShadow.distance);let m=t.lineHeight||o.fontSize,p=Math.max(m,o.fontSize+d)+(l.length-1)*(m+t.leading);return t.dropShadow&&(p+=t.dropShadow.distance),new z(e,t,f,p,l,u,m+t.leading,h,o)}static _measureText(e,t,r){let s=!1;z.experimentalLetterSpacingSupported&&(z.experimentalLetterSpacing?(r.letterSpacing=`${t}px`,r.textLetterSpacing=`${t}px`,s=!0):(r.letterSpacing="0px",r.textLetterSpacing="0px"));let n=r.measureText(e),o=n.width,a=-n.actualBoundingBoxLeft,l=n.actualBoundingBoxRight-a;if(o>0)if(s)o-=t,l-=t;else{let u=(z.graphemeSegmenter(e).length-1)*t;o+=u,l+=u}return Math.max(o,l)}static _wordWrap(e,t,r=z._canvas){let s=r.getContext("2d",Td),n=0,o="",a="",c=Object.create(null),{letterSpacing:l,whiteSpace:u}=t,h=z._collapseSpaces(u),d=z._collapseNewlines(u),f=!h,m=t.wordWrapWidth+l,p=z._tokenize(e);for(let g=0;g<p.length;g++){let y=p[g];if(z._isNewline(y)){if(!d){a+=z._addLine(o),f=!h,o="",n=0;continue}y=" "}if(h){let w=z.isBreakingSpace(y),_=z.isBreakingSpace(o[o.length-1]);if(w&&_)continue}let x=z._getFromCache(y,l,c,s);if(x>m)if(o!==""&&(a+=z._addLine(o),o="",n=0),z.canBreakWords(y,t.breakWords)){let w=z.wordWrapSplit(y);for(let _=0;_<w.length;_++){let S=w[_],T=S,k=1;for(;w[_+k];){let P=w[_+k];if(!z.canBreakChars(T,P,y,_,t.breakWords))S+=P;else break;T=P,k++}_+=k-1;let M=z._getFromCache(S,l,c,s);M+n>m&&(a+=z._addLine(o),f=!1,o="",n=0),o+=S,n+=M}}else{o.length>0&&(a+=z._addLine(o),o="",n=0);let w=g===p.length-1;a+=z._addLine(y,!w),f=!1,o="",n=0}else x+n>m&&(f=!1,a+=z._addLine(o),o="",n=0),(o.length>0||!z.isBreakingSpace(y)||f)&&(o+=y,n+=x)}return a+=z._addLine(o,!1),a}static _addLine(e,t=!0){return e=z._trimRight(e),e=t?`${e}
368
+ `:e,e}static _getFromCache(e,t,r,s){let n=r[e];return typeof n!="number"&&(n=z._measureText(e,t,s)+t,r[e]=n),n}static _collapseSpaces(e){return e==="normal"||e==="pre-line"}static _collapseNewlines(e){return e==="normal"}static _trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){let r=e[t];if(!z.isBreakingSpace(r))break;e=e.slice(0,-1)}return e}static _isNewline(e){return typeof e!="string"?!1:z._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:z._breakingSpaces.includes(e.charCodeAt(0))}static _tokenize(e){let t=[],r="";if(typeof e!="string")return t;for(let s=0;s<e.length;s++){let n=e[s],o=e[s+1];if(z.isBreakingSpace(n,o)||z._isNewline(n)){r!==""&&(t.push(r),r=""),t.push(n);continue}r+=n}return r!==""&&t.push(r),t}static canBreakWords(e,t){return t}static canBreakChars(e,t,r,s,n){return!0}static wordWrapSplit(e){return z.graphemeSegmenter(e)}static measureFont(e){if(z._fonts[e])return z._fonts[e];let t=z._context;t.font=e;let r=t.measureText(z.METRICS_STRING+z.BASELINE_SYMBOL),s={ascent:r.actualBoundingBoxAscent,descent:r.actualBoundingBoxDescent,fontSize:r.actualBoundingBoxAscent+r.actualBoundingBoxDescent};return z._fonts[e]=s,s}static clearMetrics(e=""){e?delete z._fonts[e]:z._fonts={}}static get _canvas(){if(!z.__canvas){let e;try{let t=new OffscreenCanvas(0,0);if(t.getContext("2d",Td)?.measureText)return z.__canvas=t,t;e=xe.get().createCanvas()}catch{e=xe.get().createCanvas()}e.width=e.height=10,z.__canvas=e}return z.__canvas}static get _context(){return z.__context||(z.__context=z._canvas.getContext("2d",Td)),z.__context}};Dt.METRICS_STRING="|\xC9q\xC5";Dt.BASELINE_SYMBOL="M";Dt.BASELINE_MULTIPLIER=1.4;Dt.HEIGHT_MULTIPLIER=2;Dt.graphemeSegmenter=(()=>{if(typeof Intl?.Segmenter=="function"){let i=new Intl.Segmenter;return e=>{let t=i.segment(e),r=[],s=0;for(let n of t)r[s++]=n.segment;return r}}return i=>[...i]})();Dt.experimentalLetterSpacing=!1;Dt._fonts={};Dt._newlines=[10,13];Dt._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];Xe=Dt});function cs(i,e,t,r=0){if(i.texture===O.WHITE&&!i.fill)return X.shared.setValue(i.color).setAlpha(i.alpha??1).toHexa();if(i.fill){if(i.fill instanceof Jt){let s=i.fill,n=e.createPattern(s.texture.source.resource,"repeat"),o=s.transform.copyTo(F.shared);return o.scale(s.texture.frame.width,s.texture.frame.height),n.setTransform(o),n}else if(i.fill instanceof qe){let s=i.fill,n=s.type==="linear",o=s.textureSpace==="local",a=1,c=1;o&&t&&(a=t.width+r,c=t.height+r);let l,u=!1;if(n){let{start:h,end:d}=s;l=e.createLinearGradient(h.x*a,h.y*c,d.x*a,d.y*c),u=Math.abs(d.x-h.x)<Math.abs((d.y-h.y)*.1)}else{let{center:h,innerRadius:d,outerCenter:f,outerRadius:m}=s;l=e.createRadialGradient(h.x*a,h.y*c,d*a,f.x*a,f.y*c,m*a)}if(u&&o&&t){let h=t.lineHeight/c;for(let d=0;d<t.lines.length;d++){let f=(d*t.lineHeight+r/2)/c;s.colorStops.forEach(m=>{let p=f+m.offset*h;l.addColorStop(Math.floor(p*B0)/B0,X.shared.setValue(m.color).toHex())})}}else s.colorStops.forEach(h=>{l.addColorStop(h.offset,X.shared.setValue(h.color).toHex())});return l}}else{let s=e.createPattern(i.texture.source.resource,"repeat"),n=i.matrix.copyTo(F.shared);return n.scale(i.texture.frame.width,i.texture.frame.height),s.setTransform(n),s}return q("FillStyle not recognised",i),"red"}var B0,vd=b(()=>{je();re();ve();Ge();es();Tc();B0=1e5});var F0,kd,Rc,R0=b(()=>{je();$e();In();M0();Mn();Fc();vd();F0=new Z,kd=class{getCanvasAndContext(e){let{text:t,style:r,resolution:s=1}=e,n=r._getFinalPadding(),o=Xe.measureText(t||" ",r),a=Math.ceil(Math.ceil(Math.max(1,o.width)+n*2)*s),c=Math.ceil(Math.ceil(Math.max(1,o.height)+n*2)*s),l=Rt.getOptimalCanvasAndContext(a,c);this._renderTextToCanvas(t,r,n,s,l);let u=r.trim?I0({canvas:l.canvas,width:a,height:c,resolution:1,output:F0}):F0.set(0,0,a,c);return{canvasAndContext:l,frame:u}}returnCanvasAndContext(e){Rt.returnCanvasAndContext(e)}_renderTextToCanvas(e,t,r,s,n){let{canvas:o,context:a}=n,c=ni(t),l=Xe.measureText(e||" ",t),u=l.lines,h=l.lineHeight,d=l.lineWidths,f=l.maxLineWidth,m=l.fontProperties,p=o.height;if(a.resetTransform(),a.scale(s,s),a.textBaseline=t.textBaseline,t._stroke?.width){let w=t._stroke;a.lineWidth=w.width,a.miterLimit=w.miterLimit,a.lineJoin=w.join,a.lineCap=w.cap}a.font=c;let g,y,x=t.dropShadow?2:1;for(let w=0;w<x;++w){let _=t.dropShadow&&w===0,S=_?Math.ceil(Math.max(1,p)+r*2):0,T=S*s;if(_){a.fillStyle="black",a.strokeStyle="black";let P=t.dropShadow,C=P.color,E=P.alpha;a.shadowColor=X.shared.setValue(C).setAlpha(E).toRgbaString();let R=P.blur*s,j=P.distance*s;a.shadowBlur=R,a.shadowOffsetX=Math.cos(P.angle)*j,a.shadowOffsetY=Math.sin(P.angle)*j+T}else{if(a.fillStyle=t._fill?cs(t._fill,a,l):null,t._stroke?.width){let P=t._stroke.width*t._stroke.alignment;a.strokeStyle=cs(t._stroke,a,l,P)}a.shadowColor="black"}let k=(h-m.fontSize)/2;h-m.fontSize<0&&(k=0);let M=t._stroke?.width??0;for(let P=0;P<u.length;P++)g=M/2,y=M/2+P*h+m.ascent+k,t.align==="right"?g+=f-d[P]:t.align==="center"&&(g+=(f-d[P])/2),t._stroke?.width&&this._drawLetterSpacing(u[P],t,n,g+r,y+r-S,!0),t._fill!==void 0&&this._drawLetterSpacing(u[P],t,n,g+r,y+r-S)}}_drawLetterSpacing(e,t,r,s,n,o=!1){let{context:a}=r,c=t.letterSpacing,l=!1;if(Xe.experimentalLetterSpacingSupported&&(Xe.experimentalLetterSpacing?(a.letterSpacing=`${c}px`,a.textLetterSpacing=`${c}px`,l=!0):(a.letterSpacing="0px",a.textLetterSpacing="0px")),c===0||l){o?a.strokeText(e,s,n):a.fillText(e,s,n);return}let u=s,h=Xe.graphemeSegmenter(e),d=a.measureText(e).width,f=0;for(let m=0;m<h.length;++m){let p=h[m];o?a.strokeText(p,u,n):a.fillText(p,u,n);let g="";for(let y=m+1;y<h.length;++y)g+=h[y];f=a.measureText(g).width,u+=d-f+c,d=f}}},Rc=new kd});var Bn,D0=b(()=>{G();Ui();zi();pe();An();_d();R0();Bn=class{constructor(e){this._renderer=e}getTexture(e,t,r,s){typeof e=="string"&&(N("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),e={text:e,style:r,resolution:t}),e.style instanceof st||(e.style=new st(e.style)),e.textureStyle instanceof rt||(e.textureStyle=new rt(e.textureStyle)),typeof e.text!="string"&&(e.text=e.text.toString());let{text:n,style:o,textureStyle:a}=e,c=e.resolution??this._renderer.resolution,{frame:l,canvasAndContext:u}=Rc.getCanvasAndContext({text:n,style:o,resolution:c}),h=Bc(u.canvas,l.width,l.height,c);if(a&&(h.source.style=a),o.trim&&(l.pad(o.padding),h.frame.copyFrom(l),h.updateUvs()),o.filters){let d=this._applyFilters(h,o.filters);return this.returnTexture(h),Rc.returnCanvasAndContext(u),d}return this._renderer.texture.initSource(h._source),Rc.returnCanvasAndContext(u),h}returnTexture(e){let t=e.source;t.resource=null,t.uploadMethodId="unknown",t.alphaMode="no-premultiply-alpha",Be.returnTexture(e,!0)}renderTextToCanvas(){N("8.10.0","CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead")}_applyFilters(e,t){let r=this._renderer.renderTarget.renderTarget,s=this._renderer.filter.generateFilteredTexture({texture:e,filters:t});return this._renderer.renderTarget.bind(r,!1),s}destroy(){this._renderer=null}};Bn.extension={type:[A.WebGLSystem,A.WebGPUSystem,A.CanvasSystem],name:"canvasText"}});var Pd=b(()=>{G();Gb();D0();L.add(Bn);L.add(Pn)});var Dc,O0=b(()=>{pe();Yu();bd();Dc=class i extends Li{constructor(e){e instanceof Je&&(e={context:e});let{context:t,roundPixels:r,...s}=e||{};super({label:"Graphics",...s}),this.renderPipeId="graphics",t?this._context=t:this._context=this._ownedContext=new Je,this._context.on("update",this.onViewUpdate,this),this.didViewUpdate=!0,this.allowChildren=!1,this.roundPixels=r??!1}set context(e){e!==this._context&&(this._context.off("update",this.onViewUpdate,this),this._context=e,this._context.on("update",this.onViewUpdate,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(e){return this._context.containsPoint(e)}destroy(e){this._ownedContext&&!e?this._ownedContext.destroy(e):(e===!0||e?.context===!0)&&this._context.destroy(e),this._ownedContext=null,this._context=null,super.destroy(e)}_callContextMethod(e,t){return this.context[e](...t),this}setFillStyle(...e){return this._callContextMethod("setFillStyle",e)}setStrokeStyle(...e){return this._callContextMethod("setStrokeStyle",e)}fill(...e){return this._callContextMethod("fill",e)}stroke(...e){return this._callContextMethod("stroke",e)}texture(...e){return this._callContextMethod("texture",e)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...e){return this._callContextMethod("arc",e)}arcTo(...e){return this._callContextMethod("arcTo",e)}arcToSvg(...e){return this._callContextMethod("arcToSvg",e)}bezierCurveTo(...e){return this._callContextMethod("bezierCurveTo",e)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...e){return this._callContextMethod("ellipse",e)}circle(...e){return this._callContextMethod("circle",e)}path(...e){return this._callContextMethod("path",e)}lineTo(...e){return this._callContextMethod("lineTo",e)}moveTo(...e){return this._callContextMethod("moveTo",e)}quadraticCurveTo(...e){return this._callContextMethod("quadraticCurveTo",e)}rect(...e){return this._callContextMethod("rect",e)}roundRect(...e){return this._callContextMethod("roundRect",e)}poly(...e){return this._callContextMethod("poly",e)}regularPoly(...e){return this._callContextMethod("regularPoly",e)}roundPoly(...e){return this._callContextMethod("roundPoly",e)}roundShape(...e){return this._callContextMethod("roundShape",e)}filletRect(...e){return this._callContextMethod("filletRect",e)}chamferRect(...e){return this._callContextMethod("chamferRect",e)}star(...e){return this._callContextMethod("star",e)}svg(...e){return this._callContextMethod("svg",e)}restore(...e){return this._callContextMethod("restore",e)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...e){return this._callContextMethod("rotate",e)}scaleTransform(...e){return this._callContextMethod("scale",e)}setTransform(...e){return this._callContextMethod("setTransform",e)}transform(...e){return this._callContextMethod("transform",e)}translateTransform(...e){return this._callContextMethod("translate",e)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(e){this._context.fillStyle=e}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(e){this._context.strokeStyle=e}clone(e=!1){return e?new i(this._context.clone()):(this._ownedContext=null,new i(this._context))}lineStyle(e,t,r){N($,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");let s={};return e&&(s.width=e),t&&(s.color=t),r&&(s.alpha=r),this.context.strokeStyle=s,this}beginFill(e,t){N($,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");let r={};return e!==void 0&&(r.color=e),t!==void 0&&(r.alpha=t),this.context.fillStyle=r,this}endFill(){N($,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();let e=this.context.strokeStyle;return(e.width!==Je.defaultStrokeStyle.width||e.color!==Je.defaultStrokeStyle.color||e.alpha!==Je.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...e){return N($,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",e)}drawEllipse(...e){return N($,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",e)}drawPolygon(...e){return N($,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",e)}drawRect(...e){return N($,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",e)}drawRoundedRect(...e){return N($,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",e)}drawStar(...e){return N($,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",e)}}});var z0,U0,G0=b(()=>{"use strict";z0={name:"local-uniform-msdf-bit",vertex:{header:`
369
+ struct LocalUniforms {
370
+ uColor:vec4<f32>,
371
+ uTransformMatrix:mat3x3<f32>,
372
+ uDistance: f32,
373
+ uRound:f32,
374
+ }
375
+
376
+ @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;
377
+ `,main:`
378
+ vColor *= localUniforms.uColor;
379
+ modelMatrix *= localUniforms.uTransformMatrix;
380
+ `,end:`
381
+ if(localUniforms.uRound == 1)
382
+ {
383
+ vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
384
+ }
385
+ `},fragment:{header:`
386
+ struct LocalUniforms {
387
+ uColor:vec4<f32>,
388
+ uTransformMatrix:mat3x3<f32>,
389
+ uDistance: f32
390
+ }
391
+
392
+ @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;
393
+ `,main:`
394
+ outColor = vec4<f32>(calculateMSDFAlpha(outColor, localUniforms.uColor, localUniforms.uDistance));
395
+ `}},U0={name:"local-uniform-msdf-bit",vertex:{header:`
396
+ uniform mat3 uTransformMatrix;
397
+ uniform vec4 uColor;
398
+ uniform float uRound;
399
+ `,main:`
400
+ vColor *= uColor;
401
+ modelMatrix *= uTransformMatrix;
402
+ `,end:`
403
+ if(uRound == 1.)
404
+ {
405
+ gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
406
+ }
407
+ `},fragment:{header:`
408
+ uniform float uDistance;
409
+ `,main:`
410
+ outColor = vec4(calculateMSDFAlpha(outColor, vColor, uDistance));
411
+ `}}});var N0,L0,V0=b(()=>{"use strict";N0={name:"msdf-bit",fragment:{header:`
412
+ fn calculateMSDFAlpha(msdfColor:vec4<f32>, shapeColor:vec4<f32>, distance:f32) -> f32 {
413
+
414
+ // MSDF
415
+ var median = msdfColor.r + msdfColor.g + msdfColor.b -
416
+ min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -
417
+ max(msdfColor.r, max(msdfColor.g, msdfColor.b));
418
+
419
+ // SDF
420
+ median = min(median, msdfColor.a);
421
+
422
+ var screenPxDistance = distance * (median - 0.5);
423
+ var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);
424
+ if (median < 0.01) {
425
+ alpha = 0.0;
426
+ } else if (median > 0.99) {
427
+ alpha = 1.0;
428
+ }
429
+
430
+ // Gamma correction for coverage-like alpha
431
+ var luma: f32 = dot(shapeColor.rgb, vec3<f32>(0.299, 0.587, 0.114));
432
+ var gamma: f32 = mix(1.0, 1.0 / 2.2, luma);
433
+ var coverage: f32 = pow(shapeColor.a * alpha, gamma);
434
+
435
+ return coverage;
436
+
437
+ }
438
+ `}},L0={name:"msdf-bit",fragment:{header:`
439
+ float calculateMSDFAlpha(vec4 msdfColor, vec4 shapeColor, float distance) {
440
+
441
+ // MSDF
442
+ float median = msdfColor.r + msdfColor.g + msdfColor.b -
443
+ min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -
444
+ max(msdfColor.r, max(msdfColor.g, msdfColor.b));
445
+
446
+ // SDF
447
+ median = min(median, msdfColor.a);
448
+
449
+ float screenPxDistance = distance * (median - 0.5);
450
+ float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);
451
+
452
+ if (median < 0.01) {
453
+ alpha = 0.0;
454
+ } else if (median > 0.99) {
455
+ alpha = 1.0;
456
+ }
457
+
458
+ // Gamma correction for coverage-like alpha
459
+ float luma = dot(shapeColor.rgb, vec3(0.299, 0.587, 0.114));
460
+ float gamma = mix(1.0, 1.0 / 2.2, luma);
461
+ float coverage = pow(shapeColor.a * alpha, gamma);
462
+
463
+ return coverage;
464
+ }
465
+ `}}});var Cd,Ed,Oc,W0=b(()=>{re();tc();kh();Eh();oc();Ih();pn();xr();G0();V0();Oc=class extends Bt{constructor(e){let t=new Le({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new F,type:"mat3x3<f32>"},uDistance:{value:4,type:"f32"},uRound:{value:0,type:"f32"}});Cd??(Cd=Xi({name:"sdf-shader",bits:[rc,sc(e),z0,N0,Ki]})),Ed??(Ed=Yi({name:"sdf-shader",bits:[ic,nc(e),U0,L0,Zi]})),super({glProgram:Ed,gpuProgram:Cd,resources:{localUniforms:t,batchSamplers:ac(e)}})}}});var zc,H0=b(()=>{He();pe();zc=class extends ie{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily="",this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:"none",range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return N($,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return N($,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return N($,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return N($,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return N($,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(e=!1){this.emit("destroy",this),this.removeAllListeners();for(let t in this.chars)this.chars[t].texture?.destroy();this.chars=null,e&&(this.pages.forEach(t=>t.texture.destroy(!0)),this.pages=null)}}});var j0,Ad,q0=b(()=>{je();$e();In();Va();ve();zi();pe();Mn();Fc();vd();An();H0();j0=class $0 extends zc{constructor(e){super(),this.resolution=1,this.pages=[],this._padding=0,this._measureCache=Object.create(null),this._currentChars=[],this._currentX=0,this._currentY=0,this._currentMaxCharHeight=0,this._currentPageIndex=-1,this._skipKerning=!1;let t={...$0.defaultOptions,...e};this._textureSize=t.textureSize,this._mipmap=t.mipmap;let r=t.style.clone();t.overrideFill&&(r._fill.color=16777215,r._fill.alpha=1,r._fill.texture=O.WHITE,r._fill.fill=null),this.applyFillAsTint=t.overrideFill;let s=r.fontSize;r.fontSize=this.baseMeasurementFontSize;let n=ni(r);t.overrideSize?r._stroke&&(r._stroke.width*=this.baseRenderedFontSize/s):r.fontSize=this.baseRenderedFontSize=s,this._style=r,this._skipKerning=t.skipKerning??!1,this.resolution=t.resolution??1,this._padding=t.padding??4,t.textureStyle&&(this._textureStyle=t.textureStyle instanceof rt?t.textureStyle:new rt(t.textureStyle)),this.fontMetrics=Xe.measureFont(n),this.lineHeight=r.lineHeight||this.fontMetrics.fontSize||r.fontSize}ensureCharacters(e){let t=Xe.graphemeSegmenter(e).filter(g=>!this._currentChars.includes(g)).filter((g,y,x)=>x.indexOf(g)===y);if(!t.length)return;this._currentChars=[...this._currentChars,...t];let r;this._currentPageIndex===-1?r=this._nextPage():r=this.pages[this._currentPageIndex];let{canvas:s,context:n}=r.canvasAndContext,o=r.texture.source,a=this._style,c=this._currentX,l=this._currentY,u=this._currentMaxCharHeight,h=this.baseRenderedFontSize/this.baseMeasurementFontSize,d=this._padding*h,f=!1,m=s.width/this.resolution,p=s.height/this.resolution;for(let g=0;g<t.length;g++){let y=t[g],x=Xe.measureText(y,a,s,!1);x.lineHeight=x.height;let w=x.width*h,_=Math.ceil((a.fontStyle==="italic"?2:1)*w),S=x.height*h,T=_+d*2,k=S+d*2;if(f=!1,y!==`
466
+ `&&y!=="\r"&&y!==" "&&y!==" "&&(f=!0,u=Math.ceil(Math.max(k,u))),c+T>m&&(l+=u,u=k,c=0,l+u>p)){o.update();let P=this._nextPage();s=P.canvasAndContext.canvas,n=P.canvasAndContext.context,o=P.texture.source,c=0,l=0,u=0}let M=w/h-(a.dropShadow?.distance??0)-(a._stroke?.width??0);if(this.chars[y]={id:y.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:M,kerning:{}},f){this._drawGlyph(n,x,c+d,l+d,h,a);let P=o.width*h,C=o.height*h,E=new Z(c/P*o.width,l/C*o.height,T/P*o.width,k/C*o.height);this.chars[y].texture=new O({source:o,frame:E}),c+=Math.ceil(T)}}o.update(),this._currentX=c,this._currentY=l,this._currentMaxCharHeight=u,this._skipKerning&&this._applyKerning(t,n)}get pageTextures(){return N($,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(e,t){let r=this._measureCache;for(let s=0;s<e.length;s++){let n=e[s];for(let o=0;o<this._currentChars.length;o++){let a=this._currentChars[o],c=r[n];c||(c=r[n]=t.measureText(n).width);let l=r[a];l||(l=r[a]=t.measureText(a).width);let u=t.measureText(n+a).width,h=u-(c+l);h&&(this.chars[n].kerning[a]=h),u=t.measureText(n+a).width,h=u-(c+l),h&&(this.chars[a].kerning[n]=h)}}}_nextPage(){this._currentPageIndex++;let e=this.resolution,t=Rt.getOptimalCanvasAndContext(this._textureSize,this._textureSize,e);this._setupContext(t.context,this._style,e);let r=e*(this.baseRenderedFontSize/this.baseMeasurementFontSize),s=new O({source:new Et({resource:t.canvas,resolution:r,alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:this._mipmap})});this._textureStyle&&(s.source.style=this._textureStyle);let n={canvasAndContext:t,texture:s};return this.pages[this._currentPageIndex]=n,n}_setupContext(e,t,r){t.fontSize=this.baseRenderedFontSize,e.scale(r,r),e.font=ni(t),t.fontSize=this.baseMeasurementFontSize,e.textBaseline=t.textBaseline;let s=t._stroke,n=s?.width??0;if(s&&(e.lineWidth=n,e.lineJoin=s.join,e.miterLimit=s.miterLimit,e.strokeStyle=cs(s,e)),t._fill&&(e.fillStyle=cs(t._fill,e)),t.dropShadow){let o=t.dropShadow,a=X.shared.setValue(o.color).toArray(),c=o.blur*r,l=o.distance*r;e.shadowColor=`rgba(${a[0]*255},${a[1]*255},${a[2]*255},${o.alpha})`,e.shadowBlur=c,e.shadowOffsetX=Math.cos(o.angle)*l,e.shadowOffsetY=Math.sin(o.angle)*l}else e.shadowColor="black",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}_drawGlyph(e,t,r,s,n,o){let a=t.text,c=t.fontProperties,u=(o._stroke?.width??0)*n,h=r+u/2,d=s-u/2,f=c.descent*n,m=t.lineHeight*n;o.stroke&&u&&e.strokeText(a,h,d+m-f),o._fill&&e.fillText(a,h,d+m-f)}destroy(){super.destroy();for(let e=0;e<this.pages.length;e++){let{canvasAndContext:t,texture:r}=this.pages[e];Rt.returnCanvasAndContext(t),r.destroy(!0)}this.pages=null}};j0.defaultOptions={textureSize:512,style:new st,mipmap:!0};Ad=j0});function Uc(i,e,t,r){let s={width:0,height:0,offsetY:0,scale:e.fontSize/t.baseMeasurementFontSize,lines:[{width:0,charPositions:[],spaceWidth:0,spacesIndex:[],chars:[]}]};s.offsetY=t.baseLineOffset;let n=s.lines[0],o=null,a=!0,c={spaceWord:!1,width:0,start:0,index:0,positions:[],chars:[]},l=m=>{let p=n.width;for(let g=0;g<c.index;g++){let y=m.positions[g];n.chars.push(m.chars[g]),n.charPositions.push(y+p)}n.width+=m.width,a=!1,c.width=0,c.index=0,c.chars.length=0},u=()=>{let m=n.chars.length-1;if(r){let p=n.chars[m];for(;p===" ";)n.width-=t.chars[p].xAdvance,p=n.chars[--m]}s.width=Math.max(s.width,n.width),n={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},a=!0,s.lines.push(n),s.height+=t.lineHeight},h=t.baseMeasurementFontSize/e.fontSize,d=e.letterSpacing*h,f=e.wordWrapWidth*h;for(let m=0;m<i.length+1;m++){let p,g=m===i.length;g||(p=i[m]);let y=t.chars[p]||t.chars[" "];if(/(?:\s)/.test(p)||p==="\r"||p===`
467
+ `||g){if(!a&&e.wordWrap&&n.width+c.width-d>f?(u(),l(c),g||n.charPositions.push(0)):(c.start=n.width,l(c),g||n.charPositions.push(0)),p==="\r"||p===`
468
+ `)n.width!==0&&u();else if(!g){let S=y.xAdvance+(y.kerning[o]||0)+d;n.width+=S,n.spaceWidth=S,n.spacesIndex.push(n.charPositions.length),n.chars.push(p)}}else{let _=y.kerning[o]||0,S=y.xAdvance+_+d;c.positions[c.index++]=c.width+_,c.chars.push(p),c.width+=S}o=p}return u(),e.align==="center"?Pv(s):e.align==="right"?Cv(s):e.align==="justify"&&Ev(s),s}function Pv(i){for(let e=0;e<i.lines.length;e++){let t=i.lines[e],r=i.width/2-t.width/2;for(let s=0;s<t.charPositions.length;s++)t.charPositions[s]+=r}}function Cv(i){for(let e=0;e<i.lines.length;e++){let t=i.lines[e],r=i.width-t.width;for(let s=0;s<t.charPositions.length;s++)t.charPositions[s]+=r}}function Ev(i){let e=i.width;for(let t=0;t<i.lines.length;t++){let r=i.lines[t],s=0,n=r.spacesIndex[s++],o=0,a=r.spacesIndex.length,l=(e-r.width)/a;for(let u=0;u<r.charPositions.length;u++)u===n&&(n=r.spacesIndex[s++],o+=l),r.charPositions[u]+=o}}var Id=b(()=>{"use strict"});function X0(i){if(i==="")return[];typeof i=="string"&&(i=[i]);let e=[];for(let t=0,r=i.length;t<r;t++){let s=i[t];if(Array.isArray(s)){if(s.length!==2)throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${s.length}.`);if(s[0].length===0||s[1].length===0)throw new Error("[BitmapFont]: Invalid character delimiter.");let n=s[0].charCodeAt(0),o=s[1].charCodeAt(0);if(o<n)throw new Error("[BitmapFont]: Invalid character range.");for(let a=n,c=o;a<=c;a++)e.push(String.fromCharCode(a))}else e.push(...Array.from(s))}if(e.length===0)throw new Error("[BitmapFont]: Empty set when resolving characters.");return e}var Y0=b(()=>{"use strict"});var Gc,Md,K0,Z0=b(()=>{ln();pe();Ge();Mn();An();q0();Id();Y0();Gc=0,Md=class{constructor(){this.ALPHA=[["a","z"],["A","Z"]," "],this.NUMERIC=[["0","9"]],this.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],this.ASCII=[[" ","~"]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1,textureStyle:null}}getFont(e,t){let r=`${t.fontFamily}-bitmap`,s=!0;if(t._fill.fill&&!t._stroke)r+=t._fill.fill.styleKey,s=!1;else if(t._stroke||t.dropShadow){let o=t.styleKey;o=o.substring(0,o.lastIndexOf("-")),r=`${o}-bitmap`,s=!1}if(!ye.has(r)){let o=new Ad({style:t,overrideFill:s,overrideSize:!0,...this.defaultOptions});Gc++,Gc>50&&q("BitmapText",`You have dynamically created ${Gc} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),o.once("destroy",()=>{Gc--,ye.remove(r)}),ye.set(r,o)}let n=ye.get(r);return n.ensureCharacters?.(e),n}getLayout(e,t,r=!0){let s=this.getFont(e,t),n=Xe.graphemeSegmenter(e);return Uc(n,t,s,r)}measureText(e,t,r=!0){return this.getLayout(e,t,r)}install(...e){let t=e[0];typeof t=="string"&&(t={name:t,style:e[1],chars:e[2]?.chars,resolution:e[2]?.resolution,padding:e[2]?.padding,skipKerning:e[2]?.skipKerning},N($,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));let r=t?.name;if(!r)throw new Error("[BitmapFontManager] Property `name` is required.");t={...this.defaultOptions,...t};let s=t.style,n=s instanceof st?s:new st(s),o=n._fill.fill!==null&&n._fill.fill!==void 0,a=new Ad({style:n,overrideFill:o,skipKerning:t.skipKerning,padding:t.padding,resolution:t.resolution,overrideSize:!1,textureStyle:t.textureStyle}),c=X0(t.chars);return a.ensureCharacters(c.join("")),ye.set(`${r}-bitmap`,a),a.once("destroy",()=>ye.remove(`${r}-bitmap`)),a}uninstall(e){let t=`${e}-bitmap`,r=ye.get(t);r&&r.destroy()}},K0=new Md});function Q0(i,e){e.groupTransform=i.groupTransform,e.groupColorAlpha=i.groupColorAlpha,e.groupColor=i.groupColor,e.groupBlendMode=i.groupBlendMode,e.globalDisplayStatus=i.globalDisplayStatus,e.groupTransform=i.groupTransform,e.localDisplayStatus=i.localDisplayStatus,e.groupAlpha=i.groupAlpha,e._roundPixels=i._roundPixels}var Bd,Fn,J0=b(()=>{ln();G();O0();Mn();W0();Z0();Id();Bd=class extends Dc{destroy(){this.context.customShader&&this.context.customShader.destroy(),super.destroy()}},Fn=class{constructor(e){this._renderer=e,this._renderer.renderableGC.addManagedHash(this,"_gpuBitmapText")}validateRenderable(e){let t=this._getGpuBitmapText(e);return e._didTextUpdate&&(e._didTextUpdate=!1,this._updateContext(e,t)),this._renderer.renderPipes.graphics.validateRenderable(t)}addRenderable(e,t){let r=this._getGpuBitmapText(e);Q0(e,r),e._didTextUpdate&&(e._didTextUpdate=!1,this._updateContext(e,r)),this._renderer.renderPipes.graphics.addRenderable(r,t),r.context.customShader&&this._updateDistanceField(e)}updateRenderable(e){let t=this._getGpuBitmapText(e);Q0(e,t),this._renderer.renderPipes.graphics.updateRenderable(t),t.context.customShader&&this._updateDistanceField(e)}_updateContext(e,t){let{context:r}=t,s=K0.getFont(e.text,e._style);r.clear(),s.distanceField.type!=="none"&&(r.customShader||(r.customShader=new Oc(this._renderer.limits.maxBatchableTextures)));let n=Xe.graphemeSegmenter(e.text),o=e._style,a=s.baseLineOffset,c=Uc(n,o,s,!0),l=0,u=o.padding,h=c.scale,d=c.width,f=c.height+c.offsetY;o._stroke&&(d+=o._stroke.width/h,f+=o._stroke.width/h),r.translate(-e._anchor._x*d-u,-e._anchor._y*f-u).scale(h,h);let m=s.applyFillAsTint?o._fill.color:16777215;for(let p=0;p<c.lines.length;p++){let g=c.lines[p];for(let y=0;y<g.charPositions.length;y++){let x=n[l++],w=s.chars[x];w?.texture&&r.texture(w.texture,m||"black",Math.round(g.charPositions[y]+w.xOffset),Math.round(a+w.yOffset))}a+=s.lineHeight}}_getGpuBitmapText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new Bd;return e._gpuData[this._renderer.uid]=t,this._updateContext(e,t),t}_updateDistanceField(e){let t=this._getGpuBitmapText(e).context,r=e._style.fontFamily,s=ye.get(`${r}-bitmap`),{a:n,b:o,c:a,d:c}=e.groupTransform,l=Math.sqrt(n*n+o*o),u=Math.sqrt(a*a+c*c),h=(Math.abs(l)+Math.abs(u))/2,d=s.baseRenderedFontSize/e._style.fontSize,f=h*s.distanceField.range*(1/d);t.customShader.resources.localUniforms.uniforms.uDistance=f}destroy(){this._renderer=null}};Fn.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"bitmapText"}});var Fd=b(()=>{G();J0();L.add(Fn)});var Nc,ew=b(()=>{sd();Nc=class extends is{constructor(e){super(),this.generatingTexture=!1,this._renderer=e,e.runners.resolutionChange.add(this)}resolutionChange(){let e=this.renderable;e._autoResolution&&e.onViewUpdate()}destroy(){this._renderer.htmlText.returnTexturePromise(this.texturePromise),this.texturePromise=null,this._renderer=null}}});var Rn,tw=b(()=>{G();ve();id();ew();Rn=class{constructor(e){this._renderer=e}validateRenderable(e){return e._didTextUpdate}addRenderable(e,t){let r=this._getGpuText(e);e._didTextUpdate&&(this._updateGpuText(e).catch(s=>{console.error(s)}),e._didTextUpdate=!1,kn(r,e)),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){let t=this._getGpuText(e);t._batcher.updateElement(t)}async _updateGpuText(e){e._didTextUpdate=!1;let t=this._getGpuText(e);if(t.generatingTexture)return;t.texturePromise&&(this._renderer.htmlText.returnTexturePromise(t.texturePromise),t.texturePromise=null),t.generatingTexture=!0,e._resolution=e._autoResolution?this._renderer.resolution:e.resolution;let r=this._renderer.htmlText.getTexturePromise(e);t.texturePromise=r,t.texture=await r;let s=e.renderGroup||e.parentRenderGroup;s&&(s.structureDidChange=!0),t.generatingTexture=!1,kn(t,e)}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){let t=new Nc(this._renderer);return t.renderable=e,t.transform=e.groupTransform,t.texture=O.EMPTY,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,e._gpuData[this._renderer.uid]=t,t}destroy(){this._renderer=null}};Rn.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"htmlText"}});function rw(){let{userAgent:i}=xe.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(i)}var iw=b(()=>{Ct()});var sw,nw,ls,Rd=b(()=>{"use strict";sw="http://www.w3.org/2000/svg",nw="http://www.w3.org/1999/xhtml",ls=class{constructor(){this.svgRoot=document.createElementNS(sw,"svg"),this.foreignObject=document.createElementNS(sw,"foreignObject"),this.domElement=document.createElementNS(nw,"div"),this.styleElement=document.createElementNS(nw,"style"),this.image=new Image;let{foreignObject:e,svgRoot:t,styleElement:r,domElement:s}=this;e.setAttribute("width","10000"),e.setAttribute("height","10000"),e.style.overflow="hidden",t.appendChild(e),e.appendChild(r),e.appendChild(s)}}});function cw(i){let e=i._stroke,t=i._fill,s=[`div { ${[`color: ${X.shared.setValue(t.color).toHex()}`,`font-size: ${i.fontSize}px`,`font-family: ${i.fontFamily}`,`font-weight: ${i.fontWeight}`,`font-style: ${i.fontStyle}`,`font-variant: ${i.fontVariant}`,`letter-spacing: ${i.letterSpacing}px`,`text-align: ${i.align}`,`padding: ${i.padding}px`,`white-space: ${i.whiteSpace==="pre"&&i.wordWrap?"pre-wrap":i.whiteSpace}`,...i.lineHeight?[`line-height: ${i.lineHeight}px`]:[],...i.wordWrap?[`word-wrap: ${i.breakWords?"break-all":"break-word"}`,`max-width: ${i.wordWrapWidth}px`]:[],...e?[uw(e)]:[],...i.dropShadow?[lw(i.dropShadow)]:[],...i.cssOverrides].join(";")} }`];return Av(i.tagStyles,s),s.join(" ")}function lw(i){let e=X.shared.setValue(i.color).setAlpha(i.alpha).toHexa(),t=Math.round(Math.cos(i.angle)*i.distance),r=Math.round(Math.sin(i.angle)*i.distance),s=`${t}px ${r}px`;return i.blur>0?`text-shadow: ${s} ${i.blur}px ${e}`:`text-shadow: ${s} ${e}`}function uw(i){return[`-webkit-text-stroke-width: ${i.width}px`,`-webkit-text-stroke-color: ${X.shared.setValue(i.color).toHex()}`,`text-stroke-width: ${i.width}px`,`text-stroke-color: ${X.shared.setValue(i.color).toHex()}`,"paint-order: stroke"].join(";")}function Av(i,e){for(let t in i){let r=i[t],s=[];for(let n in r)aw[n]?s.push(aw[n](r[n])):ow[n]&&s.push(ow[n].replace("{{VALUE}}",r[n]));e.push(`${t} { ${s.join(";")} }`)}}var ow,aw,hw=b(()=>{je();ow={fontSize:"font-size: {{VALUE}}px",fontFamily:"font-family: {{VALUE}}",fontWeight:"font-weight: {{VALUE}}",fontStyle:"font-style: {{VALUE}}",fontVariant:"font-variant: {{VALUE}}",letterSpacing:"letter-spacing: {{VALUE}}px",align:"text-align: {{VALUE}}",padding:"padding: {{VALUE}}px",whiteSpace:"white-space: {{VALUE}}",lineHeight:"line-height: {{VALUE}}px",wordWrapWidth:"max-width: {{VALUE}}px"},aw={fill:i=>`color: ${X.shared.setValue(i).toHex()}`,breakWords:i=>`word-wrap: ${i?"break-all":"break-word"}`,stroke:uw,dropShadow:lw}});var Lc,dw=b(()=>{Ge();An();hw();Lc=class i extends st{constructor(e={}){super(e),this._cssOverrides=[],this.cssOverrides=e.cssOverrides??[],this.tagStyles=e.tagStyles??{}}set cssOverrides(e){this._cssOverrides=e instanceof Array?e:[e],this.update()}get cssOverrides(){return this._cssOverrides}update(){this._cssStyle=null,super.update()}clone(){return new i({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow?{...this.dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,cssOverrides:this.cssOverrides,tagStyles:{...this.tagStyles}})}get cssStyle(){return this._cssStyle||(this._cssStyle=cw(this)),this._cssStyle}addOverride(...e){let t=e.filter(r=>!this.cssOverrides.includes(r));t.length>0&&(this.cssOverrides.push(...t),this.update())}removeOverride(...e){let t=e.filter(r=>this.cssOverrides.includes(r));t.length>0&&(this.cssOverrides=this.cssOverrides.filter(r=>!t.includes(r)),this.update())}set fill(e){typeof e!="string"&&typeof e!="number"&&q("[HTMLTextStyle] only color fill is not supported by HTMLText"),super.fill=e}set stroke(e){e&&typeof e!="string"&&typeof e!="number"&&q("[HTMLTextStyle] only color stroke is not supported by HTMLText"),super.stroke=e}}});function fw(i,e){let t=e.fontFamily,r=[],s={},n=/font-family:([^;"\s]+)/g,o=i.match(n);function a(c){s[c]||(r.push(c),s[c]=!0)}if(Array.isArray(t))for(let c=0;c<t.length;c++)a(t[c]);else a(t);o&&o.forEach(c=>{let l=c.split(":")[1].trim();a(l)});for(let c in e.tagStyles){let l=e.tagStyles[c].fontFamily;a(l)}return r}var mw=b(()=>{"use strict"});async function pw(i){let t=await(await xe.get().fetch(i)).blob(),r=new FileReader;return await new Promise((n,o)=>{r.onloadend=()=>n(r.result),r.onerror=o,r.readAsDataURL(t)})}var gw=b(()=>{Ct()});async function Dd(i,e){let t=await pw(e);return`@font-face {
469
+ font-family: "${i.fontFamily}";
470
+ src: url('${t}');
471
+ font-weight: ${i.fontWeight};
472
+ font-style: ${i.fontStyle};
473
+ }`}var xw=b(()=>{gw()});async function yw(i,e,t){let r=i.filter(s=>ye.has(`${s}-and-url`)).map((s,n)=>{if(!Vc.has(s)){let{url:o}=ye.get(`${s}-and-url`);n===0?Vc.set(s,Dd({fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:s},o)):Vc.set(s,Dd({fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:s},o))}return Vc.get(s)});return(await Promise.all(r)).join(`
474
+ `)}var Vc,bw=b(()=>{ln();xw();Vc=new Map});function ww(i,e,t,r,s){let{domElement:n,styleElement:o,svgRoot:a}=s;n.innerHTML=`<style>${e.cssStyle}</style><div style='padding:0;'>${i}</div>`,n.setAttribute("style",`transform: scale(${t});transform-origin: top left; display: inline-block`),o.textContent=r;let{width:c,height:l}=s.image;return a.setAttribute("width",c.toString()),a.setAttribute("height",l.toString()),new XMLSerializer().serializeToString(a)}var _w=b(()=>{"use strict"});function Sw(i,e){let t=Rt.getOptimalCanvasAndContext(i.width,i.height,e),{context:r}=t;return r.clearRect(0,0,i.width,i.height),r.drawImage(i,0,0),t}var Tw=b(()=>{In()});function vw(i,e,t){return new Promise(async r=>{t&&await new Promise(s=>setTimeout(s,100)),i.onload=()=>{r()},i.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(e)}`,i.crossOrigin="anonymous"})}var kw=b(()=>{"use strict"});function Cw(i,e,t,r){r||(r=Pw||(Pw=new ls));let{domElement:s,styleElement:n,svgRoot:o}=r;s.innerHTML=`<style>${e.cssStyle};</style><div style='padding:0'>${i}</div>`,s.setAttribute("style","transform-origin: top left; display: inline-block"),t&&(n.textContent=t),document.body.appendChild(o);let a=s.getBoundingClientRect();o.remove();let c=e.padding*2;return{width:a.width-c,height:a.height-c}}var Pw,Ew=b(()=>{Rd()});var Dn,Aw=b(()=>{G();In();Ui();mn();iw();Ge();Hr();_d();Rd();dw();mw();bw();_w();Tw();kw();Ew();Dn=class{constructor(e){this._renderer=e,this._createCanvas=e.type===Mt.WEBGPU}getTexture(e){return this.getTexturePromise(e)}getTexturePromise(e){return this._buildTexturePromise(e)}async _buildTexturePromise(e){let{text:t,style:r,resolution:s,textureStyle:n}=e,o=be.get(ls),a=fw(t,r),c=await yw(a,r,Lc.defaultTextStyle),l=Cw(t,r,c,o),u=Math.ceil(Math.ceil(Math.max(1,l.width)+r.padding*2)*s),h=Math.ceil(Math.ceil(Math.max(1,l.height)+r.padding*2)*s),d=o.image,f=2;d.width=(u|0)+f,d.height=(h|0)+f;let m=ww(t,r,s,c,o);await vw(d,m,rw()&&a.length>0);let p=d,g;this._createCanvas&&(g=Sw(d,s));let y=Bc(g?g.canvas:p,d.width-f,d.height-f,s);return n&&(y.source.style=n),this._createCanvas&&(this._renderer.texture.initSource(y.source),Rt.returnCanvasAndContext(g)),be.return(o),y}returnTexturePromise(e){e.then(t=>{this._cleanUp(t)}).catch(()=>{q("HTMLTextSystem: Failed to clean texture")})}_cleanUp(e){Be.returnTexture(e,!0),e.source.resource=null,e.source.uploadMethodId="unknown"}destroy(){this._renderer=null}};Dn.extension={type:[A.WebGLSystem,A.WebGPUSystem,A.CanvasSystem],name:"htmlText"}});var Od=b(()=>{G();tw();Aw();L.add(Dn);L.add(Rn)});var Iw,us,Wc=b(()=>{Hi();Wi();fn();pe();Iw=class Mw extends It{constructor(...e){let t=e[0]??{};t instanceof Float32Array&&(N($,"use new MeshGeometry({ positions, uvs, indices }) instead"),t={positions:t,uvs:e[1],indices:e[2]}),t={...Mw.defaultOptions,...t};let r=t.positions||new Float32Array([0,0,1,0,1,1,0,1]),s=t.uvs;s||(t.positions?s=new Float32Array(r.length):s=new Float32Array([0,0,1,0,1,1,0,1]));let n=t.indices||new Uint32Array([0,1,2,0,2,3]),o=t.shrinkBuffersToFit,a=new ke({data:r,label:"attribute-mesh-positions",shrinkToFit:o,usage:ee.VERTEX|ee.COPY_DST}),c=new ke({data:s,label:"attribute-mesh-uvs",shrinkToFit:o,usage:ee.VERTEX|ee.COPY_DST}),l=new ke({data:n,label:"index-mesh-buffer",shrinkToFit:o,usage:ee.INDEX|ee.COPY_DST});super({attributes:{aPosition:{buffer:a,format:"float32x2",stride:8,offset:0},aUV:{buffer:c,format:"float32x2",stride:8,offset:0}},indexBuffer:l,topology:t.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(e){this.attributes.aPosition.buffer.data=e}get uvs(){return this.attributes.aUV.buffer.data}set uvs(e){this.attributes.aUV.buffer.data=e}get indices(){return this.indexBuffer.data}set indices(e){this.indexBuffer.data=e}};Iw.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};us=Iw});var On,c$,Bw,Fw=b(()=>{"use strict";On={name:"local-uniform-bit",vertex:{header:`
475
+
476
+ struct LocalUniforms {
477
+ uTransformMatrix:mat3x3<f32>,
478
+ uColor:vec4<f32>,
479
+ uRound:f32,
480
+ }
481
+
482
+ @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;
483
+ `,main:`
484
+ vColor *= localUniforms.uColor;
485
+ modelMatrix *= localUniforms.uTransformMatrix;
486
+ `,end:`
487
+ if(localUniforms.uRound == 1)
488
+ {
489
+ vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
490
+ }
491
+ `}},c$={...On,vertex:{...On.vertex,header:On.vertex.header.replace("group(1)","group(2)")}},Bw={name:"local-uniform-bit",vertex:{header:`
492
+
493
+ uniform mat3 uTransformMatrix;
494
+ uniform vec4 uColor;
495
+ uniform float uRound;
496
+ `,main:`
497
+ vColor *= uColor;
498
+ modelMatrix = uTransformMatrix;
499
+ `,end:`
500
+ if(uRound == 1.)
501
+ {
502
+ gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
503
+ }
504
+ `}}});var Rw,Dw,Ow=b(()=>{"use strict";Rw={name:"tiling-bit",vertex:{header:`
505
+ struct TilingUniforms {
506
+ uMapCoord:mat3x3<f32>,
507
+ uClampFrame:vec4<f32>,
508
+ uClampOffset:vec2<f32>,
509
+ uTextureTransform:mat3x3<f32>,
510
+ uSizeAnchor:vec4<f32>
511
+ };
512
+
513
+ @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;
514
+ @group(2) @binding(1) var uTexture: texture_2d<f32>;
515
+ @group(2) @binding(2) var uSampler: sampler;
516
+ `,main:`
517
+ uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;
518
+
519
+ position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;
520
+ `},fragment:{header:`
521
+ struct TilingUniforms {
522
+ uMapCoord:mat3x3<f32>,
523
+ uClampFrame:vec4<f32>,
524
+ uClampOffset:vec2<f32>,
525
+ uTextureTransform:mat3x3<f32>,
526
+ uSizeAnchor:vec4<f32>
527
+ };
528
+
529
+ @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;
530
+ @group(2) @binding(1) var uTexture: texture_2d<f32>;
531
+ @group(2) @binding(2) var uSampler: sampler;
532
+ `,main:`
533
+
534
+ var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);
535
+ coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;
536
+ var unclamped = coord;
537
+ coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);
538
+
539
+ var bias = 0.;
540
+
541
+ if(unclamped.x == coord.x && unclamped.y == coord.y)
542
+ {
543
+ bias = -32.;
544
+ }
545
+
546
+ outColor = textureSampleBias(uTexture, uSampler, coord, bias);
547
+ `}},Dw={name:"tiling-bit",vertex:{header:`
548
+ uniform mat3 uTextureTransform;
549
+ uniform vec4 uSizeAnchor;
550
+
551
+ `,main:`
552
+ uv = (uTextureTransform * vec3(aUV, 1.0)).xy;
553
+
554
+ position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;
555
+ `},fragment:{header:`
556
+ uniform sampler2D uTexture;
557
+ uniform mat3 uMapCoord;
558
+ uniform vec4 uClampFrame;
559
+ uniform vec2 uClampOffset;
560
+ `,main:`
561
+
562
+ vec2 coord = vUV + ceil(uClampOffset - vUV);
563
+ coord = (uMapCoord * vec3(coord, 1.0)).xy;
564
+ vec2 unclamped = coord;
565
+ coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);
566
+
567
+ outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0
568
+
569
+ `}}});var zd,Ud,Hc,zw=b(()=>{re();tc();Fw();oc();pn();xr();ve();Ow();Hc=class extends Bt{constructor(){zd??(zd=Xi({name:"tiling-sprite-shader",bits:[On,Rw,Ki]})),Ud??(Ud=Yi({name:"tiling-sprite-shader",bits:[Bw,Dw,Zi]}));let e=new Le({uMapCoord:{value:new F,type:"mat3x3<f32>"},uClampFrame:{value:new Float32Array([0,0,1,1]),type:"vec4<f32>"},uClampOffset:{value:new Float32Array([0,0]),type:"vec2<f32>"},uTextureTransform:{value:new F,type:"mat3x3<f32>"},uSizeAnchor:{value:new Float32Array([100,100,.5,.5]),type:"vec4<f32>"}});super({glProgram:Ud,gpuProgram:zd,resources:{localUniforms:new Le({uTransformMatrix:{value:new F,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),tilingUniforms:e,uTexture:O.EMPTY.source,uSampler:O.EMPTY.source.style}})}updateUniforms(e,t,r,s,n,o){let a=this.resources.tilingUniforms,c=o.width,l=o.height,u=o.textureMatrix,h=a.uniforms.uTextureTransform;h.set(r.a*c/e,r.b*c/t,r.c*l/e,r.d*l/t,r.tx/e,r.ty/t),h.invert(),a.uniforms.uMapCoord=u.mapCoord,a.uniforms.uClampFrame=u.uClampFrame,a.uniforms.uClampOffset=u.uClampOffset,a.uniforms.uTextureTransform=h,a.uniforms.uSizeAnchor[0]=e,a.uniforms.uSizeAnchor[1]=t,a.uniforms.uSizeAnchor[2]=s,a.uniforms.uSizeAnchor[3]=n,o&&(this.resources.uTexture=o.source,this.resources.uSampler=o.source.style)}}});var jc,Uw=b(()=>{Wc();jc=class extends us{constructor(){super({positions:new Float32Array([0,0,1,0,1,1,0,1]),uvs:new Float32Array([0,0,1,0,1,1,0,1]),indices:new Uint32Array([0,1,2,0,2,3])})}}});function Gw(i,e){let t=i.anchor.x,r=i.anchor.y;e[0]=-t*i.width,e[1]=-r*i.height,e[2]=(1-t)*i.width,e[3]=-r*i.height,e[4]=(1-t)*i.width,e[5]=(1-r)*i.height,e[6]=-t*i.width,e[7]=(1-r)*i.height}var Nw=b(()=>{"use strict"});function Lw(i,e,t,r){let s=0,n=i.length/(e||2),o=r.a,a=r.b,c=r.c,l=r.d,u=r.tx,h=r.ty;for(t*=e;s<n;){let d=i[t],f=i[t+1];i[t]=o*d+c*f+u,i[t+1]=a*d+l*f+h,t+=e,s++}}var Vw=b(()=>{"use strict"});function Ww(i,e){let t=i.texture,r=t.frame.width,s=t.frame.height,n=0,o=0;i.applyAnchorToTexture&&(n=i.anchor.x,o=i.anchor.y),e[0]=e[6]=-n,e[2]=e[4]=1-n,e[1]=e[3]=-o,e[5]=e[7]=1-o;let a=F.shared;a.copyFrom(i._tileTransform.matrix),a.tx/=i.width,a.ty/=i.height,a.invert(),a.scale(i.width/r,i.height/s),Lw(e,2,0,a)}var Hw=b(()=>{re();Vw()});var $c,Gd,zn,jw=b(()=>{G();hn();pc();mn();wn();gc();Wc();zw();Uw();Nw();Hw();$c=new jc,Gd=class{constructor(){this.canBatch=!0,this.geometry=new us({indices:$c.indices.slice(),positions:$c.positions.slice(),uvs:$c.uvs.slice()})}destroy(){this.geometry.destroy(),this.shader?.destroy()}},zn=class{constructor(e){this._state=ri.default2d,this._renderer=e}validateRenderable(e){let t=this._getTilingSpriteData(e),r=t.canBatch;this._updateCanBatch(e);let s=t.canBatch;if(s&&s===r){let{batchableMesh:n}=t;return!n._batcher.checkAndUpdateTexture(n,e.texture)}return r!==s}addRenderable(e,t){let r=this._renderer.renderPipes.batch;this._updateCanBatch(e);let s=this._getTilingSpriteData(e),{geometry:n,canBatch:o}=s;if(o){s.batchableMesh||(s.batchableMesh=new br);let a=s.batchableMesh;e.didViewUpdate&&(this._updateBatchableMesh(e),a.geometry=n,a.renderable=e,a.transform=e.groupTransform,a.setTexture(e._texture)),a.roundPixels=this._renderer._roundPixels|e._roundPixels,r.addToBatch(a,t)}else r.break(t),s.shader||(s.shader=new Hc),this.updateRenderable(e),t.add(e)}execute(e){let{shader:t}=this._getTilingSpriteData(e);t.groups[0]=this._renderer.globalUniforms.bindGroup;let r=t.resources.localUniforms.uniforms;r.uTransformMatrix=e.groupTransform,r.uRound=this._renderer._roundPixels|e._roundPixels,yr(e.groupColorAlpha,r.uColor,0),this._state.blendMode=Qt(e.groupBlendMode,e.texture._source),this._renderer.encoder.draw({geometry:$c,shader:t,state:this._state})}updateRenderable(e){let t=this._getTilingSpriteData(e),{canBatch:r}=t;if(r){let{batchableMesh:s}=t;e.didViewUpdate&&this._updateBatchableMesh(e),s._batcher.updateElement(s)}else if(e.didViewUpdate){let{shader:s}=t;s.updateUniforms(e.width,e.height,e._tileTransform.matrix,e.anchor.x,e.anchor.y,e.texture)}}_getTilingSpriteData(e){return e._gpuData[this._renderer.uid]||this._initTilingSpriteData(e)}_initTilingSpriteData(e){let t=new Gd;return t.renderable=e,e._gpuData[this._renderer.uid]=t,t}_updateBatchableMesh(e){let t=this._getTilingSpriteData(e),{geometry:r}=t,s=e.texture.source.style;s.addressMode!=="repeat"&&(s.addressMode="repeat",s.update()),Ww(e,r.uvs),Gw(e,r.positions)}destroy(){this._renderer=null}_updateCanBatch(e){let t=this._getTilingSpriteData(e),r=e.texture,s=!0;return this._renderer.type===Mt.WEBGL&&(s=this._renderer.context.supports.nonPowOf2wrapping),t.canBatch=r.textureMatrix.isSimple&&(s||r.source.isPowerOfTwo),t.canBatch}};zn.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"tilingSprite"}});var Nd=b(()=>{G();jw();L.add(zn)});var $w,Xw,Yw=b(()=>{pe();Wc();$w=class qw extends us{constructor(...e){super({});let t=e[0]??{};typeof t=="number"&&(N($,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),t={width:t,height:e[1],verticesX:e[2],verticesY:e[3]}),this.build(t)}build(e){e={...qw.defaultOptions,...e},this.verticesX=this.verticesX??e.verticesX,this.verticesY=this.verticesY??e.verticesY,this.width=this.width??e.width,this.height=this.height??e.height;let t=this.verticesX*this.verticesY,r=[],s=[],n=[],o=this.verticesX-1,a=this.verticesY-1,c=this.width/o,l=this.height/a;for(let h=0;h<t;h++){let d=h%this.verticesX,f=h/this.verticesX|0;r.push(d*c,f*l),s.push(d/o,f/a)}let u=o*a;for(let h=0;h<u;h++){let d=h%o,f=h/o|0,m=f*this.verticesX+d,p=f*this.verticesX+d+1,g=(f+1)*this.verticesX+d,y=(f+1)*this.verticesX+d+1;n.push(m,p,g,p,y,g)}this.buffers[0].data=new Float32Array(r),this.buffers[1].data=new Float32Array(s),this.indexBuffer.data=new Uint32Array(n),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}};$w.defaultOptions={width:100,height:100,verticesX:10,verticesY:10};Xw=$w});var Kw,Qw,Jw=b(()=>{Yw();Kw=class Zw extends Xw{constructor(e={}){e={...Zw.defaultOptions,...e},super({width:e.width,height:e.height,verticesX:4,verticesY:4}),this.update(e)}update(e){this.width=e.width??this.width,this.height=e.height??this.height,this._originalWidth=e.originalWidth??this._originalWidth,this._originalHeight=e.originalHeight??this._originalHeight,this._leftWidth=e.leftWidth??this._leftWidth,this._rightWidth=e.rightWidth??this._rightWidth,this._topHeight=e.topHeight??this._topHeight,this._bottomHeight=e.bottomHeight??this._bottomHeight,this._anchorX=e.anchor?.x,this._anchorY=e.anchor?.y,this.updateUvs(),this.updatePositions()}updatePositions(){let e=this.positions,{width:t,height:r,_leftWidth:s,_rightWidth:n,_topHeight:o,_bottomHeight:a,_anchorX:c,_anchorY:l}=this,u=s+n,h=t>u?1:t/u,d=o+a,f=r>d?1:r/d,m=Math.min(h,f),p=c*t,g=l*r;e[0]=e[8]=e[16]=e[24]=-p,e[2]=e[10]=e[18]=e[26]=s*m-p,e[4]=e[12]=e[20]=e[28]=t-n*m-p,e[6]=e[14]=e[22]=e[30]=t-p,e[1]=e[3]=e[5]=e[7]=-g,e[9]=e[11]=e[13]=e[15]=o*m-g,e[17]=e[19]=e[21]=e[23]=r-a*m-g,e[25]=e[27]=e[29]=e[31]=r-g,this.getBuffer("aPosition").update()}updateUvs(){let e=this.uvs;e[0]=e[8]=e[16]=e[24]=0,e[1]=e[3]=e[5]=e[7]=0,e[6]=e[14]=e[22]=e[30]=1,e[25]=e[27]=e[29]=e[31]=1;let t=1/this._originalWidth,r=1/this._originalHeight;e[2]=e[10]=e[18]=e[26]=t*this._leftWidth,e[9]=e[11]=e[13]=e[15]=r*this._topHeight,e[4]=e[12]=e[20]=e[28]=1-t*this._rightWidth,e[17]=e[19]=e[21]=e[23]=1-r*this._bottomHeight,this.getBuffer("aUV").update()}};Kw.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};Qw=Kw});var Ld,Un,e_=b(()=>{G();gc();Jw();Ld=class extends br{constructor(){super(),this.geometry=new Qw}destroy(){this.geometry.destroy()}},Un=class{constructor(e){this._renderer=e}addRenderable(e,t){let r=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,r),this._renderer.renderPipes.batch.addToBatch(r,t)}updateRenderable(e){let t=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){let t=this._getGpuSprite(e);return!t._batcher.checkAndUpdateTexture(t,e._texture)}_updateBatchableSprite(e,t){t.geometry.update(e),t.setTexture(e._texture)}_getGpuSprite(e){return e._gpuData[this._renderer.uid]||this._initGPUSprite(e)}_initGPUSprite(e){let t=e._gpuData[this._renderer.uid]=new Ld,r=t;return r.renderable=e,r.transform=e.groupTransform,r.texture=e._texture,r.roundPixels=this._renderer._roundPixels|e._roundPixels,e.didViewUpdate||this._updateBatchableSprite(e,r),t}destroy(){this._renderer=null}};Un.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"nineSliceSprite"}});var Vd=b(()=>{G();e_();L.add(Un)});var Gn,t_=b(()=>{G();Gn=class{constructor(e){this._renderer=e}push(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:t,filterEffect:e})}pop(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(e){e.action==="pushFilter"?this._renderer.filter.push(e):e.action==="popFilter"&&this._renderer.filter.pop()}destroy(){this._renderer=null}};Gn.extension={type:[A.WebGLPipes,A.WebGPUPipes,A.CanvasPipes],name:"filter"}});function r_(i,e){e.clear();let t=e.matrix;for(let r=0;r<i.length;r++){let s=i[r];s.globalDisplayStatus<7||(e.matrix=s.worldTransform,e.addBounds(s.bounds))}return e.matrix=t,e}var i_=b(()=>{"use strict"});var Iv,Wd,Nn,s_=b(()=>{G();re();un();fn();xr();ve();Ui();mn();dt();i_();Ge();Iv=new It({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])}),Wd=class{constructor(){this.skip=!1,this.inputTexture=null,this.backTexture=null,this.filters=null,this.bounds=new le,this.container=null,this.blendRequired=!1,this.outputRenderSurface=null,this.outputOffset={x:0,y:0},this.globalFrame={x:0,y:0,width:0,height:0}}},Nn=class{constructor(e){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new Le({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new it({}),this.renderer=e}get activeBackTexture(){return this._activeFilterData?.backTexture}push(e){let t=this.renderer,r=e.filterEffect.filters,s=this._pushFilterData();s.skip=!1,s.filters=r,s.container=e.container,s.outputRenderSurface=t.renderTarget.renderSurface;let n=t.renderTarget.renderTarget.colorTexture.source,o=n.resolution,a=n.antialias;if(r.length===0){s.skip=!0;return}let c=s.bounds;if(e.renderables?r_(e.renderables,c):e.filterEffect.filterArea?(c.clear(),c.addRect(e.filterEffect.filterArea),c.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,c),e.container){let p=(e.container.renderGroup||e.container.parentRenderGroup).cacheToLocalTransform;p&&c.applyMatrix(p)}if(this._calculateFilterBounds(s,t.renderTarget.rootViewPort,a,o,1),s.skip)return;let l=this._getPreviousFilterData(),u=o,h=0,d=0;l&&(h=l.bounds.minX,d=l.bounds.minY,u=l.inputTexture.source._resolution),s.outputOffset.x=c.minX-h,s.outputOffset.y=c.minY-d;let f=s.globalFrame;if(f.x=h*u,f.y=d*u,f.width=n.width*u,f.height=n.height*u,s.backTexture=O.EMPTY,s.blendRequired){t.renderTarget.finishRenderPass();let m=t.renderTarget.getRenderTarget(s.outputRenderSurface);s.backTexture=this.getBackTexture(m,c,l?.bounds)}s.inputTexture=Be.getOptimalTexture(c.width,c.height,s.resolution,s.antialias),t.renderTarget.bind(s.inputTexture,!0),t.globalUniforms.push({offset:c})}generateFilteredTexture({texture:e,filters:t}){let r=this._pushFilterData();this._activeFilterData=r,r.skip=!1,r.filters=t;let s=e.source,n=s.resolution,o=s.antialias;if(t.length===0)return r.skip=!0,e;let a=r.bounds;if(a.addRect(e.frame),this._calculateFilterBounds(r,a.rectangle,o,n,0),r.skip)return e;let c=n,l=0,u=0;r.outputOffset.x=-a.minX,r.outputOffset.y=-a.minY;let h=r.globalFrame;h.x=l*c,h.y=u*c,h.width=s.width*c,h.height=s.height*c,r.outputRenderSurface=Be.getOptimalTexture(a.width,a.height,r.resolution,r.antialias),r.backTexture=O.EMPTY,r.inputTexture=e,this.renderer.renderTarget.finishRenderPass(),this._applyFiltersToTexture(r,!0);let f=r.outputRenderSurface;return f.source.alphaMode="premultiplied-alpha",f}pop(){let e=this.renderer,t=this._popFilterData();t.skip||(e.globalUniforms.pop(),e.renderTarget.finishRenderPass(),this._activeFilterData=t,this._applyFiltersToTexture(t,!1),t.blendRequired&&Be.returnTexture(t.backTexture),Be.returnTexture(t.inputTexture))}getBackTexture(e,t,r){let s=e.colorTexture.source._resolution,n=Be.getOptimalTexture(t.width,t.height,s,!1),o=t.minX,a=t.minY;r&&(o-=r.minX,a-=r.minY),o=Math.floor(o*s),a=Math.floor(a*s);let c=Math.ceil(t.width*s),l=Math.ceil(t.height*s);return this.renderer.renderTarget.copyToTexture(e,n,{x:o,y:a},{width:c,height:l},{x:0,y:0}),n}applyFilter(e,t,r,s){let n=this.renderer,o=this._activeFilterData,a=o.outputRenderSurface,c=this._filterGlobalUniforms,l=c.uniforms,u=l.uOutputFrame,h=l.uInputSize,d=l.uInputPixel,f=l.uInputClamp,m=l.uGlobalFrame,p=l.uOutputTexture;a===r?(u[0]=o.outputOffset.x,u[1]=o.outputOffset.y):(u[0]=0,u[1]=0),u[2]=t.frame.width,u[3]=t.frame.height,h[0]=t.source.width,h[1]=t.source.height,h[2]=1/h[0],h[3]=1/h[1],d[0]=t.source.pixelWidth,d[1]=t.source.pixelHeight,d[2]=1/d[0],d[3]=1/d[1],f[0]=.5*d[2],f[1]=.5*d[3],f[2]=t.frame.width*h[2]-.5*d[2],f[3]=t.frame.height*h[3]-.5*d[3],m[0]=o.globalFrame.x,m[1]=o.globalFrame.y,m[2]=o.globalFrame.width,m[3]=o.globalFrame.height,r instanceof O&&(r.source.resource=null);let g=this.renderer.renderTarget.getRenderTarget(r);if(n.renderTarget.bind(r,!!s),r instanceof O?(p[0]=r.frame.width,p[1]=r.frame.height):(p[0]=g.width,p[1]=g.height),p[2]=g.isRoot?-1:1,c.update(),n.renderPipes.uniformBatch){let y=n.renderPipes.uniformBatch.getUboResource(c);this._globalFilterBindGroup.setResource(y,0)}else this._globalFilterBindGroup.setResource(c,0);this._globalFilterBindGroup.setResource(t.source,1),this._globalFilterBindGroup.setResource(t.source.style,2),e.groups[0]=this._globalFilterBindGroup,n.encoder.draw({geometry:Iv,shader:e,state:e._state,topology:"triangle-list"}),n.type===Mt.WEBGL&&n.renderTarget.finishRenderPass()}calculateSpriteMatrix(e,t){let r=this._activeFilterData,s=e.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),n=t.worldTransform.copyTo(F.shared),o=t.renderGroup||t.parentRenderGroup;return o&&o.cacheToLocalTransform&&n.prepend(o.cacheToLocalTransform),n.invert(),s.prepend(n),s.scale(1/t.texture.frame.width,1/t.texture.frame.height),s.translate(t.anchor.x,t.anchor.y),s}destroy(){}_applyFiltersToTexture(e,t){let r=e.inputTexture,s=e.bounds,n=e.filters;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(e.backTexture.source,3),n.length===1)n[0].apply(this,r,e.outputRenderSurface,t);else{let o=e.inputTexture,a=Be.getOptimalTexture(s.width,s.height,o.source._resolution,!1),c=a,l=0;for(l=0;l<n.length-1;++l){n[l].apply(this,o,c,!0);let h=o;o=c,c=h}n[l].apply(this,o,e.outputRenderSurface,t),Be.returnTexture(a)}}_calculateFilterBounds(e,t,r,s,n){let o=this.renderer,a=e.bounds,c=e.filters,l=1/0,u=0,h=!0,d=!1,f=!1,m=!0;for(let p=0;p<c.length;p++){let g=c[p];if(l=Math.min(l,g.resolution==="inherit"?s:g.resolution),u+=g.padding,g.antialias==="off"?h=!1:g.antialias==="inherit"&&h&&(h=r),g.clipToViewport||(m=!1),!!!(g.compatibleRenderers&o.type)){f=!1;break}if(g.blendRequired&&!(o.backBuffer?.useBackBuffer??!0)){q("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),f=!1;break}f=g.enabled||f,d||(d=g.blendRequired)}if(!f){e.skip=!0;return}if(m&&a.fitBounds(0,t.width/s,0,t.height/s),a.scale(l).ceil().scale(1/l).pad((u|0)*n),!a.isPositive){e.skip=!0;return}e.antialias=h,e.resolution=l,e.blendRequired=d}_popFilterData(){return this._filterStackIndex--,this._filterStack[this._filterStackIndex]}_getPreviousFilterData(){let e,t=this._filterStackIndex-1;for(;t>1&&(t--,e=this._filterStack[t],!!e.skip););return e}_pushFilterData(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new Wd),this._filterStackIndex++,e}};Nn.extension={type:[A.WebGLSystem,A.WebGPUSystem],name:"filter"}});var Hd=b(()=>{G();t_();s_();L.add(Nn);L.add(Gn)});var Mv={};var n_=b(()=>{kg();Nu();Rg();Og();Ua();Ha();Zh();Qh();rd();Pd();Fd();Od();Nd();Vd();Hd()});var Bv={};var a_=b(()=>{Nu();Ua();Ha();Zh();Qh();rd();Pd();Fd();Od();Nd();Vd();Hd()});function sl(i,e){return{error:t=>i.error({...e,...t}),rpcRequest:t=>i.rpcRequest({...e,...t}),rpcError:t=>i.rpcError({...e,...t})}}var Hn=()=>i=>({plain:i.none,errMessage:i.mix(i.brightRed,i.bold),errName:i.red,errStack:i.mix(i.red,i.dim),timestamp:i.blue,timestampErr:i.red});function sf(){return Hn()}var ir=Object.freeze({black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m",bgBlack:"\x1B[40m",bgRed:"\x1B[41m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m",bgWhite:"\x1B[47m",bgBrightBlack:"\x1B[100m",bgBrightRed:"\x1B[101m",bgBrightGreen:"\x1B[102m",bgBrightYellow:"\x1B[103m",bgBrightBlue:"\x1B[104m",bgBrightMagenta:"\x1B[105m",bgBrightCyan:"\x1B[106m",bgBrightWhite:"\x1B[107m",bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",inverse:"\x1B[7m",hidden:"\x1B[8m",strikethrough:"\x1B[9m",reset:"\x1B[0m"});var jn=()=>({none:i=>i,uncolor:C_,mix:E_,hex:A_,rgb:nf,bgRgb:I_});function C_(i){return i.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"")}function E_(...i){return e=>{for(let t of i)e=t(e);return e}}function A_(i){i=i.replace(/^#/,"");let e,t,r,s;if(i.length===3)e=parseInt(i.split("").map(n=>n+n).join(""),16);else if(i.length===6)e=parseInt(i,16);else throw new Error("Invalid hex color");return t=e>>16&255,r=e>>8&255,s=e&255,nf(t,r,s)}function nf(i,e,t){let r=`\x1B[38;2;${i};${e};${t}m`;return s=>`${r}${s}${ir.reset}`}function I_(i,e,t){let r=`\x1B[48;2;${i};${e};${t}m`;return s=>`${r}${s}${ir.reset}`}var xs={...Object.fromEntries(Object.entries(ir).map(([i])=>[i,e=>e])),...jn()};var ys={...Object.fromEntries(Object.entries(ir).map(([i,e])=>[i,t=>`${e}${t}${ir.reset}`])),...jn()};function nl(){return typeof Deno<"u"&&typeof Deno.version<"u"}function ol(){return typeof process<"u"&&process.versions&&process.versions.node}function of(){return ol()?process.env.FORCE_COLOR||process.stdout.isTTY&&process.env.TERM!=="dumb":nl()?Deno.env.get("FORCE_COLOR")||Deno.isatty(Deno.stdout.rid)&&Deno.env.get("TERM")!=="dumb":!1}var al=()=>of()?ys:xs;var $n=()=>({colors:i,theme:e})=>{let t=e(i);function r(o){let a=o.stack?`
570
+ `+o.stack+`
571
+ `:"";return[t.errName(o.name+":"),t.errMessage(o.message)].join(" ")+t.errStack(a)}function s(o){return o&&o instanceof Error?r(o):o}function n(o){return o&&o instanceof Error?r(o):t.errMessage(o)}return{stdout:o=>o.map(s),stderr:o=>o.map(n)}};function bs(...i){return e=>({stdout:t=>{for(let r of i)t=r(e).stdout(t);return t},stderr:t=>{for(let r of i)t=r(e).stderr(t);return t}})}function M_(){return{icon:"\u{1F6A8}",now:()=>Date.now()}}var qn=i=>({colors:e,theme:t})=>{let r={...M_(),...i},s=t(e),n=new Date(r.now()),o=n.getUTCFullYear().toString().padStart(4,"0"),a=(n.getUTCMonth()+1).toString().padStart(2,"0"),c=n.getUTCDate().toString().padStart(2,"0"),l=`${o}-${a}-${c}`,u=n.getUTCHours().toString().padStart(2,"0"),h=n.getUTCMinutes().toString().padStart(2,"0"),d=n.getUTCSeconds().toString().padStart(2,"0"),f=n.getUTCMilliseconds().toString().padStart(3,"0"),m=`${u}:${h}:${d}.${f}`,p=`${l}::${m}`;return{stdout:g=>[s.timestamp(p),...g],stderr:g=>[s.timestampErr(p),...[r.icon].filter(Boolean),...g]}};function af(){return bs($n(),qn())}var Xn=()=>({stdout:async i=>{await Deno.stdout.write(new TextEncoder().encode(i+`
572
+ `))},stderr:async i=>{await Deno.stderr.write(new TextEncoder().encode(i+`
573
+ `))}});var Yn=()=>({stdout:async i=>void process.stdout.write(i+`
574
+ `),stderr:async i=>void process.stderr.write(i+`
575
+ `)});var Kn=()=>({stdout:async i=>console.log(i),stderr:async i=>console.error(i)});var cf=()=>nl()?Xn():ol()?Yn():Kn();var lf=()=>({stdout:async()=>{},stderr:async()=>{}});function uf(){return()=>({stdout:i=>i,stderr:i=>i})}var ai=class i{static writers={auto:cf,void:lf,deno:Xn,node:Yn,console:Kn};static colors={auto:al,colorful:()=>ys,colorless:()=>xs};static themes={auto:sf,basic:Hn};static shapers={auto:af,none:uf,errors:$n,timestamp:qn};writer=i.writers.auto();colors=i.colors.auto();theme=i.themes.auto();shaper=i.shapers.auto();async log(...e){await this.writer.stdout(this.shaper(this).stdout(e).join(" "))}async error(...e){await this.writer.stderr(this.shaper(this).stderr(e).join(" "))}setWriter(e){return this.writer=e,this}setColors(e){return this.colors=e,this}setTheme(e){return this.theme=e,this}setShaper(...e){return this.shaper=bs(...e),this}};var ws=class extends ai{static dummy(){return new this().setWriter(ai.writers.void())}rpcRequest=async({request:e,...t})=>{let r=this.colors.none;this.log(...this.#e(t),r(`${e.method}()`))};rpcError=async({request:e,error:t,...r})=>{this.error(...this.#e(r),`${e.method}()`,t)};#e({meta:e,label:t,remote:r}){let s=this.colors.mix(this.colors.blue,this.colors.dim),n=this.colors.mix(this.colors.cyan,this.colors.dim);return[e?this.#t(e):void 0,t||void 0,r===void 0?void 0:r?s("<-"):n("->")].filter(Boolean)}#t(e){let{headers:t}=e.request;return[this.colors.yellow(`[${e.ip}]`),this.colors.green(t.origin?t.origin:"(no-origin)")].join(" ")}};var gt=class extends ws{rpcRequest=async()=>{}};var xt=Object.freeze({eq(i,e){if(i.length!==e.length)return!1;for(let t=0;t<=i.length;t++)if(i.at(t)!==e.at(t))return!1;return!0},random(i){return crypto.getRandomValues(new Uint8Array(i))}});var kr=Object.freeze({fromBytes(i){return[...i].map(e=>e.toString(16).padStart(2,"0")).join("")},toBytes(i){if(i.length%2!==0)throw new Error("must have even number of hex characters");let e=new Uint8Array(i.length/2);for(let t=0;t<i.length;t+=2)e[t/2]=parseInt(i.slice(t,t+2),16);return e},random(i=32){return this.fromBytes(xt.random(i))},string(i){return kr.fromBytes(i)},bytes(i){return kr.toBytes(i)}});var cl=58,Zn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",ll=Object.freeze({fromBytes(i){let e=BigInt("0x"+kr.fromBytes(i)),t="";for(;e>0;){let r=e%BigInt(cl);e=e/BigInt(cl),t=Zn[Number(r)]+t}for(let r of i)if(r===0)t=Zn[0]+t;else break;return t},toBytes(i){let e=BigInt(0);for(let o of i){let a=Zn.indexOf(o);if(a===-1)throw new Error(`Invalid character '${o}' in base58 string`);e=e*BigInt(cl)+BigInt(a)}let t=e.toString(16);t.length%2!==0&&(t="0"+t);let r=kr.toBytes(t),s=0;for(let o of i)if(o===Zn[0])s++;else break;let n=new Uint8Array(s+r.length);return n.set(r,s),n},random(i=32){return this.fromBytes(xt.random(i))},string(i){return ll.fromBytes(i)},bytes(i){return ll.toBytes(i)}});var hf=class{lexicon;static lexicons=Object.freeze({base2:{characters:"01"},hex:{characters:"0123456789abcdef"},base36:{characters:"0123456789abcdefghijklmnopqrstuvwxyz"},base58:{characters:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"},base62:{characters:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},base64url:{negativePrefix:"~",characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},base64:{characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",padding:{character:"=",size:4}}});lookup;negativePrefix;constructor(e){this.lexicon=e,this.lookup=Object.fromEntries([...e.characters].map((t,r)=>[t,r])),this.negativePrefix=e.negativePrefix??"-"}toBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let a=0,c=0,l=[];for(let u of e){if(u===this.lexicon.padding?.character)continue;let h=this.lookup[u];if(h===void 0)throw new Error(`Invalid character: ${u}`);for(a=a<<t|h,c+=t;c>=8;)c-=8,l.push(a>>c&255)}return new Uint8Array(l)}let r=0n,s=BigInt(this.lexicon.characters.length),n=!1;e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),n=!0);for(let a of e){let c=this.lookup[a];if(c===void 0)throw new Error(`Invalid character: ${a}`);r=r*s+BigInt(c)}let o=[];for(;r>0n;)o.unshift(Number(r%256n)),r=r/256n;return new Uint8Array(o)}fromBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let o=0,a=0,c="";for(let l of e)for(o=o<<8|l,a+=8;a>=t;){a-=t;let u=o>>a&(1<<t)-1;c+=this.lexicon.characters[u]}if(a>0){let l=o<<t-a&(1<<t)-1;c+=this.lexicon.characters[l]}if(this.lexicon.padding)for(;c.length%this.lexicon.padding.size!==0;)c+=this.lexicon.padding.character;return c}let r=0n;for(let o of e)r=(r<<8n)+BigInt(o);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;r>0n;)n=this.lexicon.characters[Number(r%s)]+n,r=r/s;return n}toInteger(e){if(!e)return 0;let t=0n,r=!1,s=BigInt(this.lexicon.characters.length);e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),r=!0);for(let n of e){let o=this.lookup[n];if(o===void 0)throw new Error(`Invalid character: ${n}`);t=t*s+BigInt(o)}return Number(r?-t:t)}fromInteger(e){e=Math.floor(e);let t=e<0,r=BigInt(t?-e:e);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;r>0n;)n=this.lexicon.characters[Number(r%s)]+n,r=r/s;return t?`${this.negativePrefix}${n}`:n}random(e=32){return this.fromBytes(xt.random(e))}};var ul=Object.freeze({fromBytes(i){return typeof btoa=="function"?btoa(String.fromCharCode(...i)):Buffer.from(i).toString("base64")},toBytes(i){return typeof atob=="function"?Uint8Array.from(atob(i),e=>e.charCodeAt(0)):Uint8Array.from(Buffer.from(i,"base64"))},random(i=32){return this.fromBytes(xt.random(i))},string(i){return ul.fromBytes(i)},bytes(i){return ul.toBytes(i)}});var df=Object.freeze({fromBytes(i){return new TextDecoder().decode(i)},toBytes(i){return new TextEncoder().encode(i)},string(i){return df.fromBytes(i)},bytes(i){return df.toBytes(i)}});var Qn=Object.freeze({set:i=>i!=null,unset:i=>i==null,boolean:i=>typeof i=="boolean",number:i=>typeof i=="number",string:i=>typeof i=="string",bigint:i=>typeof i=="bigint",object:i=>typeof i=="object"&&i!==null,array:i=>Array.isArray(i),fn:i=>typeof i=="function",symbol:i=>typeof i=="symbol"});var _s=class extends Error{milliseconds;name=this.constructor.name;constructor(e){super(`deadline exceeded (${(e/1e3).toFixed(1)} seconds)`),this.milliseconds=e}};function Jn(i,e){return i<=0||i===1/0?e():new Promise((t,r)=>{let s=setTimeout(()=>r(new _s(i)),i);e().then(t).catch(r).finally(()=>clearTimeout(s))})}function Pr(){let i,e,t=new Promise((s,n)=>{i=s,e=n});function r(s){return s.then(i).catch(e),t}return{promise:t,resolve:i,reject:e,entangle:r}}function ff(i,e){let t=i;for(let r of e)if(t=t[r],Qn.unset(t))break;return t}function B_(i){return{map:e=>mf(i,e),filter:e=>pf(i,e)}}B_.pipe=Object.freeze({map:i=>e=>mf(e,i),filter:i=>e=>pf(e,i)});var mf=(i,e)=>Object.fromEntries(Object.entries(i).map(([t,r])=>[t,e(r,t)])),pf=(i,e)=>Object.fromEntries(Object.entries(i).filter(([t,r])=>e(r,t)));function F_(){let i=new Set;function e(n){return i.add(n),()=>{i.delete(n)}}async function t(...n){await Promise.all([...i].map(o=>o(...n)))}async function r(){let{promise:n,resolve:o}=Pr(),a=e((...c)=>{o(c),a()});return n}function s(){i.clear()}return e.pub=t,e.sub=e,e.on=e,e.next=r,e.clear=s,t.pub=t,t.sub=e,t.on=e,t.next=r,t.clear=s,[t,e]}function eo(i){let e=F_()[0];return i&&e.sub(i),e}var Ot=class{#e=[];add(...e){return this.#e.push(...e),this}disposable(e){return this.bag(e,()=>e.dispose())}bag(e,t){return this.add(()=>t(e)),e}dispose(){for(let e of this.#e.reverse())e();this.#e=[]}};var sr;(function(i){i.version="2.0";function e(t){return"id"in t?t.id:null}i.getId=e,i.errorCodes={serverError:-32e3,unexposedError:-32001}})(sr||(sr={}));var to=class extends Error{name=this.constructor.name},Cr=class extends Error{name=this.constructor.name};async function gf({tap:i,request:e,action:t}){let r=sr.getId(e);try{let s=await t();return r===null?null:{id:r,result:s,jsonrpc:sr.version}}catch(s){return i.rpcError({request:e,error:s}),r===null?null:{id:r,jsonrpc:sr.version,error:s instanceof to?{code:sr.errorCodes.serverError,message:s.message}:{code:sr.errorCodes.unexposedError,message:"unexposed error"}}}}function ro(i){let e=i.tap??new gt;return async t=>{let r=t.method.split("."),s=ff(i.fns,r),n=async()=>await s(...t.params);return e.rpcRequest({request:t}),await gf({tap:e,request:t,action:n})}}var Er=Symbol("tune"),R_=Symbol("query"),D_=Symbol("notify"),O_=Symbol("settings");function xf(i){function e(t){let r={notify:void 0};return new Proxy(()=>{},{apply:(s,n,o)=>i(t,o,r),get:(s,n)=>{if(n!=="then")return n===Er?o=>(...a)=>i(t,a,{...r,...o}):n===D_?(...o)=>i(t,o,{...r,notify:!0}):n===R_?(...o)=>i(t,o,{...r,notify:!1}):n===O_?r:(s[n]||(s[n]=e([...t,n])),s[n])},set:(s,n,o)=>(s[n]=o,!0)})}return e([])}function Ar(i){let{endpoint:e,tap:t=new gt}=i,r=1;return xf(async(s,n,o)=>{let a=o.notify??i.notify??!1,c=o.transfer,l={jsonrpc:"2.0",method:s.join("."),params:n},u=a?l:{...l,id:r++};t.rpcRequest({request:u});let h=await e(u,{transfer:c});if(a&&!h)return null;if(!h)throw new Cr("response was null, but shouldn't be, because the request was not a notification");if("error"in h)throw new Cr(i.label?`${i.label}: ${h.error.message}`:h.error.message);return h.result})}function Ss(i){return Ar({endpoint:ro(i),tap:i.tap})}var Ir=class{recv=eo();sendRequest=eo();sendResponse=eo();static makeEntangledPair({origin:e="example.e280.org"}={}){let t=new this,r=new this,s=[t.sendRequest.sub(o=>r.recv(o,{origin:e})),t.sendResponse.sub(o=>r.recv(o,{origin:e})),r.sendRequest.sub(o=>t.recv(o,{origin:e})),r.sendResponse.sub(o=>t.recv(o,{origin:e}))];return[t,r,()=>s.forEach(o=>o())]}};function io(i,e){return i.addEventListener("message",e),()=>i.removeEventListener("message",e)}function yf(i,e){return async(t,{transfer:r}={})=>{if("id"in t){let s=Pr();return e(t,r,s.promise),i.wait(t.id,t.method).then(n=>(s.resolve(n),n))}else{let s=Promise.resolve(null);return e(t,r,s),s}}}function bf(i){let e=[],t=[];for(let r of Array.isArray(i)?i:[i])"method"in r?e.push(r):t.push(r);return{requests:e,responses:t}}async function wf(i,e){let t=(await Promise.all(e.map(async r=>i(r)))).filter(r=>r!==null);return t.length===0?null:t.length===1?t[0]:t}var ci=class extends Ir{#e=new Ot;constructor(e){super(),this.#e.add(this.sendRequest.sub((t,r)=>e.postMessage(t,r)),this.sendResponse.sub((t,r)=>e.postMessage(t,r)),io(e,t=>this.recv(t.data,t)))}dispose(){this.#e.dispose()}};var so=class{remote;transfer;constructor(e){this.remote=e}};var hl=Object.freeze({timeout:6e4,maxRequestBytes:1e7});var no=class{timeout;pending=new Map;constructor(e){this.timeout=e}async wait(e,t){let r=Pr();return this.pending.set(e,{method:t,deferred:r}),await Jn(this.timeout,()=>r.promise).catch(s=>{throw s instanceof _s&&(s.message=`request #${e} ${t}(), ${s.message}`),s})}deliverResponse(e){let t=this.pending.get(e.id);t&&("error"in e?t.deferred.reject(new Cr(e.error.message)):t.deferred.resolve(e))}};var Mr=class{options;remote;remoteEndpoint;#e;#t=new Ot;constructor(e){this.options=e;let{conduit:t,tap:r}=e;this.#e=new no(e.timeout??hl.timeout),this.remoteEndpoint=yf(this.#e,t.sendRequest.pub.bind(t.sendRequest)),this.remote=Ar({endpoint:this.remoteEndpoint,tap:r&&sl(r,{remote:!0})}),this.#t.add(t.recv.sub(s=>this.recv(s)))}async recv(e){let t=new so(this.remote),{conduit:r,rpc:s,tap:n}=this.options,{requests:o,responses:a}=bf(e);for(let h of a)this.#e.deliverResponse(h);if(!s)return;let c=await s(t),l=ro({fns:c,tap:n&&sl(n,{remote:!1})}),u=await wf(l,o);u&&await r.sendResponse(u,t.transfer)}dispose(){this.#t.dispose()}};var zt={derive:{host:i=>({host:i.remote.host,get transfer(){return i.transfer},set transfer(e){i.transfer=e}}),work:i=>({work:i.remote,get transfer(){return i.transfer},set transfer(e){i.transfer=e}})},mock:{host:()=>({host:void 0,transfer:void 0}),work:()=>({work:void 0,transfer:void 0})}};var Ut=new gt;async function _f(i,e,t={}){let r=t.tap??Ut,s=new Mr({tap:r,timeout:t.timeout??1/0,conduit:new ci(i.getSelf()),rpc:async n=>e(zt.derive.host(n))});return await s.remote.infra.ready(),s.remote.host}var yt=Object.freeze({eq(i,e){if(i.length!==e.length)return!1;for(let t=0;t<=i.length;t++)if(i.at(t)!==e.at(t))return!1;return!0},random(i){return crypto.getRandomValues(new Uint8Array(i))}});var Br=Object.freeze({fromBytes(i){return[...i].map(e=>e.toString(16).padStart(2,"0")).join("")},toBytes(i){if(i.length%2!==0)throw new Error("must have even number of hex characters");let e=new Uint8Array(i.length/2);for(let t=0;t<i.length;t+=2)e[t/2]=parseInt(i.slice(t,t+2),16);return e},random(i=32){return this.fromBytes(yt.random(i))},string(i){return Br.fromBytes(i)},bytes(i){return Br.toBytes(i)}});var dl=58,oo="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",fl=Object.freeze({fromBytes(i){let e=BigInt("0x"+Br.fromBytes(i)),t="";for(;e>0;){let r=e%BigInt(dl);e=e/BigInt(dl),t=oo[Number(r)]+t}for(let r of i)if(r===0)t=oo[0]+t;else break;return t},toBytes(i){let e=BigInt(0);for(let o of i){let a=oo.indexOf(o);if(a===-1)throw new Error(`Invalid character '${o}' in base58 string`);e=e*BigInt(dl)+BigInt(a)}let t=e.toString(16);t.length%2!==0&&(t="0"+t);let r=Br.toBytes(t),s=0;for(let o of i)if(o===oo[0])s++;else break;let n=new Uint8Array(s+r.length);return n.set(r,s),n},random(i=32){return this.fromBytes(yt.random(i))},string(i){return fl.fromBytes(i)},bytes(i){return fl.toBytes(i)}});var Sf=class{lexicon;static lexicons=Object.freeze({base2:{characters:"01"},hex:{characters:"0123456789abcdef"},base36:{characters:"0123456789abcdefghijklmnopqrstuvwxyz"},base58:{characters:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"},base62:{characters:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},base64url:{negativePrefix:"~",characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},base64:{characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",padding:{character:"=",size:4}}});lookup;negativePrefix;constructor(e){this.lexicon=e,this.lookup=Object.fromEntries([...e.characters].map((t,r)=>[t,r])),this.negativePrefix=e.negativePrefix??"-"}toBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let a=0,c=0,l=[];for(let u of e){if(u===this.lexicon.padding?.character)continue;let h=this.lookup[u];if(h===void 0)throw new Error(`Invalid character: ${u}`);for(a=a<<t|h,c+=t;c>=8;)c-=8,l.push(a>>c&255)}return new Uint8Array(l)}let r=0n,s=BigInt(this.lexicon.characters.length),n=!1;e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),n=!0);for(let a of e){let c=this.lookup[a];if(c===void 0)throw new Error(`Invalid character: ${a}`);r=r*s+BigInt(c)}let o=[];for(;r>0n;)o.unshift(Number(r%256n)),r=r/256n;return new Uint8Array(o)}fromBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let o=0,a=0,c="";for(let l of e)for(o=o<<8|l,a+=8;a>=t;){a-=t;let u=o>>a&(1<<t)-1;c+=this.lexicon.characters[u]}if(a>0){let l=o<<t-a&(1<<t)-1;c+=this.lexicon.characters[l]}if(this.lexicon.padding)for(;c.length%this.lexicon.padding.size!==0;)c+=this.lexicon.padding.character;return c}let r=0n;for(let o of e)r=(r<<8n)+BigInt(o);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;r>0n;)n=this.lexicon.characters[Number(r%s)]+n,r=r/s;return n}toInteger(e){if(!e)return 0;let t=0n,r=!1,s=BigInt(this.lexicon.characters.length);e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),r=!0);for(let n of e){let o=this.lookup[n];if(o===void 0)throw new Error(`Invalid character: ${n}`);t=t*s+BigInt(o)}return Number(r?-t:t)}fromInteger(e){e=Math.floor(e);let t=e<0,r=BigInt(t?-e:e);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;r>0n;)n=this.lexicon.characters[Number(r%s)]+n,r=r/s;return t?`${this.negativePrefix}${n}`:n}random(e=32){return this.fromBytes(yt.random(e))}};var ml=Object.freeze({fromBytes(i){return typeof btoa=="function"?btoa(String.fromCharCode(...i)):Buffer.from(i).toString("base64")},toBytes(i){return typeof atob=="function"?Uint8Array.from(atob(i),e=>e.charCodeAt(0)):Uint8Array.from(Buffer.from(i,"base64"))},random(i=32){return this.fromBytes(yt.random(i))},string(i){return ml.fromBytes(i)},bytes(i){return ml.toBytes(i)}});var Tf=Object.freeze({fromBytes(i){return new TextDecoder().decode(i)},toBytes(i){return new TextEncoder().encode(i)},string(i){return Tf.fromBytes(i)},bytes(i){return Tf.toBytes(i)}});var pl=Object.freeze({set:i=>i!=null,unset:i=>i==null,boolean:i=>typeof i=="boolean",number:i=>typeof i=="number",string:i=>typeof i=="string",bigint:i=>typeof i=="bigint",object:i=>typeof i=="object"&&i!==null,array:i=>Array.isArray(i),fn:i=>typeof i=="function",symbol:i=>typeof i=="symbol"});function Ts(){let i,e,t=new Promise((s,n)=>{i=s,e=n});function r(s){return s.then(i).catch(e),t}return{promise:t,resolve:i,reject:e,entangle:r}}function N_(i){return{map:e=>vf(i,e),filter:e=>kf(i,e)}}N_.pipe=Object.freeze({map:i=>e=>vf(e,i),filter:i=>e=>kf(e,i)});var vf=(i,e)=>Object.fromEntries(Object.entries(i).map(([t,r])=>[t,e(r,t)])),kf=(i,e)=>Object.fromEntries(Object.entries(i).filter(([t,r])=>e(r,t)));var li=class{worker;messenger;constructor(e,t){this.worker=e,this.messenger=t}static async make(e,t){let r=t.tap??Ut,s=t.label??"comrade",n=e.loadWorker(t.workerUrl,s),o=Ts(),a={async ready(){o.resolve()}},c=new Mr({tap:r,timeout:t.timeout??1/0,conduit:new ci(n),rpc:async l=>({infra:a,host:t.setupHost(zt.derive.work(l))})});return await o.promise,new this(n,c)}get work(){return this.messenger.remote}terminate(){this.worker.terminate()}};var ao=class{threads;static async make(e,t){let r=t.workerCount??e.guessOptimalThreadCount(),s=await Promise.all([...Array(r)].map(async(n,o)=>li.make(e,{...t,label:t.label??`${t.label??"comrade"}_${o+1}`})));return new this(s,{tap:t.tap})}work;#e=new Set;#t=[];constructor(e,t={}){this.threads=e;let r=t.tap??Ut,s=async(n,o)=>this.#r({request:n,prom:Ts(),transfer:o?.transfer});this.work=Ar({tap:r,endpoint:s}),e.forEach(n=>this.#e.add(n))}get threadCount(){return this.threads.length}terminate(){for(let e of this.threads)e.terminate()}#r(e){return this.#t.push(e),this.#i(),e.prom.promise}#i(){for(;this.#e.size>0&&this.#t.length>0;){let e=[...this.#e].pop();this.#e.delete(e);let t=this.#t.shift();this.#e.delete(e);let r=e.messenger.remoteEndpoint(t.request,{transfer:t.transfer});t.prom.entangle(r).finally(()=>{this.#e.add(e),this.#i()})}}};var Pf=i=>({thread:e=>li.make(i,e),cluster:e=>ao.make(i,e),worker:(e,t={})=>_f(i,e,t),work:e=>e,host:e=>e,mocks(e){let{setupWork:t,setupHost:r,tap:s=Ut}=e,n=zt.mock.host(),o=zt.mock.work();return o.work=Ss({tap:s,fns:t(n)}),n.host=Ss({tap:s,fns:r(o)}),{workShell:o,hostShell:n,work:o.work,host:n.host}},mockWork(e,t=Ut){let r=zt.mock.host(),s=zt.mock.work();return s.work=Ss({tap:t,fns:e(r)}),{workShell:s,hostShell:r,work:s.work,mockHost:n=>(r.host=Ss({tap:t,fns:n(s)}),{workShell:s,hostShell:r,work:s.work,host:r.host})}}});var Cf=()=>({getSelf(){return self},guessOptimalThreadCount(){let i=navigator.hardwareConcurrency??1;return Math.max(1,i-1)},loadWorker(i,e){return new window.Worker(i,{name:e,type:"module"})},async loadWasm(i){return WebAssembly.instantiateStreaming(fetch(i))}});var L_=Cf(),co=Pf(L_);function v(i){if(!i)throw new Error("Assertion failed.")}var uo=i=>{let e=(i%360+360)%360;if(e===0||e===90||e===180||e===270)return e;throw new Error(`Invalid rotation ${i}.`)},Pe=i=>i&&i[i.length-1];var fe=class i{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){let e=Math.floor(this.pos/8),t=this.bytes[e]??0,r=7-(this.pos&7),s=(t&1<<r)>>r;return this.pos++,s}readBits(e){if(e===1)return this.readBit();let t=0;for(let r=0;r<e;r++)t<<=1,t|=this.readBit();return t}writeBits(e,t){let r=this.pos+e;for(let s=this.pos;s<r;s++){let n=Math.floor(s/8),o=this.bytes[n],a=7-(s&7);o&=~(1<<a),o|=(t&1<<r-s-1)>>r-s-1<<a,this.bytes[n]=o}this.pos=r}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");let e=this.pos/8,t=this.bytes[e]??0;return this.pos+=8,t}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){let e=new i(this.bytes);return e.pos=this.pos,e}},D=i=>{let e=0;for(;i.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<e)-1+i.readBits(e)},ui=i=>{let e=D(i);return(e&1)===0?-(e>>1):e+1>>1};var nr=i=>i instanceof Uint8Array?i:i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i.buffer,i.byteOffset,i.byteLength),oe=i=>i instanceof DataView?i:i instanceof ArrayBuffer?new DataView(i):new DataView(i.buffer,i.byteOffset,i.byteLength),Fe=new TextDecoder,V_=new TextEncoder;var xl=i=>Object.fromEntries(Object.entries(i).map(([e,t])=>[t,e])),yl={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},ho=xl(yl),bl={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pg:16,hlg:18},fo=xl(bl),wl={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},mo=xl(wl);var _l=i=>i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer||ArrayBuffer.isView(i),et=class{constructor(){this.currentPromise=Promise.resolve()}async acquire(){let e,t=new Promise(s=>{e=s}),r=this.currentPromise;return this.currentPromise=t,await r,e}},Sl=i=>[...i].map(e=>e.toString(16).padStart(2,"0")).join(""),Tl=i=>(i=i>>1&1431655765|(i&1431655765)<<1,i=i>>2&858993459|(i&858993459)<<2,i=i>>4&252645135|(i&252645135)<<4,i=i>>8&16711935|(i&16711935)<<8,i=i>>16&65535|(i&65535)<<16,i>>>0),ae=(i,e,t)=>{let r=0,s=i.length-1,n=-1;for(;r<=s;){let o=r+s>>1,a=t(i[o]);a===e?(n=o,s=o-1):a<e?r=o+1:s=o-1}return n},Q=(i,e,t)=>{let r=0,s=i.length-1,n=-1;for(;r<=s;){let o=r+(s-r+1)/2|0;t(i[o])<=e?(n=o,r=o+1):s=o-1}return n},nt=(i,e,t)=>{let r=Q(i,t(e),t);i.splice(r+1,0,e)},Re=()=>{let i,e;return{promise:new Promise((r,s)=>{i=r,e=s}),resolve:i,reject:e}};var vl=(i,e)=>{for(let t=i.length-1;t>=0;t--)if(e(i[t]))return i[t]},po=(i,e)=>{for(let t=i.length-1;t>=0;t--)if(e(i[t]))return t;return-1},Ef=async function*(i){Symbol.iterator in i?yield*i[Symbol.iterator]():yield*i[Symbol.asyncIterator]()},Af=i=>{if(!(Symbol.iterator in i)&&!(Symbol.asyncIterator in i))throw new TypeError("Argument must be an iterable or async iterable.")},vs=i=>{throw new Error(`Unexpected value: ${i}`)};var kl=(i,e)=>({async next(){let t=await i.next();return t.done?{value:void 0,done:!0}:{value:e(t.value),done:!1}},return(){return i.return()},throw(t){return i.throw(t)},[Symbol.asyncIterator](){return this}}),go=(i,e,t)=>Math.max(e,Math.min(t,i)),Ce="und",Fr=(i,e)=>{let t=10**e;return Math.round(i*t)/t},If=(i,e)=>Math.round(i/e)*e,Mf=i=>{let e=0;for(;i;)e++,i>>=1;return e},W_=/^[a-z]{3}$/,xo=i=>W_.test(i),or=1e6*(1+Number.EPSILON),yo=(i,e)=>{let t={...i};for(let r in e)typeof i[r]=="object"&&i[r]!==null&&typeof e[r]=="object"&&e[r]!==null?t[r]=yo(i[r],e[r]):t[r]=e[r];return t},Pl=async(i,e,t)=>{let r=0;for(;;)try{return await fetch(i,e)}catch(s){r++;let n=t(r);if(n===null)throw s;if(console.error("Retrying failed fetch. Error:",s),!Number.isFinite(n)||n<0)throw new TypeError("Retry delay must be a non-negative finite number.");n>0&&await new Promise(o=>setTimeout(o,1e3*n))}};var lo=class{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}},gl=null,bo=()=>{if(gl!==null)return gl;let i=!!(typeof navigator<"u"&&navigator.vendor?.match(/apple/i)&&!navigator.userAgent?.match(/crios/i)&&!navigator.userAgent?.match(/fxios/i)&&!navigator.userAgent?.match(/Opera|OPT\//));return gl=i,i},Rr=(i,e)=>i!==-1?i:e,wo=(i,e,t,r)=>i<=r&&t<=e;var Bf=i=>{let e=atob(i),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t};var ar=class{constructor(e,t){this.data=e,this.mimeType=t}};var Ps=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],H_=["aac","opus","mp3","vorbis","flac"],mM=[...H_,...Ps];var Dr=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}];var Ff=".01.01.01.01.00",Rf=".0.110.01.01.01.0";var _o=i=>{let{codec:e,codecDescription:t,colorSpace:r,avcCodecInfo:s,hevcCodecInfo:n,vp9CodecInfo:o,av1CodecInfo:a}=i;if(e==="avc"){if(s){let c=new Uint8Array([s.avcProfileIndication,s.profileCompatibility,s.avcLevelIndication]);return`avc1.${Sl(c)}`}if(!t||t.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc1.${Sl(t.subarray(1,4))}`}else if(e==="hevc"){let c,l,u,h,d,f;if(n)c=n.generalProfileSpace,l=n.generalProfileIdc,u=Tl(n.generalProfileCompatibilityFlags),h=n.generalTierFlag,d=n.generalLevelIdc,f=[...n.generalConstraintIndicatorFlags];else{if(!t||t.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");let p=oe(t),g=p.getUint8(1);c=g>>6&3,l=g&31,u=Tl(p.getUint32(2)),h=g>>5&1,d=p.getUint8(12),f=[];for(let y=0;y<6;y++)f.push(p.getUint8(6+y))}let m="hev1.";for(m+=["","A","B","C"][c]+l,m+=".",m+=u.toString(16).toUpperCase(),m+=".",m+=h===0?"L":"H",m+=d;f.length>0&&f[f.length-1]===0;)f.pop();return f.length>0&&(m+=".",m+=f.map(p=>p.toString(16).toUpperCase()).join(".")),m}else{if(e==="vp8")return"vp8";if(e==="vp9"){if(!o){let y=i.width*i.height,x=Pe(Dr).level;for(let w of Dr)if(y<=w.maxPictureSize){x=w.level;break}return`vp09.00.${x.toString().padStart(2,"0")}.08`}let c=o.profile.toString().padStart(2,"0"),l=o.level.toString().padStart(2,"0"),u=o.bitDepth.toString().padStart(2,"0"),h=o.chromaSubsampling.toString().padStart(2,"0"),d=o.colourPrimaries.toString().padStart(2,"0"),f=o.transferCharacteristics.toString().padStart(2,"0"),m=o.matrixCoefficients.toString().padStart(2,"0"),p=o.videoFullRangeFlag.toString().padStart(2,"0"),g=`vp09.${c}.${l}.${u}.${h}`;return g+=`.${d}.${f}.${m}.${p}`,g.endsWith(Ff)&&(g=g.slice(0,-Ff.length)),g}else if(e==="av1"){if(!a){let w=i.width*i.height,_=Pe(Dr).level;for(let S of Dr)if(w<=S.maxPictureSize){_=S.level;break}return`av01.0.${_.toString().padStart(2,"0")}M.08`}let c=a.profile,l=a.level.toString().padStart(2,"0"),u=a.tier?"H":"M",h=a.bitDepth.toString().padStart(2,"0"),d=a.monochrome?"1":"0",f=100*a.chromaSubsamplingX+10*a.chromaSubsamplingY+1*(a.chromaSubsamplingX&&a.chromaSubsamplingY?a.chromaSamplePosition:0),m=r?.primaries?yl[r.primaries]:1,p=r?.transfer?bl[r.transfer]:1,g=r?.matrix?wl[r.matrix]:1,y=r?.fullRange?1:0,x=`av01.${c}.${l}${u}.${h}`;return x+=`.${d}.${f.toString().padStart(3,"0")}`,x+=`.${m.toString().padStart(2,"0")}`,x+=`.${p.toString().padStart(2,"0")}`,x+=`.${g.toString().padStart(2,"0")}`,x+=`.${y}`,x.endsWith(Rf)&&(x=x.slice(0,-Rf.length)),x}}throw new TypeError(`Unhandled codec '${e}'.`)};var So=i=>{let{codec:e,codecDescription:t,aacCodecInfo:r}=i;if(e==="aac"){if(!r)throw new TypeError("AAC codec info must be provided.");return r.isMpeg2?"mp4a.67":`mp4a.40.${El(t).objectType}`}else{if(e==="mp3")return"mp3";if(e==="opus")return"opus";if(e==="vorbis")return"vorbis";if(e==="flac")return"flac";if(e&&Ps.includes(e))return e}throw new TypeError(`Unhandled codec '${e}'.`)},ks=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Cl=[-1,1,2,3,4,5,6,8],El=i=>{if(!i||i.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");let e=new fe(i),t=e.readBits(5);t===31&&(t=32+e.readBits(6));let r=e.readBits(4),s=null;r===15?s=e.readBits(24):r<ks.length&&(s=ks[r]);let n=e.readBits(4),o=null;return n>=1&&n<=7&&(o=Cl[n]),{objectType:t,frequencyIndex:r,sampleRate:s,channelConfiguration:n,numberOfChannels:o}},Df=48e3,j_=/^pcm-([usf])(\d+)+(be)?$/,Of=i=>{if(v(Ps.includes(i)),i==="ulaw")return{dataType:"ulaw",sampleSize:1,littleEndian:!0,silentValue:255};if(i==="alaw")return{dataType:"alaw",sampleSize:1,littleEndian:!0,silentValue:213};let e=j_.exec(i);v(e);let t;e[1]==="u"?t="unsigned":e[1]==="s"?t="signed":t="float";let r=Number(e[2])/8,s=e[3]!=="be",n=i==="pcm-u8"?2**7:0;return{dataType:t,sampleSize:r,littleEndian:s,silentValue:n}};var hi;(function(i){i[i.IDR=5]="IDR",i[i.SPS=7]="SPS",i[i.PPS=8]="PPS",i[i.SPS_EXT=13]="SPS_EXT"})(hi||(hi={}));var De;(function(i){i[i.RASL_N=8]="RASL_N",i[i.RASL_R=9]="RASL_R",i[i.BLA_W_LP=16]="BLA_W_LP",i[i.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",i[i.VPS_NUT=32]="VPS_NUT",i[i.SPS_NUT=33]="SPS_NUT",i[i.PPS_NUT=34]="PPS_NUT",i[i.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",i[i.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT"})(De||(De={}));var vo=i=>{let e=[],t=0;for(;t<i.length;){let r=-1,s=0;for(let n=t;n<i.length-3;n++){if(i[n]===0&&i[n+1]===0&&i[n+2]===1){r=n,s=3;break}if(n<i.length-4&&i[n]===0&&i[n+1]===0&&i[n+2]===0&&i[n+3]===1){r=n,s=4;break}}if(r===-1)break;if(t>0&&r>t){let n=i.subarray(t,r);n.length>0&&e.push(n)}t=r+s}if(t<i.length){let r=i.subarray(t);r.length>0&&e.push(r)}return e},Uf=(i,e)=>{let t=[],r=0,s=new DataView(i.buffer,i.byteOffset,i.byteLength);for(;r+e<=i.length;){let n;e===1?n=s.getUint8(r):e===2?n=s.getUint16(r,!1):e===3?n=(s.getUint16(r,!1)<<8)+s.getUint8(r+2):e===4?n=s.getUint32(r,!1):(vs(e),v(!1)),r+=e;let o=i.subarray(r,r+n);t.push(o),r+=n}return t},Al=i=>{let e=[],t=i.length;for(let r=0;r<t;r++)r+2<t&&i[r]===0&&i[r+1]===0&&i[r+2]===3?(e.push(0,0),r+=2):e.push(i[r]);return new Uint8Array(e)};var $_=(i,e)=>{if(e.description){let s=(nr(e.description)[4]&3)+1;return Uf(i,s)}else return vo(i)},To=i=>i[0]&31,Gf=i=>{try{let e=vo(i),t=e.filter(d=>To(d)===hi.SPS),r=e.filter(d=>To(d)===hi.PPS),s=e.filter(d=>To(d)===hi.SPS_EXT);if(t.length===0||r.length===0)return null;let n=t[0],o=new fe(Al(n));if(o.skipBits(1),o.skipBits(2),o.readBits(5)!==7)return console.error("Invalid SPS NAL unit type"),null;let c=o.readAlignedByte(),l=o.readAlignedByte(),u=o.readAlignedByte(),h={configurationVersion:1,avcProfileIndication:c,profileCompatibility:l,avcLevelIndication:u,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:r,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if(c===100||c===110||c===122||c===144){D(o);let d=D(o);d===3&&o.skipBits(1);let f=D(o),m=D(o);h.chromaFormat=d,h.bitDepthLumaMinus8=f,h.bitDepthChromaMinus8=m,h.sequenceParameterSetExt=s}return h}catch(e){return console.error("Error building AVC Decoder Configuration Record:",e),null}};var Il=(i,e)=>{if(e.description){let s=(nr(e.description)[21]&3)+1;return Uf(i,s)}else return vo(i)},Gt=i=>i[0]>>1&63,Nf=i=>{try{let e=vo(i),t=e.filter(C=>Gt(C)===De.VPS_NUT),r=e.filter(C=>Gt(C)===De.SPS_NUT),s=e.filter(C=>Gt(C)===De.PPS_NUT),n=e.filter(C=>Gt(C)===De.PREFIX_SEI_NUT||Gt(C)===De.SUFFIX_SEI_NUT);if(r.length===0||s.length===0)return null;let o=r[0],a=new fe(Al(o));a.skipBits(16),a.readBits(4);let c=a.readBits(3),l=a.readBits(1),{general_profile_space:u,general_tier_flag:h,general_profile_idc:d,general_profile_compatibility_flags:f,general_constraint_indicator_flags:m,general_level_idc:p}=q_(a,c);D(a);let g=D(a);g===3&&a.skipBits(1),D(a),D(a),a.readBits(1)&&(D(a),D(a),D(a),D(a));let y=D(a),x=D(a);D(a);let _=a.readBits(1)?0:c;for(let C=_;C<=c;C++)D(a),D(a),D(a);D(a),D(a),D(a),D(a),D(a),D(a),a.readBits(1)&&a.readBits(1)&&X_(a),a.skipBits(1),a.skipBits(1),a.readBits(1)&&(a.skipBits(4),a.skipBits(4),D(a),D(a),a.skipBits(1));let S=D(a);if(Y_(a,S),a.readBits(1)){let C=D(a);for(let E=0;E<C;E++)D(a),a.skipBits(1)}a.skipBits(1),a.skipBits(1);let T=0;a.readBits(1)&&(T=Z_(a,c));let k=0;if(s.length>0){let C=s[0],E=new fe(Al(C));E.skipBits(16),D(E),D(E),E.skipBits(1),E.skipBits(1),E.skipBits(3),E.skipBits(1),E.skipBits(1),D(E),D(E),ui(E),E.skipBits(1),E.skipBits(1),E.readBits(1)&&D(E),ui(E),ui(E),E.skipBits(1),E.skipBits(1),E.skipBits(1),E.skipBits(1);let R=E.readBits(1),j=E.readBits(1);!R&&!j?k=0:R&&!j?k=2:!R&&j?k=3:k=0}let M=[...t.length?[{arrayCompleteness:1,nalUnitType:De.VPS_NUT,nalUnits:t}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:De.SPS_NUT,nalUnits:r}]:[],...s.length?[{arrayCompleteness:1,nalUnitType:De.PPS_NUT,nalUnits:s}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:Gt(n[0]),nalUnits:n}]:[]];return{configurationVersion:1,generalProfileSpace:u,generalTierFlag:h,generalProfileIdc:d,generalProfileCompatibilityFlags:f,generalConstraintIndicatorFlags:m,generalLevelIdc:p,minSpatialSegmentationIdc:T,parallelismType:k,chromaFormatIdc:g,bitDepthLumaMinus8:y,bitDepthChromaMinus8:x,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:c+1,temporalIdNested:l,lengthSizeMinusOne:3,arrays:M}}catch(e){return console.error("Error building HEVC Decoder Configuration Record:",e),null}},q_=(i,e)=>{let t=i.readBits(2),r=i.readBits(1),s=i.readBits(5),n=0;for(let u=0;u<32;u++)n=n<<1|i.readBits(1);let o=new Uint8Array(6);for(let u=0;u<6;u++)o[u]=i.readBits(8);let a=i.readBits(8),c=[],l=[];for(let u=0;u<e;u++)c.push(i.readBits(1)),l.push(i.readBits(1));if(e>0)for(let u=e;u<8;u++)i.skipBits(2);for(let u=0;u<e;u++)c[u]&&i.skipBits(88),l[u]&&i.skipBits(8);return{general_profile_space:t,general_tier_flag:r,general_profile_idc:s,general_profile_compatibility_flags:n,general_constraint_indicator_flags:o,general_level_idc:a}},X_=i=>{for(let e=0;e<4;e++)for(let t=0;t<(e===3?2:6);t++)if(!i.readBits(1))D(i);else{let s=Math.min(64,1<<4+(e<<1));e>1&&ui(i);for(let n=0;n<s;n++)ui(i)}},Y_=(i,e)=>{let t=[];for(let r=0;r<e;r++)t[r]=K_(i,r,e,t)},K_=(i,e,t,r)=>{let s=0,n=0,o=0;if(e!==0&&(n=i.readBits(1)),n){if(e===t){let c=D(i);o=e-(c+1)}else o=e-1;i.readBits(1),D(i);let a=r[o]??0;for(let c=0;c<=a;c++)i.readBits(1)||i.readBits(1);s=r[o]}else{let a=D(i),c=D(i);for(let l=0;l<a;l++)D(i),i.readBits(1);for(let l=0;l<c;l++)D(i),i.readBits(1);s=a+c}return s},Z_=(i,e)=>{if(i.readBits(1)&&i.readBits(8)===255&&(i.readBits(16),i.readBits(16)),i.readBits(1)&&i.readBits(1),i.readBits(1)&&(i.readBits(3),i.readBits(1),i.readBits(1)&&(i.readBits(8),i.readBits(8),i.readBits(8))),i.readBits(1)&&(D(i),D(i)),i.readBits(1),i.readBits(1),i.readBits(1),i.readBits(1)&&(D(i),D(i),D(i),D(i)),i.readBits(1)&&(i.readBits(32),i.readBits(32),i.readBits(1)&&D(i),i.readBits(1)&&Q_(i,!0,e)),i.readBits(1)){i.readBits(1),i.readBits(1),i.readBits(1);let t=D(i);return D(i),D(i),D(i),D(i),t}return 0},Q_=(i,e,t)=>{let r=!1,s=!1,n=!1;e&&(r=i.readBits(1)===1,s=i.readBits(1)===1,(r||s)&&(n=i.readBits(1)===1,n&&(i.readBits(8),i.readBits(5),i.readBits(1),i.readBits(5)),i.readBits(4),i.readBits(4),n&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5)));for(let o=0;o<=t;o++){let a=i.readBits(1)===1,c=!0;a||(c=i.readBits(1)===1);let l=!1;c?D(i):l=i.readBits(1)===1;let u=1;l||(u=D(i)+1),r&&zf(i,u,n),s&&zf(i,u,n)}},zf=(i,e,t)=>{for(let r=0;r<e;r++)D(i),D(i),t&&(D(i),D(i)),i.readBits(1)};var ko=i=>{let e=new fe(i);if(e.readBits(2)!==2)return null;let r=e.readBits(1),n=(e.readBits(1)<<1)+r;if(n===3&&e.skipBits(1),e.readBits(1)===1||e.readBits(1)!==0||(e.skipBits(2),e.readBits(24)!==4817730))return null;let l=8;n>=2&&(l=e.readBits(1)?12:10);let u=e.readBits(3),h=0,d=0;if(u!==7)if(d=e.readBits(1),n===1||n===3){let k=e.readBits(1),M=e.readBits(1);h=!k&&!M?3:k&&!M?2:1,e.skipBits(1)}else h=1;else h=3,d=1;let f=e.readBits(16),m=e.readBits(16),p=f+1,g=m+1,y=p*g,x=Pe(Dr).level;for(let T of Dr)if(y<=T.maxPictureSize){x=T.level;break}return{profile:n,level:x,bitDepth:l,chromaSubsampling:h,videoFullRangeFlag:d,colourPrimaries:u===2?1:u===1?6:2,transferCharacteristics:u===2?1:u===1?6:2,matrixCoefficients:u===7?0:u===2?1:u===1?6:2}},Lf=function*(i){let e=new fe(i),t=()=>{let r=0;for(let s=0;s<8;s++){let n=e.readAlignedByte();if(r|=(n&127)<<s*7,!(n&128))break;if(s===7&&n&128)return null}return r>=2**32-1?null:r};for(;e.getBitsLeft()>=8;){e.skipBits(1);let r=e.readBits(4),s=e.readBits(1),n=e.readBits(1);e.skipBits(1),s&&e.skipBits(8);let o;if(n){let a=t();if(a===null)return;o=a}else o=Math.floor(e.getBitsLeft()/8);v(e.pos%8===0),yield{type:r,data:i.subarray(e.pos/8,e.pos/8+o)},e.skipBits(o*8)}},Po=i=>{for(let{type:e,data:t}of Lf(i)){if(e!==1)continue;let r=new fe(t),s=r.readBits(3),n=r.readBits(1),o=r.readBits(1),a=0,c=0,l=0;if(o)a=r.readBits(5);else{if(r.readBits(1)&&(r.skipBits(32),r.skipBits(32),r.readBits(1)))return null;let y=r.readBits(1);y&&(l=r.readBits(5),r.skipBits(32),r.skipBits(5),r.skipBits(5));let x=r.readBits(5);for(let w=0;w<=x;w++){r.skipBits(12);let _=r.readBits(5);if(w===0&&(a=_),_>7){let T=r.readBits(1);w===0&&(c=T)}if(y&&r.readBits(1)){let k=l+1;r.skipBits(k),r.skipBits(k),r.skipBits(1)}r.readBits(1)&&r.skipBits(4)}}let u=r.readBits(1),h=8;s===2&&u?h=r.readBits(1)?12:10:s<=2&&(h=u?10:8);let d=0;s!==1&&(d=r.readBits(1));let f=1,m=1,p=0;return d||(s===0?(f=1,m=1):s===1?(f=0,m=0):h===12&&(f=r.readBits(1),f&&(m=r.readBits(1))),f&&m&&(p=r.readBits(2))),{profile:s,level:a,tier:c,bitDepth:h,monochrome:d,chromaSubsamplingX:f,chromaSubsamplingY:m,chromaSamplePosition:p}}return null},Vf=i=>{let e=oe(i),t=e.getUint8(9),r=e.getUint16(10,!0),s=e.getUint32(12,!0),n=e.getInt16(16,!0),o=e.getUint8(18),a=null;return o&&(a=i.subarray(19,21+t)),{outputChannelCount:t,preSkip:r,inputSampleRate:s,outputGain:n,channelMappingFamily:o,channelMappingTable:a}},J_=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Wf=i=>{let e=i[0]>>3;return{durationInSamples:J_[e]}},Hf=i=>{if(i.length<7)throw new Error("Setup header is too short.");if(i[0]!==5)throw new Error("Wrong packet type in Setup header.");if(String.fromCharCode(...i.slice(1,7))!=="vorbis")throw new Error("Invalid packet signature in Setup header.");let t=i.length,r=new Uint8Array(t);for(let h=0;h<t;h++)r[h]=i[t-1-h];let s=new fe(r),n=0;for(;s.getBitsLeft()>97;)if(s.readBits(1)===1){n=s.pos;break}if(n===0)throw new Error("Invalid Setup header: framing bit not found.");let o=0,a=!1,c=0;for(;s.getBitsLeft()>=97;){let h=s.pos,d=s.readBits(8),f=s.readBits(16),m=s.readBits(16);if(d>63||f!==0||m!==0){s.pos=h;break}if(s.skipBits(1),o++,o>64)break;s.clone().readBits(6)+1===o&&(a=!0,c=o)}if(!a)throw new Error("Invalid Setup header: mode header not found.");if(c>63)throw new Error(`Unsupported mode count: ${c}.`);let l=c;s.pos=0,s.skipBits(n);let u=Array(l).fill(0);for(let h=l-1;h>=0;h--)s.skipBits(40),u[h]=s.readBits(1);return{modeBlockflags:u}},jf=async(i,e)=>{switch(v(i.codec),i.codec){case"avc":{let t=await i.getDecoderConfig();return v(t),$_(e.data,t).some(n=>To(n)===hi.IDR)?"key":"delta"}case"hevc":{let t=await i.getDecoderConfig();return v(t),Il(e.data,t).some(n=>{let o=Gt(n);return De.BLA_W_LP<=o&&o<=De.RSV_IRAP_VCL23})?"key":"delta"}case"vp8":return(e.data[0]&1)===0?"key":"delta";case"vp9":{let t=new fe(e.data);if(t.readBits(2)!==2)return null;let r=t.readBits(1);return(t.readBits(1)<<1)+r===3&&t.skipBits(1),t.readBits(1)?null:t.readBits(1)===0?"key":"delta"}case"av1":{let t=!1;for(let{type:r,data:s}of Lf(e.data))if(r===1){let n=new fe(s);n.skipBits(4),t=!!n.readBits(1)}else if(r===3||r===6||r===7){if(t)return"key";let n=new fe(s);return n.readBits(1)?null:n.readBits(2)===0?"key":"delta"}return null}default:vs(i.codec),v(!1)}};var $f=i=>{let t=(i.hasVideo?"video/":i.hasAudio?"audio/":"application/")+(i.isQuickTime?"quicktime":"mp4");if(i.codecStrings.length>0){let r=[...new Set(i.codecStrings)];t+=`; codecs="${r.join(", ")}"`}return t};var Co=class{constructor(e){this.source=e}requestSlice(e,t){if(this.fileSize!==null&&e+t>this.fileSize)return null;let r=e+t,s=this.source._read(e,r);return s instanceof Promise?s.then(n=>n?new di(n.bytes,n.view,n.offset,e,r):null):s?new di(s.bytes,s.view,s.offset,e,r):null}requestSliceRange(e,t,r){if(this.fileSize!==null)return this.requestSlice(e,go(this.fileSize-e,t,r));{let s=this.requestSlice(e,r),n=o=>{if(o)return o;let a=l=>(v(l!==null),this.requestSlice(e,go(l-e,t,r))),c=this.source._retrieveSize();return c instanceof Promise?c.then(a):a(c)};return s instanceof Promise?s.then(n):n(s)}}},di=class i{constructor(e,t,r,s,n){this.bytes=e,this.view=t,this.offset=r,this.start=s,this.end=n,this.bufferPos=s-r}static tempFromBytes(e){return new i(e,oe(e),0,0,e.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}skip(e){this.bufferPos+=e}slice(e,t=this.end-e){if(e<this.start||e+t>this.end)throw new RangeError("Slicing outside of original slice.");return new i(this.bytes,this.view,this.offset,e,e+t)}},W=(i,e)=>{let t=i.bytes.subarray(i.bufferPos,i.bufferPos+e);return i.bufferPos+=e,t},U=i=>i.view.getUint8(i.bufferPos++),fi=(i,e)=>{let t=i.view.getUint16(i.bufferPos,e);return i.bufferPos+=2,t},Ee=i=>{let e=i.view.getUint16(i.bufferPos,!1);return i.bufferPos+=2,e},mi=i=>{let e=Ee(i),t=U(i);return e*256+t},Cs=i=>{let e=i.view.getInt16(i.bufferPos,!1);return i.bufferPos+=2,e},Nt=(i,e)=>{let t=i.view.getUint32(i.bufferPos,e);return i.bufferPos+=4,t},B=i=>{let e=i.view.getUint32(i.bufferPos,!1);return i.bufferPos+=4,e},Or=i=>{let e=i.view.getUint32(i.bufferPos,!0);return i.bufferPos+=4,e},Lt=i=>{let e=i.view.getInt32(i.bufferPos,!1);return i.bufferPos+=4,e},eS=i=>{let e=i.view.getInt32(i.bufferPos,!0);return i.bufferPos+=4,e},Ml=(i,e)=>{let t,r;return e?(t=Nt(i,!0),r=Nt(i,!0)):(r=Nt(i,!1),t=Nt(i,!1)),r*4294967296+t},Ye=i=>{let e=B(i),t=B(i);return e*4294967296+t},qf=i=>{let e=Lt(i),t=B(i);return e*4294967296+t},Xf=i=>{let e=Or(i);return eS(i)*4294967296+e},Yf=i=>{let e=i.view.getFloat32(i.bufferPos,!1);return i.bufferPos+=4,e},Eo=i=>{let e=i.view.getFloat64(i.bufferPos,!1);return i.bufferPos+=8,e},de=(i,e)=>{if(i.bufferPos+e>i.bytes.length)throw new RangeError("Reading past end of slice.");let t="";for(let r=0;r<e;r++)t+=String.fromCharCode(i.bytes[i.bufferPos++]);return t};var Vt=8,zr=16,bt=i=>{let e=B(i),t=de(i,4),r=8;e===1&&(e=Ye(i),r=16);let n=e-r;return n<0?null:{name:t,totalSize:e,headerSize:r,contentSize:n}},cr=i=>Lt(i)/65536,Ao=i=>Lt(i)/1073741824,Io=i=>{let e=0;for(let t=0;t<4;t++){e<<=7;let r=U(i);if(e|=r&127,(r&128)===0)break}return e},ot=i=>{let e=Ee(i);return i.skip(2),Fe.decode(W(i,e))},Kf=i=>{let e=bt(i);if(!e||e.name!=="data")return null;let t=B(i);i.skip(4);let r=W(i,e.contentSize-8);switch(t){case 1:return Fe.decode(r);case 2:return new TextDecoder("utf-16be").decode(r);case 13:return new ar(r,"image/jpeg");case 14:return new ar(r,"image/png");case 27:return new ar(r,"image/bmp");default:return r}};var I;(function(i){i[i.EBML=440786851]="EBML",i[i.EBMLVersion=17030]="EBMLVersion",i[i.EBMLReadVersion=17143]="EBMLReadVersion",i[i.EBMLMaxIDLength=17138]="EBMLMaxIDLength",i[i.EBMLMaxSizeLength=17139]="EBMLMaxSizeLength",i[i.DocType=17026]="DocType",i[i.DocTypeVersion=17031]="DocTypeVersion",i[i.DocTypeReadVersion=17029]="DocTypeReadVersion",i[i.Void=236]="Void",i[i.Segment=408125543]="Segment",i[i.SeekHead=290298740]="SeekHead",i[i.Seek=19899]="Seek",i[i.SeekID=21419]="SeekID",i[i.SeekPosition=21420]="SeekPosition",i[i.Duration=17545]="Duration",i[i.Info=357149030]="Info",i[i.TimestampScale=2807729]="TimestampScale",i[i.MuxingApp=19840]="MuxingApp",i[i.WritingApp=22337]="WritingApp",i[i.Tracks=374648427]="Tracks",i[i.TrackEntry=174]="TrackEntry",i[i.TrackNumber=215]="TrackNumber",i[i.TrackUID=29637]="TrackUID",i[i.TrackType=131]="TrackType",i[i.FlagEnabled=185]="FlagEnabled",i[i.FlagDefault=136]="FlagDefault",i[i.FlagForced=21930]="FlagForced",i[i.FlagLacing=156]="FlagLacing",i[i.Name=21358]="Name",i[i.Language=2274716]="Language",i[i.LanguageBCP47=2274717]="LanguageBCP47",i[i.CodecID=134]="CodecID",i[i.CodecPrivate=25506]="CodecPrivate",i[i.CodecDelay=22186]="CodecDelay",i[i.SeekPreRoll=22203]="SeekPreRoll",i[i.DefaultDuration=2352003]="DefaultDuration",i[i.Video=224]="Video",i[i.PixelWidth=176]="PixelWidth",i[i.PixelHeight=186]="PixelHeight",i[i.Audio=225]="Audio",i[i.SamplingFrequency=181]="SamplingFrequency",i[i.Channels=159]="Channels",i[i.BitDepth=25188]="BitDepth",i[i.SimpleBlock=163]="SimpleBlock",i[i.BlockGroup=160]="BlockGroup",i[i.Block=161]="Block",i[i.BlockAdditions=30113]="BlockAdditions",i[i.BlockMore=166]="BlockMore",i[i.BlockAdditional=165]="BlockAdditional",i[i.BlockAddID=238]="BlockAddID",i[i.BlockDuration=155]="BlockDuration",i[i.ReferenceBlock=251]="ReferenceBlock",i[i.Cluster=524531317]="Cluster",i[i.Timestamp=231]="Timestamp",i[i.Cues=475249515]="Cues",i[i.CuePoint=187]="CuePoint",i[i.CueTime=179]="CueTime",i[i.CueTrackPositions=183]="CueTrackPositions",i[i.CueTrack=247]="CueTrack",i[i.CueClusterPosition=241]="CueClusterPosition",i[i.Colour=21936]="Colour",i[i.MatrixCoefficients=21937]="MatrixCoefficients",i[i.TransferCharacteristics=21946]="TransferCharacteristics",i[i.Primaries=21947]="Primaries",i[i.Range=21945]="Range",i[i.Projection=30320]="Projection",i[i.ProjectionType=30321]="ProjectionType",i[i.ProjectionPoseRoll=30325]="ProjectionPoseRoll",i[i.Attachments=423732329]="Attachments",i[i.AttachedFile=24999]="AttachedFile",i[i.FileDescription=18046]="FileDescription",i[i.FileName=18030]="FileName",i[i.FileMediaType=18016]="FileMediaType",i[i.FileData=18012]="FileData",i[i.FileUID=18094]="FileUID",i[i.Chapters=272869232]="Chapters",i[i.Tags=307544935]="Tags",i[i.Tag=29555]="Tag",i[i.Targets=25536]="Targets",i[i.TargetTypeValue=26826]="TargetTypeValue",i[i.TargetType=25546]="TargetType",i[i.TagTrackUID=25541]="TagTrackUID",i[i.TagEditionUID=25545]="TagEditionUID",i[i.TagChapterUID=25540]="TagChapterUID",i[i.TagAttachmentUID=25542]="TagAttachmentUID",i[i.SimpleTag=26568]="SimpleTag",i[i.TagName=17827]="TagName",i[i.TagLanguage=17530]="TagLanguage",i[i.TagString=17543]="TagString",i[i.TagBinary=17541]="TagBinary"})(I||(I={}));var tS=[I.EBML,I.Segment],pi=[I.SeekHead,I.Info,I.Cluster,I.Tracks,I.Cues,I.Attachments,I.Chapters,I.Tags],Mo=[...tS,...pi];var Bl=8,Ve=2,at=2*Bl,Fl=i=>{let e=U(i);if(i.skip(-1),e===0)return null;let t=1,r=128;for(;(e&r)===0;)t++,r>>=1;return t},gi=i=>{let e=U(i);if(e===0)return null;let t=1,r=128;for(;(e&r)===0;)t++,r>>=1;let s=e&r-1;for(let n=1;n<t;n++)s*=256,s+=U(i);return s},J=(i,e)=>{if(e<1||e>8)throw new Error("Bad unsigned int size "+e);let t=0;for(let r=0;r<e;r++)t*=256,t+=U(i);return t},Zf=(i,e)=>{let t=J(i,e);return t&1<<e*8-1&&(t-=2**(e*8)),t},Bo=i=>{let e=Fl(i);return e===null?null:J(i,e)},Rl=i=>{let e=U(i);return e===255?e=null:(i.skip(-1),e=gi(i),e===72057594037927940&&(e=null)),e},ct=i=>{let e=Bo(i);if(e===null)return null;let t=Rl(i);return{id:e,size:t}},lr=(i,e)=>{let t=W(i,e),r=0;for(;r<e&&t[r]!==0;)r+=1;return String.fromCharCode(...t.subarray(0,r))},xi=(i,e)=>{let t=W(i,e),r=0;for(;r<e&&t[r]!==0;)r+=1;return Fe.decode(t.subarray(0,r))},Fo=(i,e)=>{if(e===0)return 0;if(e!==4&&e!==8)throw new Error("Bad float size "+e);return e===4?Yf(i):Eo(i)},Ro=async(i,e,t,r)=>{let s=new Set(t),n=e;for(;r===null||n<r;){let o=i.requestSliceRange(n,Ve,at);if(o instanceof Promise&&(o=await o),!o)break;let a=ct(o);if(!a)break;if(s.has(a.id))return{pos:n,found:!0};Wt(a.size),n=o.filePos+a.size}return{pos:r!==null&&r>n?r:n,found:!1}},Dl=async(i,e,t,r)=>{let n=new Set(t),o=e;for(;o<r;){let a=i.requestSliceRange(o,0,Math.min(65536,r-o));if(a instanceof Promise&&(a=await a),!a||a.length<Bl)break;for(let c=0;c<a.length-Bl;c++){a.filePos=o;let l=Bo(a);if(l!==null&&n.has(l))return o;o++}}return null},lt={avc:"V_MPEG4/ISO/AVC",hevc:"V_MPEGH/ISO/HEVC",vp8:"V_VP8",vp9:"V_VP9",av1:"V_AV1",aac:"A_AAC",mp3:"A_MPEG/L3",opus:"A_OPUS",vorbis:"A_VORBIS",flac:"A_FLAC","pcm-u8":"A_PCM/INT/LIT","pcm-s16":"A_PCM/INT/LIT","pcm-s16be":"A_PCM/INT/BIG","pcm-s24":"A_PCM/INT/LIT","pcm-s24be":"A_PCM/INT/BIG","pcm-s32":"A_PCM/INT/LIT","pcm-s32be":"A_PCM/INT/BIG","pcm-f32":"A_PCM/FLOAT/IEEE","pcm-f64":"A_PCM/FLOAT/IEEE",webvtt:"S_TEXT/WEBVTT"};function Wt(i){if(i===null)throw new Error("Undefined element size is used in a place where it is not supported.")}var Qf=i=>{let t=(i.hasVideo?"video/":i.hasAudio?"audio/":"application/")+(i.isWebM?"webm":"x-matroska");if(i.codecStrings.length>0){let r=[...new Set(i.codecStrings.filter(Boolean))];t+=`; codecs="${r.join(", ")}"`}return t};var rS={1:[-1,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],2:[-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],3:[-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1]},iS={1:[-1,32,48,56,64,80,96,112,128,144,160,176,192,224,256,-1],2:[-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1],3:[-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1]},sS={0:[11025,12e3,8e3,-1],2:[22050,24e3,16e3,-1],3:[44100,48e3,32e3,-1]},Jf=1483304551,em=1231971951,nS=(i,e,t,r)=>Math.floor(i===3?(12*e/t+r)*4:144*e/t+r),tm=(i,e)=>i===3?e===3?21:36:e===3?13:21,rm=(i,e)=>{let t=i>>>24,r=i>>>16&255,s=i>>>8&255,n=i&255;if(t!==255&&r!==255&&s!==255&&n!==255)return{header:null,bytesAdvanced:4};if(t!==255)return{header:null,bytesAdvanced:1};if((r&224)!==224)return{header:null,bytesAdvanced:1};let o=r>>3&3,a=r>>1&3,c=s>>4&15,l=s>>2&3,u=s>>1&1,h=n>>6&3,d=n>>4&3,f=n>>3&1,m=n>>2&1,p=n&3,g=o===3?rS[a]?.[c]:iS[a]?.[c];if(!g||g===-1)return{header:null,bytesAdvanced:1};let y=g*1e3,x=sS[o]?.[l];if(!x||x===-1)return{header:null,bytesAdvanced:1};let w=nS(a,y,x,u);if(e!==null&&e<w)return{header:null,bytesAdvanced:1};let _;return o===3?_=a===3?384:1152:a===3?_=384:a===2?_=1152:_=576,{header:{totalSize:w,mpegVersionId:o,layer:a,bitrate:y,frequencyIndex:l,sampleRate:x,channel:h,modeExtension:d,copyright:f,original:m,emphasis:p,audioSamplesInFrame:_},bytesAdvanced:1}};var Do=i=>{let e=2130706432,t=0;for(;e!==0;)t>>=1,t|=i&e,e>>=8;return t};var bi;(function(i){i[i.Unsynchronisation=128]="Unsynchronisation",i[i.ExtendedHeader=64]="ExtendedHeader",i[i.ExperimentalIndicator=32]="ExperimentalIndicator",i[i.Footer=16]="Footer"})(bi||(bi={}));var wi;(function(i){i[i.ISO_8859_1=0]="ISO_8859_1",i[i.UTF_16_WITH_BOM=1]="UTF_16_WITH_BOM",i[i.UTF_16_BE_NO_BOM=2]="UTF_16_BE_NO_BOM",i[i.UTF_8=3]="UTF_8"})(wi||(wi={}));var Es=128,Si=10,_i=["Blues","Classic rock","Country","Dance","Disco","Funk","Grunge","Hip-hop","Jazz","Metal","New age","Oldies","Other","Pop","Rhythm and blues","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death metal","Pranks","Soundtrack","Euro-techno","Ambient","Trip-hop","Vocal","Jazz & funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound clip","Gospel","Noise","Alternative rock","Bass","Soul","Punk","Space","Meditative","Instrumental pop","Instrumental rock","Ethnic","Gothic","Darkwave","Techno-industrial","Electronic","Pop-folk","Eurodance","Dream","Southern rock","Comedy","Cult","Gangsta","Top 40","Christian rap","Pop/funk","Jungle music","Native US","Cabaret","New wave","Psychedelic","Rave","Showtunes","Trailer","Lo-fi","Tribal","Acid punk","Acid jazz","Polka","Retro","Musical","Rock 'n' roll","Hard rock","Folk","Folk rock","National folk","Swing","Fast fusion","Bebop","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic rock","Progressive rock","Psychedelic rock","Symphonic rock","Slow rock","Big band","Chorus","Easy listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber music","Sonata","Symphony","Booty bass","Primus","Porn groove","Satire","Slow jam","Club","Tango","Samba","Folklore","Ballad","Power ballad","Rhythmic Soul","Freestyle","Duet","Punk rock","Drum solo","A cappella","Euro-house","Dance hall","Goa music","Drum & bass","Club-house","Hardcore techno","Terror","Indie","Britpop","Negerpunk","Polsk punk","Beat","Christian gangsta rap","Heavy metal","Black metal","Crossover","Contemporary Christian","Christian rock","Merengue","Salsa","Thrash metal","Anime","Jpop","Synthpop","Christmas","Art rock","Baroque","Bhangra","Big beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math rock","New romantic","Nu-breakz","Post-punk","Post-rock","Psytrance","Shoegaze","Space rock","Trop rock","World music","Neoclassical","Audiobook","Audio theatre","Neue Deutsche Welle","Podcast","Indie rock","G-Funk","Dubstep","Garage rock","Psybient"],As=async(i,e,t)=>{let r=e;for(;t===null||r<t;){let s=i.requestSlice(r,4);if(s instanceof Promise&&(s=await s),!s)break;let n=B(s),o=rm(n,i.fileSize!==null?i.fileSize-r:null);if(o.header)return{header:o.header,startPos:r};r+=o.bytesAdvanced}return null},sm=(i,e)=>{let t=i.filePos;e.raw??={},e.raw.TAG??=W(i,Es-3),i.filePos=t;let r=yi(i,30);r&&(e.title??=r);let s=yi(i,30);s&&(e.artist??=s);let n=yi(i,30);n&&(e.album??=n);let o=yi(i,4),a=Number.parseInt(o,10);Number.isInteger(a)&&a>0&&(e.date??=new Date(a,0,1));let c=W(i,30),l;if(c[28]===0&&c[29]!==0){let h=c[29];h>0&&(e.trackNumber??=h),i.skip(-30),l=yi(i,28),i.skip(2)}else i.skip(-30),l=yi(i,30);l&&(e.comment??=l);let u=U(i);u<_i.length&&(e.genre??=_i[u])},yi=(i,e)=>{let t=W(i,e),r=Rr(t.indexOf(0),t.length),s=t.subarray(0,r),n="";for(let o=0;o<s.length;o++)n+=String.fromCharCode(s[o]);return n.trimEnd()},Is=i=>{let e=i.filePos,t=de(i,3),r=U(i),s=U(i),n=U(i),o=B(i);if(t!=="ID3"||r===255||s===255||(o&2155905152)!==0)return i.filePos=e,null;let a=Do(o);return{majorVersion:r,revision:s,flags:n,size:a}},nm=(i,e,t)=>{if(![2,3,4].includes(e.majorVersion)){console.warn(`Unsupported ID3v2 major version: ${e.majorVersion}`);return}let r=W(i,e.size),s=new Ol(e,r);if(e.flags&bi.Footer&&s.removeFooter(),e.flags&bi.Unsynchronisation&&e.majorVersion===3&&s.ununsynchronizeAll(),e.flags&bi.ExtendedHeader){let n=s.readU32();e.majorVersion===3?s.pos+=n:s.pos+=n-4}for(;s.pos<=s.bytes.length-s.frameHeaderSize();){let n=s.readId3V2Frame();if(!n)break;let o=s.pos,a=s.pos+n.size,c=!1,l=!1,u=!1;if(e.majorVersion===3?(c=!!(n.flags&64),l=!!(n.flags&128)):e.majorVersion===4&&(c=!!(n.flags&4),l=!!(n.flags&8),u=!!(n.flags&2)||!!(e.flags&bi.Unsynchronisation)),c){console.warn(`Skipping encrypted ID3v2 frame ${n.id}`),s.pos=a;continue}if(l){console.warn(`Skipping compressed ID3v2 frame ${n.id}`),s.pos=a;continue}switch(u&&s.ununsynchronizeRegion(s.pos,a),t.raw??={},n.id[0]==="T"?t.raw[n.id]??=s.readId3V2EncodingAndText(a):t.raw[n.id]??=s.readBytes(n.size),s.pos=o,n.id){case"TIT2":case"TT2":t.title??=s.readId3V2EncodingAndText(a);break;case"TIT3":case"TT3":t.description??=s.readId3V2EncodingAndText(a);break;case"TPE1":case"TP1":t.artist??=s.readId3V2EncodingAndText(a);break;case"TALB":case"TAL":t.album??=s.readId3V2EncodingAndText(a);break;case"TPE2":case"TP2":t.albumArtist??=s.readId3V2EncodingAndText(a);break;case"TRCK":case"TRK":{let d=s.readId3V2EncodingAndText(a).split("/"),f=Number.parseInt(d[0],10),m=d[1]&&Number.parseInt(d[1],10);Number.isInteger(f)&&f>0&&(t.trackNumber??=f),m&&Number.isInteger(m)&&m>0&&(t.tracksTotal??=m)}break;case"TPOS":case"TPA":{let d=s.readId3V2EncodingAndText(a).split("/"),f=Number.parseInt(d[0],10),m=d[1]&&Number.parseInt(d[1],10);Number.isInteger(f)&&f>0&&(t.discNumber??=f),m&&Number.isInteger(m)&&m>0&&(t.discsTotal??=m)}break;case"TCON":case"TCO":{let h=s.readId3V2EncodingAndText(a),d=/^\((\d+)\)/.exec(h);if(d){let f=Number.parseInt(d[1]);if(_i[f]!==void 0){t.genre??=_i[f];break}}if(d=/^\d+$/.exec(h),d){let f=Number.parseInt(d[0]);if(_i[f]!==void 0){t.genre??=_i[f];break}}t.genre??=h}break;case"TDRC":case"TDAT":{let h=s.readId3V2EncodingAndText(a),d=new Date(h);Number.isNaN(d.getTime())||(t.date??=d)}break;case"TYER":case"TYE":{let h=s.readId3V2EncodingAndText(a),d=Number.parseInt(h,10);Number.isInteger(d)&&(t.date??=new Date(d,0,1))}break;case"USLT":case"ULT":{let h=s.readU8();s.pos+=3,s.readId3V2Text(h,a),t.lyrics??=s.readId3V2Text(h,a)}break;case"COMM":case"COM":{let h=s.readU8();s.pos+=3,s.readId3V2Text(h,a),t.comment??=s.readId3V2Text(h,a)}break;case"APIC":case"PIC":{let h=s.readId3V2TextEncoding(),d;if(e.majorVersion===2){let g=s.readAscii(3);d=g==="PNG"?"image/png":g==="JPG"?"image/jpeg":"image/*"}else d=s.readId3V2Text(h,a);let f=s.readU8(),m=s.readId3V2Text(h,a).trimEnd(),p=a-s.pos;if(p>=0){let g=s.readBytes(p);t.images||(t.images=[]),t.images.push({data:g,mimeType:d,kind:f===3?"coverFront":f===4?"coverBack":"unknown",description:m})}}break;default:s.pos+=n.size;break}s.pos=a}},Ol=class{constructor(e,t){this.header=e,this.bytes=t,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}frameHeaderSize(){return this.header.majorVersion===2?6:10}ununsynchronizeAll(){let e=[];for(let t=0;t<this.bytes.length;t++){let r=this.bytes[t];e.push(r),r===255&&t!==this.bytes.length-1&&this.bytes[t]===0&&t++}this.bytes=new Uint8Array(e),this.view=new DataView(this.bytes.buffer)}ununsynchronizeRegion(e,t){let r=[];for(let o=e;o<t;o++){let a=this.bytes[o];r.push(a),a===255&&o!==t-1&&this.bytes[o+1]===0&&o++}let s=this.bytes.subarray(0,e),n=this.bytes.subarray(t);this.bytes=new Uint8Array(s.length+r.length+n.length),this.bytes.set(s,0),this.bytes.set(r,s.length),this.bytes.set(n,s.length+r.length),this.view=new DataView(this.bytes.buffer)}removeFooter(){this.bytes=this.bytes.subarray(0,this.bytes.length-Si),this.view=new DataView(this.bytes.buffer)}readBytes(e){let t=this.bytes.subarray(this.pos,this.pos+e);return this.pos+=e,t}readU8(){let e=this.view.getUint8(this.pos);return this.pos+=1,e}readU16(){let e=this.view.getUint16(this.pos,!1);return this.pos+=2,e}readU24(){let e=this.view.getUint16(this.pos,!1),t=this.view.getUint8(this.pos+1);return this.pos+=3,e*256+t}readU32(){let e=this.view.getUint32(this.pos,!1);return this.pos+=4,e}readAscii(e){let t="";for(let r=0;r<e;r++)t+=String.fromCharCode(this.view.getUint8(this.pos+r));return this.pos+=e,t}readId3V2Frame(){if(this.header.majorVersion===2){let e=this.readAscii(3);if(e==="\0\0\0")return null;let t=this.readU24();return{id:e,size:t,flags:0}}else{let e=this.readAscii(4);if(e==="\0\0\0\0")return null;let t=this.readU32(),r=this.header.majorVersion===4?Do(t):t,s=this.readU16(),n=this.pos,o=a=>{let c=this.pos+a;if(c>this.bytes.length)return!1;if(c<=this.bytes.length-this.frameHeaderSize()){this.pos+=a;let l=this.readAscii(4);if(l!=="\0\0\0\0"&&!/[0-9A-Z]{4}/.test(l))return!1}return!0};if(!o(r)){let a=this.header.majorVersion===4?t:Do(t);o(a)&&(r=a)}return this.pos=n,{id:e,size:r,flags:s}}}readId3V2TextEncoding(){let e=this.readU8();if(e>3)throw new Error(`Unsupported text encoding: ${e}`);return e}readId3V2Text(e,t){let r=this.pos,s=this.readBytes(t);switch(e){case wi.ISO_8859_1:{let n="";for(let o=0;o<s.length;o++){let a=s[o];if(a===0){this.pos=r+o+1;break}n+=String.fromCharCode(a)}return n}case wi.UTF_16_WITH_BOM:if(s[0]===255&&s[1]===254){let n=new TextDecoder("utf-16le"),o=Rr(s.findIndex((a,c)=>a===0&&s[c+1]===0&&c%2===0),s.length);return this.pos=r+Math.min(o+2,s.length),n.decode(s.subarray(2,o))}else if(s[0]===254&&s[1]===255){let n=new TextDecoder("utf-16be"),o=Rr(s.findIndex((a,c)=>a===0&&s[c+1]===0&&c%2===0),s.length);return this.pos=r+Math.min(o+2,s.length),n.decode(s.subarray(2,o))}else{let n=Rr(s.findIndex(o=>o===0),s.length);return this.pos=r+Math.min(n+1,s.length),Fe.decode(s.subarray(0,n))}case wi.UTF_16_BE_NO_BOM:{let n=new TextDecoder("utf-16be"),o=Rr(s.findIndex((a,c)=>a===0&&s[c+1]===0&&c%2===0),s.length);return this.pos=r+Math.min(o+2,s.length),n.decode(s.subarray(0,o))}case wi.UTF_8:{let n=Rr(s.findIndex(o=>o===0),s.length);return this.pos=r+Math.min(n+1,s.length),Fe.decode(s.subarray(0,n))}}}readId3V2EncodingAndText(e){if(this.pos>=e)return"";let t=this.readId3V2TextEncoding();return this.readId3V2Text(t,e)}};var zl=1399285583,oS=79764919,om=new Uint32Array(256);for(let i=0;i<256;i++){let e=i<<24;for(let t=0;t<8;t++)e=e&2147483648?e<<1^oS:e<<1;om[i]=e>>>0&4294967295}var am=i=>{let e=oe(i),t=e.getUint32(22,!0);e.setUint32(22,0,!0);let r=0;for(let s=0;s<i.length;s++){let n=i[s];r=(r<<8^om[r>>>24^n])>>>0}return e.setUint32(22,t,!0),r},cm=(i,e,t)=>{let r=0,s=null;if(i.length>0)if(e.codec==="vorbis"){v(e.vorbisInfo);let n=e.vorbisInfo.modeBlockflags.length,a=(1<<Mf(n-1))-1<<1,c=(i[0]&a)>>1;if(c>=e.vorbisInfo.modeBlockflags.length)throw new Error("Invalid mode number.");let l=t,u=e.vorbisInfo.modeBlockflags[c];if(s=e.vorbisInfo.blocksizes[u],u===1){let h=(a|1)+1,d=i[0]&h?1:0;l=e.vorbisInfo.blocksizes[d]}r=l!==null?l+s>>2:0}else e.codec==="opus"&&(r=Wf(i).durationInSamples);return{durationInSamples:r,vorbisBlockSize:s}},lm=i=>{let e="audio/ogg";if(i.codecStrings){let t=[...new Set(i.codecStrings)];e+=`; codecs="${t.join(", ")}"`}return e};var ur=27,Ur=282,um=Ur+65025,Ti=i=>{let e=i.filePos;if(Or(i)!==zl)return null;i.skip(1);let r=U(i),s=Xf(i),n=Or(i),o=Or(i),a=Or(i),c=U(i),l=new Uint8Array(c);for(let f=0;f<c;f++)l[f]=U(i);let u=27+c,h=l.reduce((f,m)=>f+m,0),d=u+h;return{headerStartPos:e,totalSize:d,dataStartPos:e+u,dataSize:h,headerType:r,granulePosition:s,serialNumber:n,sequenceNumber:o,checksum:a,lacingValues:l}},hm=(i,e)=>{for(;i.filePos<e-3;){let t=Or(i),r=t&255,s=t>>>8&255,n=t>>>16&255,o=t>>>24&255,a=79;if(!(r!==a&&s!==a&&n!==a&&o!==a)){if(i.skip(-4),t===zl)return!0;i.skip(1)}}return!1};var We=class{constructor(e){this.input=e}};var Oo=[],Ul=[];var Ae=new Uint8Array(0),ce=class i{constructor(e,t,r,s,n=-1,o){if(this.data=e,this.type=t,this.timestamp=r,this.duration=s,this.sequenceNumber=n,e===Ae&&o===void 0)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(o===void 0&&(o=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(t!=="key"&&t!=="delta")throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(r))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(s)||s<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(n))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(o)||o<0)throw new TypeError("byteLength must be a non-negative integer.");this.byteLength=o}get isMetadataOnly(){return this.data===Ae}get microsecondTimestamp(){return Math.trunc(or*this.timestamp)}get microsecondDuration(){return Math.trunc(or*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if(typeof EncodedAudioChunk>"u")throw new Error("Your browser does not support EncodedAudioChunk.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e){if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");let t=new Uint8Array(e.byteLength);return e.copyTo(t),new i(t,e.type,e.timestamp/1e6,(e.duration??0)/1e6)}clone(e){if(e!==void 0&&(typeof e!="object"||e===null))throw new TypeError("options, when provided, must be an object.");if(e?.timestamp!==void 0&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(e?.duration!==void 0&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");return new i(this.data,this.type,e?.timestamp??this.timestamp,e?.duration??this.duration,this.sequenceNumber,this.byteLength)}};var Bs=class i{get displayWidth(){return this.rotation%180===0?this.codedWidth:this.codedHeight}get displayHeight(){return this.rotation%180===0?this.codedHeight:this.codedWidth}get microsecondTimestamp(){return Math.trunc(or*this.timestamp)}get microsecondDuration(){return Math.trunc(or*this.duration)}constructor(e,t){if(this._closed=!1,e instanceof ArrayBuffer||ArrayBuffer.isView(e)){if(!t||typeof t!="object")throw new TypeError("init must be an object.");if(!("format"in t)||typeof t.format!="string")throw new TypeError("init.format must be a string.");if(!Number.isInteger(t.codedWidth)||t.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(t.codedHeight)||t.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(t.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=nr(e).slice(),this.format=t.format,this.codedWidth=t.codedWidth,this.codedHeight=t.codedHeight,this.rotation=t.rotation??0,this.timestamp=t.timestamp,this.duration=t.duration??0,this.colorSpace=new VideoColorSpace(t.colorSpace)}else if(typeof VideoFrame<"u"&&e instanceof VideoFrame){if(t?.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(t?.timestamp!==void 0&&!Number.isFinite(t?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(t?.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=e,this.format=e.format,this.codedWidth=e.displayWidth,this.codedHeight=e.displayHeight,this.rotation=t?.rotation??0,this.timestamp=t?.timestamp??e.timestamp/1e6,this.duration=t?.duration??(e.duration??0)/1e6,this.colorSpace=e.colorSpace}else if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof SVGImageElement<"u"&&e instanceof SVGImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas){if(!t||typeof t!="object")throw new TypeError("init must be an object.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(t.duration!==void 0&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(typeof VideoFrame<"u")return new i(new VideoFrame(e,{timestamp:Math.trunc(t.timestamp*or),duration:Math.trunc((t.duration??0)*or)}),t);let r=0,s=0;if("naturalWidth"in e?(r=e.naturalWidth,s=e.naturalHeight):"videoWidth"in e?(r=e.videoWidth,s=e.videoHeight):"width"in e&&(r=Number(e.width),s=Number(e.height)),!r||!s)throw new TypeError("Could not determine dimensions.");let n=new OffscreenCanvas(r,s),o=n.getContext("2d",{alpha:!1,willReadFrequently:!0});v(o),o.drawImage(e,0,0),this._data=n,this.format="RGBX",this.codedWidth=r,this.codedHeight=s,this.rotation=t.rotation??0,this.timestamp=t.timestamp,this.duration=t.duration??0,this.colorSpace=new VideoColorSpace({matrix:"rgb",primaries:"bt709",transfer:"iec61966-2-1",fullRange:!0})}else throw new TypeError("Invalid data type: Must be a BufferSource or CanvasImageSource.")}clone(){if(this._closed)throw new Error("VideoSample is closed.");return v(this._data!==null),Ms(this._data)?new i(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation}):this._data instanceof Uint8Array?new i(this._data.slice(),{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation}):new i(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation})}close(){this._closed||(Ms(this._data)?this._data.close():this._data=null,this._closed=!0)}allocationSize(){if(this._closed)throw new Error("VideoSample is closed.");return v(this._data!==null),Ms(this._data)?this._data.allocationSize():this._data instanceof Uint8Array?this._data.byteLength:this.codedWidth*this.codedHeight*4}async copyTo(e){if(!_l(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(this._closed)throw new Error("VideoSample is closed.");if(v(this._data!==null),Ms(this._data))await this._data.copyTo(e);else if(this._data instanceof Uint8Array)nr(e).set(this._data);else{let r=this._data.getContext("2d",{alpha:!1});v(r);let s=r.getImageData(0,0,this.codedWidth,this.codedHeight);nr(e).set(s.data)}}toVideoFrame(){if(this._closed)throw new Error("VideoSample is closed.");return v(this._data!==null),Ms(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace}):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}draw(e,t,r,s,n,o,a,c,l){let u=0,h=0,d=this.displayWidth,f=this.displayHeight,m=0,p=0,g=this.displayWidth,y=this.displayHeight;if(o!==void 0?(u=t,h=r,d=s,f=n,m=o,p=a,c!==void 0?(g=c,y=l):(g=d,y=f)):(m=t,p=r,s!==void 0&&(g=s,y=n)),!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!Number.isFinite(u))throw new TypeError("sx must be a number.");if(!Number.isFinite(h))throw new TypeError("sy must be a number.");if(!Number.isFinite(d)||d<0)throw new TypeError("sWidth must be a non-negative number.");if(!Number.isFinite(f)||f<0)throw new TypeError("sHeight must be a non-negative number.");if(!Number.isFinite(m))throw new TypeError("dx must be a number.");if(!Number.isFinite(p))throw new TypeError("dy must be a number.");if(!Number.isFinite(g)||g<0)throw new TypeError("dWidth must be a non-negative number.");if(!Number.isFinite(y)||y<0)throw new TypeError("dHeight must be a non-negative number.");if(this._closed)throw new Error("VideoSample is closed.");this.rotation===90?[u,h,d,f]=[h,this.codedHeight-u-d,f,d]:this.rotation===180?[u,h]=[this.codedWidth-u-d,this.codedHeight-h-f]:this.rotation===270&&([u,h,d,f]=[this.codedWidth-h-f,u,f,d]);let x=this.toCanvasImageSource();e.save();let w=m+g/2,_=p+y/2;e.translate(w,_),e.rotate(this.rotation*Math.PI/180);let S=this.rotation%180===0?1:g/y;e.scale(1/S,S),e.drawImage(x,u,h,d,f,-g/2,-y/2,g,y),e.restore()}drawWithFit(e,t){let r=e.canvas.width,s=e.canvas.height,n=t.rotation??this.rotation,o,a,c,l;if(t.fit==="fill")o=0,a=0,c=r,l=s;else{let[h,d]=n%180===0?[this.codedWidth,this.codedHeight]:[this.codedHeight,this.codedWidth],f=t.fit==="contain"?Math.min(r/h,s/d):Math.max(r/h,s/d);c=h*f,l=d*f,o=(r-c)/2,a=(s-l)/2}let u=n%180===0?1:c/l;e.translate(r/2,s/2),e.rotate(n*Math.PI/180),e.scale(1/u,u),e.translate(-r/2,-s/2),e.drawImage(this.toCanvasImageSource(),o,a,c,l)}toCanvasImageSource(){if(this._closed)throw new Error("VideoSample is closed.");if(v(this._data!==null),this._data instanceof Uint8Array){let e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}else return this._data}setRotation(e){if(![0,90,180,270].includes(e))throw new TypeError("newRotation must be 0, 90, 180, or 270.");this.rotation=e}setTimestamp(e){if(!Number.isFinite(e))throw new TypeError("newTimestamp must be a number.");this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw new TypeError("newDuration must be a non-negative number.");this.duration=e}},Ms=i=>typeof VideoFrame<"u"&&i instanceof VideoFrame;var vi=i=>{if(!i||typeof i!="object")throw new TypeError("options must be an object.");if(i.metadataOnly!==void 0&&typeof i.metadataOnly!="boolean")throw new TypeError("options.metadataOnly, when defined, must be a boolean.");if(i.verifyKeyPackets!==void 0&&typeof i.verifyKeyPackets!="boolean")throw new TypeError("options.verifyKeyPackets, when defined, must be a boolean.");if(i.verifyKeyPackets&&i.metadataOnly)throw new TypeError("options.verifyKeyPackets and options.metadataOnly cannot be enabled together.")},Gr=i=>{if(typeof i!="number"||Number.isNaN(i))throw new TypeError("timestamp must be a number.")},Gl=(i,e,t)=>t.verifyKeyPackets?e.then(async r=>{if(!r||r.type==="delta")return r;let s=await i.determinePacketType(r);return s&&(r.type=s),r}):e,ki=class{constructor(e){if(!(e instanceof Pi))throw new TypeError("track must be an InputTrack.");this._track=e}getFirstPacket(e={}){return vi(e),Gl(this._track,this._track._backing.getFirstPacket(e),e)}getPacket(e,t={}){return Gr(e),vi(t),Gl(this._track,this._track._backing.getPacket(e,t),t)}getNextPacket(e,t={}){if(!(e instanceof ce))throw new TypeError("packet must be an EncodedPacket.");return vi(t),Gl(this._track,this._track._backing.getNextPacket(e,t),t)}async getKeyPacket(e,t={}){if(Gr(e),vi(t),!t.verifyKeyPackets)return this._track._backing.getKeyPacket(e,t);let r=await this._track._backing.getKeyPacket(e,t);return!r||r.type==="delta"?r:await this._track.determinePacketType(r)==="delta"?this.getKeyPacket(r.timestamp-1/this._track.timeResolution,t):r}async getNextKeyPacket(e,t={}){if(!(e instanceof ce))throw new TypeError("packet must be an EncodedPacket.");if(vi(t),!t.verifyKeyPackets)return this._track._backing.getNextKeyPacket(e,t);let r=await this._track._backing.getNextKeyPacket(e,t);return!r||r.type==="delta"?r:await this._track.determinePacketType(r)==="delta"?this.getNextKeyPacket(r,t):r}packets(e,t,r={}){if(e!==void 0&&!(e instanceof ce))throw new TypeError("startPacket must be an EncodedPacket.");if(e!==void 0&&e.isMetadataOnly&&!r?.metadataOnly)throw new TypeError("startPacket can only be metadata-only if options.metadataOnly is enabled.");if(t!==void 0&&!(t instanceof ce))throw new TypeError("endPacket must be an EncodedPacket.");vi(r);let s=[],{promise:n,resolve:o}=Re(),{promise:a,resolve:c}=Re(),l=!1,u=!1,h=null,d=[],f=()=>Math.max(2,d.length);return(async()=>{let m=e??await this.getFirstPacket(r);for(;m&&!u&&!(t&&m.sequenceNumber>=t?.sequenceNumber);){if(s.length>f()){({promise:a,resolve:c}=Re()),await a;continue}s.push(m),o(),{promise:n,resolve:o}=Re(),m=await this.getNextPacket(m,r)}l=!0,o()})().catch(m=>{h||(h=m,o())}),{async next(){for(;;){if(u)return{value:void 0,done:!0};if(h)throw h;if(s.length>0){let m=s.shift(),p=performance.now();for(d.push(p);d.length>0&&p-d[0]>=1e3;)d.shift();return c(),{value:m,done:!1}}else{if(l)return{value:void 0,done:!0};await n}}},async return(){return u=!0,c(),o(),{value:void 0,done:!0}},async throw(m){throw m},[Symbol.asyncIterator](){return this}}}},Nl=class{constructor(e,t){this.onSample=e,this.onError=t}},zo=class{mediaSamplesInRange(e=0,t=1/0){Gr(e),Gr(t);let r=[],s=!1,n=null,{promise:o,resolve:a}=Re(),{promise:c,resolve:l}=Re(),u=!1,h=!1,d=!1,f=null;return(async()=>{let m=new Error,p=await this._createDecoder(S=>{if(l(),S.timestamp>=t&&(h=!0),h){S.close();return}n&&(S.timestamp>e?(r.push(n),s=!0):n.close()),S.timestamp>=e&&(r.push(S),s=!0),n=s?null:S,r.length>0&&(a(),{promise:o,resolve:a}=Re())},S=>{f||(S.stack=m.stack,f=S,a())}),g=this._createPacketSink(),y=await g.getKeyPacket(e,{verifyKeyPackets:!0})??await g.getFirstPacket();if(!y)return;let x=y,w;if(t<1/0){let S=await g.getPacket(t),T=S?S.type==="key"&&S.timestamp===t?S:await g.getNextKeyPacket(S,{verifyKeyPackets:!0}):null;T&&(w=T)}let _=g.packets(y,w);for(await _.next();x&&!h;){let S=dm(r.length);if(r.length+p.getDecodeQueueSize()>S){({promise:c,resolve:l}=Re()),await c;continue}p.decode(x);let T=await _.next();if(T.done)break;x=T.value}await _.return(),d||await p.flush(),p.close(),!s&&n&&r.push(n),u=!0,a()})().catch(m=>{f||(f=m,a())}),{async next(){for(;;){if(d)return{value:void 0,done:!0};if(f)throw f;if(r.length>0){let m=r.shift();return l(),{value:m,done:!1}}else if(!u)await o;else return{value:void 0,done:!0}}},async return(){d=!0,h=!0,l(),a(),n?.close();for(let m of r)m.close();return{value:void 0,done:!0}},async throw(m){throw m},[Symbol.asyncIterator](){return this}}}mediaSamplesAtTimestamps(e){Af(e);let t=Ef(e),r=[],s=[],{promise:n,resolve:o}=Re(),{promise:a,resolve:c}=Re(),l=!1,u=!1,h=null,d=f=>{s.push(f),o(),{promise:n,resolve:o}=Re()};return(async()=>{let f=new Error,m=await this._createDecoder(S=>{if(c(),u){S.close();return}let T=0;for(;r.length>0&&S.timestamp-r[0]>-1e-10;)T++,r.shift();if(T>0)for(let k=0;k<T;k++)d(k<T-1?S.clone():S);else S.close()},S=>{h||(S.stack=f.stack,h=S,o())}),p=this._createPacketSink(),g=null,y=null,x=-1,w=async()=>{v(y);let S=y;for(m.decode(S);S.sequenceNumber<x;){let T=dm(s.length);for(;s.length+m.getDecodeQueueSize()>T&&!u;)({promise:a,resolve:c}=Re()),await a;if(u)break;let k=await p.getNextPacket(S);v(k),m.decode(k),S=k}x=-1},_=async()=>{await m.flush();for(let S=0;S<r.length;S++)d(null);r.length=0};for await(let S of t){if(Gr(S),u)break;let T=await p.getPacket(S),k=T&&await p.getKeyPacket(S,{verifyKeyPackets:!0});if(!k){x!==-1&&(await w(),await _()),d(null),g=null;continue}g&&(k.sequenceNumber!==y.sequenceNumber||T.timestamp<g.timestamp)&&(await w(),await _()),r.push(T.timestamp),x=Math.max(T.sequenceNumber,x),g=T,y=k}u||(x!==-1&&await w(),await _()),m.close(),l=!0,o()})().catch(f=>{h||(h=f,o())}),{async next(){for(;;){if(u)return{value:void 0,done:!0};if(h)throw h;if(s.length>0){let f=s.shift();return v(f!==void 0),c(),{value:f,done:!1}}else if(!l)await n;else return{value:void 0,done:!0}}},async return(){u=!0,c(),o();for(let f of s)f?.close();return{value:void 0,done:!0}},async throw(f){throw f},[Symbol.asyncIterator](){return this}}}},dm=i=>i===0?40:8,Ll=class extends Nl{constructor(e,t,r,s,n,o){super(e,t),this.codec=r,this.decoderConfig=s,this.rotation=n,this.timeResolution=o,this.decoder=null,this.customDecoder=null,this.customDecoderCallSerializer=new lo,this.customDecoderQueueSize=0,this.inputTimestamps=[],this.sampleQueue=[],this.currentPacketIndex=0,this.raslSkipped=!1;let a=Oo.find(c=>c.supports(r,s));if(a)this.customDecoder=new a,this.customDecoder.codec=r,this.customDecoder.config=s,this.customDecoder.onSample=c=>{if(!(c instanceof Bs))throw new TypeError("The argument passed to onSample must be a VideoSample.");this.finalizeAndEmitSample(c)},this.customDecoderCallSerializer.call(()=>this.customDecoder.init());else{let c=l=>{if(bo()){if(this.sampleQueue.length>0&&l.timestamp>=Pe(this.sampleQueue).timestamp){for(let u of this.sampleQueue)this.finalizeAndEmitSample(u);this.sampleQueue.length=0}nt(this.sampleQueue,l,u=>u.timestamp)}else{let u=this.inputTimestamps.shift();v(u!==void 0),l.setTimestamp(u),this.finalizeAndEmitSample(l)}};this.decoder=new VideoDecoder({output:l=>c(new Bs(l)),error:t}),this.decoder.configure(s)}}finalizeAndEmitSample(e){e.setTimestamp(Math.round(e.timestamp*this.timeResolution)/this.timeResolution),e.setDuration(Math.round(e.duration*this.timeResolution)/this.timeResolution),e.setRotation(this.rotation),this.onSample(e)}getDecodeQueueSize(){return this.customDecoder?this.customDecoderQueueSize:(v(this.decoder),this.decoder.decodeQueueSize)}decode(e){if(this.codec==="hevc"&&this.currentPacketIndex>0&&!this.raslSkipped){if(Il(e.data,this.decoderConfig).some(s=>{let n=Gt(s);return n===De.RASL_N||n===De.RASL_R}))return;this.raslSkipped=!0}this.currentPacketIndex++,this.customDecoder?(this.customDecoderQueueSize++,this.customDecoderCallSerializer.call(()=>this.customDecoder.decode(e)).then(()=>this.customDecoderQueueSize--)):(v(this.decoder),bo()||nt(this.inputTimestamps,e.timestamp,t=>t),this.decoder.decode(e.toEncodedVideoChunk()))}async flush(){if(this.customDecoder?await this.customDecoderCallSerializer.call(()=>this.customDecoder.flush()):(v(this.decoder),await this.decoder.flush()),bo()){for(let e of this.sampleQueue)this.finalizeAndEmitSample(e);this.sampleQueue.length=0}this.currentPacketIndex=0,this.raslSkipped=!1}close(){this.customDecoder?this.customDecoderCallSerializer.call(()=>this.customDecoder.close()):(v(this.decoder),this.decoder.close());for(let e of this.sampleQueue)e.close();this.sampleQueue.length=0}},Uo=class extends zo{constructor(e){if(!(e instanceof wt))throw new TypeError("videoTrack must be an InputVideoTrack.");super(),this._videoTrack=e}async _createDecoder(e,t){if(!await this._videoTrack.canDecode())throw new Error("This video track cannot be decoded by this browser. Make sure to check decodability before using a track.");let r=this._videoTrack.codec,s=this._videoTrack.rotation,n=await this._videoTrack.getDecoderConfig(),o=this._videoTrack.timeResolution;return v(r&&n),new Ll(e,t,r,n,s,o)}_createPacketSink(){return new ki(this._videoTrack)}async getSample(e){Gr(e);for await(let t of this.mediaSamplesAtTimestamps([e]))return t;throw new Error("Internal error: Iterator returned nothing.")}samples(e=0,t=1/0){return this.mediaSamplesInRange(e,t)}samplesAtTimestamps(e){return this.mediaSamplesAtTimestamps(e)}},Fs=class{constructor(e,t={}){if(this._nextCanvasIndex=0,!(e instanceof wt))throw new TypeError("videoTrack must be an InputVideoTrack.");if(t&&typeof t!="object")throw new TypeError("options must be an object.");if(t.width!==void 0&&(!Number.isInteger(t.width)||t.width<=0))throw new TypeError("options.width, when defined, must be a positive integer.");if(t.height!==void 0&&(!Number.isInteger(t.height)||t.height<=0))throw new TypeError("options.height, when defined, must be a positive integer.");if(t.fit!==void 0&&!["fill","contain","cover"].includes(t.fit))throw new TypeError('options.fit, when provided, must be one of "fill", "contain", or "cover".');if(t.width!==void 0&&t.height!==void 0&&t.fit===void 0)throw new TypeError("When both options.width and options.height are provided, options.fit must also be provided.");if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180 or 270.");if(t.poolSize!==void 0&&(typeof t.poolSize!="number"||!Number.isInteger(t.poolSize)||t.poolSize<0))throw new TypeError("poolSize must be a non-negative integer.");let r=t.rotation??e.rotation,[s,n]=r%180===0?[e.codedWidth,e.codedHeight]:[e.codedHeight,e.codedWidth],o=s/n;t.width!==void 0&&t.height===void 0?(s=t.width,n=Math.round(s/o)):t.width===void 0&&t.height!==void 0?(n=t.height,s=Math.round(n*o)):t.width!==void 0&&t.height!==void 0&&(s=t.width,n=t.height),this._videoTrack=e,this._width=s,this._height=n,this._rotation=r,this._fit=t.fit??"fill",this._videoSampleSink=new Uo(e),this._canvasPool=Array.from({length:t.poolSize??0},()=>null)}_videoSampleToWrappedCanvas(e){let t=this._canvasPool[this._nextCanvasIndex],r=!1;t||(typeof document<"u"?(t=document.createElement("canvas"),t.width=this._width,t.height=this._height):t=new OffscreenCanvas(this._width,this._height),this._canvasPool.length>0&&(this._canvasPool[this._nextCanvasIndex]=t),r=!0),this._canvasPool.length>0&&(this._nextCanvasIndex=(this._nextCanvasIndex+1)%this._canvasPool.length);let s=t.getContext("2d",{alpha:!1});v(s),s.resetTransform(),r||s.clearRect(0,0,this._width,this._height),e.drawWithFit(s,{fit:this._fit,rotation:this._rotation});let n={canvas:t,timestamp:e.timestamp,duration:e.duration};return e.close(),n}async getCanvas(e){Gr(e);let t=await this._videoSampleSink.getSample(e);return t&&this._videoSampleToWrappedCanvas(t)}canvases(e=0,t=1/0){return kl(this._videoSampleSink.samples(e,t),r=>this._videoSampleToWrappedCanvas(r))}canvasesAtTimestamps(e){return kl(this._videoSampleSink.samplesAtTimestamps(e),t=>t&&this._videoSampleToWrappedCanvas(t))}};var Pi=class{constructor(e){this._backing=e}isVideoTrack(){return this instanceof wt}isAudioTrack(){return this instanceof Ie}get id(){return this._backing.getId()}get internalCodecId(){return this._backing.getInternalCodecId()}get languageCode(){return this._backing.getLanguageCode()}get name(){return this._backing.getName()}get timeResolution(){return this._backing.getTimeResolution()}getFirstTimestamp(){return this._backing.getFirstTimestamp()}computeDuration(){return this._backing.computeDuration()}async computePacketStats(e=1/0){let t=new ki(this),r=1/0,s=-1/0,n=0,o=0;for await(let a of t.packets(void 0,void 0,{metadataOnly:!0})){if(n>=e&&a.timestamp>=s)break;r=Math.min(r,a.timestamp),s=Math.max(s,a.timestamp+a.duration),n++,o+=a.byteLength}return{packetCount:n,averagePacketRate:n?Number((n/(s-r)).toPrecision(16)):0,averageBitrate:n?Number((8*o/(s-r)).toPrecision(16)):0}}},wt=class extends Pi{constructor(e){super(e),this._backing=e}get type(){return"video"}get codec(){return this._backing.getCodec()}get codedWidth(){return this._backing.getCodedWidth()}get codedHeight(){return this._backing.getCodedHeight()}get rotation(){return this._backing.getRotation()}get displayWidth(){return this._backing.getRotation()%180===0?this._backing.getCodedWidth():this._backing.getCodedHeight()}get displayHeight(){return this._backing.getRotation()%180===0?this._backing.getCodedHeight():this._backing.getCodedWidth()}getColorSpace(){return this._backing.getColorSpace()}async hasHighDynamicRange(){let e=await this._backing.getColorSpace();return e.primaries==="bt2020"||e.primaries==="smpte432"||e.transfer==="pg"||e.transfer==="hlg"||e.matrix==="bt2020-ncl"}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=this._backing.getCodec();return v(t!==null),Oo.some(s=>s.supports(t,e))?!0:typeof VideoDecoder>"u"?!1:(await VideoDecoder.isConfigSupported(e)).supported===!0}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof ce))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("packet must not be metadata-only to determine its type.");return this.codec===null?null:jf(this,e)}},Ie=class extends Pi{constructor(e){super(e),this._backing=e}get type(){return"audio"}get codec(){return this._backing.getCodec()}get numberOfChannels(){return this._backing.getNumberOfChannels()}get sampleRate(){return this._backing.getSampleRate()}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=this._backing.getCodec();return v(t!==null),Ul.some(r=>r.supports(t,e))||e.codec.startsWith("pcm-")?!0:typeof AudioDecoder>"u"?!1:(await AudioDecoder.isConfigSupported(e)).supported===!0}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof ce))throw new TypeError("packet must be an EncodedPacket.");return this.codec===null?null:"key"}};var Ht;(function(i){i[i.PCM=1]="PCM",i[i.IEEE_FLOAT=3]="IEEE_FLOAT",i[i.ALAW=6]="ALAW",i[i.MULAW=7]="MULAW",i[i.EXTENSIBLE=65534]="EXTENSIBLE"})(Ht||(Ht={}));var Go=class extends We{constructor(e){super(e),this.metadataPromise=null,this.dataStart=-1,this.dataSize=-1,this.audioInfo=null,this.tracks=[],this.lastKnownPacketIndex=0,this.metadataTags={},this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{let e=this.reader.requestSlice(0,12);e instanceof Promise&&(e=await e),v(e);let t=de(e,4),r=t!=="RIFX",s=t==="RF64",n=Nt(e,r),o=s?this.reader.fileSize:Math.min(n+8,this.reader.fileSize??1/0);if(de(e,4)!=="WAVE")throw new Error("Invalid WAVE file - wrong format");let c=0,l=null,u=e.filePos;for(;o===null||u<o;){let d=this.reader.requestSlice(u,8);if(d instanceof Promise&&(d=await d),!d)break;let f=de(d,4),m=Nt(d,r),p=d.filePos;if(s&&c===0&&f!=="ds64")throw new Error('Invalid RF64 file: First chunk must be "ds64".');if(f==="fmt ")await this.parseFmtChunk(p,m,r);else if(f==="data"){if(l??=m,this.dataStart=d.filePos,this.dataSize=Math.min(l,(o??1/0)-this.dataStart),this.reader.fileSize===null)break}else if(f==="ds64"){let g=Ml(d,r);l=Ml(d,r),o=Math.min(g+8,this.reader.fileSize??1/0)}else f==="LIST"&&await this.parseListChunk(p,m,r);u=p+m+(m&1),c++}if(!this.audioInfo)throw new Error('Invalid WAVE file - missing "fmt " chunk');if(this.dataStart===-1)throw new Error('Invalid WAVE file - missing "data" chunk');let h=this.audioInfo.blockSizeInBytes;this.dataSize=Math.floor(this.dataSize/h)*h,this.tracks.push(new Ie(new Vl(this)))})()}async parseFmtChunk(e,t,r){let s=this.reader.requestSlice(e,t);if(s instanceof Promise&&(s=await s),!s)return;let n=fi(s,r),o=fi(s,r),a=Nt(s,r);s.skip(4);let c=fi(s,r),l;if(t===14?l=8:l=fi(s,r),t>=18&&n!==357){let u=fi(s,r),h=t-18;if(Math.min(h,u)>=22&&n===Ht.EXTENSIBLE){s.skip(6);let f=W(s,16);n=f[0]|f[1]<<8}}(n===Ht.MULAW||n===Ht.ALAW)&&(l=8),this.audioInfo={format:n,numberOfChannels:o,sampleRate:a,sampleSizeInBytes:Math.ceil(l/8),blockSizeInBytes:c}}async parseListChunk(e,t,r){let s=this.reader.requestSlice(e,t);if(s instanceof Promise&&(s=await s),!s)return;let n=de(s,4);if(n!=="INFO"&&n!=="INF0")return;let o=s.filePos;for(;o<=e+t-8;){s.filePos=o;let a=de(s,4),c=Nt(s,r),l=W(s,c),u=0;for(let d=0;d<l.length&&l[d]!==0;d++)u++;let h=String.fromCharCode(...l.subarray(0,u));switch(this.metadataTags.raw??={},this.metadataTags.raw[a]=h,a){case"INAM":case"TITL":this.metadataTags.title??=h;break;case"TIT3":this.metadataTags.description??=h;break;case"IART":this.metadataTags.artist??=h;break;case"IPRD":this.metadataTags.album??=h;break;case"IPRT":case"ITRK":case"TRCK":{let d=h.split("/"),f=Number.parseInt(d[0],10),m=d[1]&&Number.parseInt(d[1],10);Number.isInteger(f)&&f>0&&(this.metadataTags.trackNumber??=f),m&&Number.isInteger(m)&&m>0&&(this.metadataTags.tracksTotal??=m)}break;case"ICRD":case"IDIT":{let d=new Date(h);Number.isNaN(d.getTime())||(this.metadataTags.date??=d)}break;case"YEAR":{let d=Number.parseInt(h,10);Number.isInteger(d)&&d>0&&(this.metadataTags.date??=new Date(d,0,1))}break;case"IGNR":case"GENR":this.metadataTags.genre??=h;break;case"ICMT":case"CMNT":case"COMM":this.metadataTags.comment??=h;break}o+=8+c+(c&1)}}getCodec(){if(v(this.audioInfo),this.audioInfo.format===Ht.MULAW)return"ulaw";if(this.audioInfo.format===Ht.ALAW)return"alaw";if(this.audioInfo.format===Ht.PCM){if(this.audioInfo.sampleSizeInBytes===1)return"pcm-u8";if(this.audioInfo.sampleSizeInBytes===2)return"pcm-s16";if(this.audioInfo.sampleSizeInBytes===3)return"pcm-s24";if(this.audioInfo.sampleSizeInBytes===4)return"pcm-s32"}return this.audioInfo.format===Ht.IEEE_FLOAT&&this.audioInfo.sampleSizeInBytes===4?"pcm-f32":null}async getMimeType(){return"audio/wav"}async computeDuration(){await this.readMetadata();let e=this.tracks[0];return v(e),e.computeDuration()}async getTracks(){return await this.readMetadata(),this.tracks}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}},Ci=2048,Vl=class{constructor(e){this.demuxer=e}getId(){return 1}getCodec(){return this.demuxer.getCodec()}getInternalCodecId(){return v(this.demuxer.audioInfo),this.demuxer.audioInfo.format}async getDecoderConfig(){let e=this.demuxer.getCodec();return e?(v(this.demuxer.audioInfo),{codec:e,numberOfChannels:this.demuxer.audioInfo.numberOfChannels,sampleRate:this.demuxer.audioInfo.sampleRate}):null}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getNumberOfChannels(){return v(this.demuxer.audioInfo),this.demuxer.audioInfo.numberOfChannels}getSampleRate(){return v(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getTimeResolution(){return v(this.demuxer.audioInfo),this.demuxer.audioInfo.sampleRate}getName(){return null}getLanguageCode(){return Ce}async getFirstTimestamp(){return 0}async getPacketAtIndex(e,t){v(this.demuxer.audioInfo);let r=e*Ci*this.demuxer.audioInfo.blockSizeInBytes;if(r>=this.demuxer.dataSize)return null;let s=Math.min(Ci*this.demuxer.audioInfo.blockSizeInBytes,this.demuxer.dataSize-r);if(this.demuxer.reader.fileSize===null){let c=this.demuxer.reader.requestSlice(this.demuxer.dataStart+r,s);if(c instanceof Promise&&(c=await c),!c)return null}let n;if(t.metadataOnly)n=Ae;else{let c=this.demuxer.reader.requestSlice(this.demuxer.dataStart+r,s);c instanceof Promise&&(c=await c),v(c),n=W(c,s)}let o=e*Ci/this.demuxer.audioInfo.sampleRate,a=s/this.demuxer.audioInfo.blockSizeInBytes/this.demuxer.audioInfo.sampleRate;return this.demuxer.lastKnownPacketIndex=Math.max(e,o),new ce(n,"key",o,a,e,s)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getPacket(e,t){v(this.demuxer.audioInfo);let r=Math.floor(Math.min(e*this.demuxer.audioInfo.sampleRate/Ci,(this.demuxer.dataSize-1)/(Ci*this.demuxer.audioInfo.blockSizeInBytes))),s=await this.getPacketAtIndex(r,t);if(s)return s;if(r===0)return null;v(this.demuxer.reader.fileSize===null);let n=await this.getPacketAtIndex(this.demuxer.lastKnownPacketIndex,t);for(;n;){let o=await this.getNextPacket(n,t);if(!o)break;n=o}return n}getNextPacket(e,t){v(this.demuxer.audioInfo);let r=Math.round(e.timestamp*this.demuxer.audioInfo.sampleRate/Ci);return this.getPacketAtIndex(r+1,t)}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}};var Nr=class{constructor(){this._sizePromise=null,this.onread=null}async getSizeOrNull(){return this._sizePromise??=Promise.resolve(this._retrieveSize())}async getSize(){let e=await this.getSizeOrNull();if(e===null)throw new Error("Cannot determine the size of an unsized source.");return e}};var Rs=class extends Nr{constructor(e,t={}){if(!(e instanceof Blob))throw new TypeError("blob must be a Blob.");if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.maxCacheSize!==void 0&&(!Number.isInteger(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative integer.");super(),this._readers=new WeakMap,this._blob=e,this._orchestrator=new No({maxCacheSize:t.maxCacheSize??8*2**20,maxWorkerCount:4,runWorker:this._runWorker.bind(this),prefetchProfile:mm.fileSystem})}_retrieveSize(){let e=this._blob.size;return this._orchestrator.fileSize=e,e}_read(e,t){return this._orchestrator.read(e,t)}async _runWorker(e){let t=this._readers.get(e);for(t||(t=this._blob.slice(e.currentPos).stream().getReader(),this._readers.set(e,t));e.currentPos<e.targetPos&&!e.aborted;){let{done:r,value:s}=await t.read();if(r){if(this._orchestrator.forgetWorker(e),e.currentPos<e.targetPos)throw new Error("Blob reader stopped unexpectedly before all requested data was read.");break}this.onread?.(e.currentPos,e.currentPos+s.length),this._orchestrator.supplyWorkerData(e,s)}e.running=!1}get _supportsRandomAccess(){return!0}},fm=.5*2**20,Ds=class extends Nr{constructor(e,t={}){if(typeof e!="string"&&!(e instanceof URL))throw new TypeError("url must be a string or URL.");if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.requestInit!==void 0&&(!t.requestInit||typeof t.requestInit!="object"))throw new TypeError("options.requestInit, when provided, must be an object.");if(t.getRetryDelay!==void 0&&typeof t.getRetryDelay!="function")throw new TypeError("options.getRetryDelay, when provided, must be a function.");if(t.maxCacheSize!==void 0&&(!Number.isInteger(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative integer.");super(),this._existingResponses=new WeakMap,this._url=e instanceof URL?e:new URL(e,typeof location<"u"?location.href:void 0),this._options=t,this._getRetryDelay=t.getRetryDelay??(r=>Math.min(2**(r-2),8)),this._orchestrator=new No({maxCacheSize:t.maxCacheSize??64*2**20,maxWorkerCount:2,runWorker:this._runWorker.bind(this),prefetchProfile:mm.network})}async _retrieveSize(){let e=new AbortController,t=await Pl(this._url,yo(this._options.requestInit??{},{headers:{Range:"bytes=0-"},signal:e.signal}),this._getRetryDelay);if(!t.ok)throw new Error(`Error fetching ${this._url}: ${t.status} ${t.statusText}`);let r,s;if(t.status===206)s=this._getPartialLengthFromRangeResponse(t),r=this._orchestrator.createWorker(0,Math.min(s,fm));else{let n=t.headers.get("Content-Length");if(n)s=Number(n),r=this._orchestrator.createWorker(0,s),this._orchestrator.options.maxCacheSize=1/0,console.warn("HTTP server did not respond with 206 Partial Content, meaning the entire remote resource now has to be downloaded. For efficient media file streaming across a network, please make sure your server supports range requests.");else throw new Error(`HTTP response (status ${t.status}) must surface Content-Length header.`)}return this._orchestrator.fileSize=s,this._existingResponses.set(r,{response:t,abortController:e}),this._orchestrator.runWorker(r),s}_read(e,t){return this._orchestrator.read(e,t)}async _runWorker(e){for(;!e.aborted;){let t=this._existingResponses.get(e);this._existingResponses.delete(e);let r=t?.abortController,s=t?.response;if(r||(r=new AbortController,s=await Pl(this._url,yo(this._options.requestInit??{},{headers:{Range:`bytes=${e.currentPos}-`},signal:r.signal}),this._getRetryDelay)),v(s),!s.ok)throw new Error(`Error fetching ${this._url}: ${s.status} ${s.statusText}`);if(e.currentPos>0&&s.status!==206)throw new Error("HTTP server did not respond with 206 Partial Content to a range request. To enable efficient media file streaming across a network, please make sure your server supports range requests.");let n=this._getPartialLengthFromRangeResponse(s),o=e.targetPos-e.currentPos;if(n<o)throw new Error(`HTTP response unexpectedly too short: Needed at least ${o} bytes, got only ${n}.`);if(!s.body)throw new Error("Missing HTTP response body.");let a=s.body.getReader();for(;;){let c;try{c=await a.read()}catch(h){let d=this._getRetryDelay(1);if(d!==null){console.error("Error while reading response stream. Attempting to resume.",h),await new Promise(f=>setTimeout(f,1e3*d));break}else throw h}let{done:l,value:u}=c;if(l){if(this._orchestrator.forgetWorker(e),e.currentPos<e.targetPos)throw new Error("Response stream reader stopped unexpectedly before all requested data was read.");e.running=!1;return}if(this.onread?.(e.currentPos,e.currentPos+u.length),this._orchestrator.supplyWorkerData(e,u),e.currentPos>=e.targetPos||e.aborted){r.abort(),e.running=!1;return}}}e.running=!1}_getPartialLengthFromRangeResponse(e){let t=e.headers.get("Content-Range");if(t){let r=/\/(\d+)/.exec(t);if(r)return Number(r[1]);throw new Error(`Invalid Content-Range header: ${t}`)}else{let r=e.headers.get("Content-Length");if(r)return Number(r);throw new Error("Partial HTTP response (status 206) must surface either Content-Range or Content-Length header.")}}get _supportsRandomAccess(){return!0}};var mm={none:(i,e)=>({start:i,end:e}),fileSystem:(i,e)=>(i=Math.floor((i-65536)/65536)*65536,e=Math.ceil((e+65536)/65536)*65536,{start:i,end:e}),network:(i,e,t)=>{i=Math.max(0,Math.floor((i-65536)/65536)*65536);for(let s of t){let o=Math.max((s.startPos+s.targetPos)/2,s.targetPos-8388608);if(wo(i,e,o,s.targetPos)){let a=s.targetPos-s.startPos,c=Math.ceil((a+1)/8388608)*8388608,l=2**Math.ceil(Math.log2(a+1)),u=Math.min(l,c);e=Math.max(e,s.startPos+u)}}return e=Math.max(e,i+fm),{start:i,end:e}}},No=class{constructor(e){this.options=e,this.fileSize=null,this.nextAge=0,this.workers=[],this.cache=[],this.currentCacheSize=0}read(e,t){v(this.fileSize!==null);let r=this.options.prefetchProfile(e,t,this.workers),s=Math.max(r.start,0),n=Math.min(r.end,this.fileSize);v(s<=e&&t<=n);let o=null,a=Q(this.cache,e,x=>x.start),c=a!==-1?this.cache[a]:null;c&&c.start<=e&&t<=c.end&&(c.age=this.nextAge++,o={bytes:c.bytes,view:c.view,offset:c.start});let l=Q(this.cache,s,x=>x.start),u=o?null:new Uint8Array(t-e),h=0,d=s,f=[];if(l!==-1){for(let x=l;x<this.cache.length;x++){let w=this.cache[x];if(w.start>=n)break;if(w.end<=s)continue;let _=Math.max(s,w.start),S=Math.min(n,w.end);if(v(_<=S),d<_&&f.push({start:d,end:_}),d=S,u){let T=Math.max(e,w.start),k=Math.min(t,w.end);if(T<k){let M=T-e;u.set(w.bytes.subarray(T-w.start,k-w.start),M),M===h&&(h=k-e)}}w.age=this.nextAge++}d<n&&f.push({start:d,end:n})}else f.push({start:s,end:n});if(u&&h>=u.length&&(o={bytes:u,view:oe(u),offset:e}),f.length===0)return v(o),o;let{promise:m,resolve:p,reject:g}=Re(),y=[];for(let x of f){let w=Math.max(e,x.start),_=Math.min(t,x.end);w===x.start&&_===x.end?y.push(x):w<_&&y.push({start:w,end:_})}for(let x of f){let w=u&&{start:e,bytes:u,holes:y,resolve:p,reject:g},_=!1;for(let S of this.workers)if(wo(x.start-131072,x.start,S.currentPos,S.targetPos)){S.targetPos=Math.max(S.targetPos,x.end),_=!0,w&&!S.pendingSlices.includes(w)&&S.pendingSlices.push(w),S.running||this.runWorker(S);break}if(!_){let S=this.createWorker(x.start,x.end);w&&(S.pendingSlices=[w]),this.runWorker(S)}}return o||(v(u),o=m.then(x=>({bytes:x,view:oe(x),offset:e}))),o}createWorker(e,t){let r={startPos:e,currentPos:e,targetPos:t,running:!1,aborted:!1,pendingSlices:[],age:this.nextAge++};for(this.workers.push(r);this.workers.length>this.options.maxWorkerCount;){let s=0,n=this.workers[0];for(let o=1;o<this.workers.length;o++){let a=this.workers[o];a.age<n.age&&(s=o,n=a)}if(n.running&&n.pendingSlices.length>0)break;n.aborted=!0,this.workers.splice(s,1)}return r}runWorker(e){v(!e.running),v(e.currentPos<e.targetPos),e.running=!0,e.age=this.nextAge++,this.options.runWorker(e).catch(t=>{if(e.running=!1,e.pendingSlices.length>0)e.pendingSlices.forEach(r=>r.reject(t)),e.pendingSlices.length=0;else throw t})}supplyWorkerData(e,t){let r=e.currentPos,s=r+t.length;this.insertIntoCache({start:r,end:s,bytes:t,view:oe(t),age:this.nextAge++}),e.currentPos+=t.length,e.targetPos=Math.max(e.targetPos,e.currentPos);for(let n=0;n<e.pendingSlices.length;n++){let o=e.pendingSlices[n],a=Math.max(r,o.start),c=Math.min(s,o.start+o.bytes.length);a<c&&o.bytes.set(t.subarray(a-r,c-r),a-o.start);for(let l=0;l<o.holes.length;l++){let u=o.holes[l];r<=u.start&&s>u.start&&(u.start=s),u.end<=u.start&&(o.holes.splice(l,1),l--)}o.holes.length===0&&(o.resolve(o.bytes),e.pendingSlices.splice(n,1),n--)}for(let n=0;n<this.workers.length;n++){let o=this.workers[n];e===o||o.running||wo(r,s,o.currentPos,o.targetPos)&&(this.workers.splice(n,1),n--)}}forgetWorker(e){let t=this.workers.indexOf(e);v(t!==-1),this.workers.splice(t,1)}insertIntoCache(e){if(this.options.maxCacheSize===0)return;let t=Q(this.cache,e.start,r=>r.start)+1;if(t>0){let r=this.cache[t-1];if(r.end>=e.end)return;if(r.end>e.start){let s=new Uint8Array(e.end-r.start);s.set(r.bytes,0),s.set(e.bytes,e.start-r.start),this.currentCacheSize+=e.end-r.end,r.bytes=s,r.view=oe(s),r.end=e.end,t--,e=r}else this.cache.splice(t,0,e),this.currentCacheSize+=e.bytes.length}else this.cache.splice(t,0,e),this.currentCacheSize+=e.bytes.length;for(let r=t+1;r<this.cache.length;r++){let s=this.cache[r];if(e.end<=s.start)break;if(e.end>=s.end){this.cache.splice(r,1),this.currentCacheSize-=s.bytes.length,r--;continue}let n=new Uint8Array(s.end-e.start);n.set(e.bytes,0),n.set(s.bytes,s.start-e.start),this.currentCacheSize-=e.end-s.start,e.bytes=n,e.view=oe(n),e.end=s.end,this.cache.splice(r,1);break}for(;this.currentCacheSize>this.options.maxCacheSize;){let r=0,s=this.cache[0];for(let n=1;n<this.cache.length;n++){let o=this.cache[n];o.age<s.age&&(r=n,s=o)}if(this.currentCacheSize-s.bytes.length<=this.options.maxCacheSize)break;this.cache.splice(r,1),this.currentCacheSize-=s.bytes.length}}};var aS=new Set(["@day","@mak","@mod","@swr","@xyz","CAME","CNCV","CNFV","CNMN","FIRM","FOV\0","GoPr","LENS","PXMN","SIGM","SNum","TAGS","albm","albr","angl","auth","ccid","cdis","clfn","clid","clsf","cmid","cmnm","coll","cprt","cver","cvru","date","dscp","fsid","gnre","hinv","icnu","info","infu","kgtt","loci","lrcu","mcvr","name","perf","pmcc","reel","rtng","scen","shot","slno","thmb","titl","tnam","urat","uuid","vndr","yrrc","\xA9ART","\xA9TIM","\xA9TSC","\xA9TSZ","\xA9alb","\xA9arg","\xA9ark","\xA9cmt","\xA9cok","\xA9com","\xA9cpy","\xA9day","\xA9dir","\xA9ed1","\xA9ed2","\xA9ed3","\xA9ed4","\xA9ed5","\xA9ed6","\xA9ed7","\xA9ed8","\xA9ed9","\xA9enc","\xA9fmt","\xA9fpt","\xA9frl","\xA9fyw","\xA9gen","\xA9gpt","\xA9grl","\xA9grp","\xA9gyw","\xA9inf","\xA9isr","\xA9lab","\xA9lal","\xA9lyr","\xA9mak","\xA9mal","\xA9mdl","\xA9mod","\xA9nam","\xA9pdk","\xA9phg","\xA9prd","\xA9prf","\xA9prk","\xA9prl","\xA9req","\xA9snk","\xA9snm","\xA9src","\xA9swf","\xA9swk","\xA9swr","\xA9too","\xA9trk","\xA9wrt","\xA9xsp","\xA9xyz","\xA9ysp","\xA9zsp"]),Lo=class extends We{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.fragments=[],this.currentFragment=null,this.fragmentLookupMutex=new et,this.reader=e._reader}async computeDuration(){let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.tracks.map(e=>e.inputTrack)}async getMimeType(){await this.readMetadata();let e=await Promise.all(this.tracks.map(t=>t.inputTrack.getCodecParameterString()));return $f({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(t=>t.info?.type==="video"),hasAudio:this.tracks.some(t=>t.info?.type==="audio"),codecStrings:e.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,Vt,zr);if(t instanceof Promise&&(t=await t),!t)break;let r=e,s=bt(t);if(!s)break;if(s.name==="ftyp"){let n=de(t,4);this.isQuickTime=n==="qt "}else if(s.name==="moov"){let n=this.reader.requestSlice(t.filePos,s.contentSize);if(n instanceof Promise&&(n=await n),!n)break;this.moovSlice=n,this.readContiguousBoxes(this.moovSlice);for(let o of this.tracks){let a=o.editListPreviousSegmentDurations/this.movieTimescale;o.editListOffset-=Math.round(a*o.timescale)}break}e=r+s.totalSize}if(this.isFragmented&&this.reader.fileSize!==null){let t=this.reader.requestSlice(this.reader.fileSize-4,4);t instanceof Promise&&(t=await t),v(t);let r=B(t),s=this.reader.fileSize-r;if(s>=0&&s<=this.reader.fileSize-zr){let n=this.reader.requestSliceRange(s,Vt,zr);if(n instanceof Promise&&(n=await n),n){let o=bt(n);if(o&&o.name==="mfra"){let a=this.reader.requestSlice(n.filePos,o.contentSize);a instanceof Promise&&(a=await a),a&&this.readContiguousBoxes(a)}}}}})()}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;let t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};e.sampleTable=t,v(this.moovSlice);let r=this.moovSlice.slice(e.sampleTableByteOffset);if(this.currentTrack=e,this.traverseBox(r),this.currentTrack=null,e.info?.type==="audio"&&e.info.codec&&Ps.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0){v(e.info?.type==="audio");let n=Of(e.info.codec),o=[],a=[];for(let c=0;c<t.sampleToChunk.length;c++){let l=t.sampleToChunk[c],u=t.sampleToChunk[c+1],h=(u?u.startChunkIndex:t.chunkOffsets.length)-l.startChunkIndex;for(let d=0;d<h;d++){let f=l.startSampleIndex+d*l.samplesPerChunk,m=f+l.samplesPerChunk,p=Q(t.sampleTimingEntries,f,M=>M.startIndex),g=t.sampleTimingEntries[p],y=Q(t.sampleTimingEntries,m,M=>M.startIndex),x=t.sampleTimingEntries[y],w=g.startDecodeTimestamp+(f-g.startIndex)*g.delta,S=x.startDecodeTimestamp+(m-x.startIndex)*x.delta-w,T=Pe(o);T&&T.delta===S?T.count++:o.push({startIndex:l.startChunkIndex+d,startDecodeTimestamp:w,count:1,delta:S});let k=l.samplesPerChunk*n.sampleSize*e.info.numberOfChannels;a.push(k)}l.startSampleIndex=l.startChunkIndex,l.samplesPerChunk=1}t.sampleTimingEntries=o,t.sampleSizes=a}if(t.sampleCompositionTimeOffsets.length>0){t.presentationTimestamps=[];for(let n of t.sampleTimingEntries)for(let o=0;o<n.count;o++)t.presentationTimestamps.push({presentationTimestamp:n.startDecodeTimestamp+o*n.delta,sampleIndex:n.startIndex+o});for(let n of t.sampleCompositionTimeOffsets)for(let o=0;o<n.count;o++){let a=n.startIndex+o,c=t.presentationTimestamps[a];c&&(c.presentationTimestamp+=n.offset)}t.presentationTimestamps.sort((n,o)=>n.presentationTimestamp-o.presentationTimestamp),t.presentationTimestampIndexMap=Array(t.presentationTimestamps.length).fill(-1);for(let n=0;n<t.presentationTimestamps.length;n++)t.presentationTimestampIndexMap[t.presentationTimestamps[n].sampleIndex]=n}return t}async readFragment(e){let t=this.reader.requestSliceRange(e,Vt,zr);t instanceof Promise&&(t=await t),v(t);let r=bt(t);v(r?.name==="moof");let s=this.reader.requestSlice(e,r.totalSize);s instanceof Promise&&(s=await s),v(s),this.traverseBox(s);let n=ae(this.fragments,e,a=>a.moofOffset);v(n!==-1);let o=this.fragments[n];v(o.moofOffset===e);for(let[a,c]of o.trackData){if(c.startTimestampIsFinal)continue;let l=this.tracks.find(p=>p.id===a),u=0,h=null,d=null,f=Q(l.fragments,e-1,p=>p.moofOffset);f!==-1&&(h=l.fragments[f],d=h,u=h.moofOffset+h.moofSize);let m=u===0;for(;u<=e-Vt;){if(h?.nextFragment)h=h.nextFragment,u=h.moofOffset+h.moofSize;else{let p=this.reader.requestSliceRange(u,Vt,zr);if(p instanceof Promise&&(p=await p),!p)break;let g=u,y=bt(p);if(!y)break;if(y.name==="moof"){let x=ae(this.fragments,g,_=>_.moofOffset),w;x===-1?w=await this.readFragment(g):w=this.fragments[x],h&&(h.nextFragment=w),h=w,m&&(w.isKnownToBeFirstFragment=!0,m=!1)}u=g+y.totalSize}h&&h.trackData.has(a)&&(d=h)}if(d){let p=d.trackData.get(a);v(p.startTimestampIsFinal),gm(c,p.endTimestamp)}c.startTimestampIsFinal=!0}return o}readContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-Vt&&this.traverseBox(e););}*iterateContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-Vt;){let r=e.filePos,s=bt(e);if(!s)break;yield{boxInfo:s,slice:e},e.filePos=r+s.totalSize}}traverseBox(e){let t=e.filePos,r=bt(e);if(!r)return!1;let s=e.filePos,n=t+r.totalSize;switch(r.name){case"mdia":case"minf":case"dinf":case"mfra":case"edts":this.readContiguousBoxes(e.slice(s,r.contentSize));break;case"mvhd":{let o=U(e);e.skip(3),o===1?(e.skip(16),this.movieTimescale=B(e),this.movieDurationInTimescale=Ye(e)):(e.skip(8),this.movieTimescale=B(e),this.movieDurationInTimescale=B(e))}break;case"trak":{let o={id:-1,demuxer:this,inputTrack:null,info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,rotation:0,internalCodecId:null,name:null,languageCode:Ce,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:null,currentFragmentState:null,fragments:[],fragmentsWithKeyFrame:[],editListPreviousSegmentDurations:0,editListOffset:0};if(this.currentTrack=o,this.readContiguousBoxes(e.slice(s,r.contentSize)),o.id!==-1&&o.timescale!==-1&&o.info!==null){if(o.info.type==="video"&&o.info.width!==-1){let a=o;o.inputTrack=new wt(new Wl(a)),this.tracks.push(o)}else if(o.info.type==="audio"&&o.info.numberOfChannels!==-1){let a=o;o.inputTrack=new Ie(new Hl(a)),this.tracks.push(o)}}this.currentTrack=null}break;case"tkhd":{let o=this.currentTrack;if(!o)break;let a=U(e);if(!((mi(e)&1)!==0))break;if(a===0)e.skip(8),o.id=B(e),e.skip(4),o.durationInMovieTimescale=B(e);else if(a===1)e.skip(16),o.id=B(e),e.skip(4),o.durationInMovieTimescale=Ye(e);else throw new Error(`Incorrect track header version ${a}.`);e.skip(16);let u=[cr(e),cr(e),Ao(e),cr(e),cr(e),Ao(e),cr(e),cr(e),Ao(e)],h=uo(If(hS(u),90));v(h===0||h===90||h===180||h===270),o.rotation=h}break;case"elst":{let o=this.currentTrack;if(!o)break;let a=U(e);e.skip(3);let c=!1,l=0,u=B(e);for(let h=0;h<u;h++){let d=a===1?Ye(e):B(e),f=a===1?qf(e):Lt(e),m=cr(e);if(d!==0){if(c){console.warn("Unsupported edit list: multiple edits are not currently supported. Only using first edit.");break}if(f===-1){l+=d;continue}if(m!==1){console.warn("Unsupported edit list entry: media rate must be 1.");break}o.editListPreviousSegmentDurations=l,o.editListOffset=f,c=!0}}}break;case"mdhd":{let o=this.currentTrack;if(!o)break;let a=U(e);e.skip(3),a===0?(e.skip(8),o.timescale=B(e),o.durationInMediaTimescale=B(e)):a===1&&(e.skip(16),o.timescale=B(e),o.durationInMediaTimescale=Ye(e));let c=Ee(e);if(c>0){o.languageCode="";for(let l=0;l<3;l++)o.languageCode=String.fromCharCode(96+(c&31))+o.languageCode,c>>=5;xo(o.languageCode)||(o.languageCode=Ce)}}break;case"hdlr":{let o=this.currentTrack;if(!o)break;e.skip(8);let a=de(e,4);a==="vide"?o.info={type:"video",width:-1,height:-1,codec:null,codecDescription:null,colorSpace:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null}:a==="soun"&&(o.info={type:"audio",numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null})}break;case"stbl":{let o=this.currentTrack;if(!o)break;o.sampleTableByteOffset=t,this.readContiguousBoxes(e.slice(s,r.contentSize))}break;case"stsd":{let o=this.currentTrack;if(!o||o.info===null||o.sampleTable)break;let a=U(e);e.skip(3);let c=B(e);for(let l=0;l<c;l++){let u=e.filePos,h=bt(e);if(!h)break;o.internalCodecId=h.name;let d=h.name.toLowerCase();if(o.info.type==="video")d==="avc1"?o.info.codec="avc":d==="hvc1"||d==="hev1"?o.info.codec="hevc":d==="vp08"?o.info.codec="vp8":d==="vp09"?o.info.codec="vp9":d==="av01"?o.info.codec="av1":console.warn(`Unsupported video codec (sample entry type '${h.name}').`),e.skip(24),o.info.width=Ee(e),o.info.height=Ee(e),e.skip(50),this.readContiguousBoxes(e.slice(e.filePos,u+h.totalSize-e.filePos));else{d==="mp4a"||(d==="opus"?o.info.codec="opus":d==="flac"?o.info.codec="flac":d==="twos"||d==="sowt"||d==="raw "||d==="in24"||d==="in32"||d==="fl32"||d==="fl64"||d==="lpcm"||d==="ipcm"||d==="fpcm"||(d==="ulaw"?o.info.codec="ulaw":d==="alaw"?o.info.codec="alaw":console.warn(`Unsupported audio codec (sample entry type '${h.name}').`))),e.skip(8);let f=Ee(e);e.skip(6);let m=Ee(e),p=Ee(e);e.skip(4);let g=B(e)/65536;if(a===0&&f>0){if(f===1)e.skip(4),p=8*B(e),e.skip(8);else if(f===2){e.skip(4),g=Eo(e),m=B(e),e.skip(4),p=B(e);let y=B(e);if(e.skip(8),d==="lpcm"){let x=p+7>>3,w=!!(y&1),_=!!(y&2),S=y&4?-1:0;p>0&&p<=64&&(w?p===32&&(o.info.codec=_?"pcm-f32be":"pcm-f32"):S&1<<x-1?x===1?o.info.codec="pcm-s8":x===2?o.info.codec=_?"pcm-s16be":"pcm-s16":x===3?o.info.codec=_?"pcm-s24be":"pcm-s24":x===4&&(o.info.codec=_?"pcm-s32be":"pcm-s32"):x===1&&(o.info.codec="pcm-u8")),o.info.codec===null&&console.warn("Unsupported PCM format.")}}}o.info.numberOfChannels=m,o.info.sampleRate=g,d==="twos"?p===8?o.info.codec="pcm-s8":p===16?o.info.codec="pcm-s16be":(console.warn(`Unsupported sample size ${p} for codec 'twos'.`),o.info.codec=null):d==="sowt"?p===8?o.info.codec="pcm-s8":p===16?o.info.codec="pcm-s16":(console.warn(`Unsupported sample size ${p} for codec 'sowt'.`),o.info.codec=null):d==="raw "?o.info.codec="pcm-u8":d==="in24"?o.info.codec="pcm-s24be":d==="in32"?o.info.codec="pcm-s32be":d==="fl32"?o.info.codec="pcm-f32be":d==="fl64"?o.info.codec="pcm-f64be":d==="ipcm"?o.info.codec="pcm-s16be":d==="fpcm"&&(o.info.codec="pcm-f32be"),this.readContiguousBoxes(e.slice(e.filePos,u+h.totalSize-e.filePos))}}}break;case"avcC":{let o=this.currentTrack;if(!o)break;v(o.info),o.info.codecDescription=W(e,r.contentSize)}break;case"hvcC":{let o=this.currentTrack;if(!o)break;v(o.info),o.info.codecDescription=W(e,r.contentSize)}break;case"vpcC":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="video"),e.skip(4);let a=U(e),c=U(e),l=U(e),u=l>>4,h=l>>1&7,d=l&1,f=U(e),m=U(e),p=U(e);o.info.vp9CodecInfo={profile:a,level:c,bitDepth:u,chromaSubsampling:h,videoFullRangeFlag:d,colourPrimaries:f,transferCharacteristics:m,matrixCoefficients:p}}break;case"av1C":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="video"),e.skip(1);let a=U(e),c=a>>5,l=a&31,u=U(e),h=u>>7,d=u>>6&1,f=u>>5&1,m=u>>4&1,p=u>>3&1,g=u>>2&1,y=u&3,x=c===2&&d?f?12:10:d?10:8;o.info.av1CodecInfo={profile:c,level:l,tier:h,bitDepth:x,monochrome:m,chromaSubsamplingX:p,chromaSubsamplingY:g,chromaSamplePosition:y}}break;case"colr":{let o=this.currentTrack;if(!o||(v(o.info?.type==="video"),de(e,4)!=="nclx"))break;let c=Ee(e),l=Ee(e),u=Ee(e),h=!!(U(e)&128);o.info.colorSpace={primaries:ho[c],transfer:fo[l],matrix:mo[u],fullRange:h}}break;case"wave":this.readContiguousBoxes(e.slice(s,r.contentSize));break;case"esds":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="audio"),e.skip(4);let a=U(e);v(a===3),Io(e),e.skip(2);let c=U(e),l=(c&128)!==0,u=(c&64)!==0,h=(c&32)!==0;if(l&&e.skip(2),u){let g=U(e);e.skip(g)}h&&e.skip(2);let d=U(e);v(d===4);let f=Io(e),m=e.filePos,p=U(e);if(p===64||p===103?(o.info.codec="aac",o.info.aacCodecInfo={isMpeg2:p===103}):p===105||p===107?o.info.codec="mp3":p===221?o.info.codec="vorbis":console.warn(`Unsupported audio codec (objectTypeIndication ${p}) - discarding track.`),e.skip(12),f>e.filePos-m){let g=U(e);v(g===5);let y=Io(e);if(o.info.codecDescription=W(e,y),o.info.codec==="aac"){let x=El(o.info.codecDescription);x.numberOfChannels!==null&&(o.info.numberOfChannels=x.numberOfChannels),x.sampleRate!==null&&(o.info.sampleRate=x.sampleRate)}}}break;case"enda":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="audio"),Ee(e)&255&&(o.info.codec==="pcm-s16be"?o.info.codec="pcm-s16":o.info.codec==="pcm-s24be"?o.info.codec="pcm-s24":o.info.codec==="pcm-s32be"?o.info.codec="pcm-s32":o.info.codec==="pcm-f32be"?o.info.codec="pcm-f32":o.info.codec==="pcm-f64be"&&(o.info.codec="pcm-f64"))}break;case"pcmC":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="audio"),e.skip(4);let c=!!(U(e)&1),l=U(e);o.info.codec==="pcm-s16be"?c?l===16?o.info.codec="pcm-s16":l===24?o.info.codec="pcm-s24":l===32?o.info.codec="pcm-s32":(console.warn(`Invalid ipcm sample size ${l}.`),o.info.codec=null):l===16?o.info.codec="pcm-s16be":l===24?o.info.codec="pcm-s24be":l===32?o.info.codec="pcm-s32be":(console.warn(`Invalid ipcm sample size ${l}.`),o.info.codec=null):o.info.codec==="pcm-f32be"&&(c?l===32?o.info.codec="pcm-f32":l===64?o.info.codec="pcm-f64":(console.warn(`Invalid fpcm sample size ${l}.`),o.info.codec=null):l===32?o.info.codec="pcm-f32be":l===64?o.info.codec="pcm-f64be":(console.warn(`Invalid fpcm sample size ${l}.`),o.info.codec=null));break}case"dOps":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="audio"),e.skip(1);let a=U(e),c=Ee(e),l=B(e),u=Cs(e),h=U(e),d;h!==0?d=W(e,2+a):d=new Uint8Array(0);let f=new Uint8Array(19+d.byteLength),m=new DataView(f.buffer);m.setUint32(0,1332770163,!1),m.setUint32(4,1214603620,!1),m.setUint8(8,1),m.setUint8(9,a),m.setUint16(10,c,!0),m.setUint32(12,l,!0),m.setInt16(16,u,!0),m.setUint8(18,h),f.set(d,19),o.info.codecDescription=f,o.info.numberOfChannels=a,o.info.sampleRate=l}break;case"dfLa":{let o=this.currentTrack;if(!o)break;v(o.info?.type==="audio"),e.skip(4);let a=127,c=128,l=e.filePos;for(;e.filePos<n;){let m=U(e),p=mi(e);if((m&a)===0){e.skip(10);let y=B(e),x=y>>>12,w=(y>>9&7)+1;o.info.sampleRate=x,o.info.numberOfChannels=w,e.skip(20)}else e.skip(p);if(m&c)break}let u=e.filePos;e.filePos=l;let h=W(e,u-l),d=new Uint8Array(4+h.byteLength);new DataView(d.buffer).setUint32(0,1716281667,!1),d.set(h,4),o.info.codecDescription=d}break;case"stts":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4);let a=B(e),c=0,l=0;for(let u=0;u<a;u++){let h=B(e),d=B(e);o.sampleTable.sampleTimingEntries.push({startIndex:c,startDecodeTimestamp:l,count:h,delta:d}),c+=h,l+=h*d}}break;case"ctts":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4);let a=B(e),c=0;for(let l=0;l<a;l++){let u=B(e),h=Lt(e);o.sampleTable.sampleCompositionTimeOffsets.push({startIndex:c,count:u,offset:h}),c+=u}}break;case"stsz":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4);let a=B(e),c=B(e);if(a===0)for(let l=0;l<c;l++){let u=B(e);o.sampleTable.sampleSizes.push(u)}else o.sampleTable.sampleSizes.push(a)}break;case"stz2":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4),e.skip(3);let a=U(e),c=B(e),l=W(e,Math.ceil(c*a/8)),u=new fe(l);for(let h=0;h<c;h++){let d=u.readBits(a);o.sampleTable.sampleSizes.push(d)}}break;case"stss":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4),o.sampleTable.keySampleIndices=[];let a=B(e);for(let c=0;c<a;c++){let l=B(e)-1;o.sampleTable.keySampleIndices.push(l)}o.sampleTable.keySampleIndices[0]!==0&&o.sampleTable.keySampleIndices.unshift(0)}break;case"stsc":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4);let a=B(e);for(let l=0;l<a;l++){let u=B(e)-1,h=B(e),d=B(e);o.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:u,samplesPerChunk:h,sampleDescriptionIndex:d})}let c=0;for(let l=0;l<o.sampleTable.sampleToChunk.length;l++)if(o.sampleTable.sampleToChunk[l].startSampleIndex=c,l<o.sampleTable.sampleToChunk.length-1){let h=o.sampleTable.sampleToChunk[l+1].startChunkIndex-o.sampleTable.sampleToChunk[l].startChunkIndex;c+=h*o.sampleTable.sampleToChunk[l].samplesPerChunk}}break;case"stco":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4);let a=B(e);for(let c=0;c<a;c++){let l=B(e);o.sampleTable.chunkOffsets.push(l)}}break;case"co64":{let o=this.currentTrack;if(!o||!o.sampleTable)break;e.skip(4);let a=B(e);for(let c=0;c<a;c++){let l=Ye(e);o.sampleTable.chunkOffsets.push(l)}}break;case"mvex":this.isFragmented=!0,this.readContiguousBoxes(e.slice(s,r.contentSize));break;case"mehd":{let o=U(e);e.skip(3);let a=o===1?Ye(e):B(e);this.movieDurationInTimescale=a}break;case"trex":{e.skip(4);let o=B(e),a=B(e),c=B(e),l=B(e),u=B(e);this.fragmentTrackDefaults.push({trackId:o,defaultSampleDescriptionIndex:a,defaultSampleDuration:c,defaultSampleSize:l,defaultSampleFlags:u})}break;case"tfra":{let o=U(e);e.skip(3);let a=B(e),c=this.tracks.find(x=>x.id===a);if(!c)break;c.fragmentLookupTable=[];let l=B(e),u=(l&48)>>4,h=(l&12)>>2,d=l&3,f=[U,Ee,mi,B],m=f[u],p=f[h],g=f[d],y=B(e);for(let x=0;x<y;x++){let w=o===1?Ye(e):B(e),_=o===1?Ye(e):B(e);m(e),p(e),g(e),c.fragmentLookupTable.push({timestamp:w,moofOffset:_})}}break;case"moof":{this.currentFragment={moofOffset:t,moofSize:r.totalSize,implicitBaseDataOffset:t,trackData:new Map,dataStart:1/0,dataEnd:0,nextFragment:null,isKnownToBeFirstFragment:!1},this.readContiguousBoxes(e.slice(s,r.contentSize)),nt(this.fragments,this.currentFragment,o=>o.moofOffset);for(let[,o]of this.currentFragment.trackData){let a=o.samples[0],c=Pe(o.samples);this.currentFragment.dataStart=Math.min(this.currentFragment.dataStart,a.byteOffset),this.currentFragment.dataEnd=Math.max(this.currentFragment.dataEnd,c.byteOffset+c.byteSize)}this.currentFragment=null}break;case"traf":if(v(this.currentFragment),this.readContiguousBoxes(e.slice(s,r.contentSize)),this.currentTrack){let o=this.currentFragment.trackData.get(this.currentTrack.id);if(o){nt(this.currentTrack.fragments,this.currentFragment,l=>l.moofOffset),o.firstKeyFrameTimestamp!==null&&nt(this.currentTrack.fragmentsWithKeyFrame,this.currentFragment,l=>l.moofOffset);let{currentFragmentState:c}=this.currentTrack;v(c),c.startTimestamp!==null&&(gm(o,c.startTimestamp),o.startTimestampIsFinal=!0)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case"tfhd":{v(this.currentFragment),e.skip(1);let o=mi(e),a=!!(o&1),c=!!(o&2),l=!!(o&8),u=!!(o&16),h=!!(o&32),d=!!(o&65536),f=!!(o&131072),m=B(e),p=this.tracks.find(y=>y.id===m);if(!p)break;let g=this.fragmentTrackDefaults.find(y=>y.trackId===m);this.currentTrack=p,p.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:g?.defaultSampleDescriptionIndex??null,defaultSampleDuration:g?.defaultSampleDuration??null,defaultSampleSize:g?.defaultSampleSize??null,defaultSampleFlags:g?.defaultSampleFlags??null,startTimestamp:null},a?p.currentFragmentState.baseDataOffset=Ye(e):f&&(p.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),c&&(p.currentFragmentState.sampleDescriptionIndex=B(e)),l&&(p.currentFragmentState.defaultSampleDuration=B(e)),u&&(p.currentFragmentState.defaultSampleSize=B(e)),h&&(p.currentFragmentState.defaultSampleFlags=B(e)),d&&(p.currentFragmentState.defaultSampleDuration=0)}break;case"tfdt":{let o=this.currentTrack;if(!o)break;v(o.currentFragmentState);let a=U(e);e.skip(3);let c=a===0?B(e):Ye(e);o.currentFragmentState.startTimestamp=c}break;case"trun":{let o=this.currentTrack;if(!o)break;if(v(this.currentFragment),v(o.currentFragmentState),this.currentFragment.trackData.has(o.id)){console.warn("Can't have two trun boxes for the same track in one fragment. Ignoring...");break}let a=U(e),c=mi(e),l=!!(c&1),u=!!(c&4),h=!!(c&256),d=!!(c&512),f=!!(c&1024),m=!!(c&2048),p=B(e),g=o.currentFragmentState.baseDataOffset;l&&(g+=Lt(e));let y=null;u&&(y=B(e));let x=g;if(p===0){this.currentFragment.implicitBaseDataOffset=x;break}let w=0,_={startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1};this.currentFragment.trackData.set(o.id,_);for(let k=0;k<p;k++){let M;h?M=B(e):(v(o.currentFragmentState.defaultSampleDuration!==null),M=o.currentFragmentState.defaultSampleDuration);let P;d?P=B(e):(v(o.currentFragmentState.defaultSampleSize!==null),P=o.currentFragmentState.defaultSampleSize);let C;f?C=B(e):(v(o.currentFragmentState.defaultSampleFlags!==null),C=o.currentFragmentState.defaultSampleFlags),k===0&&y!==null&&(C=y);let E=0;m&&(a===0?E=B(e):E=Lt(e));let R=!(C&65536);_.samples.push({presentationTimestamp:w+E,duration:M,byteOffset:x,byteSize:P,isKeyFrame:R}),x+=P,w+=M}_.presentationTimestamps=_.samples.map((k,M)=>({presentationTimestamp:k.presentationTimestamp,sampleIndex:M})).sort((k,M)=>k.presentationTimestamp-M.presentationTimestamp);for(let k=0;k<_.presentationTimestamps.length;k++){let M=_.presentationTimestamps[k],P=_.samples[M.sampleIndex];if(_.firstKeyFrameTimestamp===null&&P.isKeyFrame&&(_.firstKeyFrameTimestamp=P.presentationTimestamp),k<_.presentationTimestamps.length-1){let C=_.presentationTimestamps[k+1];P.duration=C.presentationTimestamp-M.presentationTimestamp}}let S=_.samples[_.presentationTimestamps[0].sampleIndex],T=_.samples[Pe(_.presentationTimestamps).sampleIndex];_.startTimestamp=S.presentationTimestamp,_.endTimestamp=T.presentationTimestamp+T.duration,this.currentFragment.implicitBaseDataOffset=x}break;case"udta":{let o=this.iterateContiguousBoxes(e.slice(s,r.contentSize));for(let{boxInfo:a,slice:c}of o){if(a.name!=="meta"&&!this.currentTrack){let l=c.filePos;this.metadataTags.raw??={},aS.has(a.name)?this.metadataTags.raw[a.name]??=ot(c):this.metadataTags.raw[a.name]??=W(c,a.contentSize),c.filePos=l}switch(a.name){case"meta":c.skip(-a.headerSize),this.traverseBox(c);break;case"\xA9nam":case"name":this.currentTrack?this.currentTrack.name=Fe.decode(W(c,a.contentSize)):this.metadataTags.title??=ot(c);break;case"\xA9des":this.currentTrack||(this.metadataTags.description??=ot(c));break;case"\xA9ART":this.currentTrack||(this.metadataTags.artist??=ot(c));break;case"\xA9alb":this.currentTrack||(this.metadataTags.album??=ot(c));break;case"albr":this.currentTrack||(this.metadataTags.albumArtist??=ot(c));break;case"\xA9gen":this.currentTrack||(this.metadataTags.genre??=ot(c));break;case"\xA9day":if(!this.currentTrack){let l=new Date(ot(c));Number.isNaN(l.getTime())||(this.metadataTags.date??=l)}break;case"\xA9cmt":this.currentTrack||(this.metadataTags.comment??=ot(c));break;case"\xA9lyr":this.currentTrack||(this.metadataTags.lyrics??=ot(c));break}}}break;case"meta":{if(this.currentTrack)break;let a=B(e)!==0;this.currentMetadataKeys=new Map,a?this.readContiguousBoxes(e.slice(s,r.contentSize)):this.readContiguousBoxes(e.slice(s+4,r.contentSize-4)),this.currentMetadataKeys=null}break;case"keys":{if(!this.currentMetadataKeys)break;e.skip(4);let o=B(e);for(let a=0;a<o;a++){let c=B(e);e.skip(4);let l=Fe.decode(W(e,c-8));this.currentMetadataKeys.set(a+1,l)}}break;case"ilst":{if(!this.currentMetadataKeys)break;let o=this.iterateContiguousBoxes(e.slice(s,r.contentSize));for(let{boxInfo:a,slice:c}of o){let l=a.name,u=(l.charCodeAt(0)<<24)+(l.charCodeAt(1)<<16)+(l.charCodeAt(2)<<8)+l.charCodeAt(3);this.currentMetadataKeys.has(u)&&(l=this.currentMetadataKeys.get(u));let h=Kf(c);switch(this.metadataTags.raw??={},this.metadataTags.raw[l]??=h,l){case"\xA9nam":case"titl":case"com.apple.quicktime.title":case"title":typeof h=="string"&&(this.metadataTags.title??=h);break;case"\xA9des":case"desc":case"dscp":case"com.apple.quicktime.description":case"description":typeof h=="string"&&(this.metadataTags.description??=h);break;case"\xA9ART":case"com.apple.quicktime.artist":case"artist":typeof h=="string"&&(this.metadataTags.artist??=h);break;case"\xA9alb":case"albm":case"com.apple.quicktime.album":case"album":typeof h=="string"&&(this.metadataTags.album??=h);break;case"aART":case"album_artist":typeof h=="string"&&(this.metadataTags.albumArtist??=h);break;case"\xA9cmt":case"com.apple.quicktime.comment":case"comment":typeof h=="string"&&(this.metadataTags.comment??=h);break;case"\xA9gen":case"gnre":case"com.apple.quicktime.genre":case"genre":typeof h=="string"&&(this.metadataTags.genre??=h);break;case"\xA9lyr":case"lyrics":typeof h=="string"&&(this.metadataTags.lyrics??=h);break;case"\xA9day":case"rldt":case"com.apple.quicktime.creationdate":case"date":if(typeof h=="string"){let d=new Date(h);Number.isNaN(d.getTime())||(this.metadataTags.date??=d)}break;case"covr":case"com.apple.quicktime.artwork":h instanceof ar?(this.metadataTags.images??=[],this.metadataTags.images.push({data:h.data,kind:"coverFront",mimeType:h.mimeType})):h instanceof Uint8Array&&(this.metadataTags.images??=[],this.metadataTags.images.push({data:h,kind:"coverFront",mimeType:"image/*"}));break;case"trkn":if(h instanceof Uint8Array){let d=oe(h),f=d.getUint16(2,!1),m=d.getUint16(4,!1);f>0&&(this.metadataTags.trackNumber??=f),m>0&&(this.metadataTags.tracksTotal??=m)}break;case"disc":case"disk":if(h instanceof Uint8Array){let d=oe(h),f=d.getUint16(2,!1),m=d.getUint16(4,!1);f>0&&(this.metadataTags.discNumber??=f),m>0&&(this.metadataTags.discsTotal??=m)}break}}}break}return e.filePos=n,!0}},Vo=class{constructor(e){this.internalTrack=e,this.packetToSampleIndex=new WeakMap,this.packetToFragmentLocation=new WeakMap}getId(){return this.internalTrack.id}getCodec(){throw new Error("Not implemented on base class.")}getInternalCodecId(){return this.internalTrack.internalCodecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}async getFirstPacket(e){let t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(()=>{let r=this.internalTrack.demuxer.fragments[0]??null;if(r?.isKnownToBeFirstFragment){let s=r;for(;s;){if(s.trackData.get(this.internalTrack.id))return{fragmentIndex:ae(this.internalTrack.fragments,s.moofOffset,o=>o.moofOffset),sampleIndex:0,correctSampleFound:!0};s=s.nextFragment}}return{fragmentIndex:-1,sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Fr(e*this.internalTrack.timescale,14)+this.internalTrack.editListOffset}async getPacket(e,t){let r=this.mapTimestampIntoTimescale(e),s=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=pm(s,r),o=await this.fetchPacketForSampleIndex(n,t);return!xm(s)||!this.internalTrack.demuxer.isFragmented?o:this.performFragmentedLookup(()=>this.findSampleInFragmentsForTimestamp(r),r,r,t)}async getNextPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0)return this.fetchPacketForSampleIndex(r+1,t);let s=this.packetToFragmentLocation.get(e);if(s===void 0)throw new Error("Packet was not created from this track.");let n=s.fragment.trackData.get(this.internalTrack.id),o=ae(this.internalTrack.fragments,s.fragment.moofOffset,a=>a.moofOffset);return v(o!==-1),this.performFragmentedLookup(()=>{if(s.sampleIndex+1<n.samples.length)return{fragmentIndex:o,sampleIndex:s.sampleIndex+1,correctSampleFound:!0};{let a=s.fragment;for(;a.nextFragment;)if(a=a.nextFragment,a.trackData.get(this.internalTrack.id)){let l=ae(this.internalTrack.fragments,a.moofOffset,u=>u.moofOffset);return v(l!==-1),{fragmentIndex:l,sampleIndex:0,correctSampleFound:!0}}return{fragmentIndex:o,sampleIndex:-1,correctSampleFound:!1}}},-1/0,1/0,t)}async getKeyPacket(e,t){let r=this.mapTimestampIntoTimescale(e),s=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=pm(s,r),o=n===-1?-1:lS(s,n),a=await this.fetchPacketForSampleIndex(o,t);return!xm(s)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(()=>this.findKeySampleInFragmentsForTimestamp(r),r,r,t)}async getNextKeyPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0){let a=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),c=uS(a,r);return this.fetchPacketForSampleIndex(c,t)}let s=this.packetToFragmentLocation.get(e);if(s===void 0)throw new Error("Packet was not created from this track.");let n=s.fragment.trackData.get(this.internalTrack.id),o=ae(this.internalTrack.fragments,s.fragment.moofOffset,a=>a.moofOffset);return v(o!==-1),this.performFragmentedLookup(()=>{let a=n.samples.findIndex((c,l)=>c.isKeyFrame&&l>s.sampleIndex);if(a!==-1)return{fragmentIndex:o,sampleIndex:a,correctSampleFound:!0};{let c=s.fragment;for(;c.nextFragment;){c=c.nextFragment;let l=c.trackData.get(this.internalTrack.id);if(l&&l.firstKeyFrameTimestamp!==null){let u=ae(this.internalTrack.fragments,c.moofOffset,d=>d.moofOffset);v(u!==-1);let h=l.samples.findIndex(d=>d.isKeyFrame);return v(h!==-1),{fragmentIndex:u,sampleIndex:h,correctSampleFound:!0}}}return{fragmentIndex:o,sampleIndex:-1,correctSampleFound:!1}}},-1/0,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;let r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),s=cS(r,e);if(!s)return null;let n;if(t.metadataOnly)n=Ae;else{let l=this.internalTrack.demuxer.reader.requestSlice(s.sampleOffset,s.sampleSize);l instanceof Promise&&(l=await l),v(l),n=W(l,s.sampleSize)}let o=(s.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,a=s.duration/this.internalTrack.timescale,c=new ce(n,s.isKeyFrame?"key":"delta",o,a,e,s.sampleSize);return this.packetToSampleIndex.set(c,e),c}async fetchPacketInFragment(e,t,r){if(t===-1)return null;let n=e.trackData.get(this.internalTrack.id).samples[t];v(n);let o;if(r.metadataOnly)o=Ae;else{let u=this.internalTrack.demuxer.reader.requestSlice(n.byteOffset,n.byteSize);u instanceof Promise&&(u=await u),v(u),o=W(u,n.byteSize)}let a=(n.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,c=n.duration/this.internalTrack.timescale,l=new ce(o,n.isKeyFrame?"key":"delta",a,c,e.moofOffset+t,n.byteSize);return this.packetToFragmentLocation.set(l,{fragment:e,sampleIndex:t}),l}findSampleInFragmentsForTimestamp(e){let t=Q(this.internalTrack.fragments,e,n=>n.trackData.get(this.internalTrack.id).startTimestamp),r=-1,s=!1;if(t!==-1){let o=this.internalTrack.fragments[t].trackData.get(this.internalTrack.id),a=Q(o.presentationTimestamps,e,c=>c.presentationTimestamp);v(a!==-1),r=o.presentationTimestamps[a].sampleIndex,s=e<o.endTimestamp}return{fragmentIndex:t,sampleIndex:r,correctSampleFound:s}}findKeySampleInFragmentsForTimestamp(e){let t=Q(this.internalTrack.fragmentsWithKeyFrame,e,o=>o.trackData.get(this.internalTrack.id).startTimestamp),r=-1,s=-1,n=!1;if(t!==-1){let o=this.internalTrack.fragmentsWithKeyFrame[t];r=ae(this.internalTrack.fragments,o.moofOffset,u=>u.moofOffset),v(r!==-1);let a=o.trackData.get(this.internalTrack.id),c=po(a.presentationTimestamps,u=>a.samples[u.sampleIndex].isKeyFrame&&u.presentationTimestamp<=e);v(c!==-1),s=a.presentationTimestamps[c].sampleIndex,n=e<a.endTimestamp}return{fragmentIndex:r,sampleIndex:s,correctSampleFound:n}}async performFragmentedLookup(e,t,r,s){let n=this.internalTrack.demuxer,o=await n.fragmentLookupMutex.acquire();try{let{fragmentIndex:a,sampleIndex:c,correctSampleFound:l}=e();if(l){let x=this.internalTrack.fragments[a];return this.fetchPacketInFragment(x,c,s)}let u=null,h=a,d=c,f=this.internalTrack.fragmentLookupTable?Q(this.internalTrack.fragmentLookupTable,t,x=>x.timestamp):-1,m=f!==-1?this.internalTrack.fragmentLookupTable[f]:null,p,g=!1;if(a===-1)p=m?.moofOffset??0,g=p===0;else{let x=this.internalTrack.fragments[a];!m||x.moofOffset>=m.moofOffset?(p=x.moofOffset+x.moofSize,u=x):p=m.moofOffset}for(;;){if(u){let S=u.trackData.get(this.internalTrack.id);if(S&&S.startTimestamp>r)break;if(u.nextFragment){p=u.nextFragment.moofOffset+u.nextFragment.moofSize,u=u.nextFragment;continue}}let x=n.reader.requestSliceRange(p,Vt,zr);if(x instanceof Promise&&(x=await x),!x)break;let w=p,_=bt(x);if(!_)break;if(_.name==="moof"){let S=ae(n.fragments,w,C=>C.moofOffset),T;S===-1?T=await n.readFragment(w):T=n.fragments[S],u&&(u.nextFragment=T),u=T,g&&(T.isKnownToBeFirstFragment=!0,g=!1);let{fragmentIndex:k,sampleIndex:M,correctSampleFound:P}=e();if(P){let C=this.internalTrack.fragments[k];return this.fetchPacketInFragment(C,M,s)}k!==-1&&(h=k,d=M)}p=w+_.totalSize}let y=h!==-1?this.internalTrack.fragments[h]:null;if(m&&(!y||y.moofOffset<m.moofOffset)){let w=this.internalTrack.fragmentLookupTable[f-1]?.timestamp??-1/0;return this.performFragmentedLookup(e,w,r,s)}return y?this.fetchPacketInFragment(y,d,s):null}finally{o()}}},Wl=class extends Vo{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getRotation(){return this.internalTrack.rotation}async getColorSpace(){return{primaries:this.internalTrack.info.colorSpace?.primaries,transfer:this.internalTrack.info.colorSpace?.transfer,matrix:this.internalTrack.info.colorSpace?.matrix,fullRange:this.internalTrack.info.colorSpace?.fullRange}}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec==="vp9"&&!this.internalTrack.info.vp9CodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.vp9CodecInfo=e&&ko(e.data)}else if(this.internalTrack.info.codec==="av1"&&!this.internalTrack.info.av1CodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.av1CodecInfo=e&&Po(e.data)}return{codec:_o(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace??void 0}})():null}},Hl=class extends Vo{constructor(e){super(e),this.decoderConfig=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfig??={codec:So(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}:null}},pm=(i,e)=>{if(i.presentationTimestamps){let t=Q(i.presentationTimestamps,e,r=>r.presentationTimestamp);return t===-1?-1:i.presentationTimestamps[t].sampleIndex}else{let t=Q(i.sampleTimingEntries,e,s=>s.startDecodeTimestamp);if(t===-1)return-1;let r=i.sampleTimingEntries[t];return r.startIndex+Math.min(Math.floor((e-r.startDecodeTimestamp)/r.delta),r.count-1)}},cS=(i,e)=>{let t=Q(i.sampleTimingEntries,e,y=>y.startIndex),r=i.sampleTimingEntries[t];if(!r||r.startIndex+r.count<=e)return null;let n=r.startDecodeTimestamp+(e-r.startIndex)*r.delta,o=Q(i.sampleCompositionTimeOffsets,e,y=>y.startIndex),a=i.sampleCompositionTimeOffsets[o];a&&e-a.startIndex<a.count&&(n+=a.offset);let c=i.sampleSizes[Math.min(e,i.sampleSizes.length-1)],l=Q(i.sampleToChunk,e,y=>y.startSampleIndex),u=i.sampleToChunk[l];v(u);let h=u.startChunkIndex+Math.floor((e-u.startSampleIndex)/u.samplesPerChunk),d=i.chunkOffsets[h],f=u.startSampleIndex+(h-u.startChunkIndex)*u.samplesPerChunk,m=0,p=d;if(i.sampleSizes.length===1)p+=c*(e-f),m+=c*u.samplesPerChunk;else for(let y=f;y<f+u.samplesPerChunk;y++){let x=i.sampleSizes[y];y<e&&(p+=x),m+=x}let g=r.delta;if(i.presentationTimestamps){let y=i.presentationTimestampIndexMap[e];v(y!==void 0),y<i.presentationTimestamps.length-1&&(g=i.presentationTimestamps[y+1].presentationTimestamp-n)}return{presentationTimestamp:n,duration:g,sampleOffset:p,sampleSize:c,chunkOffset:d,chunkSize:m,isKeyFrame:i.keySampleIndices?ae(i.keySampleIndices,e,y=>y)!==-1:!0}},lS=(i,e)=>{if(!i.keySampleIndices)return e;let t=Q(i.keySampleIndices,e,r=>r);return i.keySampleIndices[t]??-1},uS=(i,e)=>{if(!i.keySampleIndices)return e+1;let t=Q(i.keySampleIndices,e,r=>r);return i.keySampleIndices[t+1]??-1},gm=(i,e)=>{i.startTimestamp+=e,i.endTimestamp+=e;for(let t of i.samples)t.presentationTimestamp+=e;for(let t of i.presentationTimestamps)t.presentationTimestamp+=e},hS=i=>{let[e,,,t]=i,r=Math.hypot(e,t),s=e/r,n=t/r,o=-Math.atan2(n,s)*(180/Math.PI);return Number.isFinite(o)?o:0},xm=i=>i.sampleSizes.length===0;var jt;(function(i){i[i.None=0]="None",i[i.Xiph=1]="Xiph",i[i.FixedSize=2]="FixedSize",i[i.Ebml=3]="Ebml"})(jt||(jt={}));var jl=[{id:I.SeekHead,flag:"seekHeadSeen"},{id:I.Info,flag:"infoSeen"},{id:I.Tracks,flag:"tracksSeen"},{id:I.Cues,flag:"cuesSeen"}],ym=10*2**20,Wo=class extends We{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentCueTime=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.reader=e._reader}async computeDuration(){let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(t=>t.inputTrack))}async getMimeType(){await this.readMetadata();let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.getCodecParameterString()));return Qf({isWebM:this.isWebM,hasVideo:this.segments.some(r=>r.tracks.some(s=>s.info?.type==="video")),hasAudio:this.segments.some(r=>r.tracks.some(s=>s.info?.type==="audio")),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(let t of this.segments)t.metadataTagsCollected||(this.reader.fileSize!==null&&await this.loadSegmentMetadata(t),t.metadataTagsCollected=!0);let e={};for(let t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,Ve,at);if(t instanceof Promise&&(t=await t),!t)break;let r=ct(t);if(!r)break;let s=r.id,n=r.size,o=t.filePos;if(s===I.EBML){Wt(n);let a=this.reader.requestSlice(o,n);if(a instanceof Promise&&(a=await a),!a)break;this.readContiguousElements(a)}else if(s===I.Segment){if(await this.readSegment(o,n),n===null||this.reader.fileSize===null)break}else if(s===I.Cluster){if(this.reader.fileSize===null)break;n===null&&(n=(await Ro(this.reader,o,Mo,this.reader.fileSize)).pos-o);let a=Pe(this.segments);a&&(a.elementEndPos=o+n)}Wt(n),e=o+n}})()}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:e,elementEndPos:t===null?null:e+t,clusterSeekStartPos:e,clusters:[],clusterLookupMutex:new et,metadataTags:{},metadataTagsCollected:!1},this.segments.push(this.currentSegment);let r=e;for(;this.currentSegment.elementEndPos===null||r<this.currentSegment.elementEndPos;){let c=this.reader.requestSliceRange(r,Ve,at);if(c instanceof Promise&&(c=await c),!c)break;let l=r,u=ct(c);if(!u||!pi.includes(u.id)&&u.id!==I.Void){let p=await Dl(this.reader,l,pi,Math.min(this.currentSegment.elementEndPos??1/0,l+ym));if(p){r=p;continue}else break}let{id:h,size:d}=u,f=c.filePos,m=jl.findIndex(p=>p.id===h);if(m!==-1){let p=jl[m].flag;this.currentSegment[p]=!0,Wt(d);let g=this.reader.requestSlice(f,d);g instanceof Promise&&(g=await g),g&&this.readContiguousElements(g)}else if(h===I.Tags||h===I.Attachments){h===I.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,Wt(d);let p=this.reader.requestSlice(f,d);p instanceof Promise&&(p=await p),p&&this.readContiguousElements(p)}else if(h===I.Cluster){this.currentSegment.clusterSeekStartPos=l;break}if(d===null)break;r=f+d}if(this.currentSegment.seekEntries.sort((c,l)=>c.segmentPosition-l.segmentPosition),this.reader.fileSize!==null)for(let c of this.currentSegment.seekEntries){let l=jl.find(p=>p.id===c.id);if(!l||this.currentSegment[l.flag])continue;let u=this.reader.requestSliceRange(e+c.segmentPosition,Ve,at);if(u instanceof Promise&&(u=await u),!u)continue;let h=ct(u);if(!h)continue;let{id:d,size:f}=h;if(d!==l.id)continue;Wt(f),this.currentSegment[l.flag]=!0;let m=this.reader.requestSlice(u.filePos,f);m instanceof Promise&&(m=await m),m&&this.readContiguousElements(m)}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e9/1e6),this.currentSegment.tracks.sort((c,l)=>Number(l.isDefault)-Number(c.isDefault)),this.currentSegment.cuePoints.sort((c,l)=>c.clusterPosition-l.clusterPosition);let s=this.currentSegment.tracks.map(c=>c.id),n=new Set,o=null,a=null;for(let c of this.currentSegment.cuePoints){if(c.clusterPosition!==o){for(let u of n)v(a),this.currentSegment.tracks.find(d=>d.id===u).cuePoints.push(a);for(let u of s)n.add(u)}if(a=c,!n.has(c.trackId))continue;this.currentSegment.tracks.find(u=>u.id===c.trackId).cuePoints.push(c),n.delete(c.trackId),o=c.clusterPosition}for(let c of n)v(a),this.currentSegment.tracks.find(u=>u.id===c).cuePoints.push(a);for(let c of this.currentSegment.tracks)c.cuePoints.sort((l,u)=>l.time-u.time);this.currentSegment=null}async readCluster(e,t){let r=this.reader.requestSliceRange(e,Ve,at);r instanceof Promise&&(r=await r),v(r);let s=e,n=ct(r);v(n);let o=n.id,a=n.size,c=r.filePos;a===null&&(a=(await Ro(this.reader,c,Mo,t.elementEndPos)).pos-c),v(o===I.Cluster);let l=this.reader.requestSlice(c,a);l instanceof Promise&&(l=await l);let u={elementStartPos:s,elementEndPos:c+a,dataStartPos:c,timestamp:-1,trackData:new Map,nextCluster:null,isKnownToBeFirstCluster:!1};this.currentCluster=u,l&&this.readContiguousElements(l);for(let[h,d]of u.trackData){let f=t.tracks.find(x=>x.id===h)??null;v(d.blocks.length>0);let m=!1,p=!1;for(let x=0;x<d.blocks.length;x++){let w=d.blocks[x];w.timestamp+=u.timestamp,m||=w.referencedTimestamps.length>0,p||=w.lacing!==jt.None}m&&(d.blocks=dS(d.blocks)),d.presentationTimestamps=d.blocks.map((x,w)=>({timestamp:x.timestamp,blockIndex:w})).sort((x,w)=>x.timestamp-w.timestamp);for(let x=0;x<d.presentationTimestamps.length;x++){let w=d.presentationTimestamps[x],_=d.blocks[w.blockIndex];if(d.firstKeyFrameTimestamp===null&&_.isKeyFrame&&(d.firstKeyFrameTimestamp=_.timestamp),x<d.presentationTimestamps.length-1){let S=d.presentationTimestamps[x+1];_.duration=S.timestamp-_.timestamp}else _.duration===0&&f?.defaultDuration!=null&&_.lacing===jt.None&&(_.duration=f.defaultDuration)}p&&(this.expandLacedBlocks(d.blocks,f),d.presentationTimestamps=d.blocks.map((x,w)=>({timestamp:x.timestamp,blockIndex:w})).sort((x,w)=>x.timestamp-w.timestamp));let g=d.blocks[d.presentationTimestamps[0].blockIndex],y=d.blocks[Pe(d.presentationTimestamps).blockIndex];d.startTimestamp=g.timestamp,d.endTimestamp=y.timestamp+y.duration,f&&(nt(f.clusters,u,w=>w.elementStartPos),d.firstKeyFrameTimestamp!==null&&nt(f.clustersWithKeyFrame,u,w=>w.elementStartPos))}return nt(t.clusters,u,h=>h.elementStartPos),this.currentCluster=null,u}getTrackDataInCluster(e,t){let r=e.trackData.get(t);return r||(r={startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,r)),r}expandLacedBlocks(e,t){for(let r=0;r<e.length;r++){let s=e[r];if(s.lacing===jt.None)continue;let n=di.tempFromBytes(s.data),o=[],a=U(n)+1;switch(s.lacing){case jt.Xiph:{let c=0;for(let l=0;l<a-1;l++){let u=0;for(;n.bufferPos<n.length;){let h=U(n);if(u+=h,h<255){o.push(u),c+=u;break}}}o.push(n.length-(n.bufferPos+c))}break;case jt.FixedSize:{let c=n.length-1,l=Math.floor(c/a);for(let u=0;u<a;u++)o.push(l)}break;case jt.Ebml:{let c=gi(n);v(c!==null);let l=c;o.push(l);let u=l;for(let h=1;h<a-1;h++){let d=n.bufferPos,f=gi(n);v(f!==null);let m=f,g=(1<<(n.bufferPos-d)*7-1)-1,y=m-g;l+=y,o.push(l),u+=l}o.push(n.length-(n.bufferPos+u))}break;default:v(!1)}v(o.length===a),e.splice(r,1);for(let c=0;c<a;c++){let l=o[c],u=W(n,l),h=s.duration||a*(t?.defaultDuration??0),d=s.timestamp+h*c/a,f=h/a;e.splice(r+c,0,{timestamp:d,duration:f,isKeyFrame:s.isKeyFrame,referencedTimestamps:s.referencedTimestamps,data:u,lacing:jt.None})}r+=a,r--}}async loadSegmentMetadata(e){for(let t of e.seekEntries){if(!(t.id===I.Tags&&!e.tagsSeen)){if(!(t.id===I.Attachments&&!e.attachmentsSeen))continue}let r=this.reader.requestSliceRange(e.dataStartPos+t.segmentPosition,Ve,at);if(r instanceof Promise&&(r=await r),!r)continue;let s=ct(r);if(!s||s.id!==t.id)continue;let{size:n}=s;Wt(n),v(!this.currentSegment),this.currentSegment=e;let o=this.reader.requestSlice(r.filePos,n);o instanceof Promise&&(o=await o),o&&this.readContiguousElements(o),this.currentSegment=null,t.id===I.Tags?e.tagsSeen=!0:t.id===I.Attachments&&(e.attachmentsSeen=!0)}}readContiguousElements(e){let t=e.filePos;for(;e.filePos-t<=e.length-Ve&&this.traverseElement(e););}traverseElement(e){let t=ct(e);if(!t)return!1;let{id:r,size:s}=t,n=e.filePos;switch(Wt(s),r){case I.DocType:this.isWebM=lr(e,s)==="webm";break;case I.Seek:{if(!this.currentSegment)break;let o={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(o),this.readContiguousElements(e.slice(n,s)),(o.id===-1||o.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case I.SeekID:{let o=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!o)break;o.id=J(e,s)}break;case I.SeekPosition:{let o=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!o)break;o.segmentPosition=J(e,s)}break;case I.TimestampScale:{if(!this.currentSegment)break;this.currentSegment.timestampScale=J(e,s),this.currentSegment.timestampFactor=1e9/this.currentSegment.timestampScale}break;case I.Duration:{if(!this.currentSegment)break;this.currentSegment.duration=Fo(e,s)}break;case I.TrackEntry:{if(!this.currentSegment)break;if(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusters:[],clustersWithKeyFrame:[],cuePoints:[],isDefault:!1,inputTrack:null,codecId:null,codecPrivate:null,defaultDuration:null,name:null,languageCode:Ce,info:null},this.readContiguousElements(e.slice(n,s)),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){let o=this.currentTrack.codecId.indexOf("/"),a=o===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,o);if(this.currentTrack.info.type==="video"&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){this.currentTrack.codecId===lt.avc?(this.currentTrack.info.codec="avc",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===lt.hevc?(this.currentTrack.info.codec="hevc",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):a===lt.vp8?this.currentTrack.info.codec="vp8":a===lt.vp9?this.currentTrack.info.codec="vp9":a===lt.av1&&(this.currentTrack.info.codec="av1");let c=this.currentTrack,l=new wt(new $l(c));this.currentTrack.inputTrack=l,this.currentSegment.tracks.push(this.currentTrack)}else if(this.currentTrack.info.type==="audio"&&this.currentTrack.info.numberOfChannels!==-1&&this.currentTrack.info.sampleRate!==-1){a===lt.aac?(this.currentTrack.info.codec="aac",this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes("MPEG2")},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===lt.mp3?this.currentTrack.info.codec="mp3":a===lt.opus?(this.currentTrack.info.codec="opus",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):a===lt.vorbis?(this.currentTrack.info.codec="vorbis",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):a===lt.flac?(this.currentTrack.info.codec="flac",this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId==="A_PCM/INT/LIT"?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec="pcm-u8":this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec="pcm-s16":this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec="pcm-s24":this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec="pcm-s32"):this.currentTrack.codecId==="A_PCM/INT/BIG"?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec="pcm-u8":this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec="pcm-s16be":this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec="pcm-s24be":this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec="pcm-s32be"):this.currentTrack.codecId==="A_PCM/FLOAT/IEEE"&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec="pcm-f32":this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec="pcm-f64"));let c=this.currentTrack,l=new Ie(new ql(c));this.currentTrack.inputTrack=l,this.currentSegment.tracks.push(this.currentTrack)}}this.currentTrack=null}break;case I.TrackNumber:{if(!this.currentTrack)break;this.currentTrack.id=J(e,s)}break;case I.TrackType:{if(!this.currentTrack)break;let o=J(e,s);o===1?this.currentTrack.info={type:"video",width:-1,height:-1,rotation:0,codec:null,codecDescription:null,colorSpace:null}:o===2&&(this.currentTrack.info={type:"audio",numberOfChannels:-1,sampleRate:-1,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null})}break;case I.FlagEnabled:{if(!this.currentTrack)break;J(e,s)||(this.currentSegment.tracks.pop(),this.currentTrack=null)}break;case I.FlagDefault:{if(!this.currentTrack)break;this.currentTrack.isDefault=!!J(e,s)}break;case I.CodecID:{if(!this.currentTrack)break;this.currentTrack.codecId=lr(e,s)}break;case I.CodecPrivate:{if(!this.currentTrack)break;this.currentTrack.codecPrivate=W(e,s)}break;case I.DefaultDuration:{if(!this.currentTrack)break;this.currentTrack.defaultDuration=this.currentTrack.segment.timestampFactor*J(e,s)/1e9}break;case I.Name:{if(!this.currentTrack)break;this.currentTrack.name=xi(e,s)}break;case I.Language:{if(!this.currentTrack||this.currentTrack.languageCode!==Ce)break;this.currentTrack.languageCode=lr(e,s),xo(this.currentTrack.languageCode)||(this.currentTrack.languageCode=Ce)}break;case I.LanguageBCP47:{if(!this.currentTrack)break;let a=lr(e,s).split("-")[0];a?this.currentTrack.languageCode=a:this.currentTrack.languageCode=Ce}break;case I.Video:{if(this.currentTrack?.info?.type!=="video")break;this.readContiguousElements(e.slice(n,s))}break;case I.PixelWidth:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.width=J(e,s)}break;case I.PixelHeight:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.height=J(e,s)}break;case I.Colour:{if(this.currentTrack?.info?.type!=="video")break;this.currentTrack.info.colorSpace={},this.readContiguousElements(e.slice(n,s))}break;case I.MatrixCoefficients:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;let o=J(e,s),a=mo[o]??null;this.currentTrack.info.colorSpace.matrix=a}break;case I.Range:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;this.currentTrack.info.colorSpace.fullRange=J(e,s)===2}break;case I.TransferCharacteristics:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;let o=J(e,s),a=fo[o]??null;this.currentTrack.info.colorSpace.transfer=a}break;case I.Primaries:{if(this.currentTrack?.info?.type!=="video"||!this.currentTrack.info.colorSpace)break;let o=J(e,s),a=ho[o]??null;this.currentTrack.info.colorSpace.primaries=a}break;case I.Projection:{if(this.currentTrack?.info?.type!=="video")break;this.readContiguousElements(e.slice(n,s))}break;case I.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!=="video")break;let a=-Fo(e,s);try{this.currentTrack.info.rotation=uo(a)}catch{}}break;case I.Audio:{if(this.currentTrack?.info?.type!=="audio")break;this.readContiguousElements(e.slice(n,s))}break;case I.SamplingFrequency:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.sampleRate=Fo(e,s)}break;case I.Channels:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.numberOfChannels=J(e,s)}break;case I.BitDepth:{if(this.currentTrack?.info?.type!=="audio")break;this.currentTrack.info.bitDepth=J(e,s)}break;case I.CuePoint:{if(!this.currentSegment)break;this.readContiguousElements(e.slice(n,s)),this.currentCueTime=null}break;case I.CueTime:this.currentCueTime=J(e,s);break;case I.CueTrackPositions:{if(this.currentCueTime===null)break;v(this.currentSegment);let o={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(o),this.readContiguousElements(e.slice(n,s)),(o.trackId===-1||o.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case I.CueTrack:{let o=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!o)break;o.trackId=J(e,s)}break;case I.CueClusterPosition:{let o=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!o)break;v(this.currentSegment),o.clusterPosition=this.currentSegment.dataStartPos+J(e,s)}break;case I.Timestamp:{if(!this.currentCluster)break;this.currentCluster.timestamp=J(e,s)}break;case I.SimpleBlock:{if(!this.currentCluster)break;let o=gi(e);if(o===null)break;let a=Cs(e),c=U(e),l=!!(c&128),u=c>>1&3;this.getTrackDataInCluster(this.currentCluster,o).blocks.push({timestamp:a,duration:0,isKeyFrame:l,referencedTimestamps:[],data:W(e,s-(e.filePos-n)),lacing:u})}break;case I.BlockGroup:{if(!this.currentCluster)break;if(this.readContiguousElements(e.slice(n,s)),this.currentBlock){for(let o=0;o<this.currentBlock.referencedTimestamps.length;o++)this.currentBlock.referencedTimestamps[o]+=this.currentBlock.timestamp;this.currentBlock=null}}break;case I.Block:{if(!this.currentCluster)break;let o=gi(e);if(o===null)break;let a=Cs(e),l=U(e)>>1&3,u=this.getTrackDataInCluster(this.currentCluster,o);this.currentBlock={timestamp:a,duration:0,isKeyFrame:!0,referencedTimestamps:[],data:W(e,s-(e.filePos-n)),lacing:l},u.blocks.push(this.currentBlock)}break;case I.BlockDuration:{if(!this.currentBlock)break;this.currentBlock.duration=J(e,s)}break;case I.ReferenceBlock:{if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1;let o=Zf(e,s);this.currentBlock.referencedTimestamps.push(o)}break;case I.Tag:this.currentTagTargetIsMovie=!0,this.readContiguousElements(e.slice(n,s));break;case I.Targets:this.readContiguousElements(e.slice(n,s));break;case I.TargetTypeValue:J(e,s)!==50&&(this.currentTagTargetIsMovie=!1);break;case I.TagTrackUID:case I.TagEditionUID:case I.TagChapterUID:case I.TagAttachmentUID:this.currentTagTargetIsMovie=!1;break;case I.SimpleTag:{if(!this.currentTagTargetIsMovie)break;this.currentSimpleTagName=null,this.readContiguousElements(e.slice(n,s))}break;case I.TagName:this.currentSimpleTagName=xi(e,s);break;case I.TagString:{if(!this.currentSimpleTagName)break;let o=xi(e,s);this.processTagValue(this.currentSimpleTagName,o)}break;case I.TagBinary:{if(!this.currentSimpleTagName)break;let o=W(e,s);this.processTagValue(this.currentSimpleTagName,o)}break;case I.AttachedFile:{if(!this.currentSegment)break;if(this.currentAttachedFile={fileName:null,fileMediaType:null,fileData:null,fileDescription:null},this.readContiguousElements(e.slice(n,s)),this.currentAttachedFile.fileMediaType?.startsWith("image/")&&this.currentAttachedFile.fileData){let o=this.currentAttachedFile.fileName,a="unknown";if(o){let c=o.toLowerCase();c.startsWith("cover.")?a="coverFront":c.startsWith("back.")&&(a="coverBack")}this.currentSegment.metadataTags.images??=[],this.currentSegment.metadataTags.images.push({data:this.currentAttachedFile.fileData,mimeType:this.currentAttachedFile.fileMediaType,kind:a,name:this.currentAttachedFile.fileName??void 0,description:this.currentAttachedFile.fileDescription??void 0})}this.currentAttachedFile=null}break;case I.FileName:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileName=xi(e,s)}break;case I.FileMediaType:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileMediaType=lr(e,s)}break;case I.FileData:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileData=W(e,s)}break;case I.FileDescription:{if(!this.currentAttachedFile)break;this.currentAttachedFile.fileDescription=xi(e,s)}break}return e.filePos=n+s,!0}processTagValue(e,t){if(!this.currentSegment?.metadataTags)return;let r=this.currentSegment.metadataTags;if(r.raw??={},r.raw[e]??=t,typeof t=="string")switch(e.toLowerCase()){case"title":r.title??=t;break;case"description":r.description??=t;break;case"artist":r.artist??=t;break;case"album":r.album??=t;break;case"album_artist":r.albumArtist??=t;break;case"genre":r.genre??=t;break;case"comment":r.comment??=t;break;case"lyrics":r.lyrics??=t;break;case"date":{let s=new Date(t);Number.isNaN(s.getTime())||(r.date??=s)}break;case"track_number":case"part_number":{let s=t.split("/"),n=Number.parseInt(s[0],10),o=s[1]&&Number.parseInt(s[1],10);Number.isInteger(n)&&n>0&&(r.trackNumber??=n),o&&Number.isInteger(o)&&o>0&&(r.tracksTotal??=o)}break;case"disc_number":case"disc":{let s=t.split("/"),n=Number.parseInt(s[0],10),o=s[1]&&Number.parseInt(s[1],10);Number.isInteger(n)&&n>0&&(r.discNumber??=n),o&&Number.isInteger(o)&&o>0&&(r.discsTotal??=o)}break}}},Ho=class{constructor(e){this.internalTrack=e,this.packetToClusterLocation=new WeakMap}getId(){return this.internalTrack.id}getCodec(){throw new Error("Not implemented on base class.")}getInternalCodecId(){return this.internalTrack.codecId}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}async getFirstTimestamp(){return(await this.getFirstPacket({metadataOnly:!0}))?.timestamp??0}getTimeResolution(){return this.internalTrack.segment.timestampFactor}async getFirstPacket(e){return this.performClusterLookup(()=>{let t=this.internalTrack.segment.clusters[0]??null;if(t?.isKnownToBeFirstCluster){let r=t;for(;r;){if(r.trackData.get(this.internalTrack.id))return{clusterIndex:ae(this.internalTrack.clusters,r.elementStartPos,n=>n.elementStartPos),blockIndex:0,correctBlockFound:!0};r=r.nextCluster}}return{clusterIndex:-1,blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,e)}intoTimescale(e){return Fr(e*this.internalTrack.segment.timestampFactor,14)}async getPacket(e,t){let r=this.intoTimescale(e);return this.performClusterLookup(()=>this.findBlockInClustersForTimestamp(r),r,r,t)}async getNextPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw new Error("Packet was not created from this track.");let s=r.cluster.trackData.get(this.internalTrack.id),n=ae(this.internalTrack.clusters,r.cluster.elementStartPos,o=>o.elementStartPos);return v(n!==-1),this.performClusterLookup(()=>{if(r.blockIndex+1<s.blocks.length)return{clusterIndex:n,blockIndex:r.blockIndex+1,correctBlockFound:!0};{let o=r.cluster;for(;o.nextCluster;)if(o=o.nextCluster,o.trackData.get(this.internalTrack.id)){let c=ae(this.internalTrack.clusters,o.elementStartPos,l=>l.elementStartPos);return v(c!==-1),{clusterIndex:c,blockIndex:0,correctBlockFound:!0}}return{clusterIndex:n,blockIndex:-1,correctBlockFound:!1}}},-1/0,1/0,t)}async getKeyPacket(e,t){let r=this.intoTimescale(e);return this.performClusterLookup(()=>this.findKeyBlockInClustersForTimestamp(r),r,r,t)}async getNextKeyPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw new Error("Packet was not created from this track.");let s=r.cluster.trackData.get(this.internalTrack.id),n=ae(this.internalTrack.clusters,r.cluster.elementStartPos,o=>o.elementStartPos);return v(n!==-1),this.performClusterLookup(()=>{let o=s.blocks.findIndex((a,c)=>a.isKeyFrame&&c>r.blockIndex);if(o!==-1)return{clusterIndex:n,blockIndex:o,correctBlockFound:!0};{let a=r.cluster;for(;a.nextCluster;){a=a.nextCluster;let c=a.trackData.get(this.internalTrack.id);if(c&&c.firstKeyFrameTimestamp!==null){let l=ae(this.internalTrack.clusters,a.elementStartPos,h=>h.elementStartPos);v(l!==-1);let u=c.blocks.findIndex(h=>h.isKeyFrame);return v(u!==-1),{clusterIndex:l,blockIndex:u,correctBlockFound:!0}}}return{clusterIndex:n,blockIndex:-1,correctBlockFound:!1}}},-1/0,1/0,t)}async fetchPacketInCluster(e,t,r){if(t===-1)return null;let n=e.trackData.get(this.internalTrack.id).blocks[t];v(n);let o=r.metadataOnly?Ae:n.data,a=n.timestamp/this.internalTrack.segment.timestampFactor,c=n.duration/this.internalTrack.segment.timestampFactor,l=new ce(o,n.isKeyFrame?"key":"delta",a,c,e.dataStartPos+t,n.data.byteLength);return this.packetToClusterLocation.set(l,{cluster:e,blockIndex:t}),l}findBlockInClustersForTimestamp(e){let t=Q(this.internalTrack.clusters,e,n=>n.trackData.get(this.internalTrack.id).startTimestamp),r=-1,s=!1;if(t!==-1){let o=this.internalTrack.clusters[t].trackData.get(this.internalTrack.id),a=Q(o.presentationTimestamps,e,c=>c.timestamp);v(a!==-1),r=o.presentationTimestamps[a].blockIndex,s=e<o.endTimestamp}return{clusterIndex:t,blockIndex:r,correctBlockFound:s}}findKeyBlockInClustersForTimestamp(e){let t=Q(this.internalTrack.clustersWithKeyFrame,e,o=>o.trackData.get(this.internalTrack.id).firstKeyFrameTimestamp),r=-1,s=-1,n=!1;if(t!==-1){let o=this.internalTrack.clustersWithKeyFrame[t];r=ae(this.internalTrack.clusters,o.elementStartPos,u=>u.elementStartPos),v(r!==-1);let a=o.trackData.get(this.internalTrack.id),c=po(a.presentationTimestamps,u=>a.blocks[u.blockIndex].isKeyFrame&&u.timestamp<=e);v(c!==-1),s=a.presentationTimestamps[c].blockIndex,n=e<a.endTimestamp}return{clusterIndex:r,blockIndex:s,correctBlockFound:n}}async performClusterLookup(e,t,r,s){let{demuxer:n,segment:o}=this.internalTrack,a=await o.clusterLookupMutex.acquire();try{let{clusterIndex:c,blockIndex:l,correctBlockFound:u}=e();if(u){let w=this.internalTrack.clusters[c];return this.fetchPacketInCluster(w,l,s)}let h=null,d=c,f=l,m=Q(this.internalTrack.cuePoints,t,w=>w.time),p=m!==-1?this.internalTrack.cuePoints[m]:null,g,y=!1;if(c===-1)g=p?.clusterPosition??o.clusterSeekStartPos,y=g===o.clusterSeekStartPos;else{let w=this.internalTrack.clusters[c];!p||w.elementStartPos>=p.clusterPosition?(g=w.elementEndPos,h=w):g=p.clusterPosition}for(;o.elementEndPos===null||g<=o.elementEndPos-Ve;){if(h){let P=h.trackData.get(this.internalTrack.id);if(P&&P.startTimestamp>r)break;if(h.nextCluster){g=h.nextCluster.elementEndPos,h=h.nextCluster;continue}}let w=n.reader.requestSliceRange(g,Ve,at);if(w instanceof Promise&&(w=await w),!w)break;let _=g,S=ct(w);if(!S||!pi.includes(S.id)&&S.id!==I.Void){let P=await Dl(n.reader,_,pi,Math.min(o.elementEndPos??1/0,_+ym));if(P){g=P;continue}else break}let T=S.id,k=S.size,M=w.filePos;if(T===I.Cluster){let P=ae(o.clusters,_,he=>he.elementStartPos),C;P===-1?C=await n.readCluster(_,o):C=o.clusters[P],h&&(h.nextCluster=C),h=C,y&&(C.isKnownToBeFirstCluster=!0,y=!1);let{clusterIndex:E,blockIndex:R,correctBlockFound:j}=e();if(j){let he=this.internalTrack.clusters[E];return this.fetchPacketInCluster(he,R,s)}E!==-1&&(d=E,f=R)}if(k===null){T===I.Cluster?(v(h),k=h.elementEndPos-M):k=(await Ro(n.reader,M,Mo,o.elementEndPos)).pos-M;let P=M+k;if(o.elementEndPos!==null&&P>o.elementEndPos-Ve)break;{let C=n.reader.requestSliceRange(P,Ve,at);if(C instanceof Promise&&(C=await C),!C)break;if(Bo(C)===I.Segment){o.elementEndPos=P;break}}}g=M+k}let x=d!==-1?this.internalTrack.clusters[d]:null;if(p&&(!x||x.elementStartPos<p.clusterPosition)){let _=this.internalTrack.cuePoints[m-1]?.time??-1/0;return this.performClusterLookup(e,_,r,s)}return x?this.fetchPacketInCluster(x,f,s):null}finally{a()}}},$l=class extends Ho{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getRotation(){return this.internalTrack.info.rotation}async getColorSpace(){return{primaries:this.internalTrack.info.colorSpace?.primaries,transfer:this.internalTrack.info.colorSpace?.transfer,matrix:this.internalTrack.info.colorSpace?.matrix,fullRange:this.internalTrack.info.colorSpace?.fullRange}}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;return(this.internalTrack.info.codec==="vp9"||this.internalTrack.info.codec==="av1"||this.internalTrack.info.codec==="avc"&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec==="hevc"&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({})),{codec:_o({width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcCodecInfo:this.internalTrack.info.codec==="avc"&&e?Gf(e.data):null,hevcCodecInfo:this.internalTrack.info.codec==="hevc"&&e?Nf(e.data):null,vp9CodecInfo:this.internalTrack.info.codec==="vp9"&&e?ko(e.data):null,av1CodecInfo:this.internalTrack.info.codec==="av1"&&e?Po(e.data):null}),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace??void 0}})():null}},ql=class extends Ho{constructor(e){super(e),this.decoderConfig=null,this.internalTrack=e}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfig??={codec:So({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}:null}},dS=i=>{let e=new Map;for(let n=0;n<i.length;n++){let o=i[n];e.set(o.timestamp,o)}let t=new Set,r=[],s=n=>{if(!t.has(n)){t.add(n);for(let o=0;o<n.referencedTimestamps.length;o++){let a=n.referencedTimestamps[o],c=e.get(a);c&&s(c)}r.push(n)}};for(let n=0;n<i.length;n++)s(i[n]);return r};var jo=class extends We{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.metadataTags=null,this.tracks=[],this.readingMutex=new et,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)await this.advanceReader();if(!this.firstFrameHeader)throw new Error("No valid MP3 frame found.");this.tracks=[new Ie(new Xl(this))]})()}async advanceReader(){if(this.lastLoadedPos===0)for(;;){let a=this.reader.requestSlice(this.lastLoadedPos,Si);if(a instanceof Promise&&(a=await a),!a){this.lastSampleLoaded=!0;return}let c=Is(a);if(!c)break;this.lastLoadedPos=a.filePos+c.size}let e=await As(this.reader,this.lastLoadedPos,this.reader.fileSize);if(!e){this.lastSampleLoaded=!0;return}let t=e.header;this.lastLoadedPos=e.startPos+t.totalSize-1;let r=tm(t.mpegVersionId,t.channel),s=this.reader.requestSlice(e.startPos+r,4);if(s instanceof Promise&&(s=await s),s){let a=B(s);if(a===Jf||a===em)return}this.firstFrameHeader||(this.firstFrameHeader=t);let n=t.audioSamplesInFrame/t.sampleRate,o={timestamp:this.nextTimestampInSamples/t.sampleRate,duration:n,dataStart:e.startPos,dataSize:t.totalSize};this.loadedSamples.push(o),this.nextTimestampInSamples+=t.audioSamplesInFrame}async getMimeType(){return"audio/mpeg"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();let e=this.tracks[0];return v(e),e.computeDuration()}async getMetadataTags(){let e=await this.readingMutex.acquire();try{if(await this.readMetadata(),this.metadataTags)return this.metadataTags;this.metadataTags={};let t=0,r=!1;for(;;){let s=this.reader.requestSlice(t,Si);if(s instanceof Promise&&(s=await s),!s)break;let n=Is(s);if(!n)break;r=!0;let o=this.reader.requestSlice(s.filePos,n.size);if(o instanceof Promise&&(o=await o),!o)break;nm(o,n,this.metadataTags),t=s.filePos+n.size}if(!r&&this.reader.fileSize!==null&&this.reader.fileSize>=Es){let s=this.reader.requestSlice(this.reader.fileSize-Es,Es);s instanceof Promise&&(s=await s),v(s),de(s,3)==="TAG"&&sm(s,this.metadataTags)}return this.metadataTags}finally{e()}}},Xl=class{constructor(e){this.demuxer=e}getId(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return v(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate/this.demuxer.firstFrameHeader.audioSamplesInFrame}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return null}getLanguageCode(){return Ce}getCodec(){return"mp3"}getInternalCodecId(){return null}getNumberOfChannels(){return v(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.channel===3?1:2}getSampleRate(){return v(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate}async getDecoderConfig(){return v(this.demuxer.firstFrameHeader),{codec:"mp3",numberOfChannels:this.demuxer.firstFrameHeader.channel===3?1:2,sampleRate:this.demuxer.firstFrameHeader.sampleRate}}async getPacketAtIndex(e,t){if(e===-1)return null;let r=this.demuxer.loadedSamples[e];if(!r)return null;let s;if(t.metadataOnly)s=Ae;else{let n=this.demuxer.reader.requestSlice(r.dataStart,r.dataSize);if(n instanceof Promise&&(n=await n),!n)return null;s=W(n,r.dataSize)}return new ce(s,"key",r.timestamp,r.duration,e,r.dataSize)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){let r=await this.demuxer.readingMutex.acquire();try{let s=ae(this.demuxer.loadedSamples,e.timestamp,o=>o.timestamp);if(s===-1)throw new Error("Packet was not created from this track.");let n=s+1;for(;n>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(n,t)}finally{r()}}async getPacket(e,t){let r=await this.demuxer.readingMutex.acquire();try{for(;;){let s=Q(this.demuxer.loadedSamples,e,n=>n.timestamp);if(s===-1&&this.demuxer.loadedSamples.length>0)return null;if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(s,t);if(s>=0&&s+1<this.demuxer.loadedSamples.length)return this.getPacketAtIndex(s,t);await this.demuxer.advanceReader()}}finally{r()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}};var $o=class extends We{constructor(e){super(e),this.metadataPromise=null,this.bitstreams=[],this.tracks=[],this.metadataTags={},this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,ur,Ur);if(t instanceof Promise&&(t=await t),!t)break;let r=Ti(t);if(!r||!!!(r.headerType&2))break;this.bitstreams.push({serialNumber:r.serialNumber,bosPage:r,description:null,numberOfChannels:-1,sampleRate:-1,codecInfo:{codec:null,vorbisInfo:null,opusInfo:null},lastMetadataPacket:null}),e=r.headerStartPos+r.totalSize}for(let t of this.bitstreams){let r=await this.readPacket(t.bosPage,0);r&&(r.data.byteLength>=7&&r.data[0]===1&&r.data[1]===118&&r.data[2]===111&&r.data[3]===114&&r.data[4]===98&&r.data[5]===105&&r.data[6]===115?await this.readVorbisMetadata(r,t):r.data.byteLength>=8&&r.data[0]===79&&r.data[1]===112&&r.data[2]===117&&r.data[3]===115&&r.data[4]===72&&r.data[5]===101&&r.data[6]===97&&r.data[7]===100&&await this.readOpusMetadata(r,t),t.codecInfo.codec!==null&&this.tracks.push(new Ie(new Yl(t,this))))}})()}async readVorbisMetadata(e,t){let r=await this.findNextPacketStart(e);if(!r)return;let s=await this.readPacket(r.startPage,r.startSegmentIndex);if(!s||(r=await this.findNextPacketStart(s),!r))return;let n=await this.readPacket(r.startPage,r.startSegmentIndex);if(!n||s.data[0]!==3||n.data[0]!==5)return;let o=[],a=h=>{for(;o.push(Math.min(255,h)),!(h<255);)h-=255};a(e.data.length),a(s.data.length);let c=new Uint8Array(1+o.length+e.data.length+s.data.length+n.data.length);c[0]=o.length,c.set(o,1),c.set(e.data,1+o.length),c.set(s.data,1+o.length+e.data.length),c.set(n.data,1+o.length+e.data.length+s.data.length),t.codecInfo.codec="vorbis",t.description=c,t.lastMetadataPacket=n;let l=oe(e.data);t.numberOfChannels=l.getUint8(11),t.sampleRate=l.getUint32(12,!0);let u=l.getUint8(28);t.codecInfo.vorbisInfo={blocksizes:[1<<(u&15),1<<(u>>4)],modeBlockflags:Hf(n.data).modeBlockflags},this.readVorbisComments(s.data.subarray(7))}async readOpusMetadata(e,t){let r=await this.findNextPacketStart(e);if(!r)return;let s=await this.readPacket(r.startPage,r.startSegmentIndex);if(!s)return;t.codecInfo.codec="opus",t.description=e.data,t.lastMetadataPacket=s;let n=Vf(e.data);t.numberOfChannels=n.outputChannelCount,t.sampleRate=n.inputSampleRate,t.codecInfo.opusInfo={preSkip:n.preSkip},this.readVorbisComments(s.data.subarray(8))}readVorbisComments(e){let t=oe(e),r=0,s=t.getUint32(r,!0);r+=4;let n=Fe.decode(e.subarray(r,r+s));r+=s,s>0&&(this.metadataTags.raw??={},this.metadataTags.raw.vendor??=n);let o=t.getUint32(r,!0);r+=4;for(let a=0;a<o;a++){let c=t.getUint32(r,!0);r+=4;let l=Fe.decode(e.subarray(r,r+c));r+=c;let u=l.indexOf("=");if(u===-1)continue;let h=l.slice(0,u).toUpperCase(),d=l.slice(u+1);switch(this.metadataTags.raw??={},this.metadataTags.raw[h]??=d,h){case"TITLE":this.metadataTags.title??=d;break;case"DESCRIPTION":this.metadataTags.description??=d;break;case"ARTIST":this.metadataTags.artist??=d;break;case"ALBUM":this.metadataTags.album??=d;break;case"ALBUMARTIST":this.metadataTags.albumArtist??=d;break;case"COMMENT":this.metadataTags.comment??=d;break;case"LYRICS":this.metadataTags.lyrics??=d;break;case"TRACKNUMBER":{let f=d.split("/"),m=Number.parseInt(f[0],10),p=f[1]&&Number.parseInt(f[1],10);Number.isInteger(m)&&m>0&&(this.metadataTags.trackNumber??=m),p&&Number.isInteger(p)&&p>0&&(this.metadataTags.tracksTotal??=p)}break;case"TRACKTOTAL":{let f=Number.parseInt(d,10);Number.isInteger(f)&&f>0&&(this.metadataTags.tracksTotal??=f)}break;case"DISCNUMBER":{let f=d.split("/"),m=Number.parseInt(f[0],10),p=f[1]&&Number.parseInt(f[1],10);Number.isInteger(m)&&m>0&&(this.metadataTags.discNumber??=m),p&&Number.isInteger(p)&&p>0&&(this.metadataTags.discsTotal??=p)}break;case"DISCTOTAL":{let f=Number.parseInt(d,10);Number.isInteger(f)&&f>0&&(this.metadataTags.discsTotal??=f)}break;case"DATE":{let f=new Date(d);Number.isNaN(f.getTime())||(this.metadataTags.date??=f)}break;case"GENRE":this.metadataTags.genre??=d;break;case"METADATA_BLOCK_PICTURE":{let f=Bf(d),m=oe(f),p=m.getUint32(0,!1),g=m.getUint32(4,!1),y=String.fromCharCode(...f.subarray(8,8+g)),x=m.getUint32(8+g,!1),w=Fe.decode(f.subarray(12+g,12+g+x)),_=m.getUint32(g+x+28),S=f.subarray(g+x+32,g+x+32+_);this.metadataTags.images??=[],this.metadataTags.images.push({data:S,mimeType:y,kind:p===3?"coverFront":p===4?"coverBack":"unknown",name:void 0,description:w||void 0})}break}}}async readPacket(e,t){v(t<e.lacingValues.length);let r=0;for(let h=0;h<t;h++)r+=e.lacingValues[h];let s=e,n=r,o=t,a=[];e:for(;;){let h=this.reader.requestSlice(s.dataStartPos,s.dataSize);h instanceof Promise&&(h=await h),v(h);let d=W(h,s.dataSize);for(;;){if(o===s.lacingValues.length){a.push(d.subarray(r,n));break}let m=s.lacingValues[o];if(n+=m,m<255){a.push(d.subarray(r,n));break e}o++}let f=s.headerStartPos+s.totalSize;for(;;){let m=this.reader.requestSliceRange(f,ur,Ur);if(m instanceof Promise&&(m=await m),!m)return null;let p=Ti(m);if(!p)return null;if(s=p,s.serialNumber===e.serialNumber)break;f=s.headerStartPos+s.totalSize}r=0,n=0,o=0}let c=a.reduce((h,d)=>h+d.length,0),l=new Uint8Array(c),u=0;for(let h=0;h<a.length;h++){let d=a[h];l.set(d,u),u+=d.length}return{data:l,endPage:s,endSegmentIndex:o}}async findNextPacketStart(e){if(e.endSegmentIndex<e.endPage.lacingValues.length-1)return{startPage:e.endPage,startSegmentIndex:e.endSegmentIndex+1};if(!!(e.endPage.headerType&4))return null;let r=e.endPage.headerStartPos+e.endPage.totalSize;for(;;){let s=this.reader.requestSliceRange(r,ur,Ur);if(s instanceof Promise&&(s=await s),!s)return null;let n=Ti(s);if(!n)return null;if(n.serialNumber===e.endPage.serialNumber)return{startPage:n,startSegmentIndex:0};r=n.headerStartPos+n.totalSize}}async getMimeType(){await this.readMetadata();let e=await Promise.all(this.tracks.map(t=>t.getCodecParameterString()));return lm({codecStrings:e.filter(Boolean)})}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){let e=await this.getTracks(),t=await Promise.all(e.map(r=>r.computeDuration()));return Math.max(0,...t)}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}},Yl=class{constructor(e,t){this.bitstream=e,this.demuxer=t,this.encodedPacketToMetadata=new WeakMap,this.sequentialScanCache=[],this.sequentialScanMutex=new et,this.internalSampleRate=e.codecInfo.codec==="opus"?Df:e.sampleRate}getId(){return this.bitstream.serialNumber}getNumberOfChannels(){return this.bitstream.numberOfChannels}getSampleRate(){return this.bitstream.sampleRate}getTimeResolution(){return this.bitstream.sampleRate}getCodec(){return this.bitstream.codecInfo.codec}getInternalCodecId(){return null}async getDecoderConfig(){return v(this.bitstream.codecInfo.codec),{codec:this.bitstream.codecInfo.codec,numberOfChannels:this.bitstream.numberOfChannels,sampleRate:this.bitstream.sampleRate,description:this.bitstream.description??void 0}}getName(){return null}getLanguageCode(){return Ce}async getFirstTimestamp(){return 0}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}granulePositionToTimestampInSamples(e){return this.bitstream.codecInfo.codec==="opus"?(v(this.bitstream.codecInfo.opusInfo),e-this.bitstream.codecInfo.opusInfo.preSkip):e}createEncodedPacketFromOggPacket(e,t,r){if(!e)return null;let{durationInSamples:s,vorbisBlockSize:n}=cm(e.data,this.bitstream.codecInfo,t.vorbisLastBlocksize),o=new ce(r.metadataOnly?Ae:e.data,"key",Math.max(0,t.timestampInSamples)/this.internalSampleRate,s/this.internalSampleRate,e.endPage.headerStartPos+e.endSegmentIndex,e.data.byteLength);return this.encodedPacketToMetadata.set(o,{packet:e,timestampInSamples:t.timestampInSamples,durationInSamples:s,vorbisLastBlockSize:t.vorbisLastBlocksize,vorbisBlockSize:n}),o}async getFirstPacket(e){v(this.bitstream.lastMetadataPacket);let t=await this.demuxer.findNextPacketStart(this.bitstream.lastMetadataPacket);if(!t)return null;let r=0;this.bitstream.codecInfo.codec==="opus"&&(v(this.bitstream.codecInfo.opusInfo),r-=this.bitstream.codecInfo.opusInfo.preSkip);let s=await this.demuxer.readPacket(t.startPage,t.startSegmentIndex);return this.createEncodedPacketFromOggPacket(s,{timestampInSamples:r,vorbisLastBlocksize:null},e)}async getNextPacket(e,t){let r=this.encodedPacketToMetadata.get(e);if(!r)throw new Error("Packet was not created from this track.");let s=await this.demuxer.findNextPacketStart(r.packet);if(!s)return null;let n=r.timestampInSamples+r.durationInSamples,o=await this.demuxer.readPacket(s.startPage,s.startSegmentIndex);return this.createEncodedPacketFromOggPacket(o,{timestampInSamples:n,vorbisLastBlocksize:r.vorbisBlockSize},t)}async getPacket(e,t){if(this.demuxer.reader.fileSize===null)return this.getPacketSequential(e,t);let r=Fr(e*this.internalSampleRate,14);if(r===0)return this.getFirstPacket(t);if(r<0)return null;v(this.bitstream.lastMetadataPacket);let s=await this.demuxer.findNextPacketStart(this.bitstream.lastMetadataPacket);if(!s)return null;let n=s.startPage,o=this.demuxer.reader.fileSize,a=[n];e:for(;n.headerStartPos+n.totalSize<o;){let x=n.headerStartPos,w=Math.floor((x+o)/2),_=w;for(;;){let S=Math.min(_+um,o-ur),T=this.demuxer.reader.requestSlice(_,S-_);if(T instanceof Promise&&(T=await T),v(T),!hm(T,S)){o=w+ur;continue e}let M=this.demuxer.reader.requestSliceRange(T.filePos,ur,Ur);M instanceof Promise&&(M=await M),v(M);let P=Ti(M);v(P);let C=!1;if(P.serialNumber===this.bitstream.serialNumber)C=!0;else{let R=this.demuxer.reader.requestSlice(P.headerStartPos,P.totalSize);R instanceof Promise&&(R=await R),v(R);let j=W(R,P.totalSize);C=am(j)===P.checksum}if(!C){_=P.headerStartPos+4;continue}if(C&&P.serialNumber!==this.bitstream.serialNumber){_=P.headerStartPos+P.totalSize;continue}if(P.granulePosition===-1){_=P.headerStartPos+P.totalSize;continue}this.granulePositionToTimestampInSamples(P.granulePosition)>r?o=P.headerStartPos:(n=P,a.push(P));continue e}}let c=s.startPage;for(let x of a){if(x.granulePosition===n.granulePosition)break;(!c||x.headerStartPos>c.headerStartPos)&&(c=x)}let l=c,u=[l];for(;!(l.serialNumber===this.bitstream.serialNumber&&l.granulePosition===n.granulePosition);){let x=l.headerStartPos+l.totalSize,w=this.demuxer.reader.requestSliceRange(x,ur,Ur);w instanceof Promise&&(w=await w),v(w);let _=Ti(w);v(_),l=_,l.serialNumber===this.bitstream.serialNumber&&u.push(l)}v(l.granulePosition!==-1);let h=null,d,f,m=l,p=0;if(l.headerStartPos===s.startPage.headerStartPos)d=this.granulePositionToTimestampInSamples(0),f=!0,h=0;else{d=0,f=!1;for(let _=l.lacingValues.length-1;_>=0;_--)if(l.lacingValues[_]<255){h=_+1;break}if(h===null)throw new Error("Invalid page with granule position: no packets end on this page.");p=h-1;let x={data:Ae,endPage:m,endSegmentIndex:p};if(await this.demuxer.findNextPacketStart(x)){let _=wm(u,l,h);v(_);let S=bm(u,_.page,_.segmentIndex);S&&(l=S.page,h=S.segmentIndex)}else for(;;){let _=wm(u,l,h);if(!_)break;let S=bm(u,_.page,_.segmentIndex);if(!S)break;if(l=S.page,h=S.segmentIndex,_.page.headerStartPos!==m.headerStartPos){m=_.page,p=_.segmentIndex;break}}}let g=null,y=null;for(;l!==null;){v(h!==null);let x=await this.demuxer.readPacket(l,h);if(!x)break;if(!(l.headerStartPos===s.startPage.headerStartPos&&h<s.startSegmentIndex)){let S=this.createEncodedPacketFromOggPacket(x,{timestampInSamples:d,vorbisLastBlocksize:y?.vorbisBlockSize??null},t);v(S);let T=this.encodedPacketToMetadata.get(S);if(v(T),!f&&x.endPage.headerStartPos===m.headerStartPos&&x.endSegmentIndex===p?(d=this.granulePositionToTimestampInSamples(l.granulePosition),f=!0,S=this.createEncodedPacketFromOggPacket(x,{timestampInSamples:d-T.durationInSamples,vorbisLastBlocksize:y?.vorbisBlockSize??null},t),v(S),T=this.encodedPacketToMetadata.get(S),v(T)):d+=T.durationInSamples,g=S,y=T,f&&(Math.max(d,0)>r||Math.max(T.timestampInSamples,0)===r))break}let _=await this.demuxer.findNextPacketStart(x);if(!_)break;l=_.startPage,h=_.startSegmentIndex}return g}async getPacketSequential(e,t){let r=await this.sequentialScanMutex.acquire();try{let s=Fr(e*this.internalSampleRate,14);e=s/this.internalSampleRate;let n=Q(this.sequentialScanCache,s,c=>c.timestampInSamples),o;if(n!==-1){let c=this.sequentialScanCache[n];o=this.createEncodedPacketFromOggPacket(c.packet,{timestampInSamples:c.timestampInSamples,vorbisLastBlocksize:c.vorbisLastBlockSize},t)}else o=await this.getFirstPacket(t);let a=0;for(;o&&o.timestamp<e;){let c=await this.getNextPacket(o,t);if(!c||c.timestamp>e)break;if(o=c,a++,a===100){a=0;let l=this.encodedPacketToMetadata.get(o);v(l),this.sequentialScanCache.length>0&&v(Pe(this.sequentialScanCache).timestampInSamples<=l.timestampInSamples),this.sequentialScanCache.push(l)}}return o}finally{r()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}},bm=(i,e,t)=>{let r=e,s=t;e:for(;;){for(s--,s;s>=0;s--)if(r.lacingValues[s]<255){s++;break e}if(v(s===-1),!(r.headerType&1)){s=0;break}let o=vl(i,a=>a.headerStartPos<r.headerStartPos);if(!o)return null;r=o,s=r.lacingValues.length}if(v(s!==-1),s===r.lacingValues.length){let n=i[i.indexOf(r)+1];v(n),r=n,s=0}return{page:r,segmentIndex:s}},wm=(i,e,t)=>{if(t>0)return{page:e,segmentIndex:t-1};let r=vl(i,s=>s.headerStartPos<e.headerStartPos);return r?{page:r,segmentIndex:r.lacingValues.length-1}:null};var Ei=7,Ai=9,Os=i=>{let e=i.filePos,t=W(i,9),r=new fe(t);if(r.readBits(12)!==4095||(r.skipBits(1),r.readBits(2)!==0))return null;let o=r.readBits(1),a=r.readBits(2)+1,c=r.readBits(4);if(c===15)return null;r.skipBits(1);let l=r.readBits(3);if(l===0)throw new Error("ADTS frames with channel configuration 0 are not supported.");r.skipBits(1),r.skipBits(1),r.skipBits(1),r.skipBits(1);let u=r.readBits(13);r.skipBits(11);let h=r.readBits(2)+1;if(h!==1)throw new Error("ADTS frames with more than one AAC frame are not supported.");let d=null;return o===1?i.filePos-=2:d=r.readBits(16),{objectType:a,samplingFrequencyIndex:c,channelConfiguration:l,frameLength:u,numberOfAacFrames:h,crcCheck:d,startPos:e}};var Kl=1024,qo=class extends We{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.tracks=[],this.readingMutex=new et,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}async readMetadata(){return this.metadataPromise??=(async()=>{for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)await this.advanceReader();v(this.firstFrameHeader),this.tracks=[new Ie(new Zl(this))]})()}async advanceReader(){let e=this.reader.requestSliceRange(this.lastLoadedPos,Ei,Ai);if(e instanceof Promise&&(e=await e),!e){this.lastSampleLoaded=!0;return}let t=Os(e);if(!t){this.lastSampleLoaded=!0;return}if(this.reader.fileSize!==null&&t.startPos+t.frameLength>this.reader.fileSize){this.lastSampleLoaded=!0;return}this.firstFrameHeader||(this.firstFrameHeader=t);let r=ks[t.samplingFrequencyIndex];v(r!==void 0);let s=Kl/r,n=t.crcCheck?Ai:Ei,o={timestamp:this.nextTimestampInSamples/r,duration:s,dataStart:t.startPos+n,dataSize:t.frameLength-n};this.loadedSamples.push(o),this.nextTimestampInSamples+=Kl,this.lastLoadedPos=t.startPos+t.frameLength}async getMimeType(){return"audio/aac"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();let e=this.tracks[0];return v(e),e.computeDuration()}async getMetadataTags(){return{}}},Zl=class{constructor(e){this.demuxer=e}getId(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return this.getSampleRate()/Kl}async computeDuration(){let e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return null}getLanguageCode(){return Ce}getCodec(){return"aac"}getInternalCodecId(){return v(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.objectType}getNumberOfChannels(){v(this.demuxer.firstFrameHeader);let e=Cl[this.demuxer.firstFrameHeader.channelConfiguration];return v(e!==void 0),e}getSampleRate(){v(this.demuxer.firstFrameHeader);let e=ks[this.demuxer.firstFrameHeader.samplingFrequencyIndex];return v(e!==void 0),e}async getDecoderConfig(){v(this.demuxer.firstFrameHeader);let e=new Uint8Array(3),t=new fe(e),{objectType:r,samplingFrequencyIndex:s,channelConfiguration:n}=this.demuxer.firstFrameHeader;return r>31?(t.writeBits(5,31),t.writeBits(6,r-32)):t.writeBits(5,r),t.writeBits(4,s),t.writeBits(4,n),{codec:`mp4a.40.${this.demuxer.firstFrameHeader.objectType}`,numberOfChannels:this.getNumberOfChannels(),sampleRate:this.getSampleRate(),description:e.subarray(0,Math.ceil((t.pos-1)/8))}}async getPacketAtIndex(e,t){if(e===-1)return null;let r=this.demuxer.loadedSamples[e];if(!r)return null;let s;if(t.metadataOnly)s=Ae;else{let n=this.demuxer.reader.requestSlice(r.dataStart,r.dataSize);if(n instanceof Promise&&(n=await n),!n)return null;s=W(n,r.dataSize)}return new ce(s,"key",r.timestamp,r.duration,e,r.dataSize)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){let r=await this.demuxer.readingMutex.acquire();try{let s=ae(this.demuxer.loadedSamples,e.timestamp,o=>o.timestamp);if(s===-1)throw new Error("Packet was not created from this track.");let n=s+1;for(;n>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(n,t)}finally{r()}}async getPacket(e,t){let r=await this.demuxer.readingMutex.acquire();try{for(;;){let s=Q(this.demuxer.loadedSamples,e,n=>n.timestamp);if(s===-1&&this.demuxer.loadedSamples.length>0)return null;if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(s,t);if(s>=0&&s+1<this.demuxer.loadedSamples.length)return this.getPacketAtIndex(s,t);await this.demuxer.advanceReader()}}finally{r()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}};var ut=class{},zs=class extends ut{async _getMajorBrand(e){let t=e._reader.requestSlice(0,12);return t instanceof Promise&&(t=await t),!t||(t.skip(4),de(t,4)!=="ftyp")?null:de(t,4)}_createDemuxer(e){return new Lo(e)}},Xo=class extends zs{async _canReadInput(e){let t=await this._getMajorBrand(e);return!!t&&t!=="qt "}get name(){return"MP4"}get mimeType(){return"video/mp4"}},Yo=class extends zs{async _canReadInput(e){return await this._getMajorBrand(e)==="qt "}get name(){return"QuickTime File Format"}get mimeType(){return"video/quicktime"}},Us=class extends ut{async isSupportedEBMLOfDocType(e,t){let r=e._reader.requestSlice(0,at);if(r instanceof Promise&&(r=await r),!r)return!1;let s=Fl(r);if(s===null||s<1||s>8||J(r,s)!==I.EBML)return!1;let o=Rl(r);if(o===null)return!1;let a=e._reader.requestSlice(r.filePos,o);if(a instanceof Promise&&(a=await a),!a)return!1;let c=r.filePos;for(;a.filePos<=c+o-Ve;){let l=ct(a);if(!l)break;let{id:u,size:h}=l,d=a.filePos;if(h===null)return!1;switch(u){case I.EBMLVersion:if(J(a,h)!==1)return!1;break;case I.EBMLReadVersion:if(J(a,h)!==1)return!1;break;case I.DocType:if(lr(a,h)!==t)return!1;break;case I.DocTypeVersion:if(J(a,h)>4)return!1;break}a.filePos=d+h}return!0}_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"matroska")}_createDemuxer(e){return new Wo(e)}get name(){return"Matroska"}get mimeType(){return"video/x-matroska"}},Ko=class extends Us{_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"webm")}get name(){return"WebM"}get mimeType(){return"video/webm"}},Zo=class extends ut{async _canReadInput(e){let t=e._reader.requestSlice(0,10);if(t instanceof Promise&&(t=await t),!t)return!1;let r=0,s=!1;for(;;){let l=e._reader.requestSlice(r,Si);if(l instanceof Promise&&(l=await l),!l)break;let u=Is(l);if(!u)break;s=!0,r=l.filePos+u.size}let n=await As(e._reader,r,r+4096);if(!n)return!1;if(s)return!0;r=n.startPos+=n.header.totalSize;let o=await As(e._reader,r,r+4);if(!o)return!1;let a=n.header,c=o.header;return!(a.channel!==c.channel||a.sampleRate!==c.sampleRate)}_createDemuxer(e){return new jo(e)}get name(){return"MP3"}get mimeType(){return"audio/mpeg"}},Qo=class extends ut{async _canReadInput(e){let t=e._reader.requestSlice(0,12);if(t instanceof Promise&&(t=await t),!t)return!1;let r=de(t,4);return r!=="RIFF"&&r!=="RIFX"&&r!=="RF64"?!1:(t.skip(4),de(t,4)==="WAVE")}_createDemuxer(e){return new Go(e)}get name(){return"WAVE"}get mimeType(){return"audio/wav"}},Jo=class extends ut{async _canReadInput(e){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=await t),t?de(t,4)==="OggS":!1}_createDemuxer(e){return new $o(e)}get name(){return"Ogg"}get mimeType(){return"application/ogg"}},ea=class extends ut{async _canReadInput(e){let t=e._reader.requestSliceRange(0,Ei,Ai);if(t instanceof Promise&&(t=await t),!t)return!1;let r=Os(t);if(!r||(t=e._reader.requestSliceRange(r.frameLength,Ei,Ai),t instanceof Promise&&(t=await t),!t))return!1;let s=Os(t);return s?r.objectType===s.objectType&&r.samplingFrequencyIndex===s.samplingFrequencyIndex&&r.channelConfiguration===s.channelConfiguration:!1}_createDemuxer(e){return new qo(e)}get name(){return"ADTS"}get mimeType(){return"audio/aac"}},_m=new Xo,Sm=new Yo,Tm=new Us,vm=new Ko,km=new Zo,Pm=new Qo,Cm=new Jo,Em=new ea,hr=[_m,Sm,Tm,vm,Pm,Cm,km,Em];var _t=class{constructor(e){if(this._demuxerPromise=null,this._format=null,!e||typeof e!="object")throw new TypeError("options must be an object.");if(!Array.isArray(e.formats)||e.formats.some(t=>!(t instanceof ut)))throw new TypeError("options.formats must be an array of InputFormat.");if(!(e.source instanceof Nr))throw new TypeError("options.source must be a Source.");this._formats=e.formats,this._source=e.source,this._reader=new Co(e.source)}_getDemuxer(){return this._demuxerPromise??=(async()=>{this._reader.fileSize=await this._source.getSizeOrNull();for(let e of this._formats)if(await e._canReadInput(this))return this._format=e,e._createDemuxer(this);throw new Error("Input has an unsupported or unrecognizable format.")})()}get source(){return this._source}async getFormat(){return await this._getDemuxer(),v(this._format),this._format}async computeDuration(){return(await this._getDemuxer()).computeDuration()}async getTracks(){return(await this._getDemuxer()).getTracks()}async getVideoTracks(){return(await this.getTracks()).filter(t=>t.isVideoTrack())}async getAudioTracks(){return(await this.getTracks()).filter(t=>t.isAudioTrack())}async getPrimaryVideoTrack(){return(await this.getTracks()).find(t=>t.isVideoTrack())??null}async getPrimaryAudioTrack(){return(await this.getTracks()).find(t=>t.isAudioTrack())??null}async getMimeType(){return(await this._getDemuxer()).getMimeType()}async getMetadataTags(){return(await this._getDemuxer()).getMetadataTags()}};var ta=class{count=0;#e=new Map;register(e,t){this.#e.set(e,t)}unregister(e){this.#e.delete(e)}dispatch(e,t){this.#e.get(e)?.(t)}};var Am=i=>co.host(e=>({async world(){i.count++}}));async function Lr(i){return i instanceof Blob?new Rs(i):new Ds(i)}var ra=class{machina;thread;static async setup(e){let t=new ta,r=await co.thread({label:"OmnitoolDriver",workerUrl:e?.workerUrl??"/node_modules/@omnimedia/omnitool/x/driver/driver.worker.bundle.min.js",setupHost:Am(t)});return new this(t,r)}constructor(e,t){this.machina=e,this.thread=t}async hello(){return this.thread.work.hello()}async getAudioDuration(e){return await(await new _t({source:await Lr(e),formats:hr}).getPrimaryAudioTrack())?.computeDuration()}async getVideoDuration(e){return await(await new _t({source:await Lr(e),formats:hr}).getPrimaryVideoTrack())?.computeDuration()}decodeVideo(e){let t=null,r=new TransformStream({async transform(s,n){let o=await e.onFrame?.(s)??s;t?.close(),n.enqueue(o),t=o}});return this.thread.work.decodeVideo[Er]({transfer:[r.writable]})({source:e.source,video:r.writable,start:e.start,end:e.end}),r.readable}decodeAudio(e){let t=new TransformStream;return this.thread.work.decodeAudio[Er]({transfer:[t.writable]})({source:e.source,audio:t.writable,start:e.start,end:e.end}),t.readable}async encode({video:e,audio:t,config:r}){let n=await(await window.showSaveFilePicker()).createWritable(),o=new WritableStream({async write(a){await n.write(a)},async close(){await n.close()}});return await this.thread.work.encode[Er]({transfer:[t??[],e??[],o]})({video:e,audio:t,config:r,bridge:o})}async composite(e){let t=this.#e(e);return await this.thread.work.composite[Er]({transfer:t})(e)}#e(e){let t=[],r=s=>{if(Array.isArray(s))for(let n of s)r(n);else s&&typeof s=="object"&&"kind"in s&&s.kind==="image"&&s.frame instanceof VideoFrame&&t.push(s.frame)};return r(e),t}};function Se(i,e,t,r){return new(t||(t=Promise))(function(s,n){function o(l){try{c(r.next(l))}catch(u){n(u)}}function a(l){try{c(r.throw(l))}catch(u){n(u)}}function c(l){var u;l.done?s(l.value):(u=l.value,u instanceof t?u:new t(function(h){h(u)})).then(o,a)}c((r=r.apply(i,e||[])).next())})}var Vr=class{constructor(){this.listeners={}}on(e,t,r){if(this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t),r?.once){let s=()=>{this.un(e,s),this.un(e,t)};return this.on(e,s),s}return()=>this.un(e,t)}un(e,t){var r;(r=this.listeners[e])===null||r===void 0||r.delete(t)}once(e,t){return this.on(e,t,{once:!0})}unAll(){this.listeners={}}emit(e,...t){this.listeners[e]&&this.listeners[e].forEach(r=>r(...t))}},ia={decode:function(i,e){return Se(this,void 0,void 0,function*(){let t=new AudioContext({sampleRate:e});return t.decodeAudioData(i).finally(()=>t.close())})},createBuffer:function(i,e){return typeof i[0]=="number"&&(i=[i]),function(t){let r=t[0];if(r.some(s=>s>1||s<-1)){let s=r.length,n=0;for(let o=0;o<s;o++){let a=Math.abs(r[o]);a>n&&(n=a)}for(let o of t)for(let a=0;a<s;a++)o[a]/=n}}(i),{duration:e,length:i[0].length,sampleRate:i[0].length/e,numberOfChannels:i.length,getChannelData:t=>i?.[t],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function Mm(i,e){let t=e.xmlns?document.createElementNS(e.xmlns,i):document.createElement(i);for(let[r,s]of Object.entries(e))if(r==="children"&&s)for(let[n,o]of Object.entries(s))o instanceof Node?t.appendChild(o):typeof o=="string"?t.appendChild(document.createTextNode(o)):t.appendChild(Mm(n,o));else r==="style"?Object.assign(t.style,s):r==="textContent"?t.textContent=s:t.setAttribute(r,s.toString());return t}function Im(i,e,t){let r=Mm(i,e||{});return t?.appendChild(r),r}var fS=Object.freeze({__proto__:null,createElement:Im,default:Im}),mS={fetchBlob:function(i,e,t){return Se(this,void 0,void 0,function*(){let r=yield fetch(i,t);if(r.status>=400)throw new Error(`Failed to fetch ${i}: ${r.status} (${r.statusText})`);return function(s,n){Se(this,void 0,void 0,function*(){if(!s.body||!s.headers)return;let o=s.body.getReader(),a=Number(s.headers.get("Content-Length"))||0,c=0,l=h=>Se(this,void 0,void 0,function*(){c+=h?.length||0;let d=Math.round(c/a*100);n(d)}),u=()=>Se(this,void 0,void 0,function*(){let h;try{h=yield o.read()}catch{return}h.done||(l(h.value),yield u())});u()})}(r.clone(),e),r.blob()})}},Ql=class extends Vr{constructor(e){super(),this.isExternalMedia=!1,e.media?(this.media=e.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),e.mediaControls&&(this.media.controls=!0),e.autoplay&&(this.media.autoplay=!0),e.playbackRate!=null&&this.onMediaEvent("canplay",()=>{e.playbackRate!=null&&(this.media.playbackRate=e.playbackRate)},{once:!0})}onMediaEvent(e,t,r){return this.media.addEventListener(e,t,r),()=>this.media.removeEventListener(e,t,r)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){let e=this.getSrc();e.startsWith("blob:")&&URL.revokeObjectURL(e)}canPlayType(e){return this.media.canPlayType(e)!==""}setSrc(e,t){let r=this.getSrc();if(e&&r===e)return;this.revokeSrc();let s=t instanceof Blob&&(this.canPlayType(t.type)||!e)?URL.createObjectURL(t):e;if(r&&this.media.removeAttribute("src"),s||e)try{this.media.src=s}catch{this.media.src=e}}destroy(){this.isExternalMedia||(this.media.pause(),this.media.remove(),this.revokeSrc(),this.media.removeAttribute("src"),this.media.load())}setMediaElement(e){this.media=e}play(){return Se(this,void 0,void 0,function*(){return this.media.play()})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(e){this.media.currentTime=Math.max(0,Math.min(e,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(e){this.media.volume=e}getMuted(){return this.media.muted}setMuted(e){this.media.muted=e}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(e,t){t!=null&&(this.media.preservesPitch=t),this.media.playbackRate=e}getMediaElement(){return this.media}setSinkId(e){return this.media.setSinkId(e)}},Ns=class i extends Vr{constructor(e,t){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=e;let r=this.parentFromOptionsContainer(e.container);this.parent=r;let[s,n]=this.initHtml();r.appendChild(s),this.container=s,this.scrollContainer=n.querySelector(".scroll"),this.wrapper=n.querySelector(".wrapper"),this.canvasWrapper=n.querySelector(".canvases"),this.progressWrapper=n.querySelector(".progress"),this.cursor=n.querySelector(".cursor"),t&&n.appendChild(t),this.initEvents()}parentFromOptionsContainer(e){let t;if(typeof e=="string"?t=document.querySelector(e):e instanceof HTMLElement&&(t=e),!t)throw new Error("Container not found");return t}initEvents(){let e=t=>{let r=this.wrapper.getBoundingClientRect(),s=t.clientX-r.left,n=t.clientY-r.top;return[s/r.width,n/r.height]};if(this.wrapper.addEventListener("click",t=>{let[r,s]=e(t);this.emit("click",r,s)}),this.wrapper.addEventListener("dblclick",t=>{let[r,s]=e(t);this.emit("dblclick",r,s)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{let{scrollLeft:t,scrollWidth:r,clientWidth:s}=this.scrollContainer,n=t/r,o=(t+s)/r;this.emit("scroll",n,o,t,t+s)}),typeof ResizeObserver=="function"){let t=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{t().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){let e=this.parent.clientWidth;e===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=e,this.reRender())}initDrag(){this.subscriptions.push(function(e,t,r,s,n=3,o=0,a=100){if(!e)return()=>{};let c=matchMedia("(pointer: coarse)").matches,l=()=>{},u=h=>{if(h.button!==o)return;h.preventDefault(),h.stopPropagation();let d=h.clientX,f=h.clientY,m=!1,p=Date.now(),g=S=>{if(S.preventDefault(),S.stopPropagation(),c&&Date.now()-p<a)return;let T=S.clientX,k=S.clientY,M=T-d,P=k-f;if(m||Math.abs(M)>n||Math.abs(P)>n){let C=e.getBoundingClientRect(),{left:E,top:R}=C;m||(r?.(d-E,f-R),m=!0),t(M,P,T-E,k-R),d=T,f=k}},y=S=>{if(m){let T=S.clientX,k=S.clientY,M=e.getBoundingClientRect(),{left:P,top:C}=M;s?.(T-P,k-C)}l()},x=S=>{S.relatedTarget&&S.relatedTarget!==document.documentElement||y(S)},w=S=>{m&&(S.stopPropagation(),S.preventDefault())},_=S=>{m&&S.preventDefault()};document.addEventListener("pointermove",g),document.addEventListener("pointerup",y),document.addEventListener("pointerout",x),document.addEventListener("pointercancel",x),document.addEventListener("touchmove",_,{passive:!1}),document.addEventListener("click",w,{capture:!0}),l=()=>{document.removeEventListener("pointermove",g),document.removeEventListener("pointerup",y),document.removeEventListener("pointerout",x),document.removeEventListener("pointercancel",x),document.removeEventListener("touchmove",_),setTimeout(()=>{document.removeEventListener("click",w,{capture:!0})},10)}};return e.addEventListener("pointerdown",u),()=>{l(),e.removeEventListener("pointerdown",u)}}(this.wrapper,(e,t,r)=>{this.emit("drag",Math.max(0,Math.min(1,r/this.wrapper.getBoundingClientRect().width)))},e=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,e/this.wrapper.getBoundingClientRect().width)))},e=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,e/this.wrapper.getBoundingClientRect().width)))}))}getHeight(e,t){var r;let s=((r=this.audioData)===null||r===void 0?void 0:r.numberOfChannels)||1;if(e==null)return 128;if(!isNaN(Number(e)))return Number(e);if(e==="auto"){let n=this.parent.clientHeight||128;return t?.every(o=>!o.overlay)?n/s:n}return 128}initHtml(){let e=document.createElement("div"),t=e.attachShadow({mode:"open"}),r=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return t.innerHTML=`
8
576
  <style${r?` nonce="${r}"`:""}>
9
577
  :host {
10
578
  user-select: none;
@@ -76,37 +644,39 @@ function ur(n,e){return{error:t=>n.error({...e,...t}),rpcRequest:t=>n.rpcRequest
76
644
  <div class="cursor" part="cursor"></div>
77
645
  </div>
78
646
  </div>
79
- `,[e,t]}setOptions(e){if(this.options.container!==e.container){let t=this.parentFromOptionsContainer(e.container);t.appendChild(this.container),this.parent=t}e.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=e,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(e){this.scrollContainer.scrollLeft=e}setScrollPercentage(e){let{scrollWidth:t}=this.scrollContainer,r=t*e;this.setScroll(r)}destroy(){var e,t;this.subscriptions.forEach(r=>r()),this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.unsubscribeOnScroll)===null||t===void 0||t.forEach(r=>r()),this.unsubscribeOnScroll=[]}createDelay(e=10){let t,r,s=()=>{t&&clearTimeout(t),r&&r()};return this.timeouts.push(s),()=>new Promise((i,a)=>{s(),r=a,t=setTimeout(()=>{t=void 0,r=void 0,i()},e)})}convertColorValues(e){if(!Array.isArray(e))return e||"";if(e.length<2)return e[0]||"";let t=document.createElement("canvas"),r=t.getContext("2d"),s=t.height*(window.devicePixelRatio||1),i=r.createLinearGradient(0,0,0,s),a=1/(e.length-1);return e.forEach((o,c)=>{let l=c*a;i.addColorStop(l,o)}),i}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(e,t,r,s){let i=e[0],a=e[1]||e[0],o=i.length,{width:c,height:l}=r.canvas,d=l/2,u=this.getPixelRatio(),h=t.barWidth?t.barWidth*u:1,m=t.barGap?t.barGap*u:t.barWidth?h/2:0,f=t.barRadius||0,w=c/(h+m)/o,g=f&&"roundRect"in r?"roundRect":"rect";r.beginPath();let b=0,k=0,P=0;for(let S=0;S<=o;S++){let y=Math.round(S*w);if(y>b){let _=Math.round(k*d*s),E=_+Math.round(P*d*s)||1,R=d-_;t.barAlign==="top"?R=0:t.barAlign==="bottom"&&(R=l-E),r[g](b*(h+m),R,h,E,f),b=y,k=0,P=0}let x=Math.abs(i[S]||0),v=Math.abs(a[S]||0);x>k&&(k=x),v>P&&(P=v)}r.fill(),r.closePath()}renderLineWaveform(e,t,r,s){let i=a=>{let o=e[a]||e[0],c=o.length,{height:l}=r.canvas,d=l/2,u=r.canvas.width/c;r.moveTo(0,d);let h=0,m=0;for(let f=0;f<=c;f++){let w=Math.round(f*u);if(w>h){let b=d+(Math.round(m*d*s)||1)*(a===0?-1:1);r.lineTo(h,b),h=w,m=0}let g=Math.abs(o[f]||0);g>m&&(m=g)}r.lineTo(h,d)};r.beginPath(),i(0),i(1),r.fill(),r.closePath()}renderWaveform(e,t,r){if(r.fillStyle=this.convertColorValues(t.waveColor),t.renderFunction)return void t.renderFunction(e,r);let s=t.barHeight||1;if(t.normalize){let i=Array.from(e[0]).reduce((a,o)=>Math.max(a,Math.abs(o)),0);s=i?1/i:1}t.barWidth||t.barGap||t.barAlign?this.renderBarWaveform(e,t,r,s):this.renderLineWaveform(e,t,r,s)}renderSingleCanvas(e,t,r,s,i,a,o){let c=this.getPixelRatio(),l=document.createElement("canvas");l.width=Math.round(r*c),l.height=Math.round(s*c),l.style.width=`${r}px`,l.style.height=`${s}px`,l.style.left=`${Math.round(i)}px`,a.appendChild(l);let d=l.getContext("2d");if(this.renderWaveform(e,t,d),l.width>0&&l.height>0){let u=l.cloneNode(),h=u.getContext("2d");h.drawImage(l,0,0),h.globalCompositeOperation="source-in",h.fillStyle=this.convertColorValues(t.progressColor),h.fillRect(0,0,l.width,l.height),o.appendChild(u)}}renderMultiCanvas(e,t,r,s,i,a){let o=this.getPixelRatio(),{clientWidth:c}=this.scrollContainer,l=r/o,d=Math.min(n.MAX_CANVAS_WIDTH,c,l),u={};if(t.barWidth||t.barGap){let g=t.barWidth||.5,b=g+(t.barGap||g/2);d%b!=0&&(d=Math.floor(d/b)*b)}if(d===0)return;let h=g=>{if(g<0||g>=m||u[g])return;u[g]=!0;let b=g*d,k=Math.min(l-b,d);if(t.barWidth||t.barGap){let S=t.barWidth||.5,y=S+(t.barGap||S/2);k=Math.floor(k/y)*y}if(k<=0)return;let P=e.map(S=>{let y=Math.floor(b/l*S.length),x=Math.floor((b+k)/l*S.length);return S.slice(y,x)});this.renderSingleCanvas(P,t,k,s,b,i,a)},m=Math.ceil(l/d);if(!this.isScrollable){for(let g=0;g<m;g++)h(g);return}let f=this.scrollContainer.scrollLeft/l,w=Math.floor(f*m);if(h(w-1),h(w),h(w+1),m>1){let g=this.on("scroll",()=>{let{scrollLeft:b}=this.scrollContainer,k=Math.floor(b/l*m);Object.keys(u).length>n.MAX_NODES&&(i.innerHTML="",a.innerHTML="",u={}),h(k-1),h(k),h(k+1)});this.unsubscribeOnScroll.push(g)}}renderChannel(e,t,r,s){var{overlay:i}=t,a=function(d,u){var h={};for(var m in d)Object.prototype.hasOwnProperty.call(d,m)&&u.indexOf(m)<0&&(h[m]=d[m]);if(d!=null&&typeof Object.getOwnPropertySymbols=="function"){var f=0;for(m=Object.getOwnPropertySymbols(d);f<m.length;f++)u.indexOf(m[f])<0&&Object.prototype.propertyIsEnumerable.call(d,m[f])&&(h[m[f]]=d[m[f]])}return h}(t,["overlay"]);let o=document.createElement("div"),c=this.getHeight(a.height,a.splitChannels);o.style.height=`${c}px`,i&&s>0&&(o.style.marginTop=`-${c}px`),this.canvasWrapper.style.minHeight=`${c}px`,this.canvasWrapper.appendChild(o);let l=o.cloneNode();this.progressWrapper.appendChild(l),this.renderMultiCanvas(e,a,r,c,o,l)}render(e){return O(this,void 0,void 0,function*(){var t;this.timeouts.forEach(c=>c()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);let r=this.getPixelRatio(),s=this.scrollContainer.clientWidth,i=Math.ceil(e.duration*(this.options.minPxPerSec||0));this.isScrollable=i>s;let a=this.options.fillParent&&!this.isScrollable,o=(a?s:i)*r;if(this.wrapper.style.width=a?"100%":`${i}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=e,this.emit("render"),this.options.splitChannels)for(let c=0;c<e.numberOfChannels;c++){let l=Object.assign(Object.assign({},this.options),(t=this.options.splitChannels)===null||t===void 0?void 0:t[c]);this.renderChannel([e.getChannelData(c)],l,o,c)}else{let c=[e.getChannelData(0)];e.numberOfChannels>1&&c.push(e.getChannelData(1)),this.renderChannel(c,this.options,o,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(r=>r()),this.unsubscribeOnScroll=[],!this.audioData)return;let{scrollWidth:e}=this.scrollContainer,{right:t}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&e!==this.scrollContainer.scrollWidth){let{right:r}=this.progressWrapper.getBoundingClientRect(),s=r-t;s*=2,s=s<0?Math.floor(s):Math.ceil(s),s/=2,this.scrollContainer.scrollLeft+=s}}zoom(e){this.options.minPxPerSec=e,this.reRender()}scrollIntoView(e,t=!1){let{scrollLeft:r,scrollWidth:s,clientWidth:i}=this.scrollContainer,a=e*s,o=r,c=r+i,l=i/2;if(this.isDragging)a+30>c?this.scrollContainer.scrollLeft+=30:a-30<o&&(this.scrollContainer.scrollLeft-=30);else{(a<o||a>c)&&(this.scrollContainer.scrollLeft=a-(this.options.autoCenter?l:0));let d=a-r-l;t&&this.options.autoCenter&&d>0&&(this.scrollContainer.scrollLeft+=Math.min(d,10))}{let d=this.scrollContainer.scrollLeft,u=d/s,h=(d+i)/s;this.emit("scroll",u,h,d,d+i)}}renderProgress(e,t){if(isNaN(e))return;let r=100*e;this.canvasWrapper.style.clipPath=`polygon(${r}% 0%, 100% 0%, 100% 100%, ${r}% 100%)`,this.progressWrapper.style.width=`${r}%`,this.cursor.style.left=`${r}%`,this.cursor.style.transform=`translateX(-${Math.round(r)===100?this.options.cursorWidth:0}px)`,this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(e,t)}exportImage(e,t,r){return O(this,void 0,void 0,function*(){let s=this.canvasWrapper.querySelectorAll("canvas");if(!s.length)throw new Error("No waveform data");if(r==="dataURL"){let i=Array.from(s).map(a=>a.toDataURL(e,t));return Promise.resolve(i)}return Promise.all(Array.from(s).map(i=>new Promise((a,o)=>{i.toBlob(c=>{c?a(c):o(new Error("Could not export image"))},e,t)})))})}};nt.MAX_CANVAS_WIDTH=8e3,nt.MAX_NODES=10;var $r=class extends ve{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}},st=class extends ve{constructor(e=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=e,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return O(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(e){if(this.currentSrc=e,this._duration=void 0,!e)return this.buffer=null,void this.emit("emptied");fetch(e).then(t=>{if(t.status>=400)throw new Error(`Failed to fetch ${e}: ${t.status} (${t.statusText})`);return t.arrayBuffer()}).then(t=>this.currentSrc!==e?null:this.audioContext.decodeAudioData(t)).then(t=>{this.currentSrc===e&&(this.buffer=t,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var e;if(!this.paused)return;this.paused=!1,(e=this.bufferNode)===null||e===void 0||e.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let t=this.playedDuration*this._playbackRate;(t>=this.duration||t<0)&&(t=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,t),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var e;this.paused=!0,(e=this.bufferNode)===null||e===void 0||e.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return O(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(e){let t=e-this.currentTime,r=this.bufferNode;r?.stop(this.audioContext.currentTime+t),r?.addEventListener("ended",()=>{r===this.bufferNode&&(this.bufferNode=null,this.pause())},{once:!0})}setSinkId(e){return O(this,void 0,void 0,function*(){return this.audioContext.setSinkId(e)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this.bufferNode&&(this.bufferNode.playbackRate.value=e)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(e){let t=!this.paused;t&&this._pause(),this.playedDuration=e/this._playbackRate,t&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var e,t;return(e=this._duration)!==null&&e!==void 0?e:((t=this.buffer)===null||t===void 0?void 0:t.duration)||0}set duration(e){this._duration=e}get volume(){return this.gainNode.gain.value}set volume(e){this.gainNode.gain.value=e,this.emit("volumechange")}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(e){return/^(audio|video)\//.test(e)}getGainNode(){return this.gainNode}getChannelData(){let e=[];if(!this.buffer)return e;let t=this.buffer.numberOfChannels;for(let r=0;r<t;r++)e.push(this.buffer.getChannelData(r));return e}},ci={waveColor:"#999",progressColor:"#555",cursorWidth:1,minPxPerSec:0,fillParent:!0,interact:!0,dragToSeek:!1,autoScroll:!0,autoCenter:!0,sampleRate:8e3},Le=class n extends jr{static create(e){return new n(e)}constructor(e){let t=e.media||(e.backend==="WebAudio"?new st:void 0);super({media:t,mediaControls:e.mediaControls,autoplay:e.autoplay,playbackRate:e.audioRate}),this.plugins=[],this.decodedData=null,this.stopAtPosition=null,this.subscriptions=[],this.mediaSubscriptions=[],this.abortController=null,this.options=Object.assign({},ci,e),this.timer=new $r;let r=t?void 0:this.getMediaElement();this.renderer=new nt(this.options,r),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initPlugins();let s=this.options.url||this.getSrc()||"";Promise.resolve().then(()=>{this.emit("init");let{peaks:i,duration:a}=this.options;(s||i&&a)&&this.load(s,i,a).catch(()=>null)})}updateProgress(e=this.getCurrentTime()){return this.renderer.renderProgress(e/this.getDuration(),this.isPlaying()),e}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){let e=this.updateProgress();this.emit("timeupdate",e),this.emit("audioprocess",e),this.stopAtPosition!=null&&this.isPlaying()&&e>=this.stopAtPosition&&this.pause()}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{let e=this.updateProgress();this.emit("timeupdate",e)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("emptied",()=>{this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish"),this.stopAtPosition=null}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",()=>{var e;this.emit("error",(e=this.getMediaElement().error)!==null&&e!==void 0?e:new Error("Media error")),this.stopAtPosition=null}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(e,t)=>{this.options.interact&&(this.seekTo(e),this.emit("interaction",e*this.getDuration()),this.emit("click",e,t))}),this.renderer.on("dblclick",(e,t)=>{this.emit("dblclick",e,t)}),this.renderer.on("scroll",(e,t,r,s)=>{let i=this.getDuration();this.emit("scroll",e*i,t*i,r,s)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",e=>{this.emit("dragstart",e)}),this.renderer.on("dragend",e=>{this.emit("dragend",e)}));{let e;this.subscriptions.push(this.renderer.on("drag",t=>{if(!this.options.interact)return;let r;this.renderer.renderProgress(t),clearTimeout(e),this.isPlaying()?r=0:this.options.dragToSeek===!0?r=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(r=this.options.dragToSeek.debounceTime),e=setTimeout(()=>{this.seekTo(t)},r),this.emit("interaction",t*this.getDuration()),this.emit("drag",t)}))}}initPlugins(){var e;!((e=this.options.plugins)===null||e===void 0)&&e.length&&this.options.plugins.forEach(t=>{this.registerPlugin(t)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(e=>e()),this.mediaSubscriptions=[]}setOptions(e){this.options=Object.assign({},this.options,e),e.duration&&!e.peaks&&(this.decodedData=or.createBuffer(this.exportPeaks(),e.duration)),e.peaks&&e.duration&&(this.decodedData=or.createBuffer(e.peaks,e.duration)),this.renderer.setOptions(this.options),e.audioRate&&this.setPlaybackRate(e.audioRate),e.mediaControls!=null&&(this.getMediaElement().controls=e.mediaControls)}registerPlugin(e){if(this.plugins.includes(e))return e;e._init(this),this.plugins.push(e);let t=e.once("destroy",()=>{this.plugins=this.plugins.filter(r=>r!==e),this.subscriptions=this.subscriptions.filter(r=>r!==t)});return this.subscriptions.push(t),e}unregisterPlugin(e){this.plugins=this.plugins.filter(t=>t!==e),e.destroy()}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(e){return this.renderer.setScroll(e)}setScrollTime(e){let t=e/this.getDuration();this.renderer.setScrollPercentage(t)}getActivePlugins(){return this.plugins}loadAudio(e,t,r,s){return O(this,void 0,void 0,function*(){var i;if(this.emit("load",e),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,!t&&!r){let o=this.options.fetchParams||{};window.AbortController&&!o.signal&&(this.abortController=new AbortController,o.signal=(i=this.abortController)===null||i===void 0?void 0:i.signal);let c=d=>this.emit("loading",d);t=yield oi.fetchBlob(e,c,o);let l=this.options.blobMimeType;l&&(t=new Blob([t],{type:l}))}this.setSrc(e,t);let a=yield new Promise(o=>{let c=s||this.getDuration();c?o(c):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>o(this.getDuration()),{once:!0}))});if(!e&&!t){let o=this.getMediaElement();o instanceof st&&(o.duration=a)}if(r)this.decodedData=or.createBuffer(r,a||0);else if(t){let o=yield t.arrayBuffer();this.decodedData=yield or.decode(o,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(e,t,r){return O(this,void 0,void 0,function*(){try{return yield this.loadAudio(e,void 0,t,r)}catch(s){throw this.emit("error",s),s}})}loadBlob(e,t,r){return O(this,void 0,void 0,function*(){try{return yield this.loadAudio("",e,t,r)}catch(s){throw this.emit("error",s),s}})}zoom(e){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(e),this.emit("zoom",e)}getDecodedData(){return this.decodedData}exportPeaks({channels:e=2,maxLength:t=8e3,precision:r=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");let s=Math.min(e,this.decodedData.numberOfChannels),i=[];for(let a=0;a<s;a++){let o=this.decodedData.getChannelData(a),c=[],l=o.length/t;for(let d=0;d<t;d++){let u=o.slice(Math.floor(d*l),Math.ceil((d+1)*l)),h=0;for(let m=0;m<u.length;m++){let f=u[m];Math.abs(f)>Math.abs(h)&&(h=f)}c.push(Math.round(h*r)/r)}i.push(c)}return i}getDuration(){let e=super.getDuration()||0;return e!==0&&e!==1/0||!this.decodedData||(e=this.decodedData.duration),e}toggleInteraction(e){this.options.interact=e}setTime(e){this.stopAtPosition=null,super.setTime(e),this.updateProgress(e),this.emit("timeupdate",e)}seekTo(e){let t=this.getDuration()*e;this.setTime(t)}play(e,t){let r=Object.create(null,{play:{get:()=>super.play}});return O(this,void 0,void 0,function*(){e!=null&&this.setTime(e);let s=yield r.play.call(this);return t!=null&&(this.media instanceof st?this.media.stopAt(t):this.stopAtPosition=t),s})}playPause(){return O(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(e){this.setTime(this.getCurrentTime()+e)}empty(){this.load("",[[0]],.001)}setMediaElement(e){this.unsubscribePlayerEvents(),super.setMediaElement(e),this.initPlayerEvents()}exportImage(){return O(this,arguments,void 0,function*(e="image/png",t=1,r="dataURL"){return this.renderer.exportImage(e,t,r)})}destroy(){var e;this.emit("destroy"),(e=this.abortController)===null||e===void 0||e.abort(),this.plugins.forEach(t=>t.destroy()),this.subscriptions.forEach(t=>t()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}};Le.BasePlugin=class extends ve{constructor(n){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=n}onInit(){}_init(n){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=n,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(n=>n()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}},Le.dom=ai;var cr=class n{wavesurfer;constructor(e,t,r){this.wavesurfer=Le.create({container:t,waveColor:"rgb(200, 0, 200)",progressColor:"rgb(100, 0, 100)",barWidth:10,barRadius:10,barGap:2,peaks:[e],duration:r})}static async init(e,t){let r=await ar.driver,s=r.decode({source:e}).audio.getReader(),i=[],a=[],o=1024,c=await r.getAudioDuration(e);for(;;){let{done:l,value:d}=await s.read();if(l)break;let u=d.numberOfFrames,h=new Float32Array(u);d.copyTo(h,{planeIndex:0});for(let m=0;m<h.length;m++)if(a.push(h[m]),a.length>=o){let f=a.splice(0,o),w=Math.min(...f),g=Math.max(...f);i.push(w,g)}d.close()}return new n(i,t,c??0)}set width(e){this.wavesurfer.setOptions({width:e})}};async function mn(){let n=document.querySelector(".waveform-demo"),e=document.querySelector(".width"),t=await cr.init("/assets/temp/gl.mp4",n);e.addEventListener("change",()=>{let r=+e.value;t.width=r})}var dr=class n{videoTrack;options;#e;#t=new Map;#r=[0,0];constructor(e,t){this.videoTrack=e,this.options=t,this.#e=new Ye(e,t.canvasSinkOptions)}static async init(e,t){let s=await new ie({formats:Ne,source:await rt(e)}).getPrimaryVideoTrack();if(s)return new n(s,{frequency:t.frequency??1,canvasSinkOptions:t.canvasSinkOptions??{width:80,height:50,fit:"fill"},onChange:t.onChange});throw new Error("Source has no video track")}set frequency(e){e!==this.options.frequency&&(this.options.frequency=e,this.#a())}get frequency(){return this.options.frequency}#s([e,t]){let r=t-e;return[e-r,t+r]}async#o(){let[e,t]=this.#r,r=new Set,s=await this.videoTrack.computeDuration();for(let c=e;c<=t;c+=this.options.frequency)c>=0&&c<=s&&r.add(+c.toFixed(3));let i=[...r].filter(c=>!this.#t.has(c)),a=0;for await(let c of this.#e.canvasesAtTimestamps(i))if(c){let l=i[a++];this.#t.set(l,c)}for(let c of this.#t.keys())r.has(c)||this.#t.delete(c);let o=[...this.#t.entries()].map(([c,l])=>({time:c,canvas:l}));this.options.onChange(o)}set range(e){let t=this.#s(e);this.#r[0]===t[0]&&this.#r[1]===t[1]||(this.#r=t,this.#a())}#n=null;#i=!1;async#a(){if(this.#n){this.#i=!0;return}this.#n=this.#o(),await this.#n,this.#n=null,this.#i&&(this.#i=!1,await this.#a())}getThumbnail(e){return this.#t.get(e)}};async function hn(n){let e=document.querySelector(".range"),t=document.querySelector(".range-view"),r=document.querySelector(".range-size"),s=document.querySelector(".frequency"),i=document.querySelector(".frequency-view"),a=document.querySelector("#filmstrip"),o=1e3/10/1e3,c=.5,l=await dr.init(n,{onChange(d){let u=d.sort((h,m)=>h.time-m.time);a.replaceChildren(...u.map(({time:h,canvas:m})=>di(h,m.canvas)))},frequency:o,canvasSinkOptions:{width:80,height:50,fit:"fill"}});r.addEventListener("change",()=>{c=+r.value;let[d,u]=[+e.value,+e.value+c];l.range=[d,u],t.textContent=`visible time range: [${d}, ${u}]`}),e.addEventListener("change",()=>{let[d,u]=[+e.value,+e.value+c];l.range=[d,u],t.textContent=`visible time range: [${d}, ${u}]`}),s.addEventListener("change",()=>{l.frequency=1e3/+s.value/1e3,i.textContent=`frame every ${l.frequency.toFixed(3)} second (${s.value} frames per second)`}),l.range=[10,10.5]}function di(n,e){let t=document.createElement("div");t.style.position="relative",t.style.display="inline-block",t.style.marginRight="4px",t.appendChild(e);let r=document.createElement("div");return r.textContent=`${n.toFixed(2)}s`,r.style.position="absolute",r.style.top="2px",r.style.right="4px",r.style.fontSize="10px",r.style.color="white",r.style.background="rgba(0,0,0,0.6)",r.style.padding="2px 4px",r.style.borderRadius="4px",r.style.pointerEvents="none",t.appendChild(r),t}async function fn(n,e){let t=await e.arrayBuffer(),s=await new AudioContext({sampleRate:16e3}).decodeAudioData(t),i;if(s.numberOfChannels===2){let o=Math.sqrt(2),c=s.getChannelData(0),l=s.getChannelData(1);i=new Float32Array(c.length);for(let d=0;d<s.length;++d)i[d]=o*(c[d]+l[d])/2}else i=s.getChannelData(0);let a=await n.getAudioDuration(e);return{audio:i,duration:a}}async function pn({driver:n,spec:e,workerUrl:t,onLoading:r}){let s=gt(),i=gt(),a=await Ee.thread({label:"OmnitoolSpeechTranscriber",workerUrl:t,setupHost:()=>({loading:async o=>r(o),deliverReport:async o=>s.pub(o),deliverTranscription:async o=>i.pub(o)})});return await a.work.prepare(e),{transcribe:rs(async o=>{let{source:c,language:l}=o,{audio:d,duration:u}=await fn(n,c),h=ss(s(o.onReport),i(o.onTranscription)),m=await a.work.transcribe({duration:u,language:l,audio:d.buffer});return h(),m}),dispose:a.terminate()}}async function gn(n){let e=await pn({driver:n,spec:{model:"onnx-community/whisper-tiny_timestamped",device:"webgpu",strideLength:5,chunkLength:30,dtype:"fp32"},workerUrl:new URL("/features/speech/transcribe/worker.bundle.min.js",import.meta.url),onLoading({progress:t,total:r}){console.log(t,r,"total")}});return{transcribe:async t=>{let r=await e.transcribe({source:t,language:"english",onReport(s){console.log("report",s)},onTranscription(s){console.log("transcript",s)}});console.log(r,"transcript result")}}}function qr(n,e){let t={width:1920,height:1080},r=document.createElement("canvas");r.width=t.width,r.height=t.height;let s=r.getContext("2d");async function i(){let a=n.decode({source:e,async onFrame(o){let c=await n.composite([{kind:"image",frame:o},{kind:"text",content:"omnitool",fontSize:50,color:"green"}]);return o.close(),s?.drawImage(c,0,0),c}});await n.encode({readables:a,config:{audio:{codec:"opus",bitrate:128e3},video:{codec:"vp9",bitrate:1e6}}})}return{canvas:r,run:i}}var it=await ar.driver,li=document.querySelector(".results"),ui=document.querySelector(".fetch"),mi=document.querySelector(".import");ui?.addEventListener("click",pi);mi?.addEventListener("click",fi);mn();var hi=await gn(it);await it.thread.work.hello(),it.machina.count===1?console.log("\u2705 driver works"):console.error("\u274C FAIL driver call didn't work");async function fi(){let[n]=await window.showOpenFilePicker(),e=await n.getFile(),t=qr(it,e);await hn(e),yn(t,n.name),await hi.transcribe(e)}async function pi(){let n=["/assets/temp/gl.mp4"];for(let e of n){let t=qr(it,"/assets/temp/gl.mp4");yn(t,e)}}async function yn(n,e){let t=document.createElement("div");li.append(t);let r=document.createElement("p");r.textContent=e,t.append(r),t.append(n.canvas),await n.run()}
647
+ `,[e,t]}setOptions(e){if(this.options.container!==e.container){let t=this.parentFromOptionsContainer(e.container);t.appendChild(this.container),this.parent=t}e.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=e,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(e){this.scrollContainer.scrollLeft=e}setScrollPercentage(e){let{scrollWidth:t}=this.scrollContainer,r=t*e;this.setScroll(r)}destroy(){var e,t;this.subscriptions.forEach(r=>r()),this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.unsubscribeOnScroll)===null||t===void 0||t.forEach(r=>r()),this.unsubscribeOnScroll=[]}createDelay(e=10){let t,r,s=()=>{t&&clearTimeout(t),r&&r()};return this.timeouts.push(s),()=>new Promise((n,o)=>{s(),r=o,t=setTimeout(()=>{t=void 0,r=void 0,n()},e)})}convertColorValues(e){if(!Array.isArray(e))return e||"";if(e.length<2)return e[0]||"";let t=document.createElement("canvas"),r=t.getContext("2d"),s=t.height*(window.devicePixelRatio||1),n=r.createLinearGradient(0,0,0,s),o=1/(e.length-1);return e.forEach((a,c)=>{let l=c*o;n.addColorStop(l,a)}),n}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(e,t,r,s){let n=e[0],o=e[1]||e[0],a=n.length,{width:c,height:l}=r.canvas,u=l/2,h=this.getPixelRatio(),d=t.barWidth?t.barWidth*h:1,f=t.barGap?t.barGap*h:t.barWidth?d/2:0,m=t.barRadius||0,p=c/(d+f)/a,g=m&&"roundRect"in r?"roundRect":"rect";r.beginPath();let y=0,x=0,w=0;for(let _=0;_<=a;_++){let S=Math.round(_*p);if(S>y){let M=Math.round(x*u*s),P=M+Math.round(w*u*s)||1,C=u-M;t.barAlign==="top"?C=0:t.barAlign==="bottom"&&(C=l-P),r[g](y*(d+f),C,d,P,m),y=S,x=0,w=0}let T=Math.abs(n[_]||0),k=Math.abs(o[_]||0);T>x&&(x=T),k>w&&(w=k)}r.fill(),r.closePath()}renderLineWaveform(e,t,r,s){let n=o=>{let a=e[o]||e[0],c=a.length,{height:l}=r.canvas,u=l/2,h=r.canvas.width/c;r.moveTo(0,u);let d=0,f=0;for(let m=0;m<=c;m++){let p=Math.round(m*h);if(p>d){let y=u+(Math.round(f*u*s)||1)*(o===0?-1:1);r.lineTo(d,y),d=p,f=0}let g=Math.abs(a[m]||0);g>f&&(f=g)}r.lineTo(d,u)};r.beginPath(),n(0),n(1),r.fill(),r.closePath()}renderWaveform(e,t,r){if(r.fillStyle=this.convertColorValues(t.waveColor),t.renderFunction)return void t.renderFunction(e,r);let s=t.barHeight||1;if(t.normalize){let n=Array.from(e[0]).reduce((o,a)=>Math.max(o,Math.abs(a)),0);s=n?1/n:1}t.barWidth||t.barGap||t.barAlign?this.renderBarWaveform(e,t,r,s):this.renderLineWaveform(e,t,r,s)}renderSingleCanvas(e,t,r,s,n,o,a){let c=this.getPixelRatio(),l=document.createElement("canvas");l.width=Math.round(r*c),l.height=Math.round(s*c),l.style.width=`${r}px`,l.style.height=`${s}px`,l.style.left=`${Math.round(n)}px`,o.appendChild(l);let u=l.getContext("2d");if(this.renderWaveform(e,t,u),l.width>0&&l.height>0){let h=l.cloneNode(),d=h.getContext("2d");d.drawImage(l,0,0),d.globalCompositeOperation="source-in",d.fillStyle=this.convertColorValues(t.progressColor),d.fillRect(0,0,l.width,l.height),a.appendChild(h)}}renderMultiCanvas(e,t,r,s,n,o){let a=this.getPixelRatio(),{clientWidth:c}=this.scrollContainer,l=r/a,u=Math.min(i.MAX_CANVAS_WIDTH,c,l),h={};if(t.barWidth||t.barGap){let g=t.barWidth||.5,y=g+(t.barGap||g/2);u%y!=0&&(u=Math.floor(u/y)*y)}if(u===0)return;let d=g=>{if(g<0||g>=f||h[g])return;h[g]=!0;let y=g*u,x=Math.min(l-y,u);if(t.barWidth||t.barGap){let _=t.barWidth||.5,S=_+(t.barGap||_/2);x=Math.floor(x/S)*S}if(x<=0)return;let w=e.map(_=>{let S=Math.floor(y/l*_.length),T=Math.floor((y+x)/l*_.length);return _.slice(S,T)});this.renderSingleCanvas(w,t,x,s,y,n,o)},f=Math.ceil(l/u);if(!this.isScrollable){for(let g=0;g<f;g++)d(g);return}let m=this.scrollContainer.scrollLeft/l,p=Math.floor(m*f);if(d(p-1),d(p),d(p+1),f>1){let g=this.on("scroll",()=>{let{scrollLeft:y}=this.scrollContainer,x=Math.floor(y/l*f);Object.keys(h).length>i.MAX_NODES&&(n.innerHTML="",o.innerHTML="",h={}),d(x-1),d(x),d(x+1)});this.unsubscribeOnScroll.push(g)}}renderChannel(e,t,r,s){var{overlay:n}=t,o=function(u,h){var d={};for(var f in u)Object.prototype.hasOwnProperty.call(u,f)&&h.indexOf(f)<0&&(d[f]=u[f]);if(u!=null&&typeof Object.getOwnPropertySymbols=="function"){var m=0;for(f=Object.getOwnPropertySymbols(u);m<f.length;m++)h.indexOf(f[m])<0&&Object.prototype.propertyIsEnumerable.call(u,f[m])&&(d[f[m]]=u[f[m]])}return d}(t,["overlay"]);let a=document.createElement("div"),c=this.getHeight(o.height,o.splitChannels);a.style.height=`${c}px`,n&&s>0&&(a.style.marginTop=`-${c}px`),this.canvasWrapper.style.minHeight=`${c}px`,this.canvasWrapper.appendChild(a);let l=a.cloneNode();this.progressWrapper.appendChild(l),this.renderMultiCanvas(e,o,r,c,a,l)}render(e){return Se(this,void 0,void 0,function*(){var t;this.timeouts.forEach(c=>c()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);let r=this.getPixelRatio(),s=this.scrollContainer.clientWidth,n=Math.ceil(e.duration*(this.options.minPxPerSec||0));this.isScrollable=n>s;let o=this.options.fillParent&&!this.isScrollable,a=(o?s:n)*r;if(this.wrapper.style.width=o?"100%":`${n}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=e,this.emit("render"),this.options.splitChannels)for(let c=0;c<e.numberOfChannels;c++){let l=Object.assign(Object.assign({},this.options),(t=this.options.splitChannels)===null||t===void 0?void 0:t[c]);this.renderChannel([e.getChannelData(c)],l,a,c)}else{let c=[e.getChannelData(0)];e.numberOfChannels>1&&c.push(e.getChannelData(1)),this.renderChannel(c,this.options,a,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(r=>r()),this.unsubscribeOnScroll=[],!this.audioData)return;let{scrollWidth:e}=this.scrollContainer,{right:t}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&e!==this.scrollContainer.scrollWidth){let{right:r}=this.progressWrapper.getBoundingClientRect(),s=r-t;s*=2,s=s<0?Math.floor(s):Math.ceil(s),s/=2,this.scrollContainer.scrollLeft+=s}}zoom(e){this.options.minPxPerSec=e,this.reRender()}scrollIntoView(e,t=!1){let{scrollLeft:r,scrollWidth:s,clientWidth:n}=this.scrollContainer,o=e*s,a=r,c=r+n,l=n/2;if(this.isDragging)o+30>c?this.scrollContainer.scrollLeft+=30:o-30<a&&(this.scrollContainer.scrollLeft-=30);else{(o<a||o>c)&&(this.scrollContainer.scrollLeft=o-(this.options.autoCenter?l:0));let u=o-r-l;t&&this.options.autoCenter&&u>0&&(this.scrollContainer.scrollLeft+=Math.min(u,10))}{let u=this.scrollContainer.scrollLeft,h=u/s,d=(u+n)/s;this.emit("scroll",h,d,u,u+n)}}renderProgress(e,t){if(isNaN(e))return;let r=100*e;this.canvasWrapper.style.clipPath=`polygon(${r}% 0%, 100% 0%, 100% 100%, ${r}% 100%)`,this.progressWrapper.style.width=`${r}%`,this.cursor.style.left=`${r}%`,this.cursor.style.transform=`translateX(-${Math.round(r)===100?this.options.cursorWidth:0}px)`,this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(e,t)}exportImage(e,t,r){return Se(this,void 0,void 0,function*(){let s=this.canvasWrapper.querySelectorAll("canvas");if(!s.length)throw new Error("No waveform data");if(r==="dataURL"){let n=Array.from(s).map(o=>o.toDataURL(e,t));return Promise.resolve(n)}return Promise.all(Array.from(s).map(n=>new Promise((o,a)=>{n.toBlob(c=>{c?o(c):a(new Error("Could not export image"))},e,t)})))})}};Ns.MAX_CANVAS_WIDTH=8e3,Ns.MAX_NODES=10;var Jl=class extends Vr{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}},Gs=class extends Vr{constructor(e=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=e,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return Se(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(e){if(this.currentSrc=e,this._duration=void 0,!e)return this.buffer=null,void this.emit("emptied");fetch(e).then(t=>{if(t.status>=400)throw new Error(`Failed to fetch ${e}: ${t.status} (${t.statusText})`);return t.arrayBuffer()}).then(t=>this.currentSrc!==e?null:this.audioContext.decodeAudioData(t)).then(t=>{this.currentSrc===e&&(this.buffer=t,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var e;if(!this.paused)return;this.paused=!1,(e=this.bufferNode)===null||e===void 0||e.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let t=this.playedDuration*this._playbackRate;(t>=this.duration||t<0)&&(t=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,t),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var e;this.paused=!0,(e=this.bufferNode)===null||e===void 0||e.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return Se(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(e){let t=e-this.currentTime,r=this.bufferNode;r?.stop(this.audioContext.currentTime+t),r?.addEventListener("ended",()=>{r===this.bufferNode&&(this.bufferNode=null,this.pause())},{once:!0})}setSinkId(e){return Se(this,void 0,void 0,function*(){return this.audioContext.setSinkId(e)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this.bufferNode&&(this.bufferNode.playbackRate.value=e)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(e){let t=!this.paused;t&&this._pause(),this.playedDuration=e/this._playbackRate,t&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var e,t;return(e=this._duration)!==null&&e!==void 0?e:((t=this.buffer)===null||t===void 0?void 0:t.duration)||0}set duration(e){this._duration=e}get volume(){return this.gainNode.gain.value}set volume(e){this.gainNode.gain.value=e,this.emit("volumechange")}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(e){return/^(audio|video)\//.test(e)}getGainNode(){return this.gainNode}getChannelData(){let e=[];if(!this.buffer)return e;let t=this.buffer.numberOfChannels;for(let r=0;r<t;r++)e.push(this.buffer.getChannelData(r));return e}},pS={waveColor:"#999",progressColor:"#555",cursorWidth:1,minPxPerSec:0,fillParent:!0,interact:!0,dragToSeek:!1,autoScroll:!0,autoCenter:!0,sampleRate:8e3},Ii=class i extends Ql{static create(e){return new i(e)}constructor(e){let t=e.media||(e.backend==="WebAudio"?new Gs:void 0);super({media:t,mediaControls:e.mediaControls,autoplay:e.autoplay,playbackRate:e.audioRate}),this.plugins=[],this.decodedData=null,this.stopAtPosition=null,this.subscriptions=[],this.mediaSubscriptions=[],this.abortController=null,this.options=Object.assign({},pS,e),this.timer=new Jl;let r=t?void 0:this.getMediaElement();this.renderer=new Ns(this.options,r),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initPlugins();let s=this.options.url||this.getSrc()||"";Promise.resolve().then(()=>{this.emit("init");let{peaks:n,duration:o}=this.options;(s||n&&o)&&this.load(s,n,o).catch(()=>null)})}updateProgress(e=this.getCurrentTime()){return this.renderer.renderProgress(e/this.getDuration(),this.isPlaying()),e}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){let e=this.updateProgress();this.emit("timeupdate",e),this.emit("audioprocess",e),this.stopAtPosition!=null&&this.isPlaying()&&e>=this.stopAtPosition&&this.pause()}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{let e=this.updateProgress();this.emit("timeupdate",e)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("emptied",()=>{this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish"),this.stopAtPosition=null}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",()=>{var e;this.emit("error",(e=this.getMediaElement().error)!==null&&e!==void 0?e:new Error("Media error")),this.stopAtPosition=null}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(e,t)=>{this.options.interact&&(this.seekTo(e),this.emit("interaction",e*this.getDuration()),this.emit("click",e,t))}),this.renderer.on("dblclick",(e,t)=>{this.emit("dblclick",e,t)}),this.renderer.on("scroll",(e,t,r,s)=>{let n=this.getDuration();this.emit("scroll",e*n,t*n,r,s)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",e=>{this.emit("dragstart",e)}),this.renderer.on("dragend",e=>{this.emit("dragend",e)}));{let e;this.subscriptions.push(this.renderer.on("drag",t=>{if(!this.options.interact)return;let r;this.renderer.renderProgress(t),clearTimeout(e),this.isPlaying()?r=0:this.options.dragToSeek===!0?r=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(r=this.options.dragToSeek.debounceTime),e=setTimeout(()=>{this.seekTo(t)},r),this.emit("interaction",t*this.getDuration()),this.emit("drag",t)}))}}initPlugins(){var e;!((e=this.options.plugins)===null||e===void 0)&&e.length&&this.options.plugins.forEach(t=>{this.registerPlugin(t)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(e=>e()),this.mediaSubscriptions=[]}setOptions(e){this.options=Object.assign({},this.options,e),e.duration&&!e.peaks&&(this.decodedData=ia.createBuffer(this.exportPeaks(),e.duration)),e.peaks&&e.duration&&(this.decodedData=ia.createBuffer(e.peaks,e.duration)),this.renderer.setOptions(this.options),e.audioRate&&this.setPlaybackRate(e.audioRate),e.mediaControls!=null&&(this.getMediaElement().controls=e.mediaControls)}registerPlugin(e){if(this.plugins.includes(e))return e;e._init(this),this.plugins.push(e);let t=e.once("destroy",()=>{this.plugins=this.plugins.filter(r=>r!==e),this.subscriptions=this.subscriptions.filter(r=>r!==t)});return this.subscriptions.push(t),e}unregisterPlugin(e){this.plugins=this.plugins.filter(t=>t!==e),e.destroy()}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(e){return this.renderer.setScroll(e)}setScrollTime(e){let t=e/this.getDuration();this.renderer.setScrollPercentage(t)}getActivePlugins(){return this.plugins}loadAudio(e,t,r,s){return Se(this,void 0,void 0,function*(){var n;if(this.emit("load",e),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,!t&&!r){let a=this.options.fetchParams||{};window.AbortController&&!a.signal&&(this.abortController=new AbortController,a.signal=(n=this.abortController)===null||n===void 0?void 0:n.signal);let c=u=>this.emit("loading",u);t=yield mS.fetchBlob(e,c,a);let l=this.options.blobMimeType;l&&(t=new Blob([t],{type:l}))}this.setSrc(e,t);let o=yield new Promise(a=>{let c=s||this.getDuration();c?a(c):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>a(this.getDuration()),{once:!0}))});if(!e&&!t){let a=this.getMediaElement();a instanceof Gs&&(a.duration=o)}if(r)this.decodedData=ia.createBuffer(r,o||0);else if(t){let a=yield t.arrayBuffer();this.decodedData=yield ia.decode(a,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(e,t,r){return Se(this,void 0,void 0,function*(){try{return yield this.loadAudio(e,void 0,t,r)}catch(s){throw this.emit("error",s),s}})}loadBlob(e,t,r){return Se(this,void 0,void 0,function*(){try{return yield this.loadAudio("",e,t,r)}catch(s){throw this.emit("error",s),s}})}zoom(e){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(e),this.emit("zoom",e)}getDecodedData(){return this.decodedData}exportPeaks({channels:e=2,maxLength:t=8e3,precision:r=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");let s=Math.min(e,this.decodedData.numberOfChannels),n=[];for(let o=0;o<s;o++){let a=this.decodedData.getChannelData(o),c=[],l=a.length/t;for(let u=0;u<t;u++){let h=a.slice(Math.floor(u*l),Math.ceil((u+1)*l)),d=0;for(let f=0;f<h.length;f++){let m=h[f];Math.abs(m)>Math.abs(d)&&(d=m)}c.push(Math.round(d*r)/r)}n.push(c)}return n}getDuration(){let e=super.getDuration()||0;return e!==0&&e!==1/0||!this.decodedData||(e=this.decodedData.duration),e}toggleInteraction(e){this.options.interact=e}setTime(e){this.stopAtPosition=null,super.setTime(e),this.updateProgress(e),this.emit("timeupdate",e)}seekTo(e){let t=this.getDuration()*e;this.setTime(t)}play(e,t){let r=Object.create(null,{play:{get:()=>super.play}});return Se(this,void 0,void 0,function*(){e!=null&&this.setTime(e);let s=yield r.play.call(this);return t!=null&&(this.media instanceof Gs?this.media.stopAt(t):this.stopAtPosition=t),s})}playPause(){return Se(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(e){this.setTime(this.getCurrentTime()+e)}empty(){this.load("",[[0]],.001)}setMediaElement(e){this.unsubscribePlayerEvents(),super.setMediaElement(e),this.initPlayerEvents()}exportImage(){return Se(this,arguments,void 0,function*(e="image/png",t=1,r="dataURL"){return this.renderer.exportImage(e,t,r)})}destroy(){var e;this.emit("destroy"),(e=this.abortController)===null||e===void 0||e.abort(),this.plugins.forEach(t=>t.destroy()),this.subscriptions.forEach(t=>t()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}};Ii.BasePlugin=class extends Vr{constructor(i){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=i}onInit(){}_init(i){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=i,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(i=>i()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}},Ii.dom=fS;var sa=class i{wavesurfer;constructor(e,t,r){this.wavesurfer=Ii.create({container:t,waveColor:"rgb(200, 0, 200)",progressColor:"rgb(100, 0, 100)",barWidth:10,barRadius:10,barGap:2,peaks:[e],duration:r})}static async init(e,t,r){let s=e.decodeAudio({source:t}).getReader(),n=[],o=[],a=1024,c=await e.getAudioDuration(t);for(;;){let{done:l,value:u}=await s.read();if(l)break;let h=u.numberOfFrames,d=new Float32Array(h);u.copyTo(d,{planeIndex:0});for(let f=0;f<d.length;f++)if(o.push(d[f]),o.length>=a){let m=o.splice(0,a),p=Math.min(...m),g=Math.max(...m);n.push(p,g)}u.close()}return new i(n,r,c??0)}set width(e){this.wavesurfer.setOptions({width:e})}};async function Bm(i){let e=document.querySelector(".waveform-demo"),t=document.querySelector(".width"),r=await sa.init(i,"/assets/temp/gl.mp4",e);t.addEventListener("change",()=>{let s=+t.value;r.width=s})}var na=class i{videoTrack;options;#e;#t=new Map;#r=[0,0];constructor(e,t){this.videoTrack=e,this.options=t,this.#e=new Fs(e,t.canvasSinkOptions)}static async init(e,t){let s=await new _t({formats:hr,source:await Lr(e)}).getPrimaryVideoTrack();if(s)return new i(s,{frequency:t.frequency??1,canvasSinkOptions:t.canvasSinkOptions??{width:80,height:50,fit:"fill"},onChange:t.onChange,onPlaceholders:t.onPlaceholders});throw new Error("Source has no video track")}set frequency(e){e!==this.options.frequency&&(this.options.frequency=e,this.#c())}get frequency(){return this.options.frequency}#i([e,t],r=1){let s=t-e;return[e-s*r,t+s*r]}async#s(){let[e,t]=this.#r,r=new Set,s=await this.videoTrack.computeDuration();for(let n=Math.max(0,e);n<=t;n+=this.options.frequency)n>=0&&n<=s&&r.add(n);this.options.onPlaceholders?.([...r])}async#o(){let[e,t]=this.#r,r=new Set,s=await this.videoTrack.computeDuration();for(let c=Math.max(0,e);c<=t;c+=this.options.frequency)c>=0&&c<=s&&r.add(c);let n=[...r].filter(c=>!this.#t.has(c)),o=0;for await(let c of this.#e.canvasesAtTimestamps(n))if(c){let l=n[o++];this.#t.set(l,c)}for(let c of this.#t.keys())r.has(c)||this.#t.delete(c);let a=[...this.#t.entries()].map(([c,l])=>({time:c,canvas:l}));this.options.onChange(a)}set range(e){let[t,r]=e,s=r-t,[n,o]=this.#r,a=n+s,c=o-s,l=t<a,u=r>c;!l&&!u||(this.#r=this.#i(e,2),this.#c())}#n=null;#a=!1;async#c(){if(this.#s(),this.#n){this.#a=!0;return}this.#n=this.#o(),await this.#n,this.#n=null,this.#a&&(this.#a=!1,await this.#c())}getThumbnail(e){return this.#t.get(e)}};async function Fm(i){let e=document.querySelector(".range"),t=document.querySelector(".range-view"),r=document.querySelector(".range-size"),s=document.querySelector(".frequency"),n=document.querySelector(".frequency-view"),o=document.querySelector("#filmstrip"),a=1e3/10/1e3,c=.5,l=await na.init(i,{onChange(u){let h=u.sort((d,f)=>d.time-f.time);o.replaceChildren(...h.map(({time:d,canvas:f})=>gS(d,f.canvas)))},frequency:a,canvasSinkOptions:{width:80,height:50,fit:"fill"}});r.addEventListener("change",()=>{c=+r.value;let[u,h]=[+e.value,+e.value+c];l.range=[u,h],t.textContent=`visible time range: [${u}, ${h}]`}),e.addEventListener("change",()=>{let[u,h]=[+e.value,+e.value+c];l.range=[u,h],t.textContent=`visible time range: [${u}, ${h}]`}),s.addEventListener("change",()=>{l.frequency=1e3/+s.value/1e3,n.textContent=`frame every ${l.frequency.toFixed(3)} second (${s.value} frames per second)`}),l.range=[10,10.5]}function gS(i,e){let t=document.createElement("div");t.style.position="relative",t.style.display="inline-block",t.style.marginRight="4px",t.appendChild(e);let r=document.createElement("div");return r.textContent=`${i.toFixed(2)}s`,r.style.position="absolute",r.style.top="2px",r.style.right="4px",r.style.fontSize="10px",r.style.color="white",r.style.background="rgba(0,0,0,0.6)",r.style.padding="2px 4px",r.style.borderRadius="4px",r.style.pointerEvents="none",t.appendChild(r),t}function eu(i,e){let t={width:1920,height:1080},r=document.createElement("canvas");r.width=t.width,r.height=t.height;let s=r.getContext("2d");async function n(){let o=i.decodeVideo({source:e,async onFrame(c){let l=await i.composite([{kind:"image",frame:c},{kind:"text",content:"omnitool",style:{fontSize:50,fill:"green"}}]);return c.close(),s?.drawImage(l,0,0),l}}),a=i.decodeAudio({source:e});await i.encode({video:o,audio:a,config:{audio:{codec:"opus",bitrate:128e3},video:{codec:"vp9",bitrate:1e6}}})}return{canvas:r,run:n}}var me;(function(i){i[i.Sequence=0]="Sequence",i[i.Stack=1]="Stack",i[i.Video=2]="Video",i[i.Audio=3]="Audio",i[i.Text=4]="Text",i[i.Gap=5]="Gap",i[i.Spatial=6]="Spatial",i[i.Transition=7]="Transition",i[i.TextStyle=8]="TextStyle"})(me||(me={}));var oa;(function(i){i[i.Crossfade=0]="Crossfade"})(oa||(oa={}));var aa=class{datafile;duration=0;hasVideo=!1;hasAudio=!1;constructor(e){this.datafile=e}static async analyze(e){let t=new this(e);t.duration=10;let{video:r,audio:s}=await this.#e("/assets/temp/gl.mp4");return t.hasAudio=s,t.hasVideo=r,t}static async#e(e){let t=new _t({formats:hr,source:await Lr(e)});return{audio:!!await t.getPrimaryAudioTrack(),video:!!await t.getPrimaryVideoTrack()}}};var Mi=Object.freeze({eq(i,e){if(i.length!==e.length)return!1;for(let t=0;t<=i.length;t++)if(i.at(t)!==e.at(t))return!1;return!0},random(i){return crypto.getRandomValues(new Uint8Array(i))}});var Te=class{lexicon;static lexicons=Object.freeze({base2:{characters:"01"},hex:{characters:"0123456789abcdef"},base36:{characters:"0123456789abcdefghijklmnopqrstuvwxyz"},base58:{characters:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"},base62:{characters:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},base64url:{negativePrefix:"~",characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},base64:{characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",padding:{character:"=",size:4}}});lookup;negativePrefix;constructor(e){this.lexicon=e,this.lookup=Object.fromEntries([...e.characters].map((t,r)=>[t,r])),this.negativePrefix=e.negativePrefix??"-"}toBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let a=0,c=0,l=[];for(let u of e){if(u===this.lexicon.padding?.character)continue;let h=this.lookup[u];if(h===void 0)throw new Error(`Invalid character: ${u}`);for(a=a<<t|h,c+=t;c>=8;)c-=8,l.push(a>>c&255)}return new Uint8Array(l)}let r=0n,s=BigInt(this.lexicon.characters.length),n=!1;e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),n=!0);for(let a of e){let c=this.lookup[a];if(c===void 0)throw new Error(`Invalid character: ${a}`);r=r*s+BigInt(c)}let o=[];for(;r>0n;)o.unshift(Number(r%256n)),r=r/256n;return new Uint8Array(o)}fromBytes(e){let t=Math.log2(this.lexicon.characters.length);if(Number.isInteger(t)){let o=0,a=0,c="";for(let l of e)for(o=o<<8|l,a+=8;a>=t;){a-=t;let u=o>>a&(1<<t)-1;c+=this.lexicon.characters[u]}if(a>0){let l=o<<t-a&(1<<t)-1;c+=this.lexicon.characters[l]}if(this.lexicon.padding)for(;c.length%this.lexicon.padding.size!==0;)c+=this.lexicon.padding.character;return c}let r=0n;for(let o of e)r=(r<<8n)+BigInt(o);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;r>0n;)n=this.lexicon.characters[Number(r%s)]+n,r=r/s;return n}toInteger(e){if(!e)return 0;let t=0n,r=!1,s=BigInt(this.lexicon.characters.length);e.startsWith(this.negativePrefix)&&(e=e.slice(this.negativePrefix.length),r=!0);for(let n of e){let o=this.lookup[n];if(o===void 0)throw new Error(`Invalid character: ${n}`);t=t*s+BigInt(o)}return Number(r?-t:t)}fromInteger(e){e=Math.floor(e);let t=e<0,r=BigInt(t?-e:e);if(r===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;r>0n;)n=this.lexicon.characters[Number(r%s)]+n,r=r/s;return t?`${this.negativePrefix}${n}`:n}random(e=32){return this.fromBytes(Mi.random(e))}};var St=new Te(Te.lexicons.hex),xR=new Te(Te.lexicons.base2),yR=new Te(Te.lexicons.base36),tu=new Te(Te.lexicons.base58),bR=new Te(Te.lexicons.base62),wR=new Te(Te.lexicons.base64),_R=new Te(Te.lexicons.base64url);var ru=["doz","mar","bin","wan","sam","lit","sig","hid","fid","lis","sog","dir","wac","sab","wis","sib","rig","sol","dop","mod","fog","lid","hop","dar","dor","lor","hod","fol","rin","tog","sil","mir","hol","pas","lac","rov","liv","dal","sat","lib","tab","han","tic","pid","tor","bol","fos","dot","los","dil","for","pil","ram","tir","win","tad","bic","dif","roc","wid","bis","das","mid","lop","ril","nar","dap","mol","san","loc","nov","sit","nid","tip","sic","rop","wit","nat","pan","min","rit","pod","mot","tam","tol","sav","pos","nap","nop","som","fin","fon","ban","mor","wor","sip","ron","nor","bot","wic","soc","wat","dol","mag","pic","dav","bid","bal","tim","tas","mal","lig","siv","tag","pad","sal","div","dac","tan","sid","fab","tar","mon","ran","nis","wol","mis","pal","las","dis","map","rab","tob","rol","lat","lon","nod","nav","fig","nom","nib","pag","sop","ral","bil","had","doc","rid","moc","pac","rav","rip","fal","tod","til","tin","hap","mic","fan","pat","tac","lab","mog","sim","son","pin","lom","ric","tap","fir","has","bos","bat","poc","hac","tid","hav","sap","lin","dib","hos","dab","bit","bar","rac","par","lod","dos","bor","toc","hil","mac","tom","dig","fil","fas","mit","hob","har","mig","hin","rad","mas","hal","rag","lag","fad","top","mop","hab","nil","nos","mil","fop","fam","dat","nol","din","hat","nac","ris","fot","rib","hoc","nim","lar","fit","wal","rap","sar","nal","mos","lan","don","dan","lad","dov","riv","bac","pol","lap","tal","pit","nam","bon","ros","ton","fod","pon","sov","noc","sor","lav","mat","mip","fip"];var iu=["zod","nec","bud","wes","sev","per","sut","let","ful","pen","syt","dur","wep","ser","wyl","sun","ryp","syx","dyr","nup","heb","peg","lup","dep","dys","put","lug","hec","ryt","tyv","syd","nex","lun","mep","lut","sep","pes","del","sul","ped","tem","led","tul","met","wen","byn","hex","feb","pyl","dul","het","mev","rut","tyl","wyd","tep","bes","dex","sef","wyc","bur","der","nep","pur","rys","reb","den","nut","sub","pet","rul","syn","reg","tyd","sup","sem","wyn","rec","meg","net","sec","mul","nym","tev","web","sum","mut","nyx","rex","teb","fus","hep","ben","mus","wyx","sym","sel","ruc","dec","wex","syr","wet","dyl","myn","mes","det","bet","bel","tux","tug","myr","pel","syp","ter","meb","set","dut","deg","tex","sur","fel","tud","nux","rux","ren","wyt","nub","med","lyt","dus","neb","rum","tyn","seg","lyx","pun","res","red","fun","rev","ref","mec","ted","rus","bex","leb","dux","ryn","num","pyx","ryg","ryx","fep","tyr","tus","tyc","leg","nem","fer","mer","ten","lus","nus","syl","tec","mex","pub","rym","tuc","fyl","lep","deb","ber","mug","hut","tun","byl","sud","pem","dev","lur","def","bus","bep","run","mel","pex","dyt","byt","typ","lev","myl","wed","duc","fur","fex","nul","luc","len","ner","lex","rup","ned","lec","ryd","lyd","fen","wel","nyd","hus","rel","rud","nes","hes","fet","des","ret","dun","ler","nyr","seb","hul","ryl","lud","rem","lys","fyn","wer","ryc","sug","nys","nyl","lyn","dyn","dem","lux","fed","sed","bec","mun","lyr","tes","mud","nyt","byr","sen","weg","fyr","mur","tel","rep","teg","pec","nel","nev","fes"];var $t={defaults:{groupSize:4,wordSeparator:".",groupSeparator:" "},random(i,e){let t=Mi.random(i);return this.fromBytes(t,e)},fromBytes(i,e={}){let{groupSize:t=$t.defaults.groupSize,wordSeparator:r=$t.defaults.wordSeparator,groupSeparator:s=$t.defaults.groupSeparator}=e,n=[],o=[];i.forEach((c,l)=>{let u=l%2===0?ru:iu;o.push(u[c]),o.length===2&&(n.push(o.join("")),o=[])}),o.length&&n.push(o.join(""));let a=[];for(let c=0;c<n.length;c+=t)a.push(n.slice(c,c+t).join(r));return a.join(s)},toBytes(i){let e=i.toLowerCase().replace(/[^a-z]/g,"");if(e.length/3%1!==0)throw new Error(`invalid triplet count, ${e.length} does not divide into triplets`);let r=[];for(let s=0;s<e.length;s+=3)r.push(e.slice(s,s+3));return new Uint8Array(r.map((s,n)=>{let a=(n%2===0?ru:iu).findIndex(c=>c===s);if(a===-1)throw new Error(`unknown triplet ${s}`);return a}))},toHex(i){return St.fromBytes($t.toBytes(i))},fromHex(i,e){return $t.fromBytes(St.toBytes(i),e)}};var Tt={defaults:{delimiter:".",sigilBytes:4,previewBytes:8},toBytes(i){i=i.trim();let e=i.split(/[^a-zA-Z0-9]+/m).filter(Boolean).map(s=>s.trim());if(e.length<2)return $t.toBytes(e.join(""));let t=e.pop(),r=e.join("");return new Uint8Array([...$t.toBytes(r),...tu.toBytes(t)])},parse(i,e){let t=Tt.toBytes(i);return Tt.build.fromBytes(t,e)},build:{fromBytes(i,e={}){let{delimiter:t,previewBytes:r,sigilBytes:s}={...Tt.defaults,...e},n=u=>i.length>0?$t.fromBytes(i.slice(0,u),{wordSeparator:t,groupSeparator:t}):"",o=n(s),a=n(r),c=i.length>r?tu.fromBytes(i.slice(r)):"",l=[a,c].filter(u=>u.length>0).join(t);return{raw:i,full:l,preview:a,bulk:c,sigil:o,bytes:i,thumbprint:l}},fromHex(i,e){let t=St.toBytes(i);return Tt.build.fromBytes(t,e)}},toHex(i){let e=Tt.toBytes(i);return St.fromBytes(e)},fromBytes(i,e){return Tt.build.fromBytes(i,e).full},fromHex(i,e){return Tt.fromBytes(St.toBytes(i),e)},sigil:{fromHex(i,e){return Tt.build.fromHex(i,e).sigil},fromBytes(i,e){return Tt.build.fromBytes(i,e).sigil}}},Rm=Tt;var ca=Object.freeze({fromBytes(i){return[...i].map(e=>e.toString(16).padStart(2,"0")).join("")},toBytes(i){if(i.length%2!==0)throw new Error("must have even number of hex characters");let e=new Uint8Array(i.length/2);for(let t=0;t<i.length;t+=2)e[t/2]=parseInt(i.slice(t,t+2),16);return e},random(i=32){return this.fromBytes(Mi.random(i))},string(i){return ca.fromBytes(i)},bytes(i){return ca.toBytes(i)}});function Dm(i,e){let t,r,s=[];function n(){t=[],r&&clearTimeout(r),r=void 0,s=[]}return n(),(...o)=>{t=o,r&&clearTimeout(r);let a=new Promise((c,l)=>{s.push({resolve:c,reject:l})});return r=setTimeout(()=>{Promise.resolve().then(()=>e(...t)).then(c=>{for(let{resolve:l}of s)l(c);n()}).catch(c=>{for(let{reject:l}of s)l(c);n()})},i),a}}var su=class i extends Map{static require(e,t){if(e.has(t))return e.get(t);throw new Error(`required key not found: "${t}"`)}static guarantee(e,t,r){if(e.has(t))return e.get(t);{let s=r();return e.set(t,s),s}}array(){return[...this]}require(e){return i.require(this,e)}guarantee(e,t){return i.guarantee(this,e,t)}},Om=su;function zm(){let i,e,t=new Promise((s,n)=>{i=s,e=n});function r(s){return s.then(i).catch(e),t}return{promise:t,resolve:i,reject:e,entangle:r}}function xS(){let i=new Set;async function e(...c){await Promise.all([...i].map(l=>l(...c)))}function t(c){return i.add(c),()=>{i.delete(c)}}async function r(...c){return e(...c)}function s(c){return t(c)}async function n(c){let{promise:l,resolve:u}=zm(),h=s(async(...d)=>{c&&await c(...d),u(d),h()});return l}function o(){i.clear()}let a={pub:r,sub:s,publish:e,subscribe:t,on:t,next:n,clear:o};return Object.assign(s,a),Object.assign(r,a),a}function la(i){let e=xS();return i&&e.sub(i),e.sub}var ua=class{#e=new Om;async store(e){let t=await aa.analyze(e),{hash:r}=t.datafile.checksum,{filename:s,bytes:n}=t.datafile;if(this.#e.has(r)){let o=this.#e.require(r);o.filename=s}else this.#e.set(r,{kind:"media",filename:s,bytes:n});return t}};var nu=class{#e=[];#t=new WeakMap;#r=[];#i=new Set;notifyRead(e){this.#e.at(-1)?.add(e)}async notifyWrite(e){if(this.#i.has(e))throw new Error("circularity forbidden");let t=this.#s(e).pub();return this.#r.at(-1)?.add(t),t}observe(e){this.#e.push(new Set);let t=e();return{seen:this.#e.pop(),result:t}}subscribe(e,t){return this.#s(e)(async()=>{let r=new Set;this.#r.push(r),this.#i.add(e),r.add(t()),this.#i.delete(e),await Promise.all(r),this.#r.pop()})}#s(e){let t=this.#t.get(e);return t||(t=la(),this.#t.set(e,t)),t}},Ke=globalThis[Symbol.for("e280.tracker")]??=new nu;var Bi=class{sneak;constructor(e){this.sneak=e}get(){return Ke.notifyRead(this),this.sneak}get value(){return this.get()}};var Fi=class extends Bi{on=la();dispose(){this.on.clear()}};function ha(i,e=i){let{seen:t,result:r}=Ke.observe(i),s=Dm(0,e),n=[],o=()=>n.forEach(a=>a());for(let a of t){let c=Ke.subscribe(a,s);n.push(c)}return{result:r,dispose:o}}function Ri(i,e){return i===e}var da=class extends Fi{#e;constructor(e,t){let r=t?.compare??Ri,{result:s,dispose:n}=ha(e,async()=>{let o=e();!r(this.sneak,o)&&(this.sneak=o,await Promise.all([Ke.notifyWrite(this),this.on.pub(o)]))});super(s),this.#e=n}toString(){return`(derived "${String(this.get())}")`}dispose(){super.dispose(),this.#e()}get core(){return this}fn(){let e=this;function t(){return e.get()}return t.core=e,t.get=e.get.bind(e),t.on=e.on,t.dispose=e.dispose.bind(e),t.fn=e.fn.bind(e),Object.defineProperty(t,"value",{get:()=>e.value}),Object.defineProperty(t,"sneak",{get:()=>e.sneak}),t}};var fa=class extends Bi{#e;#t;#r=!1;#i;constructor(e,t){super(void 0),this.#e=e,this.#t=t?.compare??Ri}toString(){return`($lazy "${String(this.get())}")`}get(){if(!this.#i){let{result:e,dispose:t}=ha(this.#e,()=>this.#r=!0);this.#i=t,this.sneak=e}if(this.#r){this.#r=!1;let e=this.#e();!this.#t(this.sneak,e)&&(this.sneak=e,Ke.notifyWrite(this))}return super.get()}dispose(){this.#i&&this.#i()}get core(){return this}fn(){let e=this;function t(){return e.get()}return t.core=e,t.get=e.get.bind(e),t.dispose=e.dispose.bind(e),t.fn=e.fn.bind(e),Object.defineProperty(t,"value",{get:()=>e.value}),Object.defineProperty(t,"sneak",{get:()=>e.sneak}),t}};var ma=class extends Fi{#e=!1;#t;constructor(e,t){super(e),this.#t=t?.compare??Ri}toString(){return`($signal "${String(this.get())}")`}async set(e,t=!1){let r=this.sneak;return this.sneak=e,(t||!this.#t(r,e))&&await this.publish(),e}get value(){return this.get()}set value(e){this.set(e)}async publish(){if(this.#e)throw new Error("forbid circularity");let e=this.sneak,t=Promise.resolve();try{this.#e=!0,t=Promise.all([Ke.notifyWrite(this),this.on.publish(e)])}finally{this.#e=!1}return await t,e}get core(){return this}fn(){let e=this;function t(r){return arguments.length===0?e.get():e.set(arguments[0])}return t.core=e,t.get=e.get.bind(e),t.set=e.set.bind(e),t.on=e.on,t.dispose=e.dispose.bind(e),t.publish=e.publish.bind(e),t.fn=e.fn.bind(e),Object.defineProperty(t,"value",{get:()=>e.value,set:r=>e.value=r}),Object.defineProperty(t,"sneak",{get:()=>e.sneak,set:r=>e.sneak=r}),t}};function yS(i,e){return new fa(i,e).fn()}function Um(i,e){return new da(i,e).fn()}function Ls(i,e){return new ma(i,e).fn()}Ls.lazy=yS;Ls.derived=Um;var Gm=(i,e)=>{let t=!1,r=null,s=60,n=1e3/s,o=0,a=0,c=0,l=0,u=h=>{if(!t)return;let d=h-a;for(a=h,c+=d,l+=d,e(l);c>=n;)i(o),o+=n,c-=n;r=requestAnimationFrame(u)};return{play(){t||(t=!0,a=performance.now(),r=requestAnimationFrame(u))},pause(){t&&(t=!1,r!==null&&cancelAnimationFrame(r),r=null)},seek(h){o=h,c=0,l=h,e(h)},dispose(){this.pause()},isPlaying(){return t},setFPS(h){s=h,n=1e3/s}}},Nm=async(i,e)=>{let t=1e3/i.fps,r=i.duration/1e3,s=Math.ceil(r*i.fps);for(let n=0;n<s&&!i.abort?.aborted;n++){let o=n*t;await e(o,n)}};var Lm=i=>i instanceof Blob?URL.createObjectURL(i):String(i);function Wm(i){let e=new Map,t=new Map;function r(o){let a=e.get(o.id);return a||(a=document.createElement("video"),a.playsInline=!0,a.muted=!0,a.preload="auto",a.crossOrigin="anonymous",a.src=Lm(i(o.mediaHash)),e.set(o.id,a)),a}function s(o){let a=t.get(o.id);return a||(a=document.createElement("audio"),a.preload="auto",a.crossOrigin="anonymous",a.src=Lm(i(o.mediaHash)),a.volume=.2,t.set(o.id,a)),a}let n=!0;return{async video(o,a){let c=r(o);return{duration:o.duration,visuals:{sampleAt:async l=>{if(l<0||l>=o.duration)return[];c.paused&&n&&await Vm(c,l/1e3),c.paused&&!n&&await c.play();let u=new VideoFrame(c);return u?[{kind:"image",frame:u,matrix:a}]:[]}}}},async audio(o){let a=s(o);return{duration:o.duration,audio:{onTimeUpdate:async c=>{let l=o.start+c;return a.paused&&n&&await Vm(a,l/1e3),a.paused&&!n&&await a.play(),[]}}}},async dispose(){let o=[...e.values(),...t.values()];for(let a of o)a.pause(),a.src.startsWith("blob:")&&URL.revokeObjectURL(a.src),a.remove();e.clear(),t.clear()},async setPaused(o){n=o;let a=[...e.values(),...t.values()];for(let c of a)o&&c.pause()}}}function Vm(i,e){return new Promise(t=>{let r=()=>{i.removeEventListener("seeked",r),t()};i.addEventListener("seeked",r),i.fastSeek?i.fastSeek(e):i.currentTime=e})}G();var o_={extension:{type:A.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>(n_(),Mv))}};G();var c_={extension:{type:A.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await Promise.resolve().then(()=>(a_(),Bv))}};G();Ha();Ua();ch();He();L.add(o_,c_);var l_=i=>{let[e,t,r]=i,[s,n]=e,[o,a]=t,c=r*Math.PI/180,l=Math.cos(c),u=Math.sin(c);return[l*o,u*o,-u*a,l*a,s,n]};var u_=(i,e)=>{let[t,r,s,n,o,a]=i,[c,l,u,h,d,f]=e;return[t*c+s*l,r*c+n*l,t*u+s*h,r*u+n*h,t*d+s*f+o,r*d+n*f+a]},h_=[1,0,0,1,0,0];var jd=(i,e)=>i.get(e),qc=(i,e,t)=>{let r=t??h_;if(e.spatialId){let s=jd(i,e.spatialId),n=l_(s.transform);r=u_(n,r)}return r},hs=class{items;sampler;constructor(e,t){this.items=e,this.sampler=t}async build(e,t){switch(e.kind){case me.Video:return this.sampler.video(e,qc(this.items,e,t));case me.Audio:return this.sampler.audio(e);case me.Text:{let r=qc(this.items,e,t),s=e.styleId!==void 0?this.items.get(e.styleId):void 0;return{duration:e.duration,visuals:{sampleAt:async n=>n<0||n>=e.duration?[]:[{kind:"text",content:e.content,style:s?.style,matrix:r}]}}}case me.Gap:return{duration:e.duration,visuals:{sampleAt:async()=>[]}};case me.Stack:{let r=qc(this.items,e,t),s=await Promise.all(e.childrenIds.map(n=>this.build(jd(this.items,n),r)));return this.#r(s)}case me.Sequence:{let r=qc(this.items,e,t);return this.#i(e,r)}default:return{duration:0}}}#e(e){return{sampleAt:async t=>(await Promise.all(e.map(s=>s.visuals?s.visuals.sampleAt(t):Promise.resolve([])))).flat()}}#t(e){return{sampleAt:async t=>{let r=t;for(let s of e){if(r<s.duration)return s.visuals?s.visuals.sampleAt(r):[];r-=s.duration}return[]}}}#r(e){return{duration:Math.max(0,...e.map(r=>Number.isFinite(r.duration)?r.duration:0)),visuals:this.#e(e),audio:this.composeAudio_Stack(e)}}async#i(e,t){let r=e.childrenIds.map(o=>jd(this.items,o)),s=await this.#s(r,t);return{duration:s.reduce((o,a)=>o+a.duration,0),visuals:this.#t(s),audio:this.composeAudio_Sequence(s)}}async#s(e,t){let r=[];for(let s=0;s<e.length;s++){let n=e[s];if(n.kind!==me.Transition){r.push(await this.build(n,t));continue}let o=r.pop(),a=e[s+1];if(!o||!a||a.kind===me.Transition){o&&r.push(o);continue}let c=await this.build(a,t),l=await this.#o(n,o,c);r.push(l),s++}return r}async#o(e,t,r){let s=Math.max(0,Math.min(e.duration,t.duration,r.duration)),n=Math.max(0,t.duration-s);return{duration:t.duration+r.duration-s,visuals:{sampleAt:async a=>{if(!t.visuals||!r.visuals)return[];if(a<n)return t.visuals.sampleAt(a);if(a<t.duration){let c=a-n,l=s>0?c/s:1,u=await t.visuals.sampleAt(a),h=await r.visuals.sampleAt(c);return!u[0]?.frame||!h[0]?.frame?[]:[{kind:"transition",name:"circle",progress:l,from:u[0].frame,to:h[0].frame}]}return r.visuals.sampleAt(a-t.duration+s)}},audio:this.composeAudio_Sequence([t,r])}}};var $d=class extends hs{items;sampler;constructor(e,t){super(e,t),this.items=e,this.sampler=t}composeAudio_Stack(e){return{onTimeUpdate:t=>{for(let r of e)r.audio&&r.audio.onTimeUpdate(t)}}}composeAudio_Sequence(e){return{onTimeUpdate:t=>{let r=t;for(let s of e){if(r<s.duration){s.audio&&s.audio.onTimeUpdate(r);break}r-=s.duration}}}}};function qd(i,e,t){return new $d(e,t).build(i)}var Xc=class{driver;canvas;root;sampler;resolveMedia;currentTime=Ls(0);#e=Gm(e=>this.#t(e),e=>this.currentTime(e));constructor(e,t,r,s,n=o=>"/assets/temp/gl.mp4"){this.driver=e,this.canvas=t,this.root=r,this.sampler=s,this.resolveMedia=n,this.#e.setFPS(30)}get context(){return this.canvas.getContext("2d")}static async create(e,t){let r=new Map(t.items.map(c=>[c.id,c])).get(t.rootId),s=new Map(t.items.map(c=>[c.id,c])),n=Wm(()=>"/assets/temp/gl.mp4"),o=await qd(r,s,n),a=document.createElement("canvas");return a.width=1920,a.height=1080,new this(e,a,o,n)}async#t(e){let t=this.root.duration,r=e>t?t:e;this.root.audio?.onTimeUpdate(r);let s=await this.root.visuals?.sampleAt(r)??[],n=await this.driver.composite(s);this.context.drawImage(n,0,0),n.close(),e>=t&&this.pause()}async play(){this.#e.isPlaying()||(this.sampler.setPaused(!1),this.#e.play())}pause(){this.#e.isPlaying()&&(this.#e.pause(),this.sampler.setPaused(!0))}async seek(e){this.pause(),this.#e.seek(e),this.root.audio?.onTimeUpdate(e);let t=await this.root.visuals?.sampleAt(e)??[],r=await this.driver.composite(t);this.context.drawImage(r,0,0),r.close()}setFPS(e){this.#e.setFPS(e)}async update(e){let t=new Map(e.items.map(s=>[s.id,s])).get(e.rootId),r=new Map(e.items.map(s=>[s.id,s]));this.root=await qd(t,r,this.sampler),await this.seek(this.currentTime())}};var Yc=class{state;constructor(e){this.state=e}require(e){return e===void 0?void 0:this.state.project.items.find(r=>r.id===e)}#e(){return St.toInteger(St.random())}#t(e){this.state.project=e(this.state.project)}register(e){this.#t(t=>({...t,items:[...t.items,e]}))}textStyle=e=>{let t={id:this.#e(),kind:me.TextStyle,style:e};return this.register(t),t};spatial=e=>{let t={id:this.#e(),kind:me.Spatial,transform:e};return this.register(t),t};sequence=(...e)=>{let t={id:this.#e(),kind:me.Sequence,childrenIds:e.map(r=>r.id)};return this.register(t),t};stack=(...e)=>{let t={kind:me.Stack,id:this.#e(),childrenIds:e.map(r=>r.id)};return this.register(t),t};video=(e,t)=>{if(!e.hasVideo)throw new Error(`Video clip error: media "${e.datafile.filename}" has no video track.`);let r={kind:me.Video,id:this.#e(),mediaHash:e.datafile.checksum.hash,start:t?.start??0,duration:t?.duration??e.duration};return this.register(r),r};audio=(e,t)=>{if(!e.hasAudio)throw new Error(`Audio clip error: media "${e.datafile.filename}" has no audio track.`);let r={kind:me.Audio,id:this.#e(),mediaHash:e.datafile.checksum.hash,start:t?.start??0,duration:t?.duration??e.duration};return this.register(r),r};text=e=>{let t={id:this.#e(),content:e,kind:me.Text,duration:2e3};return this.register(t),t};gap=e=>{let t={id:this.#e(),kind:me.Gap,duration:e};return this.register(t),t};transition={crossfade:e=>{let t={id:this.#e(),kind:me.Transition,effect:oa.Crossfade,duration:e};return this.register(t),t}};transform=e=>{let t=[e?.position?.[0]??0,e?.position?.[1]??0],r=[e?.scale?.[0]??1,e?.scale?.[1]??1],s=e?.rotation??0;return[t,r,s]};addChildren(e,...t){this.#t(r=>(r.items.find(({id:n})=>n===e.id).childrenIds.push(...t.map(n=>n.id)),r))}set=(e,t)=>{this.#t(r=>({...r,items:r.items.map(s=>s.id===e?{...s,...t}:s)}))}};var Kc=class{reader;constructor(e){this.reader=e}async atOrNear(e){let t=null;for(;;){let{done:r,value:s}=await this.reader.read();if(r){let o=t?new VideoFrame(t):void 0;return t?.close(),o}let n=s.timestamp??0;if(n>=e){let o=t?.timestamp??Number.NEGATIVE_INFINITY,a=!!t&&Math.abs(o-e)<Math.abs(n-e),c=a?t:s,l=a?s:t,u=new VideoFrame(c);return c.close(),l?.close(),u}t?.close(),t=s}}cancel=async()=>await this.reader.cancel()};var Zc=class{reader;constructor(e){this.reader=e}async*stream(){for(;;){let{done:e,value:t}=await this.reader.read();if(e)break;yield t}}cancel=async()=>await this.reader.cancel()};var d_=i=>Math.round(i*1e3);function f_(i,e){let t=new Map;async function r(s){let n=t.get(s.id);if(n)return n;let o=e(s.mediaHash),a=i.decodeVideo({source:o}),c=new Kc(a.getReader());return t.set(s.id,c),c}return{async video(s,n){let o=await r(s),a=d_(s.start);return{duration:s.duration,visuals:{sampleAt:async c=>{let l=await o.atOrNear(a+d_(c));return l?[{kind:"image",frame:l,matrix:n}]:[]}}}},async audio(s){return{duration:s.duration,audio:{getStream:async function*(){let n=e(s.mediaHash),o=s.start/1e3,a=(s.start+s.duration)/1e3,c=i.decodeAudio({source:n,start:o,end:a});yield*new Zc(c.getReader()).stream()}}}},async dispose(){let s=Array.from([...t.values()],n=>n.cancel());t.clear(),await Promise.all(s)}}}var Xd=class extends hs{composeAudio_Stack(e){return{getStream:async function*(){for(let t of e)t.audio&&(yield*t.audio.getStream())}}}composeAudio_Sequence(e){return{getStream:async function*(){for(let t of e)t.audio&&(yield*t.audio.getStream())}}}};function m_(i,e,t){return new Xd(e,t).build(i)}var Qc=class{driver;framerate;resolveMedia;#e;constructor(e,t=30,r=s=>"/assets/temp/gl.mp4"){this.driver=e,this.framerate=t,this.resolveMedia=r,this.#e=f_(this.driver,this.resolveMedia)}async#t(e){let t=new Map(e.items.map(s=>[s.id,s])).get(e.rootId),r=new Map(e.items.map(s=>[s.id,s]));return await m_(t,r,this.#e)}async render(e){let t=await this.#t(e),r=new TransformStream,s=new TransformStream,n=this.driver.encode({video:r.readable,audio:s.readable,config:{audio:{codec:"opus",bitrate:128e3},video:{codec:"vp9",bitrate:1e6}}}),o=r.writable.getWriter(),a=s.writable.getWriter(),c=(async()=>{if(t.audio)for await(let u of t.audio.getStream())await a.write(u);await a.close()})(),l=(async()=>{let u=0,h=1/this.framerate;await Nm({fps:this.framerate,duration:t.duration??0},async d=>{let f=await t.visuals?.sampleAt(d)??[],m=await this.driver.composite(f),p=new VideoFrame(m,{timestamp:Math.round(u*h*1e6),duration:Math.round(h*1e6)});await o.write(p),m.close(),u++}),await o.close()})();await c,await l,await n}};var Jc=class{driver;resources=new ua;#e;constructor(e){this.driver=e,this.#e=new Qc(e)}load=async e=>Object.fromEntries(await Promise.all(Object.entries(e).map(async([t,r])=>[t,await this.resources.store(await r)])));timeline=e=>{let t=new Yc({project:{format:"timeline",info:"https://omniclip.app/",version:0,items:[],rootId:0}}),r=e(t);return t.state.project.rootId=r.id,t.state.project};render=async(e,t)=>{await this.#e.render(e)}};var el=class{data;bytes;hash;nickname;constructor(e,t,r,s){this.data=e,this.bytes=t,this.hash=r,this.nickname=s}static async make(e){let t=new Uint8Array(e),r=new Uint8Array(await crypto.subtle.digest("SHA-256",t)),s=ca.fromBytes(r),n=Rm.sigil.fromBytes(r);return new this(e,r,s,n)}};var tl=class{bytes;filename;checksum;constructor(e,t,r){this.bytes=e,this.filename=t,this.checksum=r}static async make(e,t){let r=await el.make(e),s=t??r.nickname;return new this(e,s,r)}static async load(e){throw new Error("TODO implement")}};var oi=await ra.setup({workerUrl:new URL("../driver/driver.worker.bundle.min.js",import.meta.url)}),Fv=document.querySelector(".results"),Rv=document.querySelector(".fetch"),Dv=document.querySelector(".import"),Ov=document.querySelector(".play"),zv=document.querySelector(".stop"),Uv=document.querySelector(".seek");Rv?.addEventListener("click",Hv);Dv?.addEventListener("click",Wv);var p_=new Jc(oi),Gv=await fetch("/assets/temp/gl.mp4"),Nv=await Gv.arrayBuffer(),Lv=new Uint8Array(Nv),{videoA:Yd}=await p_.load({videoA:tl.make(Lv)}),Vv=p_.timeline(i=>i.sequence(i.stack(i.video(Yd,{duration:5e3}),i.audio(Yd,{duration:8e3})),i.video(Yd,{duration:7e3}))),rl=await Xc.create(oi,Vv);document.body.appendChild(rl.canvas);Ov.addEventListener("click",()=>rl.play());zv.addEventListener("click",()=>rl.pause());Uv.addEventListener("change",async i=>{let e=i.target;await rl.seek(+e.value)});Bm(oi);await oi.thread.work.hello(),oi.machina.count===1?console.log("\u2705 driver works"):console.error("\u274C FAIL driver call didn't work");async function Wv(){let[i]=await window.showOpenFilePicker(),e=await i.getFile(),t=eu(oi,e);await Fm(e),g_(t,i.name)}async function Hv(){let i=["/assets/temp/gl.mp4"];for(let e of i){let t=eu(oi,"/assets/temp/gl.mp4");g_(t,e)}}async function g_(i,e){let t=document.createElement("div");Fv.append(t);let r=document.createElement("p");r.textContent=e,t.append(r),t.append(i.canvas),await i.run()}
80
648
  /*! Bundled license information:
81
649
 
82
- mediabunny/dist/modules/misc.js:
83
- mediabunny/dist/modules/custom-coder.js:
84
- mediabunny/dist/modules/codec.js:
85
- mediabunny/dist/modules/codec-data.js:
86
- mediabunny/dist/modules/isobmff/isobmff-misc.js:
87
- mediabunny/dist/modules/isobmff/isobmff-reader.js:
88
- mediabunny/dist/modules/matroska/ebml.js:
89
- mediabunny/dist/modules/matroska/matroska-misc.js:
90
- mediabunny/dist/modules/mp3/mp3-misc.js:
91
- mediabunny/dist/modules/ogg/ogg-misc.js:
92
- mediabunny/dist/modules/ogg/ogg-reader.js:
93
- mediabunny/dist/modules/demuxer.js:
94
- mediabunny/dist/modules/packet.js:
95
- mediabunny/dist/modules/sample.js:
96
- mediabunny/dist/modules/media-sink.js:
97
- mediabunny/dist/modules/input-track.js:
98
- mediabunny/dist/modules/reader.js:
99
- mediabunny/dist/modules/wave/riff-reader.js:
100
- mediabunny/dist/modules/wave/wave-demuxer.js:
101
- mediabunny/dist/modules/source.js:
102
- mediabunny/dist/modules/isobmff/isobmff-demuxer.js:
103
- mediabunny/dist/modules/matroska/matroska-demuxer.js:
104
- mediabunny/dist/modules/mp3/mp3-reader.js:
105
- mediabunny/dist/modules/mp3/mp3-demuxer.js:
106
- mediabunny/dist/modules/ogg/ogg-demuxer.js:
107
- mediabunny/dist/modules/input-format.js:
108
- mediabunny/dist/modules/input.js:
109
- mediabunny/dist/modules/index.js:
650
+ mediabunny/dist/modules/src/misc.js:
651
+ mediabunny/dist/modules/src/tags.js:
652
+ mediabunny/dist/modules/src/codec.js:
653
+ mediabunny/dist/modules/src/codec-data.js:
654
+ mediabunny/dist/modules/src/isobmff/isobmff-misc.js:
655
+ mediabunny/dist/modules/src/reader.js:
656
+ mediabunny/dist/modules/src/isobmff/isobmff-reader.js:
657
+ mediabunny/dist/modules/src/matroska/ebml.js:
658
+ mediabunny/dist/modules/src/matroska/matroska-misc.js:
659
+ mediabunny/dist/modules/shared/mp3-misc.js:
660
+ mediabunny/dist/modules/src/mp3/mp3-reader.js:
661
+ mediabunny/dist/modules/src/ogg/ogg-misc.js:
662
+ mediabunny/dist/modules/src/ogg/ogg-reader.js:
663
+ mediabunny/dist/modules/src/demuxer.js:
664
+ mediabunny/dist/modules/src/custom-coder.js:
665
+ mediabunny/dist/modules/src/packet.js:
666
+ mediabunny/dist/modules/src/sample.js:
667
+ mediabunny/dist/modules/src/media-sink.js:
668
+ mediabunny/dist/modules/src/input-track.js:
669
+ mediabunny/dist/modules/src/wave/wave-demuxer.js:
670
+ mediabunny/dist/modules/src/source.js:
671
+ mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js:
672
+ mediabunny/dist/modules/src/matroska/matroska-demuxer.js:
673
+ mediabunny/dist/modules/src/mp3/mp3-demuxer.js:
674
+ mediabunny/dist/modules/src/ogg/ogg-demuxer.js:
675
+ mediabunny/dist/modules/src/adts/adts-reader.js:
676
+ mediabunny/dist/modules/src/adts/adts-demuxer.js:
677
+ mediabunny/dist/modules/src/input-format.js:
678
+ mediabunny/dist/modules/src/input.js:
679
+ mediabunny/dist/modules/src/index.js:
110
680
  (*!
111
681
  * Copyright (c) 2025-present, Vanilagy and contributors
112
682
  *