@openclaw/whatsapp 2026.5.28 → 2026.5.31-beta.1

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 (157) hide show
  1. package/dist/{access-control-Z0fYaWrx.js → access-control-C53zKYSN.js} +1 -1
  2. package/dist/{accounts-BMGM1RtF.js → accounts-DgViSyJx.js} +1 -0
  3. package/dist/{action-runtime-BdhkGtaP.js → action-runtime-Cyp5GNIT.js} +2 -2
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/action-runtime.runtime.js +1 -1
  6. package/dist/api.js +9 -9
  7. package/dist/{approval-handler.runtime-C25wPeBf.js → approval-handler.runtime-BVmOu6x1.js} +1 -2
  8. package/dist/{auth-store-BrKb0mwT.js → auth-store-CZ22aNcV.js} +4 -2
  9. package/dist/{channel-D3y4A5Dd.js → channel-DA2BAIo5.js} +17 -64
  10. package/dist/channel-config-api.js +1 -1
  11. package/dist/channel-plugin-api.js +1 -1
  12. package/dist/{channel-react-action-Cd2qkLqp.js → channel-react-action-zvbaCnGe.js} +3 -3
  13. package/dist/{channel.runtime-C228XUjs.js → channel.runtime-Q1LZDB5s.js} +4 -4
  14. package/dist/{channel.setup-BJQyTUUP.js → channel.setup-DHXOo4h5.js} +2 -3
  15. package/dist/{config-schema-CsNDlDpL.js → config-schema-CROZuhT-.js} +16 -0
  16. package/dist/{connection-controller-mpPGmqGq.js → connection-controller-Bnm4INld.js} +2 -2
  17. package/dist/contract-api.js +1 -1
  18. package/dist/light-runtime-api.js +1 -1
  19. package/dist/{login-CE4UYnyO.js → login-2fuBM7Je.js} +4 -4
  20. package/dist/{login-qr-LBvhEes5.js → login-qr-B1o7GFy8.js} +10 -6
  21. package/dist/login-qr-runtime.js +1 -1
  22. package/dist/{monitor-Ccph7Y8M.js → monitor-BVRq04Dt.js} +36 -18
  23. package/dist/runtime-api.js +7 -7
  24. package/dist/{send-C4LG-Cl6.js → send-DSlVXKL_.js} +53 -41
  25. package/dist/{send-api-C66vkRl9.js → send-api-Bjn-h80j.js} +3 -2
  26. package/dist/{session-D8UW2Vbn.js → session-DyGWNClj.js} +1 -1
  27. package/dist/{setup-core-DpfT4K-2.js → setup-core-OvPMaAsx.js} +4 -4
  28. package/dist/{setup-finalize-CFnxX7la.js → setup-finalize-Dk23pfKc.js} +3 -3
  29. package/dist/setup-plugin-api.js +1 -1
  30. package/dist/{setup-surface-DRsmp0ZS.js → setup-surface-F-jVrH8u.js} +3 -3
  31. package/node_modules/@audio/decode-aac/LICENSE +9 -0
  32. package/node_modules/@audio/decode-aac/README.md +60 -0
  33. package/node_modules/@audio/decode-aac/decode-aac.d.ts +16 -0
  34. package/node_modules/@audio/decode-aac/decode-aac.js +391 -0
  35. package/node_modules/@audio/decode-aac/package.json +47 -0
  36. package/node_modules/@audio/decode-aac/src/aac.wasm.cjs +0 -0
  37. package/node_modules/@audio/decode-aiff/LICENSE +21 -0
  38. package/node_modules/@audio/decode-aiff/README.md +53 -0
  39. package/node_modules/@audio/decode-aiff/decode-aiff.d.ts +16 -0
  40. package/node_modules/@audio/decode-aiff/decode-aiff.js +583 -0
  41. package/node_modules/@audio/decode-aiff/package.json +42 -0
  42. package/node_modules/@audio/decode-amr/LICENSE +191 -0
  43. package/node_modules/@audio/decode-amr/README.md +65 -0
  44. package/node_modules/@audio/decode-amr/decode-amr.d.ts +16 -0
  45. package/node_modules/@audio/decode-amr/decode-amr.js +159 -0
  46. package/node_modules/@audio/decode-amr/package.json +48 -0
  47. package/node_modules/@audio/decode-amr/src/amr.wasm.cjs +0 -0
  48. package/node_modules/@audio/decode-caf/LICENSE +21 -0
  49. package/node_modules/@audio/decode-caf/README.md +55 -0
  50. package/node_modules/@audio/decode-caf/decode-caf.d.ts +16 -0
  51. package/node_modules/@audio/decode-caf/decode-caf.js +190 -0
  52. package/node_modules/@audio/decode-caf/package.json +43 -0
  53. package/node_modules/{audio-buffer → @audio/decode-flac}/LICENSE +5 -2
  54. package/node_modules/@audio/decode-flac/README.md +23 -0
  55. package/node_modules/@audio/decode-flac/decode-flac.d.ts +16 -0
  56. package/node_modules/@audio/decode-flac/decode-flac.js +2994 -0
  57. package/node_modules/@audio/decode-flac/meta.js +115 -0
  58. package/node_modules/@audio/decode-flac/package.json +49 -0
  59. package/node_modules/@audio/decode-mp3/LICENSE +25 -0
  60. package/node_modules/@audio/decode-mp3/README.md +23 -0
  61. package/node_modules/@audio/decode-mp3/decode-mp3.d.ts +16 -0
  62. package/node_modules/@audio/decode-mp3/decode-mp3.js +868 -0
  63. package/node_modules/@audio/decode-mp3/meta.js +143 -0
  64. package/node_modules/@audio/decode-mp3/package.json +50 -0
  65. package/node_modules/@audio/decode-opus/LICENSE +25 -0
  66. package/node_modules/@audio/decode-opus/README.md +23 -0
  67. package/node_modules/@audio/decode-opus/decode-opus.d.ts +16 -0
  68. package/node_modules/@audio/decode-opus/decode-opus.js +3179 -0
  69. package/node_modules/@audio/decode-opus/package.json +47 -0
  70. package/node_modules/@audio/decode-qoa/LICENSE +25 -0
  71. package/node_modules/@audio/decode-qoa/README.md +21 -0
  72. package/node_modules/@audio/decode-qoa/decode-qoa.d.ts +16 -0
  73. package/node_modules/@audio/decode-qoa/decode-qoa.js +278 -0
  74. package/node_modules/@audio/decode-qoa/package.json +46 -0
  75. package/node_modules/@audio/decode-vorbis/LICENSE +25 -0
  76. package/node_modules/@audio/decode-vorbis/README.md +23 -0
  77. package/node_modules/@audio/decode-vorbis/decode-vorbis.d.ts +16 -0
  78. package/node_modules/@audio/decode-vorbis/decode-vorbis.js +2984 -0
  79. package/node_modules/@audio/decode-vorbis/package.json +47 -0
  80. package/node_modules/@audio/decode-wav/decode-wav.js +104 -0
  81. package/node_modules/@audio/decode-wav/meta.js +114 -0
  82. package/node_modules/@audio/decode-wav/package.json +27 -0
  83. package/node_modules/@audio/decode-webm/LICENSE +21 -0
  84. package/node_modules/@audio/decode-webm/README.md +57 -0
  85. package/node_modules/@audio/decode-webm/decode-webm.d.ts +16 -0
  86. package/node_modules/@audio/decode-webm/decode-webm.js +3964 -0
  87. package/node_modules/@audio/decode-webm/package.json +51 -0
  88. package/node_modules/@audio/decode-wma/LICENSE +12 -0
  89. package/node_modules/@audio/decode-wma/README.md +76 -0
  90. package/node_modules/@audio/decode-wma/decode-wma.d.ts +33 -0
  91. package/node_modules/@audio/decode-wma/decode-wma.js +525 -0
  92. package/node_modules/@audio/decode-wma/package.json +47 -0
  93. package/node_modules/@audio/decode-wma/src/wma.wasm.cjs +0 -0
  94. package/node_modules/audio-decode/.claude/settings.json +204 -0
  95. package/node_modules/audio-decode/.github/workflows/test.js.yml +11 -20
  96. package/node_modules/audio-decode/.gitmodules +9 -0
  97. package/node_modules/audio-decode/audio-decode.d.ts +48 -10
  98. package/node_modules/audio-decode/audio-decode.js +193 -77
  99. package/node_modules/audio-decode/meta.js +11 -0
  100. package/node_modules/audio-decode/package.json +49 -21
  101. package/node_modules/audio-decode/readme.md +129 -29
  102. package/node_modules/audio-decode/stream.d.ts +15 -0
  103. package/node_modules/audio-decode/stream.js +1 -0
  104. package/node_modules/audio-decode/test.html +29 -10
  105. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts +2 -2
  106. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -1
  107. package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -1
  108. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +1 -1
  109. package/node_modules/lru-cache/dist/commonjs/index.d.ts +2 -2
  110. package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
  111. package/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
  112. package/node_modules/lru-cache/dist/commonjs/index.min.js.map +1 -1
  113. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts +2 -2
  114. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -1
  115. package/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -1
  116. package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +1 -1
  117. package/node_modules/lru-cache/dist/esm/browser/index.d.ts +2 -2
  118. package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -1
  119. package/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -1
  120. package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +1 -1
  121. package/node_modules/lru-cache/dist/esm/index.d.ts +2 -2
  122. package/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
  123. package/node_modules/lru-cache/dist/esm/index.js.map +1 -1
  124. package/node_modules/lru-cache/dist/esm/index.min.js.map +1 -1
  125. package/node_modules/lru-cache/dist/esm/node/index.d.ts +2 -2
  126. package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -1
  127. package/node_modules/lru-cache/dist/esm/node/index.js.map +1 -1
  128. package/node_modules/lru-cache/dist/esm/node/index.min.js.map +1 -1
  129. package/node_modules/lru-cache/package.json +1 -1
  130. package/node_modules/typebox/build/type/script/mapping.d.mts +5 -2
  131. package/node_modules/typebox/build/type/script/mapping.mjs +15 -8
  132. package/node_modules/typebox/build/type/script/parser.d.mts +3 -1
  133. package/node_modules/typebox/build/type/script/parser.mjs +2 -1
  134. package/node_modules/typebox/package.json +29 -29
  135. package/npm-shrinkwrap.json +156 -39
  136. package/openclaw.plugin.json +76 -0
  137. package/package.json +6 -6
  138. package/node_modules/audio-buffer/.eslintrc.json +0 -44
  139. package/node_modules/audio-buffer/.github/workflows/node.js.yml +0 -31
  140. package/node_modules/audio-buffer/.travis.yml +0 -7
  141. package/node_modules/audio-buffer/index.js +0 -76
  142. package/node_modules/audio-buffer/package.json +0 -37
  143. package/node_modules/audio-buffer/readme.md +0 -56
  144. package/node_modules/audio-decode/.eslintrc.json +0 -43
  145. package/node_modules/audio-decode/.travis.yml +0 -13
  146. package/node_modules/audio-decode/tea.yaml +0 -6
  147. package/node_modules/audio-decode/test-case.js +0 -11
  148. package/node_modules/audio-decode/test.js +0 -107
  149. package/node_modules/node-wav/README.md +0 -35
  150. package/node_modules/node-wav/file.wav +0 -0
  151. package/node_modules/node-wav/index.js +0 -291
  152. package/node_modules/node-wav/package.json +0 -29
  153. package/node_modules/node-wav/tests/file1.wav +0 -0
  154. package/node_modules/node-wav/tests/test.js +0 -66
  155. package/node_modules/node-wav/x.js +0 -12
  156. package/node_modules/node-wav/x.json +0 -86702
  157. package/node_modules/node-wav/x.js~ +0 -13
@@ -0,0 +1,2984 @@
1
+ // ../../node_modules/simple-yenc/dist/esm.js
2
+ var t = (t2, n = 4294967295, e2 = 79764919) => {
3
+ const r = new Int32Array(256);
4
+ let o, s, i, c = n;
5
+ for (o = 0; o < 256; o++) {
6
+ for (i = o << 24, s = 8; s > 0; --s) i = 2147483648 & i ? i << 1 ^ e2 : i << 1;
7
+ r[o] = i;
8
+ }
9
+ for (o = 0; o < t2.length; o++) c = c << 8 ^ r[255 & (c >> 24 ^ t2[o])];
10
+ return c;
11
+ };
12
+ var e = (n, e2 = t) => {
13
+ const r = (t2) => new Uint8Array(t2.length / 2).map(((n2, e3) => parseInt(t2.substring(2 * e3, 2 * (e3 + 1)), 16))), o = (t2) => r(t2)[0], s = /* @__PURE__ */ new Map();
14
+ [, 8364, , 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, , 381, , , 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, , 382, 376].forEach(((t2, n2) => s.set(t2, n2)));
15
+ const i = new Uint8Array(n.length);
16
+ let c, a, l, f = false, g = 0, h = 42, p = n.length > 13 && "dynEncode" === n.substring(0, 9), u = 0;
17
+ p && (u = 11, a = o(n.substring(9, u)), a <= 1 && (u += 2, h = o(n.substring(11, u))), 1 === a && (u += 8, l = ((t2) => new DataView(r(t2).buffer).getInt32(0, true))(n.substring(13, u))));
18
+ const d = 256 - h;
19
+ for (let t2 = u; t2 < n.length; t2++) if (c = n.charCodeAt(t2), 61 !== c || f) {
20
+ if (92 === c && t2 < n.length - 5 && p) {
21
+ const e3 = n.charCodeAt(t2 + 1);
22
+ 117 !== e3 && 85 !== e3 || (c = parseInt(n.substring(t2 + 2, t2 + 6), 16), t2 += 5);
23
+ }
24
+ if (c > 255) {
25
+ const t3 = s.get(c);
26
+ t3 && (c = t3 + 127);
27
+ }
28
+ f && (f = false, c -= 64), i[g++] = c < h && c > 0 ? c + d : c - h;
29
+ } else f = true;
30
+ const m = i.subarray(0, g);
31
+ if (p && 1 === a) {
32
+ const t2 = e2(m);
33
+ if (t2 !== l) {
34
+ const n2 = "Decode failed crc32 validation";
35
+ throw console.error("`simple-yenc`\n", n2 + "\n", "Expected: " + l + "; Got: " + t2 + "\n", "Visit https://github.com/eshaz/simple-yenc for more information"), Error(n2);
36
+ }
37
+ }
38
+ return m;
39
+ };
40
+
41
+ // ../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js
42
+ function WASMAudioDecoderCommon() {
43
+ const uint8Array2 = Uint8Array;
44
+ const float32Array = Float32Array;
45
+ if (!WASMAudioDecoderCommon.modules) {
46
+ Object.defineProperties(WASMAudioDecoderCommon, {
47
+ modules: {
48
+ value: /* @__PURE__ */ new WeakMap()
49
+ },
50
+ setModule: {
51
+ value(Ref, module) {
52
+ WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));
53
+ }
54
+ },
55
+ getModule: {
56
+ value(Ref, wasmString) {
57
+ let module = WASMAudioDecoderCommon.modules.get(Ref);
58
+ if (!module) {
59
+ if (!wasmString) {
60
+ wasmString = Ref.wasm;
61
+ module = WASMAudioDecoderCommon.inflateDynEncodeString(
62
+ wasmString
63
+ ).then((data3) => WebAssembly.compile(data3));
64
+ } else {
65
+ module = WebAssembly.compile(e(wasmString));
66
+ }
67
+ WASMAudioDecoderCommon.modules.set(Ref, module);
68
+ }
69
+ return module;
70
+ }
71
+ },
72
+ concatFloat32: {
73
+ value(buffers, length2) {
74
+ let ret = new float32Array(length2), i = 0, offset = 0;
75
+ while (i < buffers.length) {
76
+ ret.set(buffers[i], offset);
77
+ offset += buffers[i++].length;
78
+ }
79
+ return ret;
80
+ }
81
+ },
82
+ getDecodedAudio: {
83
+ value: (errors, channelData, samplesDecoded, sampleRate2, bitDepth2) => ({
84
+ errors,
85
+ channelData,
86
+ samplesDecoded,
87
+ sampleRate: sampleRate2,
88
+ bitDepth: bitDepth2
89
+ })
90
+ },
91
+ getDecodedAudioMultiChannel: {
92
+ value(errors, input, channelsDecoded, samplesDecoded, sampleRate2, bitDepth2) {
93
+ let channelData = [], i, j;
94
+ for (i = 0; i < channelsDecoded; i++) {
95
+ const channel2 = [];
96
+ for (j = 0; j < input.length; ) channel2.push(input[j++][i] || []);
97
+ channelData.push(
98
+ WASMAudioDecoderCommon.concatFloat32(channel2, samplesDecoded)
99
+ );
100
+ }
101
+ return WASMAudioDecoderCommon.getDecodedAudio(
102
+ errors,
103
+ channelData,
104
+ samplesDecoded,
105
+ sampleRate2,
106
+ bitDepth2
107
+ );
108
+ }
109
+ },
110
+ /*
111
+ ******************
112
+ * Compression Code
113
+ ******************
114
+ */
115
+ inflateDynEncodeString: {
116
+ value(source) {
117
+ source = e(source);
118
+ return new Promise((resolve) => {
119
+ const puffString = String.raw`dynEncode012804c7886d(‰›•)((()>+ˆ*§§)§ˆ,§§§§)§ˆ+§§§)§+.-()(*)-+)(ˆ.7*§)i¸¸,3§(i¸¸,3/G+.••—š¡*(,˜ŽŽ(,3‡‡‰˜‡Š‰›+)2å:-œ),§H(P*DI*H(P*@I++hH)H*r,hH(H(P*<J,i)’^*<H,H(P*4’U((I-H(H*i0’J,^*DH+H-H*œšI+H,I*4)33H(H*H)“^*DH(H+H)^*@H+i§H)œi§›™3æ*).§K(iH“I/+§H,iHn,§H+i(H+i(rCJ0I,H*I-+hH,,hH(H-V)(i)œ’J.H.W)(i)’c)(H,i)“I,H-i*’I-4)33i(I.*hH(V)(H+n5(H(i*’I-i(I,i)I.+hH,i*’J+iHn,hi(I-i*I,+hH,H/’H-c)(H,iFn,hi(I,+hH,H0n5-H*V)(J(,hH/H(i)œ’J(H(V)(J(i)’c)(H)H(i)œ’H,c)(3H*i*’I*H,i)’I,4(3(-H(H,’W)(H-’I-H,i*’I,4)3(3(3H,H-’I1H+I,H.i)œH1V)(“J.i(v5(33H.-H(H,’i(c)(H,i*’I,4)333–)-§i*I*+§H*iHn,hiž73H,H(i)8(H+šJ+H)P*(H*’V)(J-“r,§H)P*,H.i)œ’H+H,“i)œ’V)(-H*i*’I*H+i)œI+H-H.’I.H,H-’i)œI,4)333Ã+)-§iø7i(^*(iü7I,*h+hH+iDn,h*hilI+i)I,+hH+,hH+iô7’H,c)(i)H+i´8’W)(œH,’I,H+i*’I+4)-+hH(H)8*J-i(p5.*h*h*hH-i')u,hH(P*(J+,hH(P*0J,H(P*,n50H+H,’H-b((3H(P*0i)’I.4)3H-i¨*n5*H-iÅ*s,hiž73H-i)œJ+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)œJ+i¸7’V)(H(H+iø7’V)(8(’J/H(P*0J+s,hi73H+H,H.’J,’I.H(P*(m5(H.H(P*,s5.+hH,m5*H(P*(J.H+’H.H+H/“’U((b((H(H(P*0i)’J+^*0H,i)“I,4(3(3H(H.^*03H-i¨*o5)33i(73(3(3-H,H+i)žc)(H,i*’I,H+i)’I+4)33i)I-3H-3!2)0§K(i2“J,L(H,H(^*(H,H*^*4H,i(^*0H,i(^*DH,j(_*<H,H)P*(^*,H,H+P*(^*8*h*h+hH,i)8(I3i§I**h*h*h*h*h*h*hH,i*8(6+(),03H,j(_*@i*I-H,P*<J.i,’J(H,P*8J/s50H,H.i+’J0^*<i¦I*H.H,P*4J1’J.U(*H.U((J2›i')o5/H.U()I.H,H(^*<H0H1’U((H.i0œJ.i§›i0ži')™o5/H/H.H2šJ*H(’J.q50H,P*0J/H*’I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0’H(H1’U((b((H/i)’I/H(i)’I(H*i)“I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i1^*(i$6iè1^*(i°7iè6^*(i¬7iÈ6^*(+hH(iÈ*n,hiÈ*I(+hH(i¨,n,hi¨,I(+hH(iØ,n,hiØ,I(+hH(iè,o,hH,i-’H(’i0c)(H(i*’I(4)33iè1i1H,i-’iÈ*8)Bi(I(+hH(ido,hH,i-’H(’i-c)(H(i*’I(4)33iÈ6iè6H,i-’iF8)BiØ1i)b((41-H,i-’H(’i/c)(H(i*’I(4)3(3(-H,i-’H(’i1c)(H(i*’I(4)3(3(-H,i-’H(’i0c)(H(i*’I(4)3(3(3H,H/^*0H,H(^*<3i(I*4*3H,H,i¸)’^*TH,H,iø-’^*PH,H,iX’^*LH,H,i(’^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iErš5)H(i©*’I1H-i)’I0i(i;H.i,’J(i(H(i(rCJ(“J*H*i;sCI*i¨1I-H(I/+hH/,hH,i-’H-V)(i)œ’H,i+8(c)(H/i)“I/H-i*’I-H*i)’I*4)-H(i)œi¨1’I/+hH(H*o,hH,i-’H/V)(i)œ’i(c)(H/i*’I/H(i)’I(4)33i¤I*H,iø-’H,i¸)’H,i-’i;8)5+H0H1’I2i(I-+hH-H2p,hH,H,iP’8*J*i(p5-H*i7u,hH,i-’H-i)œ’H*c)(H-i)’I-4*3i(I/i+I.i+I(*h*h*hH*i8“6*(*)3H-m,hi£I*403H-i)œH,’W)-I/i*I(4)3i3I.i/I(3H2H,H(8(H.’J(H-’J.p,hi¢I*4.3H,i-’H-i)œ’I*+hH(,hH*H/c)(H*i*’I*H(i)“I(4)-H.I-4+3(3(33H,W)1m,hiŸI*4,3H,iø-’H,i¸)’H,i-’H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-’o5,3H,i(’H,iX’H,i-’H1i)œ’H08)J(,hi I*H(i(p5,H0H,V)šH,V)˜’o5,3H,H,iP’H,iH’8+I*4+3(3(3H,i$6i¬78+I*3H*H3šm5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i2’L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(‹(›(«(Ë(ë( (*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7œ‰šœ‡Ž‰œš›*S7•œ‰Š”U”—Љ”›S0›‘–U œ`;
120
+ WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString).then((wasm) => WebAssembly.instantiate(wasm, {})).then(({ exports }) => {
121
+ const instanceExports = new Map(Object.entries(exports));
122
+ const puff = instanceExports.get("puff");
123
+ const memory = instanceExports.get("memory")["buffer"];
124
+ const dataArray = new uint8Array2(memory);
125
+ const heapView = new DataView(memory);
126
+ let heapPos = instanceExports.get("__heap_base");
127
+ const sourceLength = source.length;
128
+ const sourceLengthPtr = heapPos;
129
+ heapPos += 4;
130
+ heapView.setInt32(sourceLengthPtr, sourceLength, true);
131
+ const sourcePtr = heapPos;
132
+ heapPos += sourceLength;
133
+ dataArray.set(source, sourcePtr);
134
+ const destLengthPtr = heapPos;
135
+ heapPos += 4;
136
+ heapView.setInt32(
137
+ destLengthPtr,
138
+ dataArray.byteLength - heapPos,
139
+ true
140
+ );
141
+ puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);
142
+ resolve(
143
+ dataArray.slice(
144
+ heapPos,
145
+ heapPos + heapView.getInt32(destLengthPtr, true)
146
+ )
147
+ );
148
+ });
149
+ });
150
+ }
151
+ }
152
+ });
153
+ }
154
+ Object.defineProperty(this, "wasm", {
155
+ enumerable: true,
156
+ get: () => this._wasm
157
+ });
158
+ this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {
159
+ let output = [], i = 0;
160
+ while (i < channelsDecoded)
161
+ output.push(
162
+ outputData.slice(
163
+ i * samplesDecoded,
164
+ i++ * samplesDecoded + samplesDecoded
165
+ )
166
+ );
167
+ return output;
168
+ };
169
+ this.allocateTypedArray = (len, TypedArray, setPointer = true) => {
170
+ const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);
171
+ if (setPointer) this._pointers.add(ptr);
172
+ return {
173
+ ptr,
174
+ len,
175
+ buf: new TypedArray(this._wasm.HEAP, ptr, len)
176
+ };
177
+ };
178
+ this.free = () => {
179
+ this._pointers.forEach((ptr) => {
180
+ this._wasm.free(ptr);
181
+ });
182
+ this._pointers.clear();
183
+ };
184
+ this.codeToString = (ptr) => {
185
+ const characters = [], heap = new Uint8Array(this._wasm.HEAP);
186
+ for (let character = heap[ptr]; character !== 0; character = heap[++ptr])
187
+ characters.push(character);
188
+ return String.fromCharCode.apply(null, characters);
189
+ };
190
+ this.addError = (errors, message, frameLength2, frameNumber2, inputBytes, outputSamples) => {
191
+ errors.push({
192
+ message,
193
+ frameLength: frameLength2,
194
+ frameNumber: frameNumber2,
195
+ inputBytes,
196
+ outputSamples
197
+ });
198
+ };
199
+ this.instantiate = (_EmscriptenWASM, _module) => {
200
+ if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);
201
+ this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();
202
+ this._pointers = /* @__PURE__ */ new Set();
203
+ return this._wasm.ready.then(() => this);
204
+ };
205
+ }
206
+
207
+ // ../_build/empty-worker.js
208
+ var empty_worker_default = null;
209
+
210
+ // ../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js
211
+ var getWorker = () => globalThis.Worker || empty_worker_default;
212
+ var WASMAudioDecoderWorker = class extends getWorker() {
213
+ constructor(options, name, Decoder2, EmscriptenWASM2) {
214
+ if (!WASMAudioDecoderCommon.modules) new WASMAudioDecoderCommon();
215
+ let source = WASMAudioDecoderCommon.modules.get(Decoder2);
216
+ if (!source) {
217
+ let type = "text/javascript", isNode, webworkerSourceCode = `'use strict';(${((_Decoder, _WASMAudioDecoderCommon, _EmscriptenWASM) => {
218
+ let decoder2, moduleResolve, modulePromise = new Promise((resolve) => {
219
+ moduleResolve = resolve;
220
+ });
221
+ self.onmessage = ({ data: { id, command, data: data3 } }) => {
222
+ let messagePromise = modulePromise, messagePayload = { id }, transferList;
223
+ if (command === "init") {
224
+ Object.defineProperties(_Decoder, {
225
+ WASMAudioDecoderCommon: { value: _WASMAudioDecoderCommon },
226
+ EmscriptenWASM: { value: _EmscriptenWASM },
227
+ module: { value: data3.module },
228
+ isWebWorker: { value: true }
229
+ });
230
+ decoder2 = new _Decoder(data3.options);
231
+ moduleResolve();
232
+ } else if (command === "free") {
233
+ decoder2.free();
234
+ } else if (command === "ready") {
235
+ messagePromise = messagePromise.then(() => decoder2.ready);
236
+ } else if (command === "reset") {
237
+ messagePromise = messagePromise.then(() => decoder2.reset());
238
+ } else {
239
+ Object.assign(
240
+ messagePayload,
241
+ decoder2[command](
242
+ // detach buffers
243
+ Array.isArray(data3) ? data3.map((data4) => new Uint8Array(data4)) : new Uint8Array(data3)
244
+ )
245
+ );
246
+ transferList = messagePayload.channelData ? messagePayload.channelData.map((channel2) => channel2.buffer) : [];
247
+ }
248
+ messagePromise.then(
249
+ () => self.postMessage(messagePayload, transferList)
250
+ );
251
+ };
252
+ }).toString()})(${Decoder2}, ${WASMAudioDecoderCommon}, ${EmscriptenWASM2})`;
253
+ try {
254
+ isNode = typeof process.versions.node !== "undefined";
255
+ } catch {
256
+ }
257
+ source = isNode ? `data:${type};base64,${Buffer.from(webworkerSourceCode).toString(
258
+ "base64"
259
+ )}` : URL.createObjectURL(new Blob([webworkerSourceCode], { type }));
260
+ WASMAudioDecoderCommon.modules.set(Decoder2, source);
261
+ }
262
+ super(source, { name });
263
+ this._id = Number.MIN_SAFE_INTEGER;
264
+ this._enqueuedOperations = /* @__PURE__ */ new Map();
265
+ this.onmessage = ({ data: data3 }) => {
266
+ const { id, ...rest } = data3;
267
+ this._enqueuedOperations.get(id)(rest);
268
+ this._enqueuedOperations.delete(id);
269
+ };
270
+ new EmscriptenWASM2(WASMAudioDecoderCommon).getModule().then((module) => {
271
+ this.postToDecoder("init", { module, options });
272
+ });
273
+ }
274
+ async postToDecoder(command, data3) {
275
+ return new Promise((resolve) => {
276
+ this.postMessage({
277
+ command,
278
+ id: this._id,
279
+ data: data3
280
+ });
281
+ this._enqueuedOperations.set(this._id++, resolve);
282
+ });
283
+ }
284
+ get ready() {
285
+ return this.postToDecoder("ready");
286
+ }
287
+ async free() {
288
+ await this.postToDecoder("free").finally(() => {
289
+ this.terminate();
290
+ });
291
+ }
292
+ async reset() {
293
+ await this.postToDecoder("reset");
294
+ }
295
+ };
296
+
297
+ // ../../node_modules/@wasm-audio-decoders/common/src/utilities.js
298
+ var assignNames = (Class, name) => {
299
+ Object.defineProperty(Class, "name", { value: name });
300
+ };
301
+
302
+ // ../../node_modules/codec-parser/src/constants.js
303
+ var symbol = Symbol;
304
+ var mappingJoin = ", ";
305
+ var channelMappings = (() => {
306
+ const front = "front";
307
+ const side = "side";
308
+ const rear = "rear";
309
+ const left = "left";
310
+ const center = "center";
311
+ const right = "right";
312
+ return ["", front + " ", side + " ", rear + " "].map(
313
+ (x) => [
314
+ [left, right],
315
+ [left, right, center],
316
+ [left, center, right],
317
+ [center, left, right],
318
+ [center]
319
+ ].flatMap((y) => y.map((z) => x + z).join(mappingJoin))
320
+ );
321
+ })();
322
+ var lfe = "LFE";
323
+ var monophonic = "monophonic (mono)";
324
+ var stereo = "stereo";
325
+ var surround = "surround";
326
+ var getChannelMapping = (channelCount, ...mappings) => `${[
327
+ monophonic,
328
+ stereo,
329
+ `linear ${surround}`,
330
+ "quadraphonic",
331
+ `5.0 ${surround}`,
332
+ `5.1 ${surround}`,
333
+ `6.1 ${surround}`,
334
+ `7.1 ${surround}`
335
+ ][channelCount - 1]} (${mappings.join(mappingJoin)})`;
336
+ var vorbisOpusChannelMapping = [
337
+ monophonic,
338
+ getChannelMapping(2, channelMappings[0][0]),
339
+ getChannelMapping(3, channelMappings[0][2]),
340
+ getChannelMapping(4, channelMappings[1][0], channelMappings[3][0]),
341
+ getChannelMapping(5, channelMappings[1][2], channelMappings[3][0]),
342
+ getChannelMapping(6, channelMappings[1][2], channelMappings[3][0], lfe),
343
+ getChannelMapping(7, channelMappings[1][2], channelMappings[2][0], channelMappings[3][4], lfe),
344
+ getChannelMapping(8, channelMappings[1][2], channelMappings[2][0], channelMappings[3][0], lfe)
345
+ ];
346
+ var rate192000 = 192e3;
347
+ var rate176400 = 176400;
348
+ var rate96000 = 96e3;
349
+ var rate88200 = 88200;
350
+ var rate64000 = 64e3;
351
+ var rate48000 = 48e3;
352
+ var rate44100 = 44100;
353
+ var rate32000 = 32e3;
354
+ var rate24000 = 24e3;
355
+ var rate22050 = 22050;
356
+ var rate16000 = 16e3;
357
+ var rate12000 = 12e3;
358
+ var rate11025 = 11025;
359
+ var rate8000 = 8e3;
360
+ var rate7350 = 7350;
361
+ var absoluteGranulePosition = "absoluteGranulePosition";
362
+ var bandwidth = "bandwidth";
363
+ var bitDepth = "bitDepth";
364
+ var bitrate = "bitrate";
365
+ var bitrateMaximum = bitrate + "Maximum";
366
+ var bitrateMinimum = bitrate + "Minimum";
367
+ var bitrateNominal = bitrate + "Nominal";
368
+ var buffer = "buffer";
369
+ var bufferFullness = buffer + "Fullness";
370
+ var codec = "codec";
371
+ var codecFrames = codec + "Frames";
372
+ var coupledStreamCount = "coupledStreamCount";
373
+ var crc = "crc";
374
+ var crc16 = crc + "16";
375
+ var crc32 = crc + "32";
376
+ var data = "data";
377
+ var description = "description";
378
+ var duration = "duration";
379
+ var emphasis = "emphasis";
380
+ var hasOpusPadding = "hasOpusPadding";
381
+ var header = "header";
382
+ var isContinuedPacket = "isContinuedPacket";
383
+ var isCopyrighted = "isCopyrighted";
384
+ var isFirstPage = "isFirstPage";
385
+ var isHome = "isHome";
386
+ var isLastPage = "isLastPage";
387
+ var isOriginal = "isOriginal";
388
+ var isPrivate = "isPrivate";
389
+ var isVbr = "isVbr";
390
+ var layer = "layer";
391
+ var length = "length";
392
+ var mode = "mode";
393
+ var modeExtension = mode + "Extension";
394
+ var mpeg = "mpeg";
395
+ var mpegVersion = mpeg + "Version";
396
+ var numberAACFrames = "numberAACFrames";
397
+ var outputGain = "outputGain";
398
+ var preSkip = "preSkip";
399
+ var profile = "profile";
400
+ var profileBits = symbol();
401
+ var protection = "protection";
402
+ var rawData = "rawData";
403
+ var segments = "segments";
404
+ var subarray = "subarray";
405
+ var version = "version";
406
+ var vorbis = "vorbis";
407
+ var vorbisComments = vorbis + "Comments";
408
+ var vorbisSetup = vorbis + "Setup";
409
+ var block = "block";
410
+ var blockingStrategy = block + "ingStrategy";
411
+ var blockingStrategyBits = symbol();
412
+ var blockSize = block + "Size";
413
+ var blocksize0 = block + "size0";
414
+ var blocksize1 = block + "size1";
415
+ var blockSizeBits = symbol();
416
+ var channel = "channel";
417
+ var channelMappingFamily = channel + "MappingFamily";
418
+ var channelMappingTable = channel + "MappingTable";
419
+ var channelMode = channel + "Mode";
420
+ var channelModeBits = symbol();
421
+ var channels = channel + "s";
422
+ var copyright = "copyright";
423
+ var copyrightId = copyright + "Id";
424
+ var copyrightIdStart = copyright + "IdStart";
425
+ var frame = "frame";
426
+ var frameCount = frame + "Count";
427
+ var frameLength = frame + "Length";
428
+ var Number2 = "Number";
429
+ var frameNumber = frame + Number2;
430
+ var framePadding = frame + "Padding";
431
+ var frameSize = frame + "Size";
432
+ var Rate = "Rate";
433
+ var inputSampleRate = "inputSample" + Rate;
434
+ var page = "page";
435
+ var pageChecksum = page + "Checksum";
436
+ var pageSegmentBytes = symbol();
437
+ var pageSegmentTable = page + "SegmentTable";
438
+ var pageSequenceNumber = page + "Sequence" + Number2;
439
+ var sample = "sample";
440
+ var sampleNumber = sample + Number2;
441
+ var sampleRate = sample + Rate;
442
+ var sampleRateBits = symbol();
443
+ var samples = sample + "s";
444
+ var stream = "stream";
445
+ var streamCount = stream + "Count";
446
+ var streamInfo = stream + "Info";
447
+ var streamSerialNumber = stream + "Serial" + Number2;
448
+ var streamStructureVersion = stream + "StructureVersion";
449
+ var total = "total";
450
+ var totalBytesOut = total + "BytesOut";
451
+ var totalDuration = total + "Duration";
452
+ var totalSamples = total + "Samples";
453
+ var readRawData = symbol();
454
+ var incrementRawData = symbol();
455
+ var mapCodecFrameStats = symbol();
456
+ var mapFrameStats = symbol();
457
+ var logWarning = symbol();
458
+ var logError2 = symbol();
459
+ var syncFrame = symbol();
460
+ var fixedLengthFrameSync = symbol();
461
+ var getHeader = symbol();
462
+ var setHeader = symbol();
463
+ var getFrame = symbol();
464
+ var parseFrame = symbol();
465
+ var parseOggPage = symbol();
466
+ var checkCodecUpdate = symbol();
467
+ var reset = symbol();
468
+ var enable = symbol();
469
+ var getHeaderFromUint8Array = symbol();
470
+ var checkFrameFooterCrc16 = symbol();
471
+ var uint8Array = Uint8Array;
472
+ var dataView = DataView;
473
+ var reserved = "reserved";
474
+ var bad = "bad";
475
+ var free = "free";
476
+ var none = "none";
477
+ var sixteenBitCRC = "16bit CRC";
478
+
479
+ // ../../node_modules/codec-parser/src/utilities.js
480
+ var getCrcTable = (crcTable, crcInitialValueFunction, crcFunction) => {
481
+ for (let byte = 0; byte < crcTable[length]; byte++) {
482
+ let crc2 = crcInitialValueFunction(byte);
483
+ for (let bit = 8; bit > 0; bit--) crc2 = crcFunction(crc2);
484
+ crcTable[byte] = crc2;
485
+ }
486
+ return crcTable;
487
+ };
488
+ var crc8Table = getCrcTable(
489
+ new uint8Array(256),
490
+ (b) => b,
491
+ (crc2) => crc2 & 128 ? 7 ^ crc2 << 1 : crc2 << 1
492
+ );
493
+ var flacCrc16Table = [
494
+ getCrcTable(
495
+ new Uint16Array(256),
496
+ (b) => b << 8,
497
+ (crc2) => crc2 << 1 ^ (crc2 & 1 << 15 ? 32773 : 0)
498
+ )
499
+ ];
500
+ var crc32Table = [
501
+ getCrcTable(
502
+ new Uint32Array(256),
503
+ (b) => b,
504
+ (crc2) => crc2 >>> 1 ^ (crc2 & 1) * 3988292384
505
+ )
506
+ ];
507
+ for (let i = 0; i < 15; i++) {
508
+ flacCrc16Table.push(new Uint16Array(256));
509
+ crc32Table.push(new Uint32Array(256));
510
+ for (let j = 0; j <= 255; j++) {
511
+ flacCrc16Table[i + 1][j] = flacCrc16Table[0][flacCrc16Table[i][j] >>> 8] ^ flacCrc16Table[i][j] << 8;
512
+ crc32Table[i + 1][j] = crc32Table[i][j] >>> 8 ^ crc32Table[0][crc32Table[i][j] & 255];
513
+ }
514
+ }
515
+ var crc8 = (data3) => {
516
+ let crc2 = 0;
517
+ const dataLength = data3[length];
518
+ for (let i = 0; i !== dataLength; i++) crc2 = crc8Table[crc2 ^ data3[i]];
519
+ return crc2;
520
+ };
521
+ var flacCrc16 = (data3) => {
522
+ const dataLength = data3[length];
523
+ const crcChunkSize = dataLength - 16;
524
+ let crc2 = 0;
525
+ let i = 0;
526
+ while (i <= crcChunkSize) {
527
+ crc2 ^= data3[i++] << 8 | data3[i++];
528
+ crc2 = flacCrc16Table[15][crc2 >> 8] ^ flacCrc16Table[14][crc2 & 255] ^ flacCrc16Table[13][data3[i++]] ^ flacCrc16Table[12][data3[i++]] ^ flacCrc16Table[11][data3[i++]] ^ flacCrc16Table[10][data3[i++]] ^ flacCrc16Table[9][data3[i++]] ^ flacCrc16Table[8][data3[i++]] ^ flacCrc16Table[7][data3[i++]] ^ flacCrc16Table[6][data3[i++]] ^ flacCrc16Table[5][data3[i++]] ^ flacCrc16Table[4][data3[i++]] ^ flacCrc16Table[3][data3[i++]] ^ flacCrc16Table[2][data3[i++]] ^ flacCrc16Table[1][data3[i++]] ^ flacCrc16Table[0][data3[i++]];
529
+ }
530
+ while (i !== dataLength)
531
+ crc2 = (crc2 & 255) << 8 ^ flacCrc16Table[0][crc2 >> 8 ^ data3[i++]];
532
+ return crc2;
533
+ };
534
+ var crc32Function = (data3) => {
535
+ const dataLength = data3[length];
536
+ const crcChunkSize = dataLength - 16;
537
+ let crc2 = 0;
538
+ let i = 0;
539
+ while (i <= crcChunkSize)
540
+ crc2 = crc32Table[15][(data3[i++] ^ crc2) & 255] ^ crc32Table[14][(data3[i++] ^ crc2 >>> 8) & 255] ^ crc32Table[13][(data3[i++] ^ crc2 >>> 16) & 255] ^ crc32Table[12][data3[i++] ^ crc2 >>> 24] ^ crc32Table[11][data3[i++]] ^ crc32Table[10][data3[i++]] ^ crc32Table[9][data3[i++]] ^ crc32Table[8][data3[i++]] ^ crc32Table[7][data3[i++]] ^ crc32Table[6][data3[i++]] ^ crc32Table[5][data3[i++]] ^ crc32Table[4][data3[i++]] ^ crc32Table[3][data3[i++]] ^ crc32Table[2][data3[i++]] ^ crc32Table[1][data3[i++]] ^ crc32Table[0][data3[i++]];
541
+ while (i !== dataLength)
542
+ crc2 = crc32Table[0][(crc2 ^ data3[i++]) & 255] ^ crc2 >>> 8;
543
+ return crc2 ^ -1;
544
+ };
545
+ var concatBuffers = (...buffers) => {
546
+ const buffer2 = new uint8Array(
547
+ buffers.reduce((acc, buf) => acc + buf[length], 0)
548
+ );
549
+ buffers.reduce((offset, buf) => {
550
+ buffer2.set(buf, offset);
551
+ return offset + buf[length];
552
+ }, 0);
553
+ return buffer2;
554
+ };
555
+ var bytesToString = (bytes) => String.fromCharCode(...bytes);
556
+ var reverseTable = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];
557
+ var reverse = (val) => reverseTable[val & 15] << 4 | reverseTable[val >> 4];
558
+ var BitReader = class {
559
+ constructor(data3) {
560
+ this._data = data3;
561
+ this._pos = data3[length] * 8;
562
+ }
563
+ set position(position) {
564
+ this._pos = position;
565
+ }
566
+ get position() {
567
+ return this._pos;
568
+ }
569
+ read(bits) {
570
+ const byte = Math.floor(this._pos / 8);
571
+ const bit = this._pos % 8;
572
+ this._pos -= bits;
573
+ const window = (reverse(this._data[byte - 1]) << 8) + reverse(this._data[byte]);
574
+ return window >> 7 - bit & 255;
575
+ }
576
+ };
577
+ var readInt64le = (view, offset) => {
578
+ try {
579
+ return view.getBigInt64(offset, true);
580
+ } catch {
581
+ const sign = view.getUint8(offset + 7) & 128 ? -1 : 1;
582
+ let firstPart = view.getUint32(offset, true);
583
+ let secondPart = view.getUint32(offset + 4, true);
584
+ if (sign === -1) {
585
+ firstPart = ~firstPart + 1;
586
+ secondPart = ~secondPart + 1;
587
+ }
588
+ if (secondPart > 1048575) {
589
+ console.warn("This platform does not support BigInt");
590
+ }
591
+ return sign * (firstPart + secondPart * 2 ** 32);
592
+ }
593
+ };
594
+
595
+ // ../../node_modules/codec-parser/src/codecs/HeaderCache.js
596
+ var HeaderCache = class {
597
+ constructor(onCodecHeader, onCodecUpdate) {
598
+ this._onCodecHeader = onCodecHeader;
599
+ this._onCodecUpdate = onCodecUpdate;
600
+ this[reset]();
601
+ }
602
+ [enable]() {
603
+ this._isEnabled = true;
604
+ }
605
+ [reset]() {
606
+ this._headerCache = /* @__PURE__ */ new Map();
607
+ this._codecUpdateData = /* @__PURE__ */ new WeakMap();
608
+ this._codecHeaderSent = false;
609
+ this._codecShouldUpdate = false;
610
+ this._bitrate = null;
611
+ this._isEnabled = false;
612
+ }
613
+ [checkCodecUpdate](bitrate2, totalDuration2) {
614
+ if (this._onCodecUpdate) {
615
+ if (this._bitrate !== bitrate2) {
616
+ this._bitrate = bitrate2;
617
+ this._codecShouldUpdate = true;
618
+ }
619
+ const codecData = this._codecUpdateData.get(
620
+ this._headerCache.get(this._currentHeader)
621
+ );
622
+ if (this._codecShouldUpdate && codecData) {
623
+ this._onCodecUpdate(
624
+ {
625
+ bitrate: bitrate2,
626
+ ...codecData
627
+ },
628
+ totalDuration2
629
+ );
630
+ }
631
+ this._codecShouldUpdate = false;
632
+ }
633
+ }
634
+ [getHeader](key) {
635
+ const header3 = this._headerCache.get(key);
636
+ if (header3) {
637
+ this._updateCurrentHeader(key);
638
+ }
639
+ return header3;
640
+ }
641
+ [setHeader](key, header3, codecUpdateFields) {
642
+ if (this._isEnabled) {
643
+ if (!this._codecHeaderSent) {
644
+ this._onCodecHeader({ ...header3 });
645
+ this._codecHeaderSent = true;
646
+ }
647
+ this._updateCurrentHeader(key);
648
+ this._headerCache.set(key, header3);
649
+ this._codecUpdateData.set(header3, codecUpdateFields);
650
+ }
651
+ }
652
+ _updateCurrentHeader(key) {
653
+ if (this._onCodecUpdate && key !== this._currentHeader) {
654
+ this._codecShouldUpdate = true;
655
+ this._currentHeader = key;
656
+ }
657
+ }
658
+ };
659
+
660
+ // ../../node_modules/codec-parser/src/globals.js
661
+ var headerStore = /* @__PURE__ */ new WeakMap();
662
+ var frameStore = /* @__PURE__ */ new WeakMap();
663
+
664
+ // ../../node_modules/codec-parser/src/codecs/Parser.js
665
+ var Parser = class {
666
+ constructor(codecParser, headerCache) {
667
+ this._codecParser = codecParser;
668
+ this._headerCache = headerCache;
669
+ }
670
+ *[syncFrame]() {
671
+ let frameData;
672
+ do {
673
+ frameData = yield* this.Frame[getFrame](
674
+ this._codecParser,
675
+ this._headerCache,
676
+ 0
677
+ );
678
+ if (frameData) return frameData;
679
+ this._codecParser[incrementRawData](1);
680
+ } while (true);
681
+ }
682
+ /**
683
+ * @description Searches for Frames within bytes containing a sequence of known codec frames.
684
+ * @param {boolean} ignoreNextFrame Set to true to return frames even if the next frame may not exist at the expected location
685
+ * @returns {Frame}
686
+ */
687
+ *[fixedLengthFrameSync](ignoreNextFrame) {
688
+ let frameData = yield* this[syncFrame]();
689
+ const frameLength2 = frameStore.get(frameData)[length];
690
+ if (ignoreNextFrame || this._codecParser._flushing || // check if there is a frame right after this one
691
+ (yield* this.Header[getHeader](
692
+ this._codecParser,
693
+ this._headerCache,
694
+ frameLength2
695
+ ))) {
696
+ this._headerCache[enable]();
697
+ this._codecParser[incrementRawData](frameLength2);
698
+ this._codecParser[mapFrameStats](frameData);
699
+ return frameData;
700
+ }
701
+ this._codecParser[logWarning](
702
+ `Missing ${frame} at ${frameLength2} bytes from current position.`,
703
+ `Dropping current ${frame} and trying again.`
704
+ );
705
+ this._headerCache[reset]();
706
+ this._codecParser[incrementRawData](1);
707
+ }
708
+ };
709
+
710
+ // ../../node_modules/codec-parser/src/containers/Frame.js
711
+ var Frame = class {
712
+ constructor(headerValue, dataValue) {
713
+ frameStore.set(this, { [header]: headerValue });
714
+ this[data] = dataValue;
715
+ }
716
+ };
717
+
718
+ // ../../node_modules/codec-parser/src/codecs/CodecFrame.js
719
+ var CodecFrame = class extends Frame {
720
+ static *[getFrame](Header, Frame2, codecParser, headerCache, readOffset) {
721
+ const headerValue = yield* Header[getHeader](
722
+ codecParser,
723
+ headerCache,
724
+ readOffset
725
+ );
726
+ if (headerValue) {
727
+ const frameLengthValue = headerStore.get(headerValue)[frameLength];
728
+ const samplesValue = headerStore.get(headerValue)[samples];
729
+ const frame2 = (yield* codecParser[readRawData](
730
+ frameLengthValue,
731
+ readOffset
732
+ ))[subarray](0, frameLengthValue);
733
+ return new Frame2(headerValue, frame2, samplesValue);
734
+ } else {
735
+ return null;
736
+ }
737
+ }
738
+ constructor(headerValue, dataValue, samplesValue) {
739
+ super(headerValue, dataValue);
740
+ this[header] = headerValue;
741
+ this[samples] = samplesValue;
742
+ this[duration] = samplesValue / headerValue[sampleRate] * 1e3;
743
+ this[frameNumber] = null;
744
+ this[totalBytesOut] = null;
745
+ this[totalSamples] = null;
746
+ this[totalDuration] = null;
747
+ frameStore.get(this)[length] = dataValue[length];
748
+ }
749
+ };
750
+
751
+ // ../../node_modules/codec-parser/src/metadata/ID3v2.js
752
+ var unsynchronizationFlag = "unsynchronizationFlag";
753
+ var extendedHeaderFlag = "extendedHeaderFlag";
754
+ var experimentalFlag = "experimentalFlag";
755
+ var footerPresent = "footerPresent";
756
+ var ID3v2 = class _ID3v2 {
757
+ static *getID3v2Header(codecParser, headerCache, readOffset) {
758
+ const headerLength = 10;
759
+ const header3 = {};
760
+ let data3 = yield* codecParser[readRawData](3, readOffset);
761
+ if (data3[0] !== 73 || data3[1] !== 68 || data3[2] !== 51) return null;
762
+ data3 = yield* codecParser[readRawData](headerLength, readOffset);
763
+ header3[version] = `id3v2.${data3[3]}.${data3[4]}`;
764
+ if (data3[5] & 15) return null;
765
+ header3[unsynchronizationFlag] = !!(data3[5] & 128);
766
+ header3[extendedHeaderFlag] = !!(data3[5] & 64);
767
+ header3[experimentalFlag] = !!(data3[5] & 32);
768
+ header3[footerPresent] = !!(data3[5] & 16);
769
+ if (data3[6] & 128 || data3[7] & 128 || data3[8] & 128 || data3[9] & 128)
770
+ return null;
771
+ const dataLength = data3[6] << 21 | data3[7] << 14 | data3[8] << 7 | data3[9];
772
+ header3[length] = headerLength + dataLength;
773
+ return new _ID3v2(header3);
774
+ }
775
+ constructor(header3) {
776
+ this[version] = header3[version];
777
+ this[unsynchronizationFlag] = header3[unsynchronizationFlag];
778
+ this[extendedHeaderFlag] = header3[extendedHeaderFlag];
779
+ this[experimentalFlag] = header3[experimentalFlag];
780
+ this[footerPresent] = header3[footerPresent];
781
+ this[length] = header3[length];
782
+ }
783
+ };
784
+
785
+ // ../../node_modules/codec-parser/src/codecs/CodecHeader.js
786
+ var CodecHeader = class {
787
+ /**
788
+ * @private
789
+ */
790
+ constructor(header3) {
791
+ headerStore.set(this, header3);
792
+ this[bitDepth] = header3[bitDepth];
793
+ this[bitrate] = null;
794
+ this[channels] = header3[channels];
795
+ this[channelMode] = header3[channelMode];
796
+ this[sampleRate] = header3[sampleRate];
797
+ }
798
+ };
799
+
800
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGHeader.js
801
+ var bitrateMatrix = {
802
+ // bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 & L3
803
+ 0: [free, free, free, free, free],
804
+ 16: [32, 32, 32, 32, 8],
805
+ // 0b00100000: [64, 48, 40, 48, 16,],
806
+ // 0b00110000: [96, 56, 48, 56, 24,],
807
+ // 0b01000000: [128, 64, 56, 64, 32,],
808
+ // 0b01010000: [160, 80, 64, 80, 40,],
809
+ // 0b01100000: [192, 96, 80, 96, 48,],
810
+ // 0b01110000: [224, 112, 96, 112, 56,],
811
+ // 0b10000000: [256, 128, 112, 128, 64,],
812
+ // 0b10010000: [288, 160, 128, 144, 80,],
813
+ // 0b10100000: [320, 192, 160, 160, 96,],
814
+ // 0b10110000: [352, 224, 192, 176, 112,],
815
+ // 0b11000000: [384, 256, 224, 192, 128,],
816
+ // 0b11010000: [416, 320, 256, 224, 144,],
817
+ // 0b11100000: [448, 384, 320, 256, 160,],
818
+ 240: [bad, bad, bad, bad, bad]
819
+ };
820
+ var calcBitrate = (idx, interval, intervalOffset) => 8 * ((idx + intervalOffset) % interval + interval) * (1 << (idx + intervalOffset) / interval) - 8 * interval * (interval / 8 | 0);
821
+ for (let i = 2; i < 15; i++)
822
+ bitrateMatrix[i << 4] = [
823
+ i * 32,
824
+ // V1,L1
825
+ calcBitrate(i, 4, 0),
826
+ // V1,L2
827
+ calcBitrate(i, 4, -1),
828
+ // V1,L3
829
+ calcBitrate(i, 8, 4),
830
+ // V2,L1
831
+ calcBitrate(i, 8, 0)
832
+ // V2,L2 & L3
833
+ ];
834
+ var v1Layer1 = 0;
835
+ var v1Layer2 = 1;
836
+ var v1Layer3 = 2;
837
+ var v2Layer1 = 3;
838
+ var v2Layer23 = 4;
839
+ var bands = "bands ";
840
+ var to31 = " to 31";
841
+ var layer12ModeExtensions = {
842
+ 0: bands + 4 + to31,
843
+ 16: bands + 8 + to31,
844
+ 32: bands + 12 + to31,
845
+ 48: bands + 16 + to31
846
+ };
847
+ var bitrateIndex = "bitrateIndex";
848
+ var v2 = "v2";
849
+ var v1 = "v1";
850
+ var intensityStereo = "Intensity stereo ";
851
+ var msStereo = ", MS stereo ";
852
+ var on = "on";
853
+ var off = "off";
854
+ var layer3ModeExtensions = {
855
+ 0: intensityStereo + off + msStereo + off,
856
+ 16: intensityStereo + on + msStereo + off,
857
+ 32: intensityStereo + off + msStereo + on,
858
+ 48: intensityStereo + on + msStereo + on
859
+ };
860
+ var layersValues = {
861
+ 0: { [description]: reserved },
862
+ 2: {
863
+ [description]: "Layer III",
864
+ [framePadding]: 1,
865
+ [modeExtension]: layer3ModeExtensions,
866
+ [v1]: {
867
+ [bitrateIndex]: v1Layer3,
868
+ [samples]: 1152
869
+ },
870
+ [v2]: {
871
+ [bitrateIndex]: v2Layer23,
872
+ [samples]: 576
873
+ }
874
+ },
875
+ 4: {
876
+ [description]: "Layer II",
877
+ [framePadding]: 1,
878
+ [modeExtension]: layer12ModeExtensions,
879
+ [samples]: 1152,
880
+ [v1]: {
881
+ [bitrateIndex]: v1Layer2
882
+ },
883
+ [v2]: {
884
+ [bitrateIndex]: v2Layer23
885
+ }
886
+ },
887
+ 6: {
888
+ [description]: "Layer I",
889
+ [framePadding]: 4,
890
+ [modeExtension]: layer12ModeExtensions,
891
+ [samples]: 384,
892
+ [v1]: {
893
+ [bitrateIndex]: v1Layer1
894
+ },
895
+ [v2]: {
896
+ [bitrateIndex]: v2Layer1
897
+ }
898
+ }
899
+ };
900
+ var mpegVersionDescription = "MPEG Version ";
901
+ var isoIec = "ISO/IEC ";
902
+ var mpegVersions = {
903
+ 0: {
904
+ [description]: `${mpegVersionDescription}2.5 (later extension of MPEG 2)`,
905
+ [layer]: v2,
906
+ [sampleRate]: {
907
+ 0: rate11025,
908
+ 4: rate12000,
909
+ 8: rate8000,
910
+ 12: reserved
911
+ }
912
+ },
913
+ 8: { [description]: reserved },
914
+ 16: {
915
+ [description]: `${mpegVersionDescription}2 (${isoIec}13818-3)`,
916
+ [layer]: v2,
917
+ [sampleRate]: {
918
+ 0: rate22050,
919
+ 4: rate24000,
920
+ 8: rate16000,
921
+ 12: reserved
922
+ }
923
+ },
924
+ 24: {
925
+ [description]: `${mpegVersionDescription}1 (${isoIec}11172-3)`,
926
+ [layer]: v1,
927
+ [sampleRate]: {
928
+ 0: rate44100,
929
+ 4: rate48000,
930
+ 8: rate32000,
931
+ 12: reserved
932
+ }
933
+ },
934
+ length
935
+ };
936
+ var protectionValues = {
937
+ 0: sixteenBitCRC,
938
+ 1: none
939
+ };
940
+ var emphasisValues = {
941
+ 0: none,
942
+ 1: "50/15 ms",
943
+ 2: reserved,
944
+ 3: "CCIT J.17"
945
+ };
946
+ var channelModes = {
947
+ 0: { [channels]: 2, [description]: stereo },
948
+ 64: { [channels]: 2, [description]: "joint " + stereo },
949
+ 128: { [channels]: 2, [description]: "dual channel" },
950
+ 192: { [channels]: 1, [description]: monophonic }
951
+ };
952
+ var MPEGHeader = class _MPEGHeader extends CodecHeader {
953
+ static *[getHeader](codecParser, headerCache, readOffset) {
954
+ const header3 = {};
955
+ const id3v2Header = yield* ID3v2.getID3v2Header(
956
+ codecParser,
957
+ headerCache,
958
+ readOffset
959
+ );
960
+ if (id3v2Header) {
961
+ yield* codecParser[readRawData](id3v2Header[length], readOffset);
962
+ codecParser[incrementRawData](id3v2Header[length]);
963
+ }
964
+ const data3 = yield* codecParser[readRawData](4, readOffset);
965
+ const key = bytesToString(data3[subarray](0, 4));
966
+ const cachedHeader = headerCache[getHeader](key);
967
+ if (cachedHeader) return new _MPEGHeader(cachedHeader);
968
+ if (data3[0] !== 255 || data3[1] < 224) return null;
969
+ const mpegVersionValues2 = mpegVersions[data3[1] & 24];
970
+ if (mpegVersionValues2[description] === reserved) return null;
971
+ const layerBits = data3[1] & 6;
972
+ if (layersValues[layerBits][description] === reserved) return null;
973
+ const layerValues2 = {
974
+ ...layersValues[layerBits],
975
+ ...layersValues[layerBits][mpegVersionValues2[layer]]
976
+ };
977
+ header3[mpegVersion] = mpegVersionValues2[description];
978
+ header3[layer] = layerValues2[description];
979
+ header3[samples] = layerValues2[samples];
980
+ header3[protection] = protectionValues[data3[1] & 1];
981
+ header3[length] = 4;
982
+ header3[bitrate] = bitrateMatrix[data3[2] & 240][layerValues2[bitrateIndex]];
983
+ if (header3[bitrate] === bad) return null;
984
+ header3[sampleRate] = mpegVersionValues2[sampleRate][data3[2] & 12];
985
+ if (header3[sampleRate] === reserved) return null;
986
+ header3[framePadding] = data3[2] & 2 && layerValues2[framePadding];
987
+ header3[isPrivate] = !!(data3[2] & 1);
988
+ header3[frameLength] = Math.floor(
989
+ 125 * header3[bitrate] * header3[samples] / header3[sampleRate] + header3[framePadding]
990
+ );
991
+ if (!header3[frameLength]) return null;
992
+ const channelModeBits2 = data3[3] & 192;
993
+ header3[channelMode] = channelModes[channelModeBits2][description];
994
+ header3[channels] = channelModes[channelModeBits2][channels];
995
+ header3[modeExtension] = layerValues2[modeExtension][data3[3] & 48];
996
+ header3[isCopyrighted] = !!(data3[3] & 8);
997
+ header3[isOriginal] = !!(data3[3] & 4);
998
+ header3[emphasis] = emphasisValues[data3[3] & 3];
999
+ if (header3[emphasis] === reserved) return null;
1000
+ header3[bitDepth] = 16;
1001
+ {
1002
+ const { length: length2, frameLength: frameLength2, samples: samples2, ...codecUpdateFields } = header3;
1003
+ headerCache[setHeader](key, header3, codecUpdateFields);
1004
+ }
1005
+ return new _MPEGHeader(header3);
1006
+ }
1007
+ /**
1008
+ * @private
1009
+ * Call MPEGHeader.getHeader(Array<Uint8>) to get instance
1010
+ */
1011
+ constructor(header3) {
1012
+ super(header3);
1013
+ this[bitrate] = header3[bitrate];
1014
+ this[emphasis] = header3[emphasis];
1015
+ this[framePadding] = header3[framePadding];
1016
+ this[isCopyrighted] = header3[isCopyrighted];
1017
+ this[isOriginal] = header3[isOriginal];
1018
+ this[isPrivate] = header3[isPrivate];
1019
+ this[layer] = header3[layer];
1020
+ this[modeExtension] = header3[modeExtension];
1021
+ this[mpegVersion] = header3[mpegVersion];
1022
+ this[protection] = header3[protection];
1023
+ }
1024
+ };
1025
+
1026
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGFrame.js
1027
+ var MPEGFrame = class _MPEGFrame extends CodecFrame {
1028
+ static *[getFrame](codecParser, headerCache, readOffset) {
1029
+ return yield* super[getFrame](
1030
+ MPEGHeader,
1031
+ _MPEGFrame,
1032
+ codecParser,
1033
+ headerCache,
1034
+ readOffset
1035
+ );
1036
+ }
1037
+ constructor(header3, frame2, samples2) {
1038
+ super(header3, frame2, samples2);
1039
+ }
1040
+ };
1041
+
1042
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGParser.js
1043
+ var MPEGParser = class extends Parser {
1044
+ constructor(codecParser, headerCache, onCodec) {
1045
+ super(codecParser, headerCache);
1046
+ this.Frame = MPEGFrame;
1047
+ this.Header = MPEGHeader;
1048
+ onCodec(this[codec]);
1049
+ }
1050
+ get [codec]() {
1051
+ return mpeg;
1052
+ }
1053
+ *[parseFrame]() {
1054
+ return yield* this[fixedLengthFrameSync]();
1055
+ }
1056
+ };
1057
+
1058
+ // ../../node_modules/codec-parser/src/codecs/aac/AACHeader.js
1059
+ var mpegVersionValues = {
1060
+ 0: "MPEG-4",
1061
+ 8: "MPEG-2"
1062
+ };
1063
+ var layerValues = {
1064
+ 0: "valid",
1065
+ 2: bad,
1066
+ 4: bad,
1067
+ 6: bad
1068
+ };
1069
+ var protectionValues2 = {
1070
+ 0: sixteenBitCRC,
1071
+ 1: none
1072
+ };
1073
+ var profileValues = {
1074
+ 0: "AAC Main",
1075
+ 64: "AAC LC (Low Complexity)",
1076
+ 128: "AAC SSR (Scalable Sample Rate)",
1077
+ 192: "AAC LTP (Long Term Prediction)"
1078
+ };
1079
+ var sampleRates = {
1080
+ 0: rate96000,
1081
+ 4: rate88200,
1082
+ 8: rate64000,
1083
+ 12: rate48000,
1084
+ 16: rate44100,
1085
+ 20: rate32000,
1086
+ 24: rate24000,
1087
+ 28: rate22050,
1088
+ 32: rate16000,
1089
+ 36: rate12000,
1090
+ 40: rate11025,
1091
+ 44: rate8000,
1092
+ 48: rate7350,
1093
+ 52: reserved,
1094
+ 56: reserved,
1095
+ 60: "frequency is written explicitly"
1096
+ };
1097
+ var channelModeValues = {
1098
+ 0: { [channels]: 0, [description]: "Defined in AOT Specific Config" },
1099
+ /*
1100
+ 'monophonic (mono)'
1101
+ 'stereo (left, right)'
1102
+ 'linear surround (front center, front left, front right)'
1103
+ 'quadraphonic (front center, front left, front right, rear center)'
1104
+ '5.0 surround (front center, front left, front right, rear left, rear right)'
1105
+ '5.1 surround (front center, front left, front right, rear left, rear right, LFE)'
1106
+ '7.1 surround (front center, front left, front right, side left, side right, rear left, rear right, LFE)'
1107
+ */
1108
+ 64: { [channels]: 1, [description]: monophonic },
1109
+ 128: { [channels]: 2, [description]: getChannelMapping(2, channelMappings[0][0]) },
1110
+ 192: { [channels]: 3, [description]: getChannelMapping(3, channelMappings[1][3]) },
1111
+ 256: { [channels]: 4, [description]: getChannelMapping(4, channelMappings[1][3], channelMappings[3][4]) },
1112
+ 320: { [channels]: 5, [description]: getChannelMapping(5, channelMappings[1][3], channelMappings[3][0]) },
1113
+ 384: { [channels]: 6, [description]: getChannelMapping(6, channelMappings[1][3], channelMappings[3][0], lfe) },
1114
+ 448: { [channels]: 8, [description]: getChannelMapping(8, channelMappings[1][3], channelMappings[2][0], channelMappings[3][0], lfe) }
1115
+ };
1116
+ var AACHeader = class _AACHeader extends CodecHeader {
1117
+ static *[getHeader](codecParser, headerCache, readOffset) {
1118
+ const header3 = {};
1119
+ const data3 = yield* codecParser[readRawData](7, readOffset);
1120
+ const key = bytesToString([
1121
+ data3[0],
1122
+ data3[1],
1123
+ data3[2],
1124
+ data3[3] & 252 | data3[6] & 3
1125
+ // frame length, buffer fullness varies so don't cache it
1126
+ ]);
1127
+ const cachedHeader = headerCache[getHeader](key);
1128
+ if (!cachedHeader) {
1129
+ if (data3[0] !== 255 || data3[1] < 240) return null;
1130
+ header3[mpegVersion] = mpegVersionValues[data3[1] & 8];
1131
+ header3[layer] = layerValues[data3[1] & 6];
1132
+ if (header3[layer] === bad) return null;
1133
+ const protectionBit = data3[1] & 1;
1134
+ header3[protection] = protectionValues2[protectionBit];
1135
+ header3[length] = protectionBit ? 7 : 9;
1136
+ header3[profileBits] = data3[2] & 192;
1137
+ header3[sampleRateBits] = data3[2] & 60;
1138
+ const privateBit = data3[2] & 2;
1139
+ header3[profile] = profileValues[header3[profileBits]];
1140
+ header3[sampleRate] = sampleRates[header3[sampleRateBits]];
1141
+ if (header3[sampleRate] === reserved) return null;
1142
+ header3[isPrivate] = !!privateBit;
1143
+ header3[channelModeBits] = (data3[2] << 8 | data3[3]) & 448;
1144
+ header3[channelMode] = channelModeValues[header3[channelModeBits]][description];
1145
+ header3[channels] = channelModeValues[header3[channelModeBits]][channels];
1146
+ header3[isOriginal] = !!(data3[3] & 32);
1147
+ header3[isHome] = !!(data3[3] & 8);
1148
+ header3[copyrightId] = !!(data3[3] & 8);
1149
+ header3[copyrightIdStart] = !!(data3[3] & 4);
1150
+ header3[bitDepth] = 16;
1151
+ header3[samples] = 1024;
1152
+ header3[numberAACFrames] = data3[6] & 3;
1153
+ {
1154
+ const {
1155
+ length: length2,
1156
+ channelModeBits: channelModeBits2,
1157
+ profileBits: profileBits2,
1158
+ sampleRateBits: sampleRateBits2,
1159
+ frameLength: frameLength2,
1160
+ samples: samples2,
1161
+ numberAACFrames: numberAACFrames2,
1162
+ ...codecUpdateFields
1163
+ } = header3;
1164
+ headerCache[setHeader](key, header3, codecUpdateFields);
1165
+ }
1166
+ } else {
1167
+ Object.assign(header3, cachedHeader);
1168
+ }
1169
+ header3[frameLength] = (data3[3] << 11 | data3[4] << 3 | data3[5] >> 5) & 8191;
1170
+ if (!header3[frameLength]) return null;
1171
+ const bufferFullnessBits = (data3[5] << 6 | data3[6] >> 2) & 2047;
1172
+ header3[bufferFullness] = bufferFullnessBits === 2047 ? "VBR" : bufferFullnessBits;
1173
+ return new _AACHeader(header3);
1174
+ }
1175
+ /**
1176
+ * @private
1177
+ * Call AACHeader.getHeader(Array<Uint8>) to get instance
1178
+ */
1179
+ constructor(header3) {
1180
+ super(header3);
1181
+ this[copyrightId] = header3[copyrightId];
1182
+ this[copyrightIdStart] = header3[copyrightIdStart];
1183
+ this[bufferFullness] = header3[bufferFullness];
1184
+ this[isHome] = header3[isHome];
1185
+ this[isOriginal] = header3[isOriginal];
1186
+ this[isPrivate] = header3[isPrivate];
1187
+ this[layer] = header3[layer];
1188
+ this[length] = header3[length];
1189
+ this[mpegVersion] = header3[mpegVersion];
1190
+ this[numberAACFrames] = header3[numberAACFrames];
1191
+ this[profile] = header3[profile];
1192
+ this[protection] = header3[protection];
1193
+ }
1194
+ get audioSpecificConfig() {
1195
+ const header3 = headerStore.get(this);
1196
+ const audioSpecificConfig = header3[profileBits] + 64 << 5 | header3[sampleRateBits] << 5 | header3[channelModeBits] >> 3;
1197
+ const bytes = new uint8Array(2);
1198
+ new dataView(bytes[buffer]).setUint16(0, audioSpecificConfig, false);
1199
+ return bytes;
1200
+ }
1201
+ };
1202
+
1203
+ // ../../node_modules/codec-parser/src/codecs/aac/AACFrame.js
1204
+ var AACFrame = class _AACFrame extends CodecFrame {
1205
+ static *[getFrame](codecParser, headerCache, readOffset) {
1206
+ return yield* super[getFrame](
1207
+ AACHeader,
1208
+ _AACFrame,
1209
+ codecParser,
1210
+ headerCache,
1211
+ readOffset
1212
+ );
1213
+ }
1214
+ constructor(header3, frame2, samples2) {
1215
+ super(header3, frame2, samples2);
1216
+ }
1217
+ };
1218
+
1219
+ // ../../node_modules/codec-parser/src/codecs/aac/AACParser.js
1220
+ var AACParser = class extends Parser {
1221
+ constructor(codecParser, headerCache, onCodec) {
1222
+ super(codecParser, headerCache);
1223
+ this.Frame = AACFrame;
1224
+ this.Header = AACHeader;
1225
+ onCodec(this[codec]);
1226
+ }
1227
+ get [codec]() {
1228
+ return "aac";
1229
+ }
1230
+ *[parseFrame]() {
1231
+ return yield* this[fixedLengthFrameSync]();
1232
+ }
1233
+ };
1234
+
1235
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACFrame.js
1236
+ var FLACFrame = class _FLACFrame extends CodecFrame {
1237
+ static _getFrameFooterCrc16(data3) {
1238
+ return (data3[data3[length] - 2] << 8) + data3[data3[length] - 1];
1239
+ }
1240
+ // check frame footer crc
1241
+ // https://xiph.org/flac/format.html#frame_footer
1242
+ static [checkFrameFooterCrc16](data3) {
1243
+ const expectedCrc16 = _FLACFrame._getFrameFooterCrc16(data3);
1244
+ const actualCrc16 = flacCrc16(data3[subarray](0, -2));
1245
+ return expectedCrc16 === actualCrc16;
1246
+ }
1247
+ constructor(data3, header3, streamInfoValue) {
1248
+ header3[streamInfo] = streamInfoValue;
1249
+ header3[crc16] = _FLACFrame._getFrameFooterCrc16(data3);
1250
+ super(header3, data3, headerStore.get(header3)[samples]);
1251
+ }
1252
+ };
1253
+
1254
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACHeader.js
1255
+ var getFromStreamInfo = "get from STREAMINFO metadata block";
1256
+ var blockingStrategyValues = {
1257
+ 0: "Fixed",
1258
+ 1: "Variable"
1259
+ };
1260
+ var blockSizeValues = {
1261
+ 0: reserved,
1262
+ 16: 192
1263
+ // 0b00100000: 576,
1264
+ // 0b00110000: 1152,
1265
+ // 0b01000000: 2304,
1266
+ // 0b01010000: 4608,
1267
+ // 0b01100000: "8-bit (blocksize-1) from end of header",
1268
+ // 0b01110000: "16-bit (blocksize-1) from end of header",
1269
+ // 0b10000000: 256,
1270
+ // 0b10010000: 512,
1271
+ // 0b10100000: 1024,
1272
+ // 0b10110000: 2048,
1273
+ // 0b11000000: 4096,
1274
+ // 0b11010000: 8192,
1275
+ // 0b11100000: 16384,
1276
+ // 0b11110000: 32768,
1277
+ };
1278
+ for (let i = 2; i < 16; i++)
1279
+ blockSizeValues[i << 4] = i < 6 ? 576 * 2 ** (i - 2) : 2 ** i;
1280
+ var sampleRateValues = {
1281
+ 0: getFromStreamInfo,
1282
+ 1: rate88200,
1283
+ 2: rate176400,
1284
+ 3: rate192000,
1285
+ 4: rate8000,
1286
+ 5: rate16000,
1287
+ 6: rate22050,
1288
+ 7: rate24000,
1289
+ 8: rate32000,
1290
+ 9: rate44100,
1291
+ 10: rate48000,
1292
+ 11: rate96000,
1293
+ // 0b00001100: "8-bit sample rate (in kHz) from end of header",
1294
+ // 0b00001101: "16-bit sample rate (in Hz) from end of header",
1295
+ // 0b00001110: "16-bit sample rate (in tens of Hz) from end of header",
1296
+ 15: bad
1297
+ };
1298
+ var channelAssignments = {
1299
+ /*'
1300
+ 'monophonic (mono)'
1301
+ 'stereo (left, right)'
1302
+ 'linear surround (left, right, center)'
1303
+ 'quadraphonic (front left, front right, rear left, rear right)'
1304
+ '5.0 surround (front left, front right, front center, rear left, rear right)'
1305
+ '5.1 surround (front left, front right, front center, LFE, rear left, rear right)'
1306
+ '6.1 surround (front left, front right, front center, LFE, rear center, side left, side right)'
1307
+ '7.1 surround (front left, front right, front center, LFE, rear left, rear right, side left, side right)'
1308
+ */
1309
+ 0: { [channels]: 1, [description]: monophonic },
1310
+ 16: { [channels]: 2, [description]: getChannelMapping(2, channelMappings[0][0]) },
1311
+ 32: { [channels]: 3, [description]: getChannelMapping(3, channelMappings[0][1]) },
1312
+ 48: { [channels]: 4, [description]: getChannelMapping(4, channelMappings[1][0], channelMappings[3][0]) },
1313
+ 64: { [channels]: 5, [description]: getChannelMapping(5, channelMappings[1][1], channelMappings[3][0]) },
1314
+ 80: { [channels]: 6, [description]: getChannelMapping(6, channelMappings[1][1], lfe, channelMappings[3][0]) },
1315
+ 96: { [channels]: 7, [description]: getChannelMapping(7, channelMappings[1][1], lfe, channelMappings[3][4], channelMappings[2][0]) },
1316
+ 112: { [channels]: 8, [description]: getChannelMapping(8, channelMappings[1][1], lfe, channelMappings[3][0], channelMappings[2][0]) },
1317
+ 128: { [channels]: 2, [description]: `${stereo} (left, diff)` },
1318
+ 144: { [channels]: 2, [description]: `${stereo} (diff, right)` },
1319
+ 160: { [channels]: 2, [description]: `${stereo} (avg, diff)` },
1320
+ 176: reserved,
1321
+ 192: reserved,
1322
+ 208: reserved,
1323
+ 224: reserved,
1324
+ 240: reserved
1325
+ };
1326
+ var bitDepthValues = {
1327
+ 0: getFromStreamInfo,
1328
+ 2: 8,
1329
+ 4: 12,
1330
+ 6: reserved,
1331
+ 8: 16,
1332
+ 10: 20,
1333
+ 12: 24,
1334
+ 14: reserved
1335
+ };
1336
+ var FLACHeader = class _FLACHeader extends CodecHeader {
1337
+ // https://datatracker.ietf.org/doc/html/rfc3629#section-3
1338
+ // Char. number range | UTF-8 octet sequence
1339
+ // (hexadecimal) | (binary)
1340
+ // --------------------+---------------------------------------------
1341
+ // 0000 0000-0000 007F | 0xxxxxxx
1342
+ // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
1343
+ // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
1344
+ // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
1345
+ static _decodeUTF8Int(data3) {
1346
+ if (data3[0] > 254) {
1347
+ return null;
1348
+ }
1349
+ if (data3[0] < 128) return { value: data3[0], length: 1 };
1350
+ let length2 = 1;
1351
+ for (let zeroMask = 64; zeroMask & data3[0]; zeroMask >>= 1) length2++;
1352
+ let idx = length2 - 1, value = 0, shift = 0;
1353
+ for (; idx > 0; shift += 6, idx--) {
1354
+ if ((data3[idx] & 192) !== 128) {
1355
+ return null;
1356
+ }
1357
+ value |= (data3[idx] & 63) << shift;
1358
+ }
1359
+ value |= (data3[idx] & 127 >> length2) << shift;
1360
+ return { value, length: length2 };
1361
+ }
1362
+ static [getHeaderFromUint8Array](data3, headerCache) {
1363
+ const codecParserStub = {
1364
+ [readRawData]: function* () {
1365
+ return data3;
1366
+ }
1367
+ };
1368
+ return _FLACHeader[getHeader](codecParserStub, headerCache, 0).next().value;
1369
+ }
1370
+ static *[getHeader](codecParser, headerCache, readOffset) {
1371
+ let data3 = yield* codecParser[readRawData](6, readOffset);
1372
+ if (data3[0] !== 255 || !(data3[1] === 248 || data3[1] === 249)) {
1373
+ return null;
1374
+ }
1375
+ const header3 = {};
1376
+ const key = bytesToString(data3[subarray](0, 4));
1377
+ const cachedHeader = headerCache[getHeader](key);
1378
+ if (!cachedHeader) {
1379
+ header3[blockingStrategyBits] = data3[1] & 1;
1380
+ header3[blockingStrategy] = blockingStrategyValues[header3[blockingStrategyBits]];
1381
+ header3[blockSizeBits] = data3[2] & 240;
1382
+ header3[sampleRateBits] = data3[2] & 15;
1383
+ header3[blockSize] = blockSizeValues[header3[blockSizeBits]];
1384
+ if (header3[blockSize] === reserved) {
1385
+ return null;
1386
+ }
1387
+ header3[sampleRate] = sampleRateValues[header3[sampleRateBits]];
1388
+ if (header3[sampleRate] === bad) {
1389
+ return null;
1390
+ }
1391
+ if (data3[3] & 1) {
1392
+ return null;
1393
+ }
1394
+ const channelAssignment = channelAssignments[data3[3] & 240];
1395
+ if (channelAssignment === reserved) {
1396
+ return null;
1397
+ }
1398
+ header3[channels] = channelAssignment[channels];
1399
+ header3[channelMode] = channelAssignment[description];
1400
+ header3[bitDepth] = bitDepthValues[data3[3] & 14];
1401
+ if (header3[bitDepth] === reserved) {
1402
+ return null;
1403
+ }
1404
+ } else {
1405
+ Object.assign(header3, cachedHeader);
1406
+ }
1407
+ header3[length] = 5;
1408
+ data3 = yield* codecParser[readRawData](header3[length] + 8, readOffset);
1409
+ const decodedUtf8 = _FLACHeader._decodeUTF8Int(data3[subarray](4));
1410
+ if (!decodedUtf8) {
1411
+ return null;
1412
+ }
1413
+ if (header3[blockingStrategyBits]) {
1414
+ header3[sampleNumber] = decodedUtf8.value;
1415
+ } else {
1416
+ header3[frameNumber] = decodedUtf8.value;
1417
+ }
1418
+ header3[length] += decodedUtf8[length];
1419
+ if (header3[blockSizeBits] === 96) {
1420
+ if (data3[length] < header3[length])
1421
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1422
+ header3[blockSize] = data3[header3[length] - 1] + 1;
1423
+ header3[length] += 1;
1424
+ } else if (header3[blockSizeBits] === 112) {
1425
+ if (data3[length] < header3[length])
1426
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1427
+ header3[blockSize] = (data3[header3[length] - 1] << 8) + data3[header3[length]] + 1;
1428
+ header3[length] += 2;
1429
+ }
1430
+ header3[samples] = header3[blockSize];
1431
+ if (header3[sampleRateBits] === 12) {
1432
+ if (data3[length] < header3[length])
1433
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1434
+ header3[sampleRate] = data3[header3[length] - 1] * 1e3;
1435
+ header3[length] += 1;
1436
+ } else if (header3[sampleRateBits] === 13) {
1437
+ if (data3[length] < header3[length])
1438
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1439
+ header3[sampleRate] = (data3[header3[length] - 1] << 8) + data3[header3[length]];
1440
+ header3[length] += 2;
1441
+ } else if (header3[sampleRateBits] === 14) {
1442
+ if (data3[length] < header3[length])
1443
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1444
+ header3[sampleRate] = ((data3[header3[length] - 1] << 8) + data3[header3[length]]) * 10;
1445
+ header3[length] += 2;
1446
+ }
1447
+ if (data3[length] < header3[length])
1448
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1449
+ header3[crc] = data3[header3[length] - 1];
1450
+ if (header3[crc] !== crc8(data3[subarray](0, header3[length] - 1))) {
1451
+ return null;
1452
+ }
1453
+ {
1454
+ if (!cachedHeader) {
1455
+ const {
1456
+ blockingStrategyBits: blockingStrategyBits2,
1457
+ frameNumber: frameNumber2,
1458
+ sampleNumber: sampleNumber2,
1459
+ samples: samples2,
1460
+ sampleRateBits: sampleRateBits2,
1461
+ blockSizeBits: blockSizeBits2,
1462
+ crc: crc2,
1463
+ length: length2,
1464
+ ...codecUpdateFields
1465
+ } = header3;
1466
+ headerCache[setHeader](key, header3, codecUpdateFields);
1467
+ }
1468
+ }
1469
+ return new _FLACHeader(header3);
1470
+ }
1471
+ /**
1472
+ * @private
1473
+ * Call FLACHeader.getHeader(Array<Uint8>) to get instance
1474
+ */
1475
+ constructor(header3) {
1476
+ super(header3);
1477
+ this[crc16] = null;
1478
+ this[blockingStrategy] = header3[blockingStrategy];
1479
+ this[blockSize] = header3[blockSize];
1480
+ this[frameNumber] = header3[frameNumber];
1481
+ this[sampleNumber] = header3[sampleNumber];
1482
+ this[streamInfo] = null;
1483
+ }
1484
+ };
1485
+
1486
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACParser.js
1487
+ var MIN_FLAC_FRAME_SIZE = 2;
1488
+ var MAX_FLAC_FRAME_SIZE = 512 * 1024;
1489
+ var FLACParser = class extends Parser {
1490
+ constructor(codecParser, headerCache, onCodec) {
1491
+ super(codecParser, headerCache);
1492
+ this.Frame = FLACFrame;
1493
+ this.Header = FLACHeader;
1494
+ onCodec(this[codec]);
1495
+ }
1496
+ get [codec]() {
1497
+ return "flac";
1498
+ }
1499
+ *_getNextFrameSyncOffset(offset) {
1500
+ const data3 = yield* this._codecParser[readRawData](2, 0);
1501
+ const dataLength = data3[length] - 2;
1502
+ while (offset < dataLength) {
1503
+ const firstByte = data3[offset];
1504
+ if (firstByte === 255) {
1505
+ const secondByte = data3[offset + 1];
1506
+ if (secondByte === 248 || secondByte === 249) break;
1507
+ if (secondByte !== 255) offset++;
1508
+ }
1509
+ offset++;
1510
+ }
1511
+ return offset;
1512
+ }
1513
+ *[parseFrame]() {
1514
+ do {
1515
+ const header3 = yield* FLACHeader[getHeader](
1516
+ this._codecParser,
1517
+ this._headerCache,
1518
+ 0
1519
+ );
1520
+ if (header3) {
1521
+ let nextHeaderOffset = headerStore.get(header3)[length] + MIN_FLAC_FRAME_SIZE;
1522
+ while (nextHeaderOffset <= MAX_FLAC_FRAME_SIZE) {
1523
+ if (this._codecParser._flushing || (yield* FLACHeader[getHeader](
1524
+ this._codecParser,
1525
+ this._headerCache,
1526
+ nextHeaderOffset
1527
+ ))) {
1528
+ let frameData = yield* this._codecParser[readRawData](nextHeaderOffset);
1529
+ if (!this._codecParser._flushing)
1530
+ frameData = frameData[subarray](0, nextHeaderOffset);
1531
+ if (FLACFrame[checkFrameFooterCrc16](frameData)) {
1532
+ const frame2 = new FLACFrame(frameData, header3);
1533
+ this._headerCache[enable]();
1534
+ this._codecParser[incrementRawData](nextHeaderOffset);
1535
+ this._codecParser[mapFrameStats](frame2);
1536
+ return frame2;
1537
+ }
1538
+ }
1539
+ nextHeaderOffset = yield* this._getNextFrameSyncOffset(
1540
+ nextHeaderOffset + 1
1541
+ );
1542
+ }
1543
+ this._codecParser[logWarning](
1544
+ `Unable to sync FLAC frame after searching ${nextHeaderOffset} bytes.`
1545
+ );
1546
+ this._codecParser[incrementRawData](nextHeaderOffset);
1547
+ } else {
1548
+ this._codecParser[incrementRawData](
1549
+ yield* this._getNextFrameSyncOffset(1)
1550
+ );
1551
+ }
1552
+ } while (true);
1553
+ }
1554
+ [parseOggPage](oggPage) {
1555
+ if (oggPage[pageSequenceNumber] === 0) {
1556
+ this._headerCache[enable]();
1557
+ this._streamInfo = oggPage[data][subarray](13);
1558
+ } else if (oggPage[pageSequenceNumber] === 1) {
1559
+ } else {
1560
+ oggPage[codecFrames] = frameStore.get(oggPage)[segments].map((segment) => {
1561
+ const header3 = FLACHeader[getHeaderFromUint8Array](
1562
+ segment,
1563
+ this._headerCache
1564
+ );
1565
+ if (header3) {
1566
+ return new FLACFrame(segment, header3, this._streamInfo);
1567
+ } else {
1568
+ this._codecParser[logWarning](
1569
+ "Failed to parse Ogg FLAC frame",
1570
+ "Skipping invalid FLAC frame"
1571
+ );
1572
+ }
1573
+ }).filter((frame2) => !!frame2);
1574
+ }
1575
+ return oggPage;
1576
+ }
1577
+ };
1578
+
1579
+ // ../../node_modules/codec-parser/src/containers/ogg/OggPageHeader.js
1580
+ var OggPageHeader = class _OggPageHeader {
1581
+ static *[getHeader](codecParser, headerCache, readOffset) {
1582
+ const header3 = {};
1583
+ let data3 = yield* codecParser[readRawData](28, readOffset);
1584
+ if (data3[0] !== 79 || // O
1585
+ data3[1] !== 103 || // g
1586
+ data3[2] !== 103 || // g
1587
+ data3[3] !== 83) {
1588
+ return null;
1589
+ }
1590
+ header3[streamStructureVersion] = data3[4];
1591
+ const zeros = data3[5] & 248;
1592
+ if (zeros) return null;
1593
+ header3[isLastPage] = !!(data3[5] & 4);
1594
+ header3[isFirstPage] = !!(data3[5] & 2);
1595
+ header3[isContinuedPacket] = !!(data3[5] & 1);
1596
+ const view = new dataView(uint8Array.from(data3[subarray](0, 28))[buffer]);
1597
+ header3[absoluteGranulePosition] = readInt64le(view, 6);
1598
+ header3[streamSerialNumber] = view.getInt32(14, true);
1599
+ header3[pageSequenceNumber] = view.getInt32(18, true);
1600
+ header3[pageChecksum] = view.getInt32(22, true);
1601
+ const pageSegmentTableLength = data3[26];
1602
+ header3[length] = pageSegmentTableLength + 27;
1603
+ data3 = yield* codecParser[readRawData](header3[length], readOffset);
1604
+ header3[frameLength] = 0;
1605
+ header3[pageSegmentTable] = [];
1606
+ header3[pageSegmentBytes] = uint8Array.from(
1607
+ data3[subarray](27, header3[length])
1608
+ );
1609
+ for (let i = 0, segmentLength = 0; i < pageSegmentTableLength; i++) {
1610
+ const segmentByte = header3[pageSegmentBytes][i];
1611
+ header3[frameLength] += segmentByte;
1612
+ segmentLength += segmentByte;
1613
+ if (segmentByte !== 255 || i === pageSegmentTableLength - 1) {
1614
+ header3[pageSegmentTable].push(segmentLength);
1615
+ segmentLength = 0;
1616
+ }
1617
+ }
1618
+ return new _OggPageHeader(header3);
1619
+ }
1620
+ /**
1621
+ * @private
1622
+ * Call OggPageHeader.getHeader(Array<Uint8>) to get instance
1623
+ */
1624
+ constructor(header3) {
1625
+ headerStore.set(this, header3);
1626
+ this[absoluteGranulePosition] = header3[absoluteGranulePosition];
1627
+ this[isContinuedPacket] = header3[isContinuedPacket];
1628
+ this[isFirstPage] = header3[isFirstPage];
1629
+ this[isLastPage] = header3[isLastPage];
1630
+ this[pageSegmentTable] = header3[pageSegmentTable];
1631
+ this[pageSequenceNumber] = header3[pageSequenceNumber];
1632
+ this[pageChecksum] = header3[pageChecksum];
1633
+ this[streamSerialNumber] = header3[streamSerialNumber];
1634
+ }
1635
+ };
1636
+
1637
+ // ../../node_modules/codec-parser/src/containers/ogg/OggPage.js
1638
+ var OggPage = class _OggPage extends Frame {
1639
+ static *[getFrame](codecParser, headerCache, readOffset) {
1640
+ const header3 = yield* OggPageHeader[getHeader](
1641
+ codecParser,
1642
+ headerCache,
1643
+ readOffset
1644
+ );
1645
+ if (header3) {
1646
+ const frameLengthValue = headerStore.get(header3)[frameLength];
1647
+ const headerLength = headerStore.get(header3)[length];
1648
+ const totalLength = headerLength + frameLengthValue;
1649
+ const rawDataValue = (yield* codecParser[readRawData](totalLength, 0))[subarray](0, totalLength);
1650
+ const frame2 = rawDataValue[subarray](headerLength, totalLength);
1651
+ return new _OggPage(header3, frame2, rawDataValue);
1652
+ } else {
1653
+ return null;
1654
+ }
1655
+ }
1656
+ constructor(header3, frame2, rawDataValue) {
1657
+ super(header3, frame2);
1658
+ frameStore.get(this)[length] = rawDataValue[length];
1659
+ this[codecFrames] = [];
1660
+ this[rawData] = rawDataValue;
1661
+ this[absoluteGranulePosition] = header3[absoluteGranulePosition];
1662
+ this[crc32] = header3[pageChecksum];
1663
+ this[duration] = 0;
1664
+ this[isContinuedPacket] = header3[isContinuedPacket];
1665
+ this[isFirstPage] = header3[isFirstPage];
1666
+ this[isLastPage] = header3[isLastPage];
1667
+ this[pageSequenceNumber] = header3[pageSequenceNumber];
1668
+ this[samples] = 0;
1669
+ this[streamSerialNumber] = header3[streamSerialNumber];
1670
+ }
1671
+ };
1672
+
1673
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusFrame.js
1674
+ var OpusFrame = class extends CodecFrame {
1675
+ constructor(data3, header3, samples2) {
1676
+ super(header3, data3, samples2);
1677
+ }
1678
+ };
1679
+
1680
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusHeader.js
1681
+ var channelMappingFamilies = {
1682
+ 0: vorbisOpusChannelMapping.slice(0, 2),
1683
+ /*
1684
+ 0: "monophonic (mono)"
1685
+ 1: "stereo (left, right)"
1686
+ */
1687
+ 1: vorbisOpusChannelMapping
1688
+ /*
1689
+ 0: "monophonic (mono)"
1690
+ 1: "stereo (left, right)"
1691
+ 2: "linear surround (left, center, right)"
1692
+ 3: "quadraphonic (front left, front right, rear left, rear right)"
1693
+ 4: "5.0 surround (front left, front center, front right, rear left, rear right)"
1694
+ 5: "5.1 surround (front left, front center, front right, rear left, rear right, LFE)"
1695
+ 6: "6.1 surround (front left, front center, front right, side left, side right, rear center, LFE)"
1696
+ 7: "7.1 surround (front left, front center, front right, side left, side right, rear left, rear right, LFE)"
1697
+ */
1698
+ // additional channel mappings are user defined
1699
+ };
1700
+ var silkOnly = "SILK-only";
1701
+ var celtOnly = "CELT-only";
1702
+ var hybrid = "Hybrid";
1703
+ var narrowBand = "narrowband";
1704
+ var mediumBand = "medium-band";
1705
+ var wideBand = "wideband";
1706
+ var superWideBand = "super-wideband";
1707
+ var fullBand = "fullband";
1708
+ var configTable = {
1709
+ 0: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 10 },
1710
+ 8: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 20 },
1711
+ 16: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 40 },
1712
+ 24: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 60 },
1713
+ 32: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 10 },
1714
+ 40: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 20 },
1715
+ 48: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 40 },
1716
+ 56: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 60 },
1717
+ 64: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 10 },
1718
+ 72: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 20 },
1719
+ 80: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 40 },
1720
+ 88: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 60 },
1721
+ 96: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 10 },
1722
+ 104: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 20 },
1723
+ 112: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 10 },
1724
+ 120: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 20 },
1725
+ 128: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 2.5 },
1726
+ 136: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 5 },
1727
+ 144: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 10 },
1728
+ 152: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 20 },
1729
+ 160: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 2.5 },
1730
+ 168: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 5 },
1731
+ 176: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 10 },
1732
+ 184: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 20 },
1733
+ 192: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 2.5 },
1734
+ 200: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 5 },
1735
+ 208: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 10 },
1736
+ 216: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 20 },
1737
+ 224: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 2.5 },
1738
+ 232: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 5 },
1739
+ 240: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 10 },
1740
+ 248: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 20 }
1741
+ };
1742
+ var OpusHeader = class _OpusHeader extends CodecHeader {
1743
+ static [getHeaderFromUint8Array](dataValue, packetData, headerCache) {
1744
+ const header3 = {};
1745
+ header3[channels] = dataValue[9];
1746
+ header3[channelMappingFamily] = dataValue[18];
1747
+ header3[length] = header3[channelMappingFamily] !== 0 ? 21 + header3[channels] : 19;
1748
+ if (dataValue[length] < header3[length])
1749
+ throw new Error("Out of data while inside an Ogg Page");
1750
+ const packetMode = packetData[0] & 3;
1751
+ const packetLength = packetMode === 3 ? 2 : 1;
1752
+ const key = bytesToString(dataValue[subarray](0, header3[length])) + bytesToString(packetData[subarray](0, packetLength));
1753
+ const cachedHeader = headerCache[getHeader](key);
1754
+ if (cachedHeader) return new _OpusHeader(cachedHeader);
1755
+ if (key.substr(0, 8) !== "OpusHead") {
1756
+ return null;
1757
+ }
1758
+ if (dataValue[8] !== 1) return null;
1759
+ header3[data] = uint8Array.from(dataValue[subarray](0, header3[length]));
1760
+ const view = new dataView(header3[data][buffer]);
1761
+ header3[bitDepth] = 16;
1762
+ header3[preSkip] = view.getUint16(10, true);
1763
+ header3[inputSampleRate] = view.getUint32(12, true);
1764
+ header3[sampleRate] = rate48000;
1765
+ header3[outputGain] = view.getInt16(16, true);
1766
+ if (header3[channelMappingFamily] in channelMappingFamilies) {
1767
+ header3[channelMode] = channelMappingFamilies[header3[channelMappingFamily]][header3[channels] - 1];
1768
+ if (!header3[channelMode]) return null;
1769
+ }
1770
+ if (header3[channelMappingFamily] !== 0) {
1771
+ header3[streamCount] = dataValue[19];
1772
+ header3[coupledStreamCount] = dataValue[20];
1773
+ header3[channelMappingTable] = [
1774
+ ...dataValue[subarray](21, header3[channels] + 21)
1775
+ ];
1776
+ }
1777
+ const packetConfig = configTable[248 & packetData[0]];
1778
+ header3[mode] = packetConfig[mode];
1779
+ header3[bandwidth] = packetConfig[bandwidth];
1780
+ header3[frameSize] = packetConfig[frameSize];
1781
+ switch (packetMode) {
1782
+ case 0:
1783
+ header3[frameCount] = 1;
1784
+ break;
1785
+ case 1:
1786
+ // 1: 2 frames in the packet, each with equal compressed size
1787
+ case 2:
1788
+ header3[frameCount] = 2;
1789
+ break;
1790
+ case 3:
1791
+ header3[isVbr] = !!(128 & packetData[1]);
1792
+ header3[hasOpusPadding] = !!(64 & packetData[1]);
1793
+ header3[frameCount] = 63 & packetData[1];
1794
+ break;
1795
+ default:
1796
+ return null;
1797
+ }
1798
+ {
1799
+ const {
1800
+ length: length2,
1801
+ data: headerData,
1802
+ channelMappingFamily: channelMappingFamily2,
1803
+ ...codecUpdateFields
1804
+ } = header3;
1805
+ headerCache[setHeader](key, header3, codecUpdateFields);
1806
+ }
1807
+ return new _OpusHeader(header3);
1808
+ }
1809
+ /**
1810
+ * @private
1811
+ * Call OpusHeader.getHeader(Array<Uint8>) to get instance
1812
+ */
1813
+ constructor(header3) {
1814
+ super(header3);
1815
+ this[data] = header3[data];
1816
+ this[bandwidth] = header3[bandwidth];
1817
+ this[channelMappingFamily] = header3[channelMappingFamily];
1818
+ this[channelMappingTable] = header3[channelMappingTable];
1819
+ this[coupledStreamCount] = header3[coupledStreamCount];
1820
+ this[frameCount] = header3[frameCount];
1821
+ this[frameSize] = header3[frameSize];
1822
+ this[hasOpusPadding] = header3[hasOpusPadding];
1823
+ this[inputSampleRate] = header3[inputSampleRate];
1824
+ this[isVbr] = header3[isVbr];
1825
+ this[mode] = header3[mode];
1826
+ this[outputGain] = header3[outputGain];
1827
+ this[preSkip] = header3[preSkip];
1828
+ this[streamCount] = header3[streamCount];
1829
+ }
1830
+ };
1831
+
1832
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusParser.js
1833
+ var OpusParser = class extends Parser {
1834
+ constructor(codecParser, headerCache, onCodec) {
1835
+ super(codecParser, headerCache);
1836
+ this.Frame = OpusFrame;
1837
+ this.Header = OpusHeader;
1838
+ onCodec(this[codec]);
1839
+ this._identificationHeader = null;
1840
+ this._preSkipRemaining = null;
1841
+ }
1842
+ get [codec]() {
1843
+ return "opus";
1844
+ }
1845
+ /**
1846
+ * @todo implement continued page support
1847
+ */
1848
+ [parseOggPage](oggPage) {
1849
+ if (oggPage[pageSequenceNumber] === 0) {
1850
+ this._headerCache[enable]();
1851
+ this._identificationHeader = oggPage[data];
1852
+ } else if (oggPage[pageSequenceNumber] === 1) {
1853
+ } else {
1854
+ oggPage[codecFrames] = frameStore.get(oggPage)[segments].map((segment) => {
1855
+ const header3 = OpusHeader[getHeaderFromUint8Array](
1856
+ this._identificationHeader,
1857
+ segment,
1858
+ this._headerCache
1859
+ );
1860
+ if (header3) {
1861
+ if (this._preSkipRemaining === null)
1862
+ this._preSkipRemaining = header3[preSkip];
1863
+ let samples2 = header3[frameSize] * header3[frameCount] / 1e3 * header3[sampleRate];
1864
+ if (this._preSkipRemaining > 0) {
1865
+ this._preSkipRemaining -= samples2;
1866
+ samples2 = this._preSkipRemaining < 0 ? -this._preSkipRemaining : 0;
1867
+ }
1868
+ return new OpusFrame(segment, header3, samples2);
1869
+ }
1870
+ this._codecParser[logError2](
1871
+ "Failed to parse Ogg Opus Header",
1872
+ "Not a valid Ogg Opus file"
1873
+ );
1874
+ });
1875
+ }
1876
+ return oggPage;
1877
+ }
1878
+ };
1879
+
1880
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisFrame.js
1881
+ var VorbisFrame = class extends CodecFrame {
1882
+ constructor(data3, header3, samples2) {
1883
+ super(header3, data3, samples2);
1884
+ }
1885
+ };
1886
+
1887
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisHeader.js
1888
+ var blockSizes = {
1889
+ // 0b0110: 64,
1890
+ // 0b0111: 128,
1891
+ // 0b1000: 256,
1892
+ // 0b1001: 512,
1893
+ // 0b1010: 1024,
1894
+ // 0b1011: 2048,
1895
+ // 0b1100: 4096,
1896
+ // 0b1101: 8192
1897
+ };
1898
+ for (let i = 0; i < 8; i++) blockSizes[i + 6] = 2 ** (6 + i);
1899
+ var VorbisHeader = class _VorbisHeader extends CodecHeader {
1900
+ static [getHeaderFromUint8Array](dataValue, headerCache, vorbisCommentsData, vorbisSetupData) {
1901
+ if (dataValue[length] < 30)
1902
+ throw new Error("Out of data while inside an Ogg Page");
1903
+ const key = bytesToString(dataValue[subarray](0, 30));
1904
+ const cachedHeader = headerCache[getHeader](key);
1905
+ if (cachedHeader) return new _VorbisHeader(cachedHeader);
1906
+ const header3 = { [length]: 30 };
1907
+ if (key.substr(0, 7) !== "vorbis") {
1908
+ return null;
1909
+ }
1910
+ header3[data] = uint8Array.from(dataValue[subarray](0, 30));
1911
+ const view = new dataView(header3[data][buffer]);
1912
+ header3[version] = view.getUint32(7, true);
1913
+ if (header3[version] !== 0) return null;
1914
+ header3[channels] = dataValue[11];
1915
+ header3[channelMode] = vorbisOpusChannelMapping[header3[channels] - 1] || "application defined";
1916
+ header3[sampleRate] = view.getUint32(12, true);
1917
+ header3[bitrateMaximum] = view.getInt32(16, true);
1918
+ header3[bitrateNominal] = view.getInt32(20, true);
1919
+ header3[bitrateMinimum] = view.getInt32(24, true);
1920
+ header3[blocksize1] = blockSizes[(dataValue[28] & 240) >> 4];
1921
+ header3[blocksize0] = blockSizes[dataValue[28] & 15];
1922
+ if (header3[blocksize0] > header3[blocksize1]) return null;
1923
+ if (dataValue[29] !== 1) return null;
1924
+ header3[bitDepth] = 32;
1925
+ header3[vorbisSetup] = vorbisSetupData;
1926
+ header3[vorbisComments] = vorbisCommentsData;
1927
+ {
1928
+ const {
1929
+ length: length2,
1930
+ data: data3,
1931
+ version: version2,
1932
+ vorbisSetup: vorbisSetup3,
1933
+ vorbisComments: vorbisComments3,
1934
+ ...codecUpdateFields
1935
+ } = header3;
1936
+ headerCache[setHeader](key, header3, codecUpdateFields);
1937
+ }
1938
+ return new _VorbisHeader(header3);
1939
+ }
1940
+ /**
1941
+ * @private
1942
+ * Call VorbisHeader.getHeader(Array<Uint8>) to get instance
1943
+ */
1944
+ constructor(header3) {
1945
+ super(header3);
1946
+ this[bitrateMaximum] = header3[bitrateMaximum];
1947
+ this[bitrateMinimum] = header3[bitrateMinimum];
1948
+ this[bitrateNominal] = header3[bitrateNominal];
1949
+ this[blocksize0] = header3[blocksize0];
1950
+ this[blocksize1] = header3[blocksize1];
1951
+ this[data] = header3[data];
1952
+ this[vorbisComments] = header3[vorbisComments];
1953
+ this[vorbisSetup] = header3[vorbisSetup];
1954
+ }
1955
+ };
1956
+
1957
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisParser.js
1958
+ var VorbisParser = class extends Parser {
1959
+ constructor(codecParser, headerCache, onCodec) {
1960
+ super(codecParser, headerCache);
1961
+ this.Frame = VorbisFrame;
1962
+ onCodec(this[codec]);
1963
+ this._identificationHeader = null;
1964
+ this._setupComplete = false;
1965
+ this._prevBlockSize = null;
1966
+ }
1967
+ get [codec]() {
1968
+ return vorbis;
1969
+ }
1970
+ [parseOggPage](oggPage) {
1971
+ oggPage[codecFrames] = [];
1972
+ for (const oggPageSegment of frameStore.get(oggPage)[segments]) {
1973
+ if (oggPageSegment[0] === 1) {
1974
+ this._headerCache[enable]();
1975
+ this._identificationHeader = oggPage[data];
1976
+ this._setupComplete = false;
1977
+ } else if (oggPageSegment[0] === 3) {
1978
+ this._vorbisComments = oggPageSegment;
1979
+ } else if (oggPageSegment[0] === 5) {
1980
+ this._vorbisSetup = oggPageSegment;
1981
+ this._mode = this._parseSetupHeader(oggPageSegment);
1982
+ this._setupComplete = true;
1983
+ } else if (this._setupComplete) {
1984
+ const header3 = VorbisHeader[getHeaderFromUint8Array](
1985
+ this._identificationHeader,
1986
+ this._headerCache,
1987
+ this._vorbisComments,
1988
+ this._vorbisSetup
1989
+ );
1990
+ if (header3) {
1991
+ oggPage[codecFrames].push(
1992
+ new VorbisFrame(
1993
+ oggPageSegment,
1994
+ header3,
1995
+ this._getSamples(oggPageSegment, header3)
1996
+ )
1997
+ );
1998
+ } else {
1999
+ this._codecParser[logError](
2000
+ "Failed to parse Ogg Vorbis Header",
2001
+ "Not a valid Ogg Vorbis file"
2002
+ );
2003
+ }
2004
+ }
2005
+ }
2006
+ return oggPage;
2007
+ }
2008
+ _getSamples(segment, header3) {
2009
+ const blockFlag = this._mode.blockFlags[segment[0] >> 1 & this._mode.mask];
2010
+ const currentBlockSize = blockFlag ? header3[blocksize1] : header3[blocksize0];
2011
+ const samplesValue = this._prevBlockSize === null ? 0 : (this._prevBlockSize + currentBlockSize) / 4;
2012
+ this._prevBlockSize = currentBlockSize;
2013
+ return samplesValue;
2014
+ }
2015
+ // https://gitlab.xiph.org/xiph/liboggz/-/blob/master/src/liboggz/oggz_auto.c#L911
2016
+ // https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/vorbis_parser.c
2017
+ /*
2018
+ * This is the format of the mode data at the end of the packet for all
2019
+ * Vorbis Version 1 :
2020
+ *
2021
+ * [ 6:number_of_modes ]
2022
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2023
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2024
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2025
+ * [ 1:framing(1) ]
2026
+ *
2027
+ * e.g.:
2028
+ *
2029
+ * MsB LsB
2030
+ * <-
2031
+ * 0 0 0 0 0 1 0 0
2032
+ * 0 0 1 0 0 0 0 0
2033
+ * 0 0 1 0 0 0 0 0
2034
+ * 0 0 1|0 0 0 0 0
2035
+ * 0 0 0 0|0|0 0 0
2036
+ * 0 0 0 0 0 0 0 0
2037
+ * 0 0 0 0|0 0 0 0
2038
+ * 0 0 0 0 0 0 0 0
2039
+ * 0 0 0 0|0 0 0 0
2040
+ * 0 0 0|1|0 0 0 0 |
2041
+ * 0 0 0 0 0 0 0 0 V
2042
+ * 0 0 0|0 0 0 0 0
2043
+ * 0 0 0 0 0 0 0 0
2044
+ * 0 0|1 0 0 0 0 0
2045
+ *
2046
+ * The simplest way to approach this is to start at the end
2047
+ * and read backwards to determine the mode configuration.
2048
+ *
2049
+ * liboggz and ffmpeg both use this method.
2050
+ */
2051
+ _parseSetupHeader(setup) {
2052
+ const bitReader = new BitReader(setup);
2053
+ const mode2 = {
2054
+ count: 0,
2055
+ blockFlags: []
2056
+ };
2057
+ while ((bitReader.read(1) & 1) !== 1) {
2058
+ }
2059
+ let modeBits;
2060
+ while (mode2.count < 64 && bitReader.position > 0) {
2061
+ reverse(bitReader.read(8));
2062
+ let currentByte = 0;
2063
+ while (bitReader.read(8) === 0 && currentByte++ < 3) {
2064
+ }
2065
+ if (currentByte === 4) {
2066
+ modeBits = bitReader.read(7);
2067
+ mode2.blockFlags.unshift(modeBits & 1);
2068
+ bitReader.position += 6;
2069
+ mode2.count++;
2070
+ } else {
2071
+ if (((reverse(modeBits) & 126) >> 1) + 1 !== mode2.count) {
2072
+ this._codecParser[logWarning](
2073
+ "vorbis derived mode count did not match actual mode count"
2074
+ );
2075
+ }
2076
+ break;
2077
+ }
2078
+ }
2079
+ mode2.mask = (1 << Math.log2(mode2.count)) - 1;
2080
+ return mode2;
2081
+ }
2082
+ };
2083
+
2084
+ // ../../node_modules/codec-parser/src/containers/ogg/OggParser.js
2085
+ var OggStream = class {
2086
+ constructor(codecParser, headerCache, onCodec) {
2087
+ this._codecParser = codecParser;
2088
+ this._headerCache = headerCache;
2089
+ this._onCodec = onCodec;
2090
+ this._continuedPacket = new uint8Array();
2091
+ this._codec = null;
2092
+ this._isSupported = null;
2093
+ this._previousAbsoluteGranulePosition = null;
2094
+ }
2095
+ get [codec]() {
2096
+ return this._codec || "";
2097
+ }
2098
+ _updateCodec(codec2, Parser2) {
2099
+ if (this._codec !== codec2) {
2100
+ this._headerCache[reset]();
2101
+ this._parser = new Parser2(
2102
+ this._codecParser,
2103
+ this._headerCache,
2104
+ this._onCodec
2105
+ );
2106
+ this._codec = codec2;
2107
+ }
2108
+ }
2109
+ _checkCodecSupport({ data: data3 }) {
2110
+ const idString = bytesToString(data3[subarray](0, 8));
2111
+ switch (idString) {
2112
+ case "fishead\0":
2113
+ return false;
2114
+ // ignore ogg skeleton packets
2115
+ case "OpusHead":
2116
+ this._updateCodec("opus", OpusParser);
2117
+ return true;
2118
+ case (/^\x7fFLAC/.test(idString) && idString):
2119
+ this._updateCodec("flac", FLACParser);
2120
+ return true;
2121
+ case (/^\x01vorbis/.test(idString) && idString):
2122
+ this._updateCodec(vorbis, VorbisParser);
2123
+ return true;
2124
+ default:
2125
+ return false;
2126
+ }
2127
+ }
2128
+ _checkPageSequenceNumber(oggPage) {
2129
+ if (oggPage[pageSequenceNumber] !== this._pageSequenceNumber + 1 && this._pageSequenceNumber > 1 && oggPage[pageSequenceNumber] > 1) {
2130
+ this._codecParser[logWarning](
2131
+ "Unexpected gap in Ogg Page Sequence Number.",
2132
+ `Expected: ${this._pageSequenceNumber + 1}, Got: ${oggPage[pageSequenceNumber]}`
2133
+ );
2134
+ }
2135
+ this._pageSequenceNumber = oggPage[pageSequenceNumber];
2136
+ }
2137
+ _parsePage(oggPage) {
2138
+ if (this._isSupported === null) {
2139
+ this._pageSequenceNumber = oggPage[pageSequenceNumber];
2140
+ this._isSupported = this._checkCodecSupport(oggPage);
2141
+ }
2142
+ this._checkPageSequenceNumber(oggPage);
2143
+ const oggPageStore = frameStore.get(oggPage);
2144
+ const headerData = headerStore.get(oggPageStore[header]);
2145
+ let offset = 0;
2146
+ oggPageStore[segments] = headerData[pageSegmentTable].map(
2147
+ (segmentLength) => oggPage[data][subarray](offset, offset += segmentLength)
2148
+ );
2149
+ if (this._continuedPacket[length]) {
2150
+ oggPageStore[segments][0] = concatBuffers(
2151
+ this._continuedPacket,
2152
+ oggPageStore[segments][0]
2153
+ );
2154
+ this._continuedPacket = new uint8Array();
2155
+ }
2156
+ if (headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] === 255) {
2157
+ this._continuedPacket = concatBuffers(
2158
+ this._continuedPacket,
2159
+ oggPageStore[segments].pop()
2160
+ );
2161
+ }
2162
+ if (this._previousAbsoluteGranulePosition !== null) {
2163
+ oggPage[samples] = Number(
2164
+ oggPage[absoluteGranulePosition] - this._previousAbsoluteGranulePosition
2165
+ );
2166
+ }
2167
+ this._previousAbsoluteGranulePosition = oggPage[absoluteGranulePosition];
2168
+ if (this._isSupported) {
2169
+ const frame2 = this._parser[parseOggPage](oggPage);
2170
+ this._codecParser[mapFrameStats](frame2);
2171
+ return frame2;
2172
+ } else {
2173
+ return oggPage;
2174
+ }
2175
+ }
2176
+ };
2177
+ var OggParser = class extends Parser {
2178
+ constructor(codecParser, headerCache, onCodec) {
2179
+ super(codecParser, headerCache);
2180
+ this._onCodec = onCodec;
2181
+ this.Frame = OggPage;
2182
+ this.Header = OggPageHeader;
2183
+ this._streams = /* @__PURE__ */ new Map();
2184
+ this._currentSerialNumber = null;
2185
+ }
2186
+ get [codec]() {
2187
+ const oggStream = this._streams.get(this._currentSerialNumber);
2188
+ return oggStream ? oggStream.codec : "";
2189
+ }
2190
+ *[parseFrame]() {
2191
+ const oggPage = yield* this[fixedLengthFrameSync](true);
2192
+ this._currentSerialNumber = oggPage[streamSerialNumber];
2193
+ let oggStream = this._streams.get(this._currentSerialNumber);
2194
+ if (!oggStream) {
2195
+ oggStream = new OggStream(
2196
+ this._codecParser,
2197
+ this._headerCache,
2198
+ this._onCodec
2199
+ );
2200
+ this._streams.set(this._currentSerialNumber, oggStream);
2201
+ }
2202
+ if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);
2203
+ return oggStream._parsePage(oggPage);
2204
+ }
2205
+ };
2206
+
2207
+ // ../../node_modules/codec-parser/src/CodecParser.js
2208
+ var noOp = () => {
2209
+ };
2210
+ var CodecParser = class {
2211
+ constructor(mimeType2, {
2212
+ onCodec,
2213
+ onCodecHeader,
2214
+ onCodecUpdate,
2215
+ enableLogging = false,
2216
+ enableFrameCRC32 = true
2217
+ } = {}) {
2218
+ this._inputMimeType = mimeType2;
2219
+ this._onCodec = onCodec || noOp;
2220
+ this._onCodecHeader = onCodecHeader || noOp;
2221
+ this._onCodecUpdate = onCodecUpdate;
2222
+ this._enableLogging = enableLogging;
2223
+ this._crc32 = enableFrameCRC32 ? crc32Function : noOp;
2224
+ this[reset]();
2225
+ }
2226
+ /**
2227
+ * @public
2228
+ * @returns The detected codec
2229
+ */
2230
+ get [codec]() {
2231
+ return this._parser ? this._parser[codec] : "";
2232
+ }
2233
+ [reset]() {
2234
+ this._headerCache = new HeaderCache(
2235
+ this._onCodecHeader,
2236
+ this._onCodecUpdate
2237
+ );
2238
+ this._generator = this._getGenerator();
2239
+ this._generator.next();
2240
+ }
2241
+ /**
2242
+ * @public
2243
+ * @description Generator function that yields any buffered CodecFrames and resets the CodecParser
2244
+ * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.
2245
+ * @yields {CodecFrame|OggPage} Parsed codec or ogg page data
2246
+ */
2247
+ *flush() {
2248
+ this._flushing = true;
2249
+ for (let i = this._generator.next(); i.value; i = this._generator.next()) {
2250
+ yield i.value;
2251
+ }
2252
+ this._flushing = false;
2253
+ this[reset]();
2254
+ }
2255
+ /**
2256
+ * @public
2257
+ * @description Generator function takes in a Uint8Array of data and returns a CodecFrame from the data for each iteration
2258
+ * @param {Uint8Array} chunk Next chunk of codec data to read
2259
+ * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.
2260
+ * @yields {CodecFrame|OggPage} Parsed codec or ogg page data
2261
+ */
2262
+ *parseChunk(chunk) {
2263
+ for (let i = this._generator.next(chunk); i.value; i = this._generator.next()) {
2264
+ yield i.value;
2265
+ }
2266
+ }
2267
+ /**
2268
+ * @public
2269
+ * @description Parses an entire file and returns all of the contained frames.
2270
+ * @param {Uint8Array} fileData Coded data to read
2271
+ * @returns {Array<CodecFrame|OggPage>} CodecFrames
2272
+ */
2273
+ parseAll(fileData) {
2274
+ return [...this.parseChunk(fileData), ...this.flush()];
2275
+ }
2276
+ /**
2277
+ * @private
2278
+ */
2279
+ *_getGenerator() {
2280
+ if (this._inputMimeType.match(/aac/)) {
2281
+ this._parser = new AACParser(this, this._headerCache, this._onCodec);
2282
+ } else if (this._inputMimeType.match(/mpeg/)) {
2283
+ this._parser = new MPEGParser(this, this._headerCache, this._onCodec);
2284
+ } else if (this._inputMimeType.match(/flac/)) {
2285
+ this._parser = new FLACParser(this, this._headerCache, this._onCodec);
2286
+ } else if (this._inputMimeType.match(/ogg/)) {
2287
+ this._parser = new OggParser(this, this._headerCache, this._onCodec);
2288
+ } else {
2289
+ throw new Error(`Unsupported Codec ${mimeType}`);
2290
+ }
2291
+ this._frameNumber = 0;
2292
+ this._currentReadPosition = 0;
2293
+ this._totalBytesIn = 0;
2294
+ this._totalBytesOut = 0;
2295
+ this._totalSamples = 0;
2296
+ this._sampleRate = void 0;
2297
+ this._rawData = new Uint8Array(0);
2298
+ while (true) {
2299
+ const frame2 = yield* this._parser[parseFrame]();
2300
+ if (frame2) yield frame2;
2301
+ }
2302
+ }
2303
+ /**
2304
+ * @protected
2305
+ * @param {number} minSize Minimum bytes to have present in buffer
2306
+ * @returns {Uint8Array} rawData
2307
+ */
2308
+ *[readRawData](minSize = 0, readOffset = 0) {
2309
+ let rawData2;
2310
+ while (this._rawData[length] <= minSize + readOffset) {
2311
+ rawData2 = yield;
2312
+ if (this._flushing) return this._rawData[subarray](readOffset);
2313
+ if (rawData2) {
2314
+ this._totalBytesIn += rawData2[length];
2315
+ this._rawData = concatBuffers(this._rawData, rawData2);
2316
+ }
2317
+ }
2318
+ return this._rawData[subarray](readOffset);
2319
+ }
2320
+ /**
2321
+ * @protected
2322
+ * @param {number} increment Bytes to increment codec data
2323
+ */
2324
+ [incrementRawData](increment) {
2325
+ this._currentReadPosition += increment;
2326
+ this._rawData = this._rawData[subarray](increment);
2327
+ }
2328
+ /**
2329
+ * @protected
2330
+ */
2331
+ [mapCodecFrameStats](frame2) {
2332
+ this._sampleRate = frame2[header][sampleRate];
2333
+ frame2[header][bitrate] = frame2[duration] > 0 ? Math.round(frame2[data][length] / frame2[duration]) * 8 : 0;
2334
+ frame2[frameNumber] = this._frameNumber++;
2335
+ frame2[totalBytesOut] = this._totalBytesOut;
2336
+ frame2[totalSamples] = this._totalSamples;
2337
+ frame2[totalDuration] = this._totalSamples / this._sampleRate * 1e3;
2338
+ frame2[crc32] = this._crc32(frame2[data]);
2339
+ this._headerCache[checkCodecUpdate](
2340
+ frame2[header][bitrate],
2341
+ frame2[totalDuration]
2342
+ );
2343
+ this._totalBytesOut += frame2[data][length];
2344
+ this._totalSamples += frame2[samples];
2345
+ }
2346
+ /**
2347
+ * @protected
2348
+ */
2349
+ [mapFrameStats](frame2) {
2350
+ if (frame2[codecFrames]) {
2351
+ if (frame2[isLastPage]) {
2352
+ let absoluteGranulePositionSamples = frame2[samples];
2353
+ frame2[codecFrames].forEach((codecFrame) => {
2354
+ const untrimmedCodecSamples = codecFrame[samples];
2355
+ if (absoluteGranulePositionSamples < untrimmedCodecSamples) {
2356
+ codecFrame[samples] = absoluteGranulePositionSamples > 0 ? absoluteGranulePositionSamples : 0;
2357
+ codecFrame[duration] = codecFrame[samples] / codecFrame[header][sampleRate] * 1e3;
2358
+ }
2359
+ absoluteGranulePositionSamples -= untrimmedCodecSamples;
2360
+ this[mapCodecFrameStats](codecFrame);
2361
+ });
2362
+ } else {
2363
+ frame2[samples] = 0;
2364
+ frame2[codecFrames].forEach((codecFrame) => {
2365
+ frame2[samples] += codecFrame[samples];
2366
+ this[mapCodecFrameStats](codecFrame);
2367
+ });
2368
+ }
2369
+ frame2[duration] = frame2[samples] / this._sampleRate * 1e3 || 0;
2370
+ frame2[totalSamples] = this._totalSamples;
2371
+ frame2[totalDuration] = this._totalSamples / this._sampleRate * 1e3 || 0;
2372
+ frame2[totalBytesOut] = this._totalBytesOut;
2373
+ } else {
2374
+ this[mapCodecFrameStats](frame2);
2375
+ }
2376
+ }
2377
+ /**
2378
+ * @private
2379
+ */
2380
+ _log(logger, messages) {
2381
+ if (this._enableLogging) {
2382
+ const stats = [
2383
+ `${codec}: ${this[codec]}`,
2384
+ `inputMimeType: ${this._inputMimeType}`,
2385
+ `readPosition: ${this._currentReadPosition}`,
2386
+ `totalBytesIn: ${this._totalBytesIn}`,
2387
+ `${totalBytesOut}: ${this._totalBytesOut}`
2388
+ ];
2389
+ const width = Math.max(...stats.map((s) => s[length]));
2390
+ messages.push(
2391
+ `--stats--${"-".repeat(width - 9)}`,
2392
+ ...stats,
2393
+ "-".repeat(width)
2394
+ );
2395
+ logger(
2396
+ "codec-parser",
2397
+ messages.reduce((acc, message) => acc + "\n " + message, "")
2398
+ );
2399
+ }
2400
+ }
2401
+ /**
2402
+ * @protected
2403
+ */
2404
+ [logWarning](...messages) {
2405
+ this._log(console.warn, messages);
2406
+ }
2407
+ /**
2408
+ * @protected
2409
+ */
2410
+ [logError2](...messages) {
2411
+ this._log(console.error, messages);
2412
+ }
2413
+ };
2414
+
2415
+ // ../../node_modules/codec-parser/index.js
2416
+ var codec_parser_default = CodecParser;
2417
+ var codecFrames2 = codecFrames;
2418
+ var data2 = data;
2419
+ var header2 = header;
2420
+ var isLastPage2 = isLastPage;
2421
+ var vorbisSetup2 = vorbisSetup;
2422
+ var totalSamples2 = totalSamples;
2423
+
2424
+ // ../../node_modules/@wasm-audio-decoders/ogg-vorbis/src/EmscriptenWasm.js
2425
+ function EmscriptenWASM(WASMAudioDecoderCommon2) {
2426
+ var Module = Module;
2427
+ function ready() {
2428
+ }
2429
+ Module = {};
2430
+ function abort(what) {
2431
+ throw what;
2432
+ }
2433
+ var HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;
2434
+ function updateMemoryViews() {
2435
+ var b = wasmMemory.buffer;
2436
+ HEAP8 = new Int8Array(b);
2437
+ HEAP16 = new Int16Array(b);
2438
+ HEAPU8 = new Uint8Array(b);
2439
+ HEAPU16 = new Uint16Array(b);
2440
+ HEAP32 = new Int32Array(b);
2441
+ HEAPU32 = new Uint32Array(b);
2442
+ HEAPF32 = new Float32Array(b);
2443
+ HEAPF64 = new Float64Array(b);
2444
+ HEAP64 = new BigInt64Array(b);
2445
+ HEAPU64 = new BigUint64Array(b);
2446
+ }
2447
+ var base64Decode = (b64) => {
2448
+ var b1, b2, i2 = 0, j = 0, bLength = b64.length;
2449
+ var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "="));
2450
+ for (; i2 < bLength; i2 += 4, j += 3) {
2451
+ b1 = base64ReverseLookup[b64.charCodeAt(i2 + 1)];
2452
+ b2 = base64ReverseLookup[b64.charCodeAt(i2 + 2)];
2453
+ output[j] = base64ReverseLookup[b64.charCodeAt(i2)] << 2 | b1 >> 4;
2454
+ output[j + 1] = b1 << 4 | b2 >> 2;
2455
+ output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i2 + 3)];
2456
+ }
2457
+ return output;
2458
+ };
2459
+ var __abort_js = () => abort("");
2460
+ var __emscripten_runtime_keepalive_clear = () => {
2461
+ };
2462
+ var timers = {};
2463
+ var callUserCallback = (func) => func();
2464
+ var _emscripten_get_now = () => performance.now();
2465
+ var __setitimer_js = (which, timeout_ms) => {
2466
+ if (timers[which]) {
2467
+ clearTimeout(timers[which].id);
2468
+ delete timers[which];
2469
+ }
2470
+ if (!timeout_ms) return 0;
2471
+ var id = setTimeout(() => {
2472
+ delete timers[which];
2473
+ callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));
2474
+ }, timeout_ms);
2475
+ timers[which] = {
2476
+ id,
2477
+ timeout_ms
2478
+ };
2479
+ return 0;
2480
+ };
2481
+ var _emscripten_math_atan = Math.atan;
2482
+ var _emscripten_math_cos = Math.cos;
2483
+ var _emscripten_math_exp = Math.exp;
2484
+ var _emscripten_math_log = Math.log;
2485
+ var _emscripten_math_pow = Math.pow;
2486
+ var _emscripten_math_sin = Math.sin;
2487
+ var _emscripten_resize_heap = (requestedSize) => {
2488
+ var oldSize = HEAPU8.length;
2489
+ requestedSize >>>= 0;
2490
+ return false;
2491
+ };
2492
+ var _proc_exit = (code) => {
2493
+ throw `exit(${code})`;
2494
+ };
2495
+ for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {
2496
+ base64ReverseLookup[48 + i] = 52 + i;
2497
+ base64ReverseLookup[65 + i] = i;
2498
+ base64ReverseLookup[97 + i] = 26 + i;
2499
+ }
2500
+ base64ReverseLookup[43] = 62;
2501
+ base64ReverseLookup[47] = 63;
2502
+ var wasmImports = {
2503
+ /** @export */
2504
+ "e": __abort_js,
2505
+ /** @export */
2506
+ "d": __emscripten_runtime_keepalive_clear,
2507
+ /** @export */
2508
+ "f": __setitimer_js,
2509
+ /** @export */
2510
+ "b": _emscripten_math_atan,
2511
+ /** @export */
2512
+ "a": _emscripten_math_cos,
2513
+ /** @export */
2514
+ "i": _emscripten_math_exp,
2515
+ /** @export */
2516
+ "h": _emscripten_math_log,
2517
+ /** @export */
2518
+ "g": _emscripten_math_pow,
2519
+ /** @export */
2520
+ "c": _emscripten_math_sin,
2521
+ /** @export */
2522
+ "k": _emscripten_resize_heap,
2523
+ /** @export */
2524
+ "j": _proc_exit
2525
+ };
2526
+ function assignWasmExports(wasmExports) {
2527
+ _create_decoder = wasmExports["n"];
2528
+ _malloc = wasmExports["o"];
2529
+ _send_setup = wasmExports["p"];
2530
+ _init_dsp = wasmExports["q"];
2531
+ _decode_packets = wasmExports["r"];
2532
+ _destroy_decoder = wasmExports["s"];
2533
+ _free = wasmExports["t"];
2534
+ __emscripten_timeout = wasmExports["v"];
2535
+ }
2536
+ var _create_decoder, _malloc, _send_setup, _init_dsp, _decode_packets, _destroy_decoder, _free, __emscripten_timeout;
2537
+ function initRuntime(wasmExports) {
2538
+ wasmExports["m"]();
2539
+ }
2540
+ if (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, "wasm", { get: () => String.raw`dynEncode012091253f87dì%nä= 4&¿nÝØä‘ÂLÚªã9ÚØ[äº\ ¼¡³R=}L]ŸÈÿ2 ÿù¶J1jj¡é,zäV|i¸Qk¹‡= 
2541
+ ¨¨Ÿ%‰€ýv²†±»ŸoúâLa:ê±ÊäÌÓ.÷؇ý×>àW>z¯°8¯ñ€\Ñós 9ˆ\§ôÊ@Ü (tÂø4° ¢7fqÓg²Jè6x[zç®&4=} p.(°tÍޖ™ã¾>÷CõË"*k?¿~ 7‚~H2ÛÜâ.ÏQä;Œ6{ÜãFÑá'DœD¤±°HQ>MínÎϕÎöʵ’Ñӓ…™Þ“‰Ž‘š†Š‚œÌP¼P¨Þˆ*X²E=M¦qíxMà ±=M̚ë4/<šgNO‰™/¢ ¢>ˆa~Ï®”ììììì0”ìœa笡çëOÓÇM Q9tùµyuéµµÞϒ/Ÿ±Óõò}E{òÓJ¹Û|· ôfÒ c’¬”Wêaûÿlʽp¹|)‘ÖEL–†¦ }‰ypÕSϹI†]¢ˆºãæ°ÿo¶7ÛRqš¾ÔÅEߨ‘]æˉwÚ{óç‰Vwó1¾”E­Øpˆàe"Æùû–¡Áª ‡ Ààð´Lõ›€ÎxEÓ¢N¦‘…9Ÿëùši&€ Ò§Ø!ÇFçS=MbäO?ß·™縪‡7ùa}5ðšûÕtsUŒþ£Kïg‡ˆN™¾)ø§\V0uSIö:ÌU4ж¯´Õn9ÔƒèE£ZƼ{hµmى¾6ÆžÑ+xñ´«„þ¸=M‚ߤ·å®«ïÆGFÝì|H?äE"þ!9«Æïpæ'][¯ù·£W÷O§&#aŸ‡x$qf=}ø ô bϗŸ×W÷LôožÝWQÕӎ)u †÷½èV|¥Gà¨Ö¸˜@Œê| ÇK5ò €A·Â9’CS2š¸‹¼¿,ä›Ý ÑÝy™!ÑR„%ÆÝÎ0Âv§ qTcó±hØÉã‰=}Z=}Ælü­ën¯ð(-°ÜwVχï.th¥í­‡S~SÏ»Z”ZÔZ
2542
+ 3–BÌÛ¬•<éæO)ÎyÚ¯O*®uìÛ$öI¥Ý9ôø³\¤ò³Ù¹ÇP¸J׎y@ÔyOÇm—’ô½üœš¾|S?2àú¤F?½ûoo3ôž;<àáûܘ8‚ì²7ïë¨RäY¹|ÓºÌF,ƒÐ™-¸*\P!FJÒ8= o6HwLrúº”¶Ð۞\Ù¬o¢–9Iq„Ý.ôf¶Îȏ{Ī×N|Mfs…•¤ „ÉݖàŸâ§‘*+ã§­’ô¯î¬7ç×§ä)€Š!Z¨ƒÉž,Äp~ý·wsSGó—äs„E€\ýï鞧Ö:Ò'“Cç(_X$\¦½eҒ8$’X˜F|e‚•œíٙә‚†¡¤Û<ØÞÛ¸9‰¿ðÃÎ#b~× ‚4éîÿÏq
2543
+ ˜ód‡|0•wU‰—&®è·vh6¨—{Ú珁Ú18ә(ÓY‚\ƒ0¦= çˆèíß)Ø=} ˜[xü-v˜?N(Kk‘gš0}âډ´ð“†¬”œÕQNÍ¢usѳ=}. ëg…û= Í M—Bp'²¨ œx’4è@9t“§eݵ¾âð½ z?†‹Z¹FH'‰Ì¯¿<ŒK,üµ<{˜ ¶JãývåàÆeù0Ð"F¥ÃÒÞŽþԛÉvC›zl}„ðN’£ Í^ƒP%²¸FX»WÎêô¶…ŠäÉJ^gƒ×SÃã.žÄt*'ªG‘«ÒB<ÜӅ¿ºp­\àuV¯£›Åݑ½á–Þ ùߞ=}ÎÚ^‹Ÿÿí>¥!¨ â=M·? */¤"å)â·ÿîÿî*(%*›2[½"üríÔ4š’l½»a}¯CwpCÓèìGc-ã6®=M32†k?Êg­…–!So-™x›>³G+ã@ò,™ Áïƒá„åN0þŠÙ‚è.~È÷¡vTr¶‰­‚Æ[üB±º»ávëw¹{pÜºû"Aæ’±9Æ^¹³òïRIAy5GÂwÉfœ4@Tù|qý7†ðªwBL|ÔqŽ‘v!ª°|]KiÐJVQ5‰¸åõ§‡‡åŒ"H¼0e¬<óBîÚS€ÏUìHPÙA+çÉ'se†ÌNf°@ÈM,ð½egÖ¬x©“„‹û½2~«ŠÒ1;ֈ«…¯°4&90èE»Ó׺ç‚ʧJ<Æ¿&~Nu¼ãÙµ¢.UÇä(qQô^ö–·“%!É
2544
+ w¬= Îôª«…Ùת…JIS;õa rx×£.6¤ž°>5²Åà,õ°°h6ûUp©²v#}%é‘= R¢hõ@ëQiJٔ\ÛpŸ»©[vsiÙLE UG*sGÄ%V­¸Ч;º_]c؄p#¡:oZ{ãS5I¥]ÓaÎg+n×ýÿ‚Txy]²ö°k¦kêju¼xÐTá©#h>Ù]u\EA+§…퀤u¦ü؁lQPdë„NòzyÞ¼X€Ð]—ˆšÝøÝg¸BŠI¿BÕð_Ël¶Cuyºr|<¾¨Támo5êÿú>Ɓ[ã±G¨²)ü&áòüåBFouŠ!Íí.jÖìß½8¥Yëìá›ÈÁi—)‡qÀ:ÎüÐր¤Gͳô>°ú¯øâ?R£k~&ÑãÞ~AŠ¢;Ð' àÆUÀ»Lž­×)‚-!ÿkýí›Ù
2545
+ §Û\{¤ólW^næzk?G~?_5™uÝñ7-ß«6YPðGßÚù\Êê -ûp¥èÓtM×hKȯ›ÒBAê"ïx×HÍ0Ôcè+èçÛÅf (§¢õ®%K£7éÞQ'MxãxÐúр…2!8_6̶Ì6ÌrûùS¥ZƒóAIŒüå6¿jÿ_°(ÿšä9©CCÄ!bŒq5Öô×x{ÍbÆÚmÒ@«µ××~҄D“;*ü ùeŽÀÞ·xˆv¾;¤Šƒ7¾ƒ[W\ýüb›@'q㵋ÙâÉE¾}}“tq-g=}Üs¢5Ó=}$Ĉ§£€Ó~SFÎgтn†N>1§/¥¸ŸG5àM8#ŠƒÒ;2¢/K%›–xVÓ(X„ H>µ¬ü;_˜j~Æw<¾ô*»ô= fAËbM¼iÀI Ip'c*”:oY¡VÖ3ˆ‹ûIdû®4ڍûýÆð}ûN¥û–I
2546
+ Š¥ÎŒÛK*]Ø=M>t×ý³MwE”™è®"ۂ4­]]ÓgØ×EÈ.pN°¡ š»¤ç/I.ÿ+6 r@«Âz@§Bz@¯ÂIê-tí‡Ü«°·GföjϘÕì:žgÕ‡UÖ=}÷¦|§Eõ̐$a*¸›s¬´«£¯JÞàãËt™$š GSÚ³Ë1¯©&|±c!\åvçϷѸãßñ]á¸?ùää%6´= #e—¬Â;IÚ¡õckCÀò*\ï—0À•¿<>ªžÈåJA'ï´—¾ME.@OüІ0ex÷#2ÒùúµƒÇ½>o{›«ó= žÔïŸ;ǽ¶óЉ/†—Ô͌܂€¤±¢Ê’…w>ÃâС¯œ®Üa£¹6ŽVý  v†áÂh‘ôàÍ8˜D!Æ!ÆI;¢á܎Ž!oÑÙ …OÏKôò=}w<0rT= 5J„_±3×Ì;ôYÐ<aÞꏹ¾7ßz\˼Ûۙ@>Â{å%K¯º'ÊmÚòÁjRÒ×úw€@' ( €=}­QU«ÐÁђ•„,/?úYE‘yºQ얬Ÿ {ÇLÕæõNáð#f>_ò#Îv]˜/øÏ¾TUšà/øÀAÔ' w]€Ã]€W”•w]€Ã]‘X­÷Þn‹ð·TbAåÉ r¨4?t²„>1Ç[áüx  $€-ÒÂM†Ä…§·µwsú>üÂ&³÷.dgA¦h²*G× öcG×µF5¸Êqª$ñ?¦vÿ<ã;ÿs­Òi›ÇXòku®vUòõ•cuæÊ¦á«þ¸‹ÍŠ
2547
+ ÑʑƒuãE"þ!6Ø Êæ­}}onË:W”•½¶‰˜«ÊFˆuÃÝUS-1ÀÕHòzµöƒ?ov»®¦‡
2548
+ CyÈçaÆ
2549
+ pÛ¢&{µ¨«‡±1˜EXÆÂu.7ž˜÷²ÛJ’Ê‚y[å²µ»bL’?·×øèìCp:æÕé§·rUèésÜ[o²ÛòDòDހ]ªä#çN’;Ïð)â´*z8 0Úèóª1çE¯´Rì,D4H(øË)šgp=Mý«û»=Mþt8º‡-HœxH”}Æ3Rt?ïɤC
2550
+ §ßìéõm†õ,;æðk=M6ЦuSÝ^贮ٙ6=}掍†ƒóO«>
2551
+ yÒîÐ7‰a'ûLUöø>ò -6Y(¬ÀM’Z¾ZHpu°c«à±[t*Ç*jwÇÍ$Áíqx©SwћËR¥é®[XJŒÓ8=}üµnt9“ÚÏ3z½¼¢[Q2Þ¸/=MP§Y&y=}ÚÛw—ëý¡—àߥۧÃŽþòýÁœÝÈìûê(±€¹4š'€ïÌ:Ûùk=}eªãä ÒCKA¤Æy×nvȧmÿŸ;=M]¿ÕŸ€Õjԋ–ª sF>úÔ©áÄ:cÀÆ<$|ê'!גSb¢V¿oÇåGð™¢U™ÊŒ u¤ZJýæÔÿÿ 2ç썯h£‹f¾Q–ZãÁ ®‚ 쭔Ç'ÎÅ[¸¨‰{?¢ÉhS5o›ƒU½c¢ÈÂÜ»JZmUí\áùµV6Bète™Ÿ…~Ãw‰÷0ÕஜísÆk,{ý¦ û‚iK+xvÅ兺ñ ‡a”[Sé»Û Nõòý¬ßà¨= 7p’å^ÿÃW,¿*M½áR±Ì–‰³FcË<üiÏ2|ö^vKÏHœò¹uY“bk¿mZ¡Oš^ÿç©~ïj°È”7 Žl©¨ç”_ó¼'½ßªåÏn \ O,wòi,Ū-¿?ð­}òÁá=MÍ®ÿ²›EÍñ™Â}¨³ô-ýƳúŠù5†6MÃ6ÓJz=}p³žûê—™9õà垫TM×Ve>G~ŒÙ»Vü²öHByf<õ©˜ +QWƒF+.ßAŽGÔ¦ÏèÚ½‚3‚ˆâÏYÀ¿T¢¸6ÌéɓÐ*¸Öª”ÏrÍëá=}6‰/U´ÃךZœþðóW.½ÞQ¼¾Æ”qÅ ‰½‡oâäB-ÓU‡€J¬má8øª€K.Œy±>.Q¡a0ޙ#!,¥BÞ¼­S?Ìr^¿_Ö.¹ó{=}/äÈAt}Æè̼4¡—Ôîgl]ÌUEý{}|DÏä–:°š-Ñÿ°=}àØéÕ}Êñøðº~¹¯4Yƒqm¹]!ºÿ=Mõ«ˆ‹ :ІNl"SÇps¸Gåȧá+’'M¿ÓîÁ.î¤=}„mÅ8Œ)¶rrHá"ÈøÂìËøÍ€í4ôŒ72bbߺq¿2ô=}A5.YV¬ÑÚã«Þ[F
2552
+ )ºhXûÇӔ>È”?p¤ðoUÊÓ(€‚³FpÊi’¡Ð}SÚ~E ”!›|ðí‡,Ç9½Ãë¸Üì!¤ÓÃX%DBãu”&d‡ÔËôŽg¥‹á¾l¿AÉ)Á±†Ñ߇Èßý¹ód;|¤Z€»#ñscµ|¡…ÝOOe^‹ã‹ÂxÝ‹Í]¯òbÏ£÷ð4½ïÖ³;û/ºsñÆðFØIn²q¢©”*× kdO+÷削ҀiÉݱîBr]LÜ|8ƒ~7“vts÷9l|aë»EânӜ´GGò„$ÍR,<e0i¿ª
2553
+ ±¾…àsÓZJ¨?&%Æ~-ǵª‡ö±;ól"=MLgÿt#
2554
+ ü˜2 <Àn¬ÉäÍôÿ®É1S’Ä›à–= ôñZ¥-@z;¯‰üà¹ìJ͑=} ÊSeBÞ¯´~¢s mÿŽ-¨CozÀ/;Çël&uñZÖPV«¤¼Ÿ´ÀïY҄™˜–~—=}DrƒâgC §›ý çšrÆ7âÃ$ÿ¤Ý˜˜š~ސÝo@°³ٖsŸ;ozûÀ~R§ú"¶ü/ôcæ<œ°^Ôã/žéo•w×ër¦_UgûÀøäâkHț{&ÏMëqÀYÈLÁÊG†bÙéŸ:ˆš·q]ä\™PÔëÒ¤a£1è]á…^Y[›Sw¶å²¹gÒ0ód^žÈT.WœÄÜ[ՙ‹ ˆÙ*Hi®z¹µu}ýuý}#ú=}‹ÇÌRSûç—Mø=}¹¹>±ÿì¨áØ[R?ÿ^‰„¦ñê¾xZRS^PSSSç1ù}݈Zá4‡fffdf¨ Õˈw&eÜ$hä'{»Moöyg8¹ê¶@ìƒÛª0-ó•¯:¹ e{™†%<ÎÖ›}Þ¤v’ª6¡Àõ÷Gh8= “FºKVñ.ºHÅ)<Ñ= xs¥B“E;;áF¡·!¡-ÀYԖå^Ö'l̯ßûç¥køÞ‚?[ë>†" -9±/€ÊÛGǘ 6OY4VÕ»ºƒ[öBÿ:B¡WÍ&½ÇÎç »Î= 0y恧§5àÁFiA•›Í²®Ê\¿<î!xÞ³E =M¬U/ݾssæ¶µ·O̐0§GûúñŸòŸ¯{^/~ä׫ÊB = ;4¤þû–^Öï÷ŽL÷ï_ñíx<õ;ó5ËÇ~¾V+䅒lƒ¼Ñ°«Ôí¾)Âfš‘żo¼ÖùWa1køìFvœûëûRQ‡ø]q’| ï0g–…ºúîy["FÐþ7^‰Ò‰RµÚèæøÔyÚ
2555
+ «ãŽˆi Þ@ˆ…U¾¸»* è#ò-ì¶HÛé¢ùL”;}·O7…7ÅsLæþý8¿Óùñ£}.=  Œ<•¾=M£ðQKTà^O|¸üggH«0³i£im¼_2ÿö”úÕ¨LaO+&]L¤šÞ+,k Þ¶Ñ~T¤ÂHì ÊèèÕÀíÒ³M܈‘ô~J<¤0Yð¢´."»â›èÄxqe%o݂yå—æâ¹25UÐ/’Þe.×´Øì_æ¯_zRÏíšÑŸ@ÿôLc¥Íðy@YΦ}µZ:ÑÂgZÒÒ(©¢‹9 ß €Yˆ«¦:™“v„ÙëÎ€ZJâÀVsOt™UÖ Ò¬¹‡1ûÚG´OÃóG©‚)œniÇí
2556
+ Ô}½Ž3:.ˆk]ý²ÂB=M~ –ùÚYp95½‡qýãë ÐÞ/¡(ä'§œúºE/ê«ÌŸ9Ÿý%Ú!<σžJP&|[ƒ,gz’ű¡\o•0™Ôhûóþ“œ¶[KêÍð= TjÃVñ¸ƒƒD¼Ð_Ò
2557
+ Ÿ0Ø_1dPðt  ýtZ¾r ù àJf^ƒ”;Ô2éÐ=}è¤B~ŸDšñ7ûÓÁ9³ýbA6ZØ´èÃg½ñóø.:~ï ]bªZŒì¿Ö²2QÄßo¥-¼Öá5uu/u³ òD‡œ;gjÀ‰ê”ÃÇ|eÁ9¬u$*ÐÁ'ÓDelÀëäì¥Ò¤Zší6OÂ@âF0-J÷¤=}_Õ߬ÒlÚM½Ç˜ôó~ð76›DEÖ'ds´Ùï”ÝßøaÊbÑ «‡^“™Í}&àØå?¾ÍF\2HD5òèÁƈd˓„dÈ·6ÙPÑ“|¬Ôq*Ê>ƒ0š¸Cì(ÛX‚YV…²ý Ipъí‹M k֔ů}Íóôc7“ÅŸbrñÐeQŒXæ©Æ¯ü_Û»‚˜ÝMþ©.c–kg fq ôo@qRL°šÅ‘Y΂ˆÈ»d'™<±+±î‰,Z­-GG»ø$âG†vÇû µA~YF5"§)ð™fßÐ鸉oJRRŝ¿ŽôXÝaú.QMw1 1þøiSo¾®È²¸hÌ/Κ })fBr.G1£Šº×cÎ𥰹&WÈüAnŒo#g ÃàLi²¥8ó=}dä¥$ŗ(³0h¢0OjfÀr¡6*#àæ"ãûQ?ƒ›ñ±«²Xóä*hïx=}ÎÞ¬výÞV÷{u²cöê¡h¯QÏYaê‚L$¦ûÈçIGßþEýWöºýëÛߐý×Ïð“i G´ì=M¦”ßÁý' þºeâNւ7ϝ/сuž·6rۇF¾Œ¾aUÌÓiÜúÒ]¶éUY*= g[ 2-_• c:ðY)
2558
+ ‘¼9ŠîK¨‡£8†o•Sˆå¶K4U>+¯Ãî[H\wâRVœê/÷~Ðn•m”–¨s8CÏö©Ø%ÀašªS]ý޼§ r_¸ƒk‘
2559
+ ªµfÄéÒQæ2¹Ão¹&3žžÇ¢u c5ë6}Í:B£Ž´1uiˆèÑfa’‹&]ävCŸ‚Ox·"³L˜Tè.€I.ÊÍzB!:FÏëxS´Q{ ÊõZ7Uh8yÝfDÎ dÔX3‰Q± ½–=MnØ nÅc"@;f?ª¬nû0Lp´h„,¸#Mà->+C= Ê¡±‘­^ٗ= ®Â¬QôÅùî
2560
+ ‰öqòbŽß=}‡•±ÕAË/8RzT³…‘ÃÌ/_îMvÛ«;7S ìN4
2561
+ ìŽo7è_¤ÀܕñŸÜ©è^U‰±A{Éö”žìŒXtnÝÇvz
2562
+  ½½Ùo¨’‘çaúâ?EH”Ä»ë"‘±cÀÁEB]acgdck
2563
+ ËÁ˜EŽv›ÇڄM:¸2¼"ŒûŽc³Ï‰1mA]ø[à= Ý|«oÒ&¡® ¡ŽK$ÚiPÚÛaº!ÊI#?3 ÄLoxJò¹<•$$»¢”¸h.ˆ‡ÕY¡‹g Û30ׁ ‡¶~ÃtéR0 ‰ni6ôeìa—z(¸9°Ù=}ocî†#üR{¶ù*×<Ç‹\Ès„a>#¿]¤š(R F×X#¢¯mVRòºÃ 0ã51ï‚íDÅVs“t‘ °YÎ=}ø ´·Ç”F ‡ØÕÓ¡ð—(B
2564
+ €YS= '0“#×KB<rÔôþMz8”ï³tíY­S\¿©æ sŒ¢‡3~ÏcɃÜ[öÝ-y£îu(´{©ueŸØÝª g× »c*5쐣¡“І>¢9®Œïîêzr{½¢j|W¯Cú²‘"žÆ¼¦Xçt,òYCIV‡µX#¥‰_Žæ)‡3è "9†ûã)‰e…0߸Ûͤ³.¥>„å*ÁpƒepœŽQkîtÎڠŶïoÔ¸>³5„5Î= †Á¿rà†3S\ÌÒªs0 iæméŠQúR|Žë²­FA€è Áç-šÚýFå˜3$qϒ3˜+w؋<üªUþvü‘£b”)Ný¯j ;0õ”}᪟’[6k WÇíH® ¨{2Jþ!y+‹(-òÉýÎlœ SÆ_¼òu8¼z¸Rîùq_fGHî?{vTgeÒU<S’^£(îl=MéáDÛ¶­ùM·Ä7^õÿ
2565
+ Ø£™ $\ öv=M¦†px™6+ã*àÀìî{ølÊEy9² hω³!ÕÑjú¸ò5pG£¸fëp šƒ‹‹N_::û\RQ[⣮M¿L#8¢ÑPk5]ý«¢zžg»güš åÐÒöí<ô â~ÂÔîtýX‚ÙñµE® :¼VBͼ çtnHç­|Ï0[óoûŠM™>h}ìAö…":Vk=M©l\äÓröQR}8qeV<J"†ÈFäíûI_Ó㎫D–ûëôzïå‘JNHŽeÛpµš…×8挓ƏPI¦û-t£sp£i¼äsç)’ç%0eq#„ôFør\ÃÁs•×CP÷ú½˜ÿ”qH²}EéÏtjT‰i.•Òþ¡=M%ä¸Õ’“ِe½_ëÝ;+ÏÁ9ó+ä·9:„׎´irxb@åÄä*Ý •
2566
+ ²íC­K„‹Ý»@‡;ö4Päü
2567
+ c ãJ1«õãLPµ“ŒêY‚àn12ȯÙI…r+˜= ¶/gýZ³#³}~å0ž´„ú¾dȑwûŠ{ ”èÒY­uŒvëNô›ºô[í&öõ¼[9Ø6
2568
+ >ßNçRÆÛeí“u?ìý hWõM^8<˜ã*lkê@uú.FzFë=M-ûhêlT±ÏÌÚ®Eã¾ˆd¹P±¨à<ÛÉ‹Ê6åÉì’Î7Qv¬ÎÊýžì–$ºÑz†Ø'”¨mІØÒº´€ZM°o9=}óÃQ·»¾LW·:+¯˜’‡©p §àÕ<Ïí2†gþá1é9|R‹ówàutHý8ºï@¬^ŠŽ¢W¶—©ê ]ð½6ςOô¼<±Š—GãQ~V§xâ­ü1éUM&CÞÍ|„A<^ES¸3‘4
2569
+ “Z!¡–Ú܋a7Î0¤q1çÖ'©~É ™‰ÙWüã­)¼ðÁê1…¡é)ˆ&n¬'eÚ!6¹¾P;<dm-TŠ©ÂñPÿoà¿§Úì4¢Î³¬¬iTÑ9ËÀêIqþdiÉNì=MW­H&¨rÅ«q,ì9C6/¤t«ô= ªK5Â#f¿%Î)¦k Aù4jFœv7üÃ*-Ð\é̗:œÄ²21 .›œ¨½ü,= åÔ3VI¯¾¸þ¼¥ÂÆÏç^g°(QÿiÕ¬•ª|ï
2570
+ Êáu¹ÎÖ¥U“UÁ­YE¸ã²öÌÐm®~—wø%þz„êÑ5\5oF–n$»9³™mi6šzj1séGd¯Éؐ ‚å2(0¬>nE¥âV˜Çú°ŽÜé›Õ]þ´–Ýsא7ãû<ŠÞë§¶§V "íٜC'—œaÓXK£¯üYü›­úl^~¦¡—Rû!“=MÜPa´…_Cë.0£\}À±QP›9woÙæQù§j˜KŽõ û@É+gI4…wÖü.Û _éš4GÆ·#ÛxEh6–;L]¥2¥á5üP4õuÅ >›çò-ç»ë é;]÷ÑÑY¶•Œ v…Pö%‚!̝§8÷PÛ'rö§ÙßÏËí»kæ@æ{¨ËC4¬P¶Œ  ’óڄÈsåÍý£ÎxŽ)ÜØNóÐ3õÜMüB‚¡Å–ø‚×½»#»Ã-á;Ì'œ€‹Æz{ã­MòÆ0в>‡v‘©Ø¯³û#iàBé]á¹F{srP†Zá:ó‚öCŽÜ±ÀÃÊ—õ†p^kñþv1_Lç9νdŸØ¶ƒ+u¥ ˜æÌ·’ó“l~«‘Ù„îû­µŒ‰ ŒÕÔebyˆÞ«880Lˆ²5ìæôvZÉQ—¦HV/€ïF{8M*˜Áý¶ºÂؙO~ü‚3|ŽØx¨>Œ¹…çû֓ú;êŸ$hÌz~ç1Hún41eÆOXØ&É¡:h'¢yÓSvðxåÊ:µÆ-Ð)ì•_ä;k@%"’w¨s“
2571
+ ËØJ‘­V+á~àé4È'QØÇÝøÄ|^ Ç)"¥0Ǥ„Ðñ kÂe\0¤|>ÿI÷ä’ÒÝýÔ]¶;L qìÅR¥-bE]Ârʏý#8n°»ØÑGø†,RmâAê_Ãpá%/BU#tΊq>ò*öú(Ž$âešò|=M)!‚Ð'¼¹¼R…ÐzsÑxˆ
2572
+ ß+Ž.¼¢7â%”‘²0ÿPàiÝPñ¸˜MÏ唀:L兙-üœgß=MƒÅ#MÚ+üfmi®= µ¬³ñ}$ž¨9<og"Ø[x«Æˆ¯+_–ŸÐ N׿jV¦­¥˜#—Dw—$¢øŽ"ÂK**¨N]EB®°Ëß‹„Sâ^í%Í(æé¸ÞögŽÝ¢´Q{Ý»b§Õ×±±hÙ^6Ÿ«Gàý‡QÃe]t„ŠÉ¡šQ¯¡šñ⸸a·12À I¼Æ÷nZQ:bùh<c£5yÞ§è˜~xWÀ“Ûý$õAXÁÓ4Kóݛœ×¼„µ•@ߺøz¶Ñ1s7‰†=MÇ5ö‹¹k±R%×¶Hšâð/
2573
+ +Å»ºD’ó(=Mj$×JD ò¡Æÿ¼"@ºqJº&Ïþ”IÑKÍP„çüƒzDjIö
2574
+ ¼ììoìì¯íì÷†;#¶º8l”¾k#:âõØ÷¢™ ü‰_ŒWNì¹tjϔuÐÆ>I¿Œ‘y Høœ@u¬BÄÎ5Ûy:LU&–ù•𘆣Rn̵5ZGù<§h¿ËhÙâ²zí¾“¸?J‚àçªIx˜6ìÚËìV£áøˆ¡›h²'ºéÞXQÍНS݌ŒdÖ8هßM†9 ˆS}‰À4To0ömeΦ\ܳtQÖç'Ñ"Á©–l—à¿ö&.ÓÚçï±í¥­£ds¿Œý= ìZÔOäþr;Z©’ê–ÜÔ‰Ðó>B:½î-t®«˜d¶‹L­Ó¨$QèÔDϟ:!ˆì€ Ûq*sª4”xã´®X&(\À¾ŠÊØXA¸¨Åe2PšB…*“S{™é‚Ôce YÆBº©¦lÍX;O²:À‘d¿fQCŠnM‰Ë-ÂÂðǀ£ï¶¡SÚÁdC,KÂÍõÞŽ›=}=}ߛ ”2•y3‚R¤Ö3=}cÐ'Z®¦ž}±)„\‘(YàP8?ÈÚÂԺǶïiXEßÊè= êèŌDÐ&sÙ¦R÷_{Ù±4Ë2 ÆzãT!gU¯CÀ@¼“û7"Ìf ÆúX«à-öRÄ‘•êP$#¹‹oü³ãqŒ¿«í³= sü§{ÿ«·=}ß͕ Žq?¡ÏÙ¨½Ãç×å?ŸgÆ‹ôÝi,×¾ž’Ö³G¾»= ÙM9jA¿œ¬R¶‰Æ'‹s Öæe4æ+6ªƒ—À‚Uùxƒ G›Â+ŠYbçÅÉM"ä˜éÁZ]&ýŠ¡9˜å(¡nn¶1Í^¡<ÞÍeæ†:WæéÓ#4‘Òª“zB˂ÿ:°—5G¬ÛÂÒ(âÄGÿö*ë¶.ï\¶l^Iì°Ô‚üZ™ÖKXSý¨' M¾b]±>Œ0l›ùXŽ(^^¼òçHÂSîÃçàóˆ+!šmû¤šÂp= w¢·nHµÔHŅp™ȝXw]Ž©5"1ü>
2575
+ ±XZ^Î9â¦gþ=}oäíçY÷Wé[~Ñ;=M㪓¶&$óÅßah
2576
+ ÂãtÛókÿ^ƒÛ7z¶#X‚@ù€rÏ8FŠG"5ĘÐÄ~áUҜ8̭ˎÌe3΍ñЉA’´ºÌ=M¸óÆ~2“Î,ô®dmÖ=}»u¸ÆŸw:á!@…-¾ *ïr±F¿/͒;öMÅÂ1¨:4>&YÏ= ¬]ÜèÁ/4&øö0aM—ÞjR»5bãXq=}A%è9= ži©¸¡l¥nô@ÃOPz—ƒ»wƒÓ”ÝlXœ
2577
+ :ÎÛÝ(.Tɏ¬|©Î¾²ð•¬ðÉçiå_*&F×[Ÿ oô8B¦Brþ=M¼-ò»ËÍF? <@üønÍ|ãžxÔr6hÚpÌöç#5‡íl÷.à@]ð‚{¹ø÷ì<Î<ÂuwNLO"_u7°Ïa ÿ\Ìr îÔdðó¶§Ô67¤p£"ªCËu@ïfcOò¯x¸3 ²#lf1}U¬q±ýx¾jõ×»ó±ñ ÀR³.ÙýåПéIcΗ‰ÿ;F? ÛÝkØýóÎó•ø‘6¸'áû=}žœt8Ô]&㰝¿|%BÆ<Šþ·ÎÜ«ëÍ>YUˆÐgæE¡ã(Á…‰
2578
+ 8ԐXÀ­vÏʨ¿6bnµ¤GԒÁ¹§\)é«®~žî¿w"Þñ£à/o¯ëOï“r(ÿ
2579
+ õOá4–¥àyázƒ¼}·‰æÌ²ìB#ƒÙ„ø }… JÏìN\]=}Înü4V–á‹a›ÉlIA Í<œâ:^&q/nõ×n5;=}Ù,ìâ­|0Bõ=}l;Á¶®äÓ=}a&¼½ó…ß@”ÂU¨¯ÜüHÝØ¯Cþ6ýjÒX_16¿X]~Y~; ×*½ÿÊí²2
2580
+ =MQŽ·ämòjybá]Ü Íl# à(‡Kð5ÅôIJßqE|s‘ª±×ÿše¼ˆSÐo“^[ØÞôX‰‚Yá4ô@1³¢ƒ[#ïQ½,CèoJ 9Û «ÐKvnC&Â0 »¼Ž°SäcÑ07 »4NòÚhr/#ÉRƒeÊø?°Oí„ÿójà!c³hziÕ§nËGY³ÿòò,8ä¹àø¸ ¡µ¨X[|.ôóv3<÷£Û1²a<>G¦»…–=M˜lf†*-¨>9C1TQÂñ¬ì(*ø×d²¬p ?n=}ê{ÕÊd\ø\*·×Ré„ÕR_Y>7Û!èc.¢V;$|òè¯+/U€cMX?éŒ9À‘ÌéZ m&Š…,ôvõÓé¶ZÍ<VӞü° Tiš{êC§)ÐCU·RsV$gÖ¦îÁƒ ÖPö4fÃщ>ו¤kc1W\‰åÅ$Çp,%jŽ1âÂ>†¦¹Ð¨–XþùïäœRÜJ¿o {FúйÝÚ³ó£ëQE@mj6¹e¢Ñír»‘{SŽg½ÍRâl¦í"C÷Ö]§@¸š±ë:Â( íQóƒœ9È«Ëîqw±º{i"ÁŽjêévVÏ¿KÐ÷±ñ´ìp¦o.è<wÕʈ¾­Ø/iºdr2S£ú~&‡Oãè.¹
2581
+ x*q‘žT·gÀúÛx¢/Ã}ÜYŽñ-•XlEšìøöt„¢Ù6ÀžùG
2582
+ ;%eU àQ-ð„ÁÆô+ wcq÷æÍ¸S©Šl¹¾!Û¬O ISüu9=MÊ- !²; ÅUº¿v¶å±ØÆ˜á¾ @ë]Lke1³„,#o™¸òÄé—ξ$ê¯3eI• ŸNö+ãsQøÙö”á9¬Çì<=  !„#\…]ôÅvÉpšˆlñƒEÚt^ÍU•MAϼÆüÓú}Sú",Ú}Î>€P=M¡nOcùÀ˜ÑþQ{¹ˆËÂM{pp‰•Ý5o;Ž„Úþ¨Wå7°S'1Ê= Eºg"¦^€H m?P¾ æcà à°!£!f fT(Ø#ö%P!»3àc= icƒ ‚  Œðü3p £"Øä¨3ðE= Ÿ"˜( Íè±Sàçg>W š9μ5'¹ñ3”•!©Ý¬kD›«êíSã‰Eèí«òªý+L—o~EhÿÙ%á¸ÞÓ®©ÆPq²@¨Ø@Ÿù£u/’§>®\è¹'ÙÞ'ë>Ϛ°cLŠX«züè–CŸõ­NÃö‡q«OëÞk^ÁÞO}a=}¼eŒaþ²ï.5pf°²/‰²Ú±Ë=}‚lZOÁÐÊSy5xŽLQSSOwø‹††›¹¹Aì외;ÔZ$O0‰\6ŒkÃÎrÉŞƟlØ2²_(™zŸ¤&ìL¥âð¼[¬ºIPN¬¸/3†ö¸4†=}s¦•Sgù0ÆíÛàÆ¹(“â¬Ôÿ²Í҅ÁOøVSä®P†þWì»9ƒwx^Ôx”<Ô¥KL¹ihxŽ\ÜpÿÕ;<V³¨Ðòõ«çÛ®6¥Ã†XF<ÿCà)Ss¼4n9ÁƤ%çÊe×X&¼1öÜe¯“¢«†.’iX‹É¾H‡ù;%wì”ØJ|ûCœà•S-Ž(Wú®{®û®“Zñ¢”0“Z夒›, Yðu@­lð T*¨%­ëXæ¤%tÑM̊¾¨ÒsH*sHµ= Í¨‘_T5t|–Ì€ö¯ö"XöNV£mYö”ÇzÿqovÕÀþ.‚V *Šz©æJ:ó’4—pÝH®qû§ÃŽE¬\Ú®‘T±“Œ*W¯2¦<Û¸àăaxâPf<§PªQçhÐù*öÑXª‰ìX»$vÐ
2583
+ X©eL ؤóa³”ÝÆõL™ÕæÔº¬š™ôô»ÿ˜4)D=}¯)3Èød;=}ý­ÐNŒÀ"=}™{Ó¬IC¬¼õâh@±óRF¢òZbs9°ö§¦š1„­³az8‘ì‚>+âTªH[Ql|¸ç6¶¥å@i§CšË‰¾Lê–ËGdÔð3Ö¤]äp2ºþW¾’d¿µ(H&b‰3Õ;ë°9Ûeôó„®jdúQÂџTƉûd7 .uo{„Ø<Züºæ:ˆ Š'!Žî»Ø­:iÄ4ŽÓÂÀ,¬ôQÁ]v=}/·tæ5&06…,ø$ʸt¶˜ØMõ‡ô[ªƒVÓÆ=}Ƀæ¨@A¬K¢§«Kä>N¬È”]‘w5øÚ®dC{޼æ‰sœ ÿÛ3_ƅ†OSLœMÔk탦…†ú¿…††{††††¦Y“æÕ»Qÿ›E­L‰$1îì™4‰:›6Æ=MrZ¾6Ày{øA<(†Ål1 dbm7ÎN !‡¬ÛŽlî1_ƒ= ©néµÂåÅd¹¬Vk.d,4Þ3~„L‰òôޟ1ú¦·½d ’=}Ž–q©7švzaY6én˜±Æó¯Ã=M€µ\^F>ÞªëàwÞ»ÏÂËþúækéy¡½‘ãyÝ÷¥³jp'ò…‚°;c9¡Zs&‹×]Ñ]ÝUî«­>_<(¬‡O˜vž Q×*xœu‹òRN*k;*0䅫¦—øÄ…üЩ{ÖÔY—å!1è;å&ÜÃFUfmü&r3ÄèÄQñb)š2ãT#À·ÿ¼%TqˑZs>cU´ƒzuÏ ¸Ú‚uQ=}óÐ-G»ªM(e²ZVꬽv‡¸ ͦO‡T·S°{@R0MðaÀ’fȵ̂_Òú|â<ñ¡îйAé܂”b+™!¡O#*¾ï3¨0âšO"͍xÔûÝ
2584
+ ÞÝ'´Gü’ír”-—|zþçW掯›$×[ÙÉJuøAD!>'o0K ¸’5׀=}þ\e8
2585
+ ?»þÆüÜ=Mƒ3íúPþræ MׄÖq&@ýÑWnBӐ>7„‹ÜÉTùÜQ¿^®ñ-, å!›'9ìsùÃ4?„šBTu&éçãÎ,?(&ój /¤£™Eà'â£= R(/¤¼=}Íf÷I³•HZépôSG‹ˆÅQ‹¦˜+^@]ñï›GXg€¶ò¤ssÀ ­/µ¨/6ʟbÏ´%°/³~å—¨š5|Še¦U9¢’$BFpŸ´„¢cë±²êÒýœ´f]„ð®ÆÆÓÎa.$ªó=}´Y_ó싌õXóŠ¢Ëï|3;-%ÏS…ˆ)’÷ iTlWôáµa6m u¢Þ>q9 '—I±N}ÞC>hïˆGÒ*Æ·¸PØ ¨)Åéø¯Ë¡yè€Z?1„^B\pü–ž™õôÞ燹à Ôð4‘ÚIšsmQÚÆû¡†Žu™˜°|î–(®±Ø—¬$©•+=M­‘°˜8ggÒò›Cƒ“ÆK€âåþ6…Ä¬Ú \Yý°-дXÇ̇íÁڙË2ñ‚=MdŒÑkhhÉÃd6ñ‚«ŒQt»|Z³Üu ֚Uh——Ï–½çØÛ“}½SýË}˜©)ÛÑÛÇwƒßC ¾ ã't¡a.ÍJãpa/ ÁâÿTV˜Ú´­ý ·ñ¬?{«<
2586
+ M2I©O}žš³&ÿ¬øŽu®:”º}‘ëßGnêtF@1«=MÉØ &‡Õeî%~ïNõŠI'‰‘Oöz›:?*<á °TEŲ{Ï¡xÔ©žä¬É®ò%‹}Iù$§ = s~——;Àí–T/ƒ¢•¤ö…ìpg ££»¬údl° „yŠçðÖïf†“ʶúÜÃï¸F÷ÌìÊÝ}}yÑ^Ö½Ì~Hí­ÒȞ٥¶kmzkk£%&¡Ëm„sÖ>ÀA}Ô?ºRËœ%]\:&D¾[,¦Ñ$ÃÐÎìn´cÓ5ÆÑ“ˆŽO[}=}á֍(N¡ñígµ€â9c&=}Ä®ÒξQ,öÔ?è³K'VL¡](ÂVÚCê0ø##{ºŸÿ3¡6ˆ®˜L(¡mÕ"ÕlÆzŽÉؚÌÝ;A ª¸_ ÛÕñXã0î|ò IUÂâwļÃú®ž‚[,ÊZH«§/nŽ’Päõ]eÿõuóšuqú´Å‘³’n=}¸@Ö,–ñ«À7¸£Å½ïoàõ‹› .®—<òò£àzÏq=}þõ– aé¼ù^Қž\¡Êá䄮ù”!MGÓ&„ adePõUሞßá=M tï¸
2587
+ ¿.Ç_ò$U+å¯
2588
+ w§ÆËp;Ÿt'QŽ$2Œ%$}­¬”ˆ ƒ€^(f%eŸ_0^ Ò¯°j¸ƒkª2{ ™m4‹c™•@U4N-LCæª!˜3gâùㄾFm¬EÇt‹îÏ6’Þ¤•äxN8‘a©Y(O}=}ˆŽ­ÔžWñµ„Öê= W‰¹5(—¹~€o»›%V´¼ÒJÓ°ú:—‚Îų§0V÷zî!°¦Œ¡øðÃL!¦]èdˆ< ÛN´= C¤(Æý>„ñmÇs=}ïû&NK<ë‚'»éŒ_È!ôâ[õ³"¸ÐNV캪6­°Â*v=}7%ÇHßDÌ/2Þ= 5ŽßK9'ë„n"?¿lØdmçþ¼S3µ­¡BÁÞø|4ì X6!ôE¢z@ù}ï„<|à @T¢#\âC‰ËêéÙdU萮8ÂrãÚ·AÙvqФA4ÌÈAäv¤ Ä,½ÛVq^ºÞéçÐ3'Á69÷[΂xÈ»áT•“yþΙÍeúî<=}ÕØq¿Šñ²9Œy×m‡²cžàSÀŠÌëx—écŒ¢b9¤ž¡1c7ÈHD À!xÚÁáò-[xÚ¡xÚÁ¥Å;úxÚÁ¥Å;zxÚ¦Â:z˜ÚÁ¥ÇëŠîAÓûäd¢í"äü;ö'¦&Úlvs¥æ~cQ±¡K¤ÐáXÕnIÆÛ!£à†¿N;Ý&T,){†lH:_}3 Ãø½óÿ{ÎÝxöD= eËjv)j-KtÚF7À›ÍãъòeS³1Ð{!ëwH«1¬È¸Øýi¸0mOPüéyMmOXÂh…¡º<¡!øÎÀ+ÓÿÀU!4޹nð?4¬²ÔŒj FØ»ãw;pÃøÐ"ËT'b[[ݹ?°#O·Õ·Š™O%·¹¾É„”³ä,}èÚöÝvýÝsƒÁÝÑ*z ¼wô†ŒõÆãúۊ³~tž±üO᱊Ë2¸[
2589
+ ÁÔ(û6ùé2oeˆ•Åê½úLÁVqR Ô I7ÐHh=M*àCY¬Ñˆ­p#¸ÞYvGà¹8 ‚<ˆˆco[³žKiRGŸj&õՕu6:“ÿ¹C;´ÕÝèÂËj–ÒOƒõ*W±[Ōk¤íknXâ±vRa¢¯IC¶Ñh‘}£]ÆãZµ*StÂm”‰Ôk™øòÖ¾Ö¯w<
2590
+ ­™¥ñͪÊw)*èќ;fy> 6z'ÚsFaãì(¶õêÁöcŽÔ@n“i±c'ëA>Q“оñBù$JCv …b9|U3„™q³Ø8:Lw(ô¾îMàaSåÁ®bGÎβÖÍÞ= 
2591
+ <Ò!¯É."îRUéwºÌÊaq_Ë’;e]¼.ã1ØÄ~–qØ´•¨
2592
+ ©pz½¬“ÓsÐü¹Ø:2R%3˜§ü+ f„=}?@Õ,zèz%øíŒ‹aj*Mô…ÈÍœ$w§îyfhEáeD¬
2593
+ ‘ÿ™t‡áоÁÚãèV¦e֚>€ŽI[Bë+V†(mÀ®TBã:ê{AÓà½WWºÎ.®yj{µ¶y/5–kٝ׹wŸð¾ÒäÄ-¦ pþ*-+i} Ë}}ÈiÅa<ûceÒ ¢]ù•á¾vÿ¡•+øtÂçm=}qI7hyP™”Ä‘H±ÒlظjuO–Ô×ûÊ86
2594
+ %W=MñàÎ{_bØÓçõÓÿ%$|Dì£ZL3F…8‹VãWu";¼×H°×kyPøÑâëpƒ®=M1¿ëAp:UŠ>’—2{ íØíwK1-<–êJÜÌùksöK &›êBˆ.3_g§%ÄŊBƉ_®Õ¡o8C@Ao= „#±®Pïf|§áÓñØ)¿G4¦ÎVYÿjMa›9)õç[\Ý]= Qߟ Ô\pnœ,ra 7©ô35‚Œ õH¬mµ[ÁœÏ¿†¨îÂëq灸ñïy>’‚…°ã¨áP“4ˆú¬PiŠ;Ò_çÂø^büZ°d!j©^/i¼CpÏb0üö¬—FE´ôU$­i‚Àⴞv+)ñ×"¢:ŒË=M››¦.Ur{ åŽ=MÕ
2595
+ IݞFÆFÄÄãç©Tùýl=}<Azào.û“y2‚†ˆš£x„–€á3y‚hUuj½ù¹‘Ÿc-¦„&í-tüßùo¹ÊË•ElßµÕx¬î‚fF­eþ|)¬æ«Ô¬æ=}f[›8mí ‹ÝÁ¡Þ¼]"ƒdÃ>ŒPÅߗž?F’^ßÁ‰ŒV 䕬վF— ¶»,ŸL±>4"=}8žº¦Á…Øš‹™ØJ:‰Ø¹J%ã­JÙ/WužØ©*ã¥<^|M½©­S3–‹…<sd#ÖXæ<‡@ÍÃNÚÿõú^úÑ]þ•¦’ÀÿÓ³ÜÃBåç¥ð ”òS,çT à@ àÖ d"r°¦”öFUlë–ü9ƅ[,óÒ=}˜¦‰ùîùƪÌ(‚@zØ[ «+ì=}æý…ûÔQ9iŕí)X&7‚­ Ø%µ‘ ²´‰Ã_  @´ê>ìÎÝc {À·–ÖdzC /zïç %ZƒzßÔ,NØ/S”w,¥¬$†µ²*¬^S=}ÆØ ã:i›È#eEȬŒÍþ õ{ɂ;^c÷Ô§ìgÁ°^ºø»´€ömì‘éŽÆxÿ%3ˆ&.·‹ɄƱl·Ó=}-p,Cóó£l[dNÆT ¥ŒR³=M¾¹’5٘ýb6‹Ý„…r•¸MéWB$Á‰/í1—ðm¿ÁOñԍX™Lþ4¾k–K½É¢PgsáäÜðSö ¤ö9ÍKzotõ•= ó}O,LàænГ6®=M›^5;{°fÚ['Œ[Ö^Äýª¯Í´M"&¸´¥øM½&}þý›Ÿç ;ÇȬvyÀÆV= mFyÖpc½“o(ˆ±Ò•k.Óv%ÌôpÚvÜ¢®Â5?ƒI].íý¹2RúHåÑ':ô¦ƒˆ „Tž°‚éåXñë(ƒšxƒj¬3œ™B‘¦_‚×'ƒ~’H>¶ãðy©'+XžÅÜËXùêñ·œw¹žÏ€- ¨” rF }“tÐrJlxËã¶&¹Ð?Ðl“qýànï m.^‰Î\RðÐÄÉ€š˜?ÒÔ]hûîqç¯WH÷CJvÞFñîB‘Ù®Ô|Z@ä}#–†Pü€t'‡-F€:¿&…¨8§F"¶Q+àƒ-‘æ„U|ÎÍ£ùu+”y‹£¶ý.Ø ¢Z—\:
2596
+ -ï*°s .ç$áås¦.
2597
+ Á8„9¦cRY‚Œ4Uh©Ñ‘j|:èÑô½ƒ9®MY<¥<݊X®W“œˆ˜·cm#ôU… »UDaI ²ùlZùq‰ä¨R‰Í³Î 'SA¹g(ò©bÕÿKáFÒm¸\Å?˼â®E 7g6ö‘3«úå6][éæ‹LÁóƒöó]ct5Ëig×nˆò¦Ï ¦r·îêÆr= Ö´”"6s´×QÙÇøñúõ^”mÄDÏ)ûÈåRªÚFÅágéôIQ¨ÃæKė_¥Ì®‡ð¾=}y4äò-I¿= 9Õß»BrºÈùÁ=} ýôQ÷ÃKì|Õ0€ó+öËÔq\›@ªÕ§brZ"/O­b Xð iðÝQ53Ú>Úm¶= Ô­pî<ŠS e¨ö}ªJ=M›EÖü|£Šgƒ”ˆUáfÙY¤"kˆï|¯V—{ôeøÃ~gø‘æhKwŒ=}®G>ÖⱗþZç7Ûй_žõ'@bS(õzáh)f[9 廊mHšˆ¦až^,Çx”s®35ðúÃàíŠ%*J6ÎdŽÆ2íŠ<e<KìX’ãXŽ<X—©ƒö#®
2598
+ \.«Ï<ÕÅ<Sž‘Z.‰3ç½6.ÃV®YŸYrtÊtúƒOˆê† óð?H}ÿ[³´u>µ8[¶iä7•Åï^¸iOœ¯°nزHõÒè·œKÕ8øˆºB2RF;*gÚ(sœW+ÿÒ(×½1ú9ý4ŠW†)¯‚_+g(¯ZÒe]yóÔAL‘÷XT«eE탱>Ëxq‹Ö5¾ŒÜ±¼ÕtŒ…£j¸öì‹ ‘ŠìYÒM©õŠþ‚ov…Ð7¹ùŒ—^«P↘·Ò韸 ¬Vó±~Ÿ j‘î]p‡zž—0%d¯À !ƒHù—2 Œ½n2å”Ųh›þ"Ò¬Sā÷ð¿4sÑyo&Zñå"/ú²oϤò͗;HûŽ+-ÊùnÎq1D»2c½þ ÆÜ H[lc»¯q¿Û²_‡ˆ±ù%м²= 
2599
+ ýNóÈҋÄL¹"³óÈù›”à#Ú3¤†ŽíÁÄ-ï »5I{ºÙ CEj×B+Ȕo)U<ÉÀǟr€b-9üˆÀK—zhÿ~-§¼úƒ­‹g(½@¢n>ýàm3‰îýÑâÞGæzæhÞðV §ïT FÂaÐ<^$¯U¦AЖX<)í›Úؔ‚TTµƒñ†R>NsF‚ŒÛé8œ*F>1¦ý”?]3‰_†Áù˜Ýv?õÅhØL€£9aö"H/樂¦!Ì>ï§Ú¥(Ò(kÀI|L¶Á÷Óð…KÑ ìJL Ò&¦®‹ÑIí(åz ‡†¢aÑÆ˜ù,#L0Þì2ÞÁvÐZ‰­5/öãË-D•Öð „/‘o'8•¤…GŒ=M¬gMî8}
2600
+ ¢ï|–é-“Bü„¡×s]1û©ìû~е›Cˆ¶/·€!캧w_àVƒ DG%Àª"Aî,düª@¸_sQ,æÝ¬€¼¼E£‰9dýcðE@$WcВfHêCc‘›HB†¦ÆP8¦áÉÏ<}mP]H§{Þ
2601
+ ýc!éb%æ§J= ‘*äÜs= o})ãIj48IQXd©îg´Ø³Â¤ {EJHÑs«ã‚T§Ý´CE§â®¶_çí<­ÛXfå’,ªÈÚî‘Ng3.<fX–œpá±sÌj{îÑߺuœMçîš.ïf®ÚF.Ý6®ùÍ<=MúX®Êë̒jEgÅpÅfÅeÿ¯ÀIó‹ýÆA³¹NŽH†›‹¯
2602
+ 'µ wÅjœ;íDCºCDV3EZ›E=}ËiÌ O½Ë0iÕ;jÛ<“±¶^ùL=MKùK9‰oՄ .̉ïøOòÀOUò¬•ã¨~â[ñpA^•ܾ¾€P‡Þ°Áßf¸¹€C?6lû‘Óï–Ax¬PÁa€â)áG¢ð_ªp÷Em3pÈ›FœûnXºcÖÖjÎýHL ú¾}^ó¹ÅÎ÷‚ˇn³&ÒB:î›­†ÅÉ3ùÂQóyv¢¸ùÎ!ËÓ°¥~æ~v΅_õMxÊä®­¨”…}ºœ¸õ69ûÂÝ¡Uö†»ªÖÓ^%1LÖZ¦-
2603
+ Ú·%«.Ò+®gùÉG¸‰‰¶‚’¡Åüo€ëø5Öá-v„ºê~Tý…ÝO^€'½R¹ÑI3—îƒÂWŒ
2604
+ ç¯lWöppäI‡:CŸQýU• }lSótC÷!=}È^s½2W–ÁÍð@ÿ.ýéE×Gù< cKñ¤µ#ÉdT¤#¦óG•=}ûPªþ:k_G°Â†Ríˆ3±¿ölºÌS»l%)µxPšÞ.•¨SÀÀ+‰p¯ÅtؘY]þު·Ïųm¨û¹3Î{qÞÆMm—•ÀEyîÄI’G¯ã~„ùõ¯Ò¡´pCÃ^’*剆
2605
+ fÚãW³åâÍôÑç–ÚŽ'¹½-Çú hrN¨ÆÒ[‰šåNz±Ñ§.ÃÏ'ˆêc„U (-÷Xf»ê¯3ï]a:·oòÇ ÒLÅX¼ÇÉKNrw˜Âñ©ÈEúÿ*½•µÊÞG§»ô6}ݽjÁwóò«—‰é””^ehZQ¯IZ\³Òׅs|ªü¬z+:àÅR¿fWôâÿ± æ/T™Gù¥f#Cž°g”AÉNÆ/jÉpY‰?ÏDdzõ´7ipbrM‰ËGfZ½öl÷Õò'Ÿ‰x¡:¾5Ö£‰‘›üH  Å=}Æl=}Ûë[aÓÂSu”áªÎèJ¦^:xÆ©#Ez˜rô=}Û*šÀ{oœü+f?šƒ»^˜ÒOҒÕá¾£nfŸ$Æ.à‹#<_(n-æ­ãcpѓH"×-ãÐ>¡÷–CÁTö¡ãB}Œ2¯âˑÁR€,ô[¯å§ºÑèV.õÙQ
2606
+ ö$¾º¨7±³PGRòLÇ &s˜¼(KÔÆATÌê»®÷†€ Þ¹(-¸¥UšX•V*Uä˜zDæÞ›ð[Da¯4­+%ˆ/{íU£@ú+Zìaà¬Ù¸ýŽ>Žîca#œÕ»¯37%Hj~¨Ãªeˆ½Ó8½[LaEޙIZíUdŒËAþDOcÜÿ’,¹Ø"ƒÞÏà#KñŠØ*¹ËPòŠÓy£ý÷”
2607
+ zàù(îݬQHå8 Œ÷h‡3Øæ¹ v¸€ÕI„Q†Tù<¯ÒìQýé"CõLÑÀEÖmÕb#KVÕ¦‹ÙU  aã&§ŒÐЬM¶}ÖeÆä.¯S А©]6]ÕgöŠ'\ɱC<<qÓê)}“½Š±Sÿ“¦Ûø%§3}Ðf÷5›ÛâÆ«;²…ŽXv ¦¾æ³®Ó3]°Ý÷#{z\âî3÷>›bTñ+ÃÜps ¥YëÝQAî;÷[»½/NÇ€¬ÖO,\œñMã7äõ/ŽÉžHóç+Ÿ”ݯzõ›Ž ”C"ð²7 #£#q‹;¨a"ñÅ\0 ³£Ðø[(ÑiaèÊ*bĀ :,ÃSáH2,¡R¼Mã=}R”ØKcï:9Tæ¥Àþ\$Bc°[$ªê0L92ªÞkc]H4÷o¦‚‡ŽH¢
2608
+ c^B,^«ã0=}¦´po-£·PôÖ·äˆYœ7éBç¾=}’´¾³ã±<Â"YæÔsàŒÈ"¹‚%‹5têV%¤x%ütÝ¿J°|À= d³
2609
+ ýc©™Ã´¸Dvb†Èäd‹E6H±Óq©¬ýj¬_ÅdçËjÌëpb¥ruß2ÓKµøüĤ‘‡®Ä^<›§“”¾èñm¯ä<®üÅ<Û­Xž{‘t[‘d™“\-ØîY,֓èÃY ‘ô?€GYäYj3Xö~°E“¸ÿˆix¨ƒ{6gàs®OYî“ôÜðÈê¹
2610
+ Wu™%ÊB®â2u¾R®ê*®ÔJ.÷¿<•ßX<üÌÈÊðÈùàñÆÚ±h3ç҆®*5™«JߪwKg¾êÄV®0µûJJ3’8ÉètËDÉüwésÊrÆkÅnÅiÅuÅ=MŸýM׌ö =M:Ó߅Æï–O…-gåÉÁ…!—•õìå=MB+ßE
2611
+ »¾ì÷7fÊi&ø·D=M4iD9j~ý‘±äžþL©QþK1]XŸ(¢' Q¢H*€ÕûV–ˍû֛֍û֍û֍[˜—‘o2ÙÄrN”gWÇ[¹)ý¿ï|íNoúáöN^ê4ìïQ‘[Œˆ÷‹öÞ7›„Cê6ÆèRIŠÌ~h¯E=MS‡WWXÐO×]ùª°@s,{‘K­ÝàöuÑۜÍÌ  3»= ƱþYԜBÚО%MÜÔ®d´×°˜Nz@½~ìqoöIZ™±Z}ð¡äôX Y͘®"RßrìÇßäÍ2ÄÉÜÔÇT±ÇLE… Án ‹Õ‰§!•*»ð´R+Zû¶Æ[r KWúY
2612
+ e&nÔ“(‰<ªÄe“hÛO©6Ödzœ.•ïIÂÛ§êé s-ZVrï;ßÁ´ajÖ9'3±êÆ óR3e9“€;R?¹«â‰IîÙÌ ÔŠÌ©{§y…;‘ƒ”+êW= ôýý´û§ñ'їq<Ýçaâ&¸[T*~½ceüeŒ\–5fNW™÷=}Œ“߯ج߉ï°5^þ?ñKJwdw?ÌQáËÏ"YA"õyØ\L!¥–IüÌ·¡nµ<~tJàÖz)ÿ;uúŦUU;—W ¢¯QÁAöW¦Á®I"íqq‰)ÙVHX§Ÿß=}ïö)%…NÐx=M®¾˜ˆ­3•Þ°X0 •‚ax²>¢W»ãQaX2ýÙñXžD.©Ú)Ð?jbÛt¼kkçð©LÛø¶œ¹4ª2ôO£êjìQϦ Zh™W= |Sb“zÑ{'|F•ÍyOæ(¢' Ð"  ¢ù֍ûÝ|Ӎû֍û֍[ûÖ=M(
2613
+ (,ì*<ßc(<ÀMj÷\QœÞ©C8hR˜Å4®©ò<–±…aYŠŠI:Ìè¤j¬ösA…³J)…Š?Âaä›m~ùŠ“Ä.ªòštÍôGÄâ )fnTÆÃ×I&ìØáÝ7¶Ø{sè&W7[Ò>ùsè7n$ÛÐÓKfÝýQl€=MXOÜêÜ ×ü·×Œ]:à5+ðš9dn¿0ú’c¹ÒB<#ÅhìfÑ\ÄWŠùˆ}ý/“½!<ŸY°^Ã&3úQ¤õ§q7R¢ËÅCY’€TÜæÂ·W®ç›FÐî‹2‹*G“tÄcƓԞ&Ïîâä<ÜQœþN¨Û‚5Oû公9Ó¢ÞzË8¾Øºu§÷ˆðšÚuVT›3óŒæâ+ÓµÖqßµMiû8Š[×ï=M€½DïøåýžÛ1ü0ÏÛ73ñ´·=MãIž_uÏ/€–@‘.ñÔP'F?|ßÃ8<cõXKtnðÏ$§Jn2¶–ªÉ_ns ,Ewï2•<Ê{ï3Ö"¹sO²Q 2!±·1Ù¢Ýýu¾;|²•ê厐Ø&çKŽò¼“«g©× .Ž?ò>ʗÓò#Bn^„ ¡gœû¸ ¿ÐsÒ_ƒó¬Lº¢ÛÃ~\5}Ã:¦™á±ŸgÍ›Ô|_ÐáCvV¿pÔ¬Ûé7n8œåc;*zÿQráLµ¿´KèÖúEÑvB:'8å‚ñ1­ƒÐh\菱b¥$úš2iiBÍG9ÁG¥ÞbJϤTÂdRˆ6éˈ6åҙF¾cªdNÊr™l·îGnƠᒥ´ê7‘hѸžêEʶòÌvf¾fY z5„ trÅw¥ÄUöæU,Tͅݙ=}¯L IюàøÎ±q.m<–Š·k+ýŽÍXšÖQêÛ½•Þ=}¼~€7ï£Ú™:òãõP¡Ï†B)¢'àX4$ ¢Ñ{«øœÑ“yûÞʍۭ‹û֍û¾Á•¹*3]t±ÍpEôk­KõøÍnóŠ•T%:ì{á§p³e‹UQ0‰ÁŒö‚Óh»/íúب•¨ŽñAyÌkt«N.‚]¾W Ñ|ÄofÓ^w¤&ÏUÀs€èõ¦¨¬hy…dÒ·Q¢5æÜ—W r3b}m‰y„ªÆ³9)íÈÓSǖÖYÑv6¸†á\skŒFyòïàªöÌøÏ…íÆy·ª-žãxõ&Ó!քÞÓÅʧ=}Iï ð²ùÓÎ]fU.4‘À‡±C•Ç<萂çžGœ¼±‘†€°+µMN8™ÙR•±K¯Œüð»
2614
+ æo]—–ï½¼?Ì á7><±˜R¦Gvå~XåÄd¦Œæ_à§¶µ^ܕ0‹Ê “ZbÚ­0’ݰ*1׏ª¸tHfиˆâúgß¹žŒò‡ PŸ¦ßgÕQ ´+!ÄÇ&Â×E°‘¢@®í-°žPC§% eP^UAx½,—lH>MÁDú§_V¬ÖOœµ¥ bXû3C¨ÀêQ2æf’sD¢ÆH"ngBJººµñ¬Q­Á†x,ï?å@N¨å•›Lg]¿8gàX~õa=M1810o ˜î®g}¾à£³)/i„üd¶ÉD1Ok‚üD7°¬€fRãÞFSÔF%ÝI¬hÄ2Lµ©ù‰lkCùD½eÝóyžN½Â,zƅð^£ªÂlz÷…ÒæT«¼~yì]µåD‘VÂÑù˜¼me’.ï6S'µª|ú°k§‘>ÃÚ = >†î¼;´oäٜ2e%Ü!IW*¨-I
2615
+ ØbŒ7CÒ¨mNÂ=Mq1cƒª™QÅ8µç匮Nᄒ)&/jx;~êÑżÚyjq= 9£ç´±˜Á¬6ï’Ö,HgšØ¼-ö5L·w0ÚÙ"¥vEñEµÔOËûj¦råÙu<Ýze£wU“tó—wUO•‹ðNɁÿÂ:<¿õ€3rëÕÜ^të‘Zòë °LÎãi=}C 9ZÀ>»½´ÈW0¼ñ= ä&n¿€¢mCOÊ;™ÞرÑ/:YýäúNm({»èšý¤À¤¾DyOᣤê0I³’Ý´7Č(´øk¦—»¬ï…Ø(8ëLzJ MYë=M4øµJ(¼Â‘%‰zjrµ\:ÌdØ~©é+?&ä!ªÍM¨Â ;ՍûæÎû®œqû֍û֍ûV‡®¹´Ñ;z”ƒ øŽ“Ô;ɑ޸¯¢?¥؜åg昞wSwÙÚüïæûžªE.ðÆŠ ¼JàÔ!öý,€ä/’Þœ°{†°ñ¢\Z7A¦7*‘Åc¨sƒb$—§xRäìô*÷(ƒ™zî/”¸Œ_âäî1ŠÃ(šeøØTbÅ+1š6ŝ®H:déý]jÂ%q6½¨c´‰,Bµ-V&-¶­SÈÓõ€£yºôéÒÜÞé6÷乆’—·ém®‡qC·¥ÌƒñâИ^îÂàf« ·MîœÑè»êÆl‰»_zû¨>V‡øÿ³¦mç߸êAei§!í<6Ù.æ[Dx ðôO^—h8ãŏ6·}fՖéMŸNvÙÔY
2616
+ ÞkÖÿ\RÇØqðÁM¯¡½]ü¾>¹F™¬|Ñ °çÌ{>u^™L¯KX»eÐÉÔÀmcឿ™Oáå)¢^ë$ϖ+ò}4DœFX»Äb‚i ²žÅEU iN•´ž=McE ‡h.β4üK ’~òÁDë‡éú8ªrIÒväcÑ×ÖŒ;åÀЂŠo¥:ÉèRsQ¥–åûƒªSw5]¿HޜrtwóJÑÆ’fí¯œº¡ˆŽõð䈯ÇÓÌÁQšŠ-õ„¿ÄIWo³›µvm£ºG‡TùŽˆj]ö„žÇÙc³=Mš( b) PŒûìÖ ï֍ûŽGû֍û֍û–íU<Þëúˆy/¡øŸ'Òe-Ä®?R…€Žæ= ü¡Îe"Kê&Öu+ìË?ˆüB“= ¡k#Ÿ¬(ä¸0fü= ¡¿ö'º+Ìþ;ؐD”€Å= ß»¡/"‹¾Yï'‡‚ìW‚îo‚ü?ÂùŸBa4Ñ[Ɯö©åiä§Édâ”B{†±Y§¨¶wüIœådÒò‚q™o5q˦8gŒˆ@–V1‹{¨qÍd–÷n‚žw±ÒǸùgœU= 49Lš,“ýCåºQ‚˜Q…²ˆ[u„½A~ì’=}“SkLxDÂL5½¶«cK友d•Γ£ˆÝi”øBâVq‘§hÓkœÕgŒûKz7±.ª5§¼¨øšôçå3³sÂø‰÷‘f¼\KÞ_O²0eOªº·dóëÂ5qÊHŸíßÞÿ0þ4[ÌÿM±Ö®xŠ5ª¯©ñ¶ÞxY?¨}¶Áx‹©>Yþ^LÊûF©ˆˆ =MÛǨ-ӃûS±ïZú2ی_]7ÉͲ•щÖõNû§Oä¶ðÒziˍMͧ-ÓiV÷vøfû‰' ¸½Ñ«–õŽø=}ۇ/=M±]ÑÇÏ=MÍ÷ÝD(> ã¦âP î֍ûkþí֍ûVúÆÖû֍ûÖýÛ¸q×y+ƒ—¼©*üwً‡}Ûîî ?u[÷&L,§|œ§èGk ؂ótNœ @þl~pýä_•[á-Ÿê¯L1¿ýtƒl1û]ÊñÓúœ ÎvþCˆXSÛ_¹)ßӓSöÐñ‹–R;g™†š> Z¶¬ã¶´ªSÍe*Ìs£½]‡èÄ/{QۏîìËê§y‹¦ÑŸb"ƒ®yL…–I[3pïìmÚøËAi™4]Û_¡®½½fsíÁ©eP™%u€]}(ýjFO9…ùgíS¯rüS4ÓRiÝeK*?²ý·ôù¡öÀQhQr¬þÅi²o³LÝ{Àdª÷ôˆ®©6­ óÃço¬‰u¡Y½Šc™.´ˆjˎ™qé2Ÿ:ò1lBY1HA¶L²³˜yZ½<µkVœ1]~nBqUôÙÚ©ÂTúɕfO€xM:¦°Ö1°l9­nŠ^19úshƒZŽ
2617
+ ìâ<«ÙÝ ‰«‘È“9,¶Î¢ñÅÕXFß!Ê)»AV›[\N¨ÐŽé>xhg˜çA(®ÁÌDê_¼¥PBbõÎàˆ -ìëØ­ÂqÑQ؇x
2618
+ *vŸÿA
2619
+ G¨Ì¦Ôߐç8ž/ÛWÂ0þ(xa"ÊÿÅ0KF£X5Yˆ¸K€½¿2DRt€ûÆ&ÍyºXÝ{;qo”Q~u?Sã,qþ…¬{í°æ"½vèÖ¡DùÃ}äÊT‡ì=M¦ô_>X»%9î7rzX^H(qïbPV],®fBöG:ÇÖçaæQ!²»³‘èU5Þè= “˜6êNbÕR?£6¼r¬H§éÕJ”õ€Ôe]²NVâvèšÖÛNÌ|ÿ+ÁÆ?#$á#€5 = áŒûÖ=M·ûÓ=}^ҍƒÖû֍û—±šÒæÍ7zS™¾vÅ!”$-áÚáÄ9.ääl[¼þÝgC8åÙñ$Ȭ…påXKn€råduFĞ*¢‰ ]#Ù×SÙ^‘Vk­0َ>Û¢òbìÊ72ÎïxfÓ ’DîÍdہ5v÷Z–ÅÍGáfÆLøì®¸MŒ0Å“á–ÞD=MÀN¶úã
2620
+ êÝõÿ¯Å£¬9›¸ñgØ8K/¿@žèI–g½áÓ\ߐ¾«SOò|š©;®w:?oþŒ)ª;Dù1J­ÄÖLgèóÄBâÅêØ/rEÀd­OÁ:LÔð çû8þÞ뻋bö?0ƒØ^5?>@A¡/>ñw¸Ùºo¸Ï´¡*ï(·™®Êô+
2621
+ E~’~5ŸE~C&Ÿ ×8éÝc~ ]£õ_gjå¿xSÛþž¡9í0ó|–a¸oFd‚‡wqçj¦锍zw
2622
+ ˜¯N¢+š\rög
2623
+ ©!ӟ;Ž‹äPƒdF–ºÂWñ<ñz+¶¿Ôämåª Ìٌ£z¤MwK=M¸]â!u®ÌY 䝡Sú}9ªŒÙ;c瘂«GIr~”ÝÆõõ§ðbtfsÒ] J¡|7äñè€æ—¥€×B¬ù2h«ŽˆD÷Û¸ØV&¥xšåÑTM¾Eƒ2‰[²äÏ7é,o€¯TN°î&&¥N¹hԄÙQ§€aNö™h—sÒÓ°mï«X?~ìîqÅÔ¼OcÄ}nx‘%¥KË(7vC.ÌÁ…„=}ûÎö“ìÌ¡eM­d‹†ë6ô«zqÿðîÆw=}¤Æ—RÒ» ,ba ˆӍ{èV¶‹ëÖ]ûÖ=MºûÖÍÛ§i£¸=}\(›£ÙW‘(.ácø€HÛÆ,ãIœ8/¿.çˆö(æ¯= ýhÎM9åŸyÃxÄT:­ƒ˜~Q&—ãÑ ù[.ÉΑxØ(¢@Ï$¥ˆ/4B=MÉP‚+eî6ásc4¡=}‚d—¨q?R÷æãÄ)ܪ¿ Ðdf޻䥶i(Ûn†Öì4ÔÇnr
2624
+ t´õÇA҇Z=M£†Ð ,R¾ïD…õL¶öîÂð‘VmR“ØX‹N+Òÿ„>ñ‡ƒ_ž!YI+ØÇÓ°Óç6IÜ8©äåŒõz¢öñŨ«LƒR|”·“ô*þl|i…öj\ív1Ÿ™UÛ΁œå:ÖÛÎã•Í{oh÷š%Œ€¡fî?ødÙè†BRWS€Ù%»{™Ü’;Î=}ûø:ؽ¹ê@|¼êÉ2ä¶iPük2½Wr\ýÕ#G½Ìîý©ÀóN˜Ö»€©]8) EH›Oû½Q垶=M\ Åa„«.æ 0e?/ƒ’(–S¯Rð4·àƒXˆ?Çú)ô÷½¨s…¾büT³_¼aøyžî³cÇTÚшÓZ¯+øßhìkHÖ}žì…LÍÏPõuÊ.ƒ"9„„0k³eðZGp–Fa;ŽqA”»Óu×1+ÙãDÛüœ™¯¡ƒI| ÑÃ>ÁA{">¡ ƒt^éÇ̚æláÈô\‡‹ô+öYÞÉKZ…~3J¦ÔùyV=}±¥)œoÂõ'֞hûÊo\Ôäxñïd¬s뇼…ß0»%Á]™K]«ÐQµΠ\G_ê“Ñi>E9%²ó4øÞw±èª\{Τص2kä´yÇÀìÅN…¼É@rÈ¢)uDBt9Ñu­:/U:ÈC‚ÈîÑ:˜Ÿô€eË&q×T²Ç©‘M.gˆ‘…»VºþúNð×¹.‘BÚ\vô…m¿Nâo8}ÅçÌë<oóç !¢-ðù„èšocz;1‹†d°¸QiJæ.Va
2625
+ Õ)Ö­Fì܅ªŸ¡I÷ï¸ÑJᬛìOà¼;M؉¡ûbkdÍLñ¾„傍KÒg{ƒå:Å>‹¾ù€t‡cø-{æ4ú’sú®ü„[Ž?ÔgPü¾ˆ‘'LžZÀÜö1u—g 6Z±†=Mäô‰îÜVÆnø¥·ÊNl:jGwl›|™â­mŽœÙ®¥[™÷\x²¡ºÔGcò\ñX
2626
+ åªxOª˜2­ÂØ/OŸŽÃOšÞÞ$ÌÃÿõ¯Ã«×‡ PæÉIÿ9޽(Ñ?¸‰«àoþÊdžOÌž1_W"?Ÿ“ÑW~uç?œ¾…—Ê>ãÜ?÷&ÐÁJ IW#1L+ddF¨™ea Þ<ìë܀ž¼/„–(҇cij/àÉPrsâØ›\<Đb®d@7?ác±L¯­„¡HæfgAÐOº ±ñŒú3ãõ8—å²>:ë¼½‘Ü-©Ã= J¾CádkFLH¡‚©d^&FÒ= B©ì Dä³Y?°ìR4f&ÄpcJùriF­´Ÿ‰³nߔ¤äSx?°¡¬˜FF!¹„©‡QKP«g2ùd$†Ó= R'ÕÀ<ÚE“™4¼kÍt>¯bþ±¯Šˆ^“–508v  b$C*ÛǨDZeÌøwlctQk8sâ±£Åì«KÅp9Y…[r®}‚Y:çJ˜¿|áã3µèÆv’t5ò lUSËÙB}ãÍ :¾¼ÏcŽM
2627
+ 7 ÐèÏ㠒]Á¥„ÀÉØ¡QÒ­ìM‹¤;mhwT vSúuíØÿ‰AÚÆ¥›Í,͏…ãVÖV֑‘[¯ºûqžú¡•‹'_¾—2ÿþiëNz[Û8Æ;ñ¾Ž†Ü q/K_ҎÀ·-¿xWØ¿uyT”  ’#¯@˜ Œ# @xçÕÍøӍû֍û֍ûåŒû֗WJà¯ßeVì¯ÇçÈ9喝gS¤_¡A!ÔJ9àù±!ˆn%Pj0è£r¡Øf'R”@—¥aê$ñ‹l0§î$1H.Ƙù€¦®-†ù€^ªcèN7bՑA,ì-¥dàɒ"¾®3¿G@nJd}~¨ƒÜ0¤4³ªHv~dî˜1Ö\1’ɸ肞¬3“Kw쎩¤éDT=}Gá¸KËxêÒrÚ¯µÂ]K¶hæèRRԃ„¼]MÃÉP´OÅb9RJ4áÉpf¥¤wR¬ÎCâØ›\¬‚aLI6î¯Á´Y:îT(Î4®@‚$E.eð$Ó*eÒßDÙBÙS²'H>®ÎHnŸ­‚Ó]ºiýÉÕM:ç爸‚øÿI¦Î;ƒhŸ3ã)Lmûæ••Lc¾å2Ȩƒ= XþL­Ã£XÖÆåCˆ8oÕìØ9oaœ"ŸŠF°UC!NEpUB±Úµ2ÉSA±ªÙ©ØeiD´jD?m‚ÀR®¼„>k†¾„rßEÓþ¶¢Ñ‹*ËVÅ0F¥¾ºt*zŲØBµš/s¹²¶æ‰üº³æÛˉœ«j“”¾nhGŒZK$9”K¾¡h&Ï.„P‡&V‡FGۅrŽ“FG~‡‚q‡QÕe6o·„Ø»e»äŒ†õì†ïôŒ+ÒÙB¶“Þļ£cL\HÇ oYN§¢/}4LøÀàba~Ö²j­µ¼¸ÇdŸméÈh5·JȨ<Ñ5MÉqSاºþ»õTÅFgÁaòdãù™:~õ°<Á…sYMÖ±zö>ö2kk;ۮͽ”Ü~ÃCÑ.‹Ê¾âÕ4ºÊg»Çg<‚F&Qp–»¡wÏ-w8ûèhYfN~T²MUñÒ¤©ù#m ý…BÝ©œÕ¹cmíL¾‡Æë…S†¹¥'EL,>ˆAŒ·¥)LrzÉõøêÒùv¾×B4ùèL‚cóçfæ6;¢7VŽÅûytûnµé–^¾ÒS¿½Ÿ.'=M[ZXÙâa=}'Ž”H„èpGãX þiuÅ«ô¦NŽl—QD÷e| »™NWÒnŽúϐÓ¶»ï1>²k›Ð,€ÿaòcpÚ·“Uܬ:eŸäëÏ~* œŒˆcPëgå\?9*'àX ¨í֍ûŽ֍ƒÖûÖ}í֍û֑h¦Æo€y³$²úEЎ‘"sOG0ë±hu2ÙôM±®Ë3”K±˜žXB¥aÙ1Z\ ¡e$u)(/4ðLyà×ç"v47²È5’Ð°fÉbF_5’ͤ¨üZ1Õ¦¨ˆ¶JÂs1%j¨ÙÇ1S—°8aÒ¸“¯äˆ«jhujèú¢”änD,K@…¸djç¾rDËńÞAEIÇ,e¢¬3=}…T}Lƒò™97Rèûpnñȼ2S„[JþwYëÊIPZ5\?ÃÀý.%÷~HÈwriwÕ²¥´ÄÍ»j¶tñÓŪF=Mtü»ËÂ)5?ÞːuwÓáÁHU™×ÊIdm©â:¨U¼
2628
+ ʁ2-uî‰hÿÕÕ¬‹YSfkڍzj]ñrÁ°®B=}OZ xß= §Ä®Wÿ”ÔÏÂÒyoµAš¢;¬ÜɇzV#ƒ;;ˆ7Rðˆ²¡Ç[-,›†@{Cݤfî”P²—αg¬ˆ^8±·Qqk…g/3ikl8o»Øí¤Æ²¹µšSOºIÒòl͆ŠR³ßÊ¥›f+“{ˆÑêâÁ6ºÒPÕªµK&K9yIÖâj±ÓvžÓ’Ê¢­:;µšúxßèf¹VšŸÐÑÃĽç2[ÿZøTóîÕݖv\Óê{“'#c.~­•@n‘PÆ£U9½ŒÏ Dé „j_G΅n’¾”Ò£³êE|l2ÚØÿúeééN2×Úpü‘ñRÓ»BÕü|WÙ9ñçmÑåŽÆ?‘=Mµ;ia/Ý»›¸P‡¤§± \Øï›Hõãr~tBO›~jm2jR Ê·5ßÜLMƒÔì§Í½¯¼³ÌiqÚ¯%ߝœLÇÞì¯ÃÍ¿ød_¾„_MÏiãïÆò!„â §B!Š®.ð—} í‡"¼?jÁ@§»&¹*:0D@³/$éXh\‹¨­õcüv§üAäÇiAŽE¥x—Qd“¨¬e㬋6ÇS¬Ù¸‰ã ú=}ô½P§¦yyNbg¤’Á(û§fˆÑLâ£1^_¬pWs4sÅH>i4}Djq~M«R €´º/ÃÌê0C‡¥8–¬‘¡8Ë'åøØPæÜýQÚüªq‡¬Kåd»åم«óÒg¼óÄFƒX<À ê"@Ú»;'ùöí֍œ^†û֍û֍ûÖQ¾.¼Zó¡óÏZÐUÆãì.JX\‹ ðÑß¾’8‘ýû7§S©|î–ù|ý…¨r’ÈëÝ¥Ná^·[×|ªž— ³äƒ…>¯#õ]™>ë&›”»±—×çŋ>M_™|¬³K»o*^«z ӋÊï²-^ýnŸ“]‚ ³FnÁ
2629
+ $,-#–,)Ø\Oæ® ƒ·"Ý)ˆ5]D†æ°Yåbrö/ Gcî--©^_Dû®°b7cÒß*©5eQ­€aaº¢å®@‘_¡¸FxÛn¸ýݟFØ>ÒJÓäKE©÷hRoir-µ½CYÓy2ÔDëCi¡¿² )5‘ÒHεt¬ŽÀèA4{'JÒîp,ÇXŸd1ÖBge¶8ºô Tÿ‹uñ¸vºØ}T³gŠÂî÷ÔùÂyžr“¾û‡íŸÑ,ó9îWlɌÈôâä:ôp㣹¦ò ,C/9}Sü›…˜ßa‚ëÁì¶åMµ‹y~×Õ
2630
+ ŠZâòœ®…íšëëc¶ä÷L¹¦å!pÈH&ãù֍û…ûÖ­Ë£…û֍û֍ûö»è=}ç•Z§•%=}ºw–þôÁ/§/#<Šn–¸Ùô–§¯G=}bÿ‘öH·M‘|¼”NI+،ËrÔ±ëÊîN±ÌkÍQNãÚÌxҝßëÆ+NÓ>Ú²G¼ç˜>FÝgø">a™¯;]R•ˆ ›¬>ѐºç²…>s֙^qºç·Ç>Sߚ„«ÓZÞo²^Ž^¿]…œ^õiðúGsO¿¬®™[ç‡ Š¿Îۜ‚½y˜ýGíS¿œ~§-H8GÀgÊ ÉY"v6+x{Y€~㠞=M#ÊY!q&&Œ97pƒnàÕµ!õ×'Œ^20 r= õ!ÿ$ì9«Èx3oQKÕâïÁHst×¢‚™}e vª³ýbÖvÌ8Ê(Uiqž¾âÎrLøÆø’hÑ|¨¶‚âSeûoªl4׈Fðäjù´}3ÁÐÆsyí:ºŸ­U™û‹
2631
+ ò”Öº>ãTFŠJîñÄxΙÜqS‹¯Æ‘íí«Aü=}í½‡º*?U+Ÿ‹þfP„­ˆ´ô0ÄW¬è‰8yø€ë8zvS€ýòÐÉÓÁɃF¦aã,ÁG8šîT|x„h׿ð‘ˁ^ãñ¦7,Ϗ:~^RüœøåPÏÁždk¬x¶=}©Ls{¾†Ö”ìƒÙ}ärƬ…–5ëZ¶¬mM-ûzŒwëDçRçz†,Ö¬8 RùrŠÖE‚ë±u6‡³EáNë
2632
+ £¶œGM OxrýÐ,ڏÙì²½Åõwëä_¶¤q¥[‘bZѐAµÐCÃPU§ð^߰ŸÈÔPβ°ËƐÄÞpݹÚ­pÂÓÐÄÇ0ê7ŠªP™°†¤‹¼°œÊ°Öp’ÁpŠÙpÍ°†Ó0†Ç¿Ð¨ð´0¢ÐÊð Ö¡€¿)ß~+]_*Wß)e(âGí>"åh£@ Ï5û֍tŒûÖ=M”å֍û֍GïÖíÚM›æÍûì¦Ïß:’ÆRÔk€6㼦K,¯*;¾µP\L‹ØxéÐÃځZ,Í:8ÒTUœŒ‰xþîpÝÓáÁہr?ãO#•È¯q&;‡¹„ˆ^ýЯ¦ÐÙ¦Š«,³·9®ÎRœx‡¨ù„hßýp€×Ážc©ã¦ç-‰o;Bï9þ~R<܆8Ÿëp¾A Áàscû·Zžƒxá°«È£Á´«ÀÛAÛׁ¾¿áKðpOôÐ^â<H8³„x#‘‡âWÇ´d®Tddl²µH±£èµ»M? ˜|¸øq¬8y²Èt¦¨Lg¼ÌhÏbÄÉn¼ÏiÔ§¾ÍkìŒÀØæäÆdª6äüvô×/ñÛ]‘×C±Ï+QÕ;Ô'±ÅWñÃOÑÕ_žÀ¦0µ§1]g0<Å ƒ¨óô $]_©˜U¥˜Ymì@Î;‘”6ю.Q…>ñ‰!q†1ã2r‚’yi|Íü‹¨å ¨Š;(×­äÂídñÍäݍd×=}
2633
+ ›Çšúmœß·¸×¯ Xh¤>ò¬gtHqXÑ$1“²ºX’¦¨[kT]oÌÙ= œÜh„Ýl”ÜÂùÏÊ‹ªßnÞiTÞe,ßmLÛc<Ú˛¨/)Ï'däcB 13÷ÇäOïôç“õ± 7¤kíªXºø¦{Â[Âæ›B'âwΟtíoºSq+Cçß2Cß1E<(/ùhԕòŒîä9 šÎä)‰f¤é:—ÂÔ'pš™ÊŸ¹e„F–i‘?åjuÊôó~Ê3ÇÅx Ñsò'JnâÄo0lJ%Ë'^¤8H/ÄpHQw<Ŋ8ÑjÜÄfXÑb¼Ä”$Qc>i¦hÂÛ 5?I5e¬¶ó2L…©1’p|D›¬†³e’m¢EŸLñ~ê9‘¶´‘ºaê2YC¿Ei*æ3m„ØL·|"De"qt:j?¹N ¤\4g©°´©d^ÉLíÄǬ±YÒnë™ÙOämbDqrD1yÅÀ´±:òpzkw OC„¢ì°™Òlöê6ùE'¸¼±«’mŽë™BOÕÜ·om¼äeüåsœäo"Dh¢EtâDbBEjÂEf‚En$Bh0aD'ÍO/PÅbßeIJœ”Ûr;¿zµOfË|š¦Ra HV4e!ŒÖûŽÿ]Ӎû֍û֍û֍ûl $Ïúgýñ|yÙC‚¹áÝS¢wQ¿¯ñüáï^ç©™í_Ì0·^tK2M˜Kî»7ö®Ô4‹®–¢1ƒy«¹ ¹r¶Ôˆ3[Ô½ƒŽaçùÒËl3ö–S›¸CäêŠÅøÌê ЩV›“ç¤É~҅>‚ŽLË㿕xd҉
2634
+ éŒuNûÖÉ¢ÑôFÖÿÛ·MŽ<e¬FðôoóˆäãYôŽ1ŠÏÀ•„’‰Kïùm÷d©ö¾]bí[n³ÞkþmúŠ *gÞ@‰Ñԉí—*Og{jdÈÅh¢–Vêp„ezëtI §F­-õEçÅf´Bf?g{³Ä¢]Mxb‹²]èfú·ŒN'ñê-T›š,)®mÄdzóHˆeVÉ¿HÀ²_ń9pe…S:h{K¥w”ñËw#”hè¼?#¥U‘žìDdöma”ôÅì¢f|…Nàªåˆ}& %˰•€MªþŽ ©ñ†Líÿ¦‹K–ÝÈ-‘žžÜ2\$ô<eôݳ¸²™&³Ž= hé… –=}WÇüæ~§›¨ß(«æ]ãªà·H4˜«ËG^bˆîw\ɡ޸_XL ­iâ¸0Kªðˆ‘üª³d„ªT†ë¢Ëµ'÷ϨyÓt0Õy-×îˆ@Í6æI €Í¯>¶u:À…¾Q,ï¹‚ÍØYD£M1\â& ç=M0B ¹ŒGŒü*ӟhäê^xǧQí!Ý9¬SAÁù>¡v³Hlz0«^µ˜¤ooâkµ44íkçnlüýº£›¡™øÍ0…•å˜G}¦¸-µ8ªÏæ´?•ˆ~ñ(Û†<0£%Zqþù­~¯^t>äPa 8$ = Pû֍ӍûÖýŒû֍û֍ûÛkö;à¢Á£ØšP_r¦@ڟ8Ÿ¦“Ÿîhöê¬ÂďT¿çRՊ<R¯Fp·S±ýWGQ*j÷ÇÁ»Y=}ÅÛSt\+~ïÁޅNR"¹RžABÚ«èߤEak٘YO
2635
+ vrœ5·7ρ¥zjÎgʏ#Ó,WÁ˜”+mõ{ùÃÒ½–B}Õ+%-›‚O·ÛQé >¯/‘œî1s®RXïî¾d ‰ ‚ï€Ï.Ë7˜V2kO‹ŸµCŸÎ”
2636
+ FCüx=M=}~%þ»#~ޟä³o8Ú 9V£= ñk<£SîM7„þ gÄœfwîÂE_©º»»ã2ÿ¯‰=}ùöBàéfaî÷+‘Ân¸Í•BlÎ7ÅÄa,«†‘ÕkPÂg2aòŒ:I£$y¶î´cб\¥‹4xÓc±§µpÝÀ¬ ]5BþÊ2w­€Y•Ì-T0“örØ63“Ô)ˆôh]z6“Ç!-7-Ùæ(g‘ƒš¬mø9ˆêӜSdìq»©žKÄ>znä¦ã6Ö¬ªÕCÀé¾7Ó<9”ð)É·î,s–£ÏKQ5ŽìºáÕc¾¨œâhÿ;§˜?<&Áßù¿o#XÏ9è¤Ø@"¦¤€—H­?ãˆ5nq‘$§gÁ”SºDõ8&Gç҈r\;ODÐaA±™©i”onAŠJBº‰ŒìkGšiFw…1¸í®Î</±J»ï¸ì"VLKðǂ®$´Ðb9s·s„¡ÀJn}ÉÆøÜ¦÷]Õ4~ÌÈe#:#ºèÜþì(ç6¶®‰ƒãӖv&•Pža7åŸÚQí*X[€ïÞޞ¢!Ð-  €†û֍´•֍ûVŠû֍û<rû֑GÃO¶ÿíÙѝˆ)ã¨/ñ}ö/Ãüžlqïð£#˜E8è)¡x\:äY£‘i;ì#Aˆ>8êö^ãX [¬÷ãÉzQ¢§…C؂V²¨‹ÃP¿Zº–ñˆâõæPxg®ÃLž<’’Q[T¡ÕcGÒQ–BnÒ³PZ\¹Cư³X¥µJs‰Z]­u³Æ³·Q½¡fSPÝ]3×åÓørS«-ÓÑT'™|j'ïã[™>ýúÞÙ ÒÅ+qˆz¨…BVèL†ë¹EØîzªqršOC}œYoÍÀ˜öjÆöÌDüŸ5¥’Ë™—™-·ÍÅݓM5 XŽØ¾åOVŽfVoøäÓÒmlÿì†Mäþùjê6XZŠ;ûª××½—Ê[(™Ø³?â}Øm1’Éaè»ØýÕ0Ã]œÚØ·û 1\Š_êµ7• Y£˜\ä¹ §Ù×(5ó®rø‘´ƒ9çx›¼ÚG0œ²ïwnѐç‰ä†¿ÿÓÄ5¿˜ìYV[¼g}"×ÿ}äEN*Oƒñ5Æ®ÜêâËx„}cSZ=MWhòØéÄ×V¢ó—Pøž7çåxS^«š_= Ñ
2637
+ !ó?:¨¯QTânµÇ¼,ñäŸá3O9AœåÕÏ9_-⩏é;®î—ÜΝïÝâ/äÆžäX3EA¿Qb´ãwv½¦gW~?îãˆaÏ ?8Žé[ï¿hÎe²O®Ïí€ÿÔO1‡¾ÕX+E¸‰Aaý\iZlEùVw*o3I>ì±´©T谄BãíÙÒLS³…œYyè±Öp¾¿öüzÊà‡›%wJ’æe±) µ8ÅäÖÍê¸%HC4ÊPYb¥%'u™¼ÀjùiUeŠhvçNo½!TðÊôækmŽÖŠÂu«áՑ´õfž¬.FúZtïò¥µNkw Qík/ѽ¸e Ó¤!#ó-8–밝µ¦˜ßQÆà8ÁÔQ7満Áâ²eÆ4Ù¸Bú†¦@ú¬ËÇí‰ìQG±%ÁM6”ÒéHKæ
2638
+ {qÛøºÞ¾ö<1ÓA^ù¦ÿ÷Œ™~…«úG[Ê&ûeë>b'֛X‚¯C‰Ÿ=}™—û©ã­n¼=M¬X7f¸ÛÓþ5(wüïÙñ×ì-ɯ(§™Ðú࣓Ë\‘)„9O¦´šQ³W»f€ˆ # 99=MëäKž¼ÎCrü¿‡s"X8à•Ñ= Ìó"yL¨Ôžá$ $³ÓJ¤õ±A˜)ƒH„ãp¸3nٗX¿ndÐËL"ždˆ’4iîq\X8íÆ¢ˆÖœ®x’<‚Þ_®S‘|<¯á¤$æXG“H1­dLŸDqYM¹Û~é¬[½bkm*㐞ñdŸ±Ý¯·ýpðoF1W«¸Zµ!ƒò¸´æ§Ã ÎjçoV#ÛE¹Df‡Òa6î£Ò™†µí­Yh¶°Gµëóå™Ì¨éƒîÜ.,KàìÞ Õç*‰ÌMÄlŨQ «™BJÆc)!ój‘-LE†9;'´3}®±*^÷u€Ê~iJ„ÓËX˺=M«ŠØ=}£ÿëzoʃ= = =}í×
2639
+ ¹\Ä¡‡n-Ô¼äÅË1cÓF"/USÚÁ9-½6.+{ùpþê)µV,ÖÔSÃÀ½Dù.üö•2³õé8éNv•ÓIÝ;ù}¢Ê:¢Ž5¢>¦á!@,%!ÀمûÖÍ·ûÖÍùÖ=M†û֍û#O%¿I臢X$(‘‚Æ0\7BQp8ÏùߟIlrÐ(í5‹1¼ãdyÕ= ´ÀÂÜ©4ƒ2Q†œ6ƒœ¼X&åùc<ñ´1L?ái1)òÓDÖv¢­r²¬I´Ä…ËD=}jrìÈ´~IôÕŠ޲ëQ‰F¹è= ¯,B7…Ø‹GëqÒ\ÚM«¼·<QóŸN§’È\“7ée¾÷©* ~Îà°ØB£ª øÊè“5E¼
2640
+ ´¸’d))3…†J“e¹ÏîJ¼¾Èâ®GJ -vöButÞɲ¿ÊæUŠéʓÖ|½¾
2641
+ 9ˆÀùÍ¡ô…-´}T‘¾Ìiõ“mÖ¦‹XÀåBA|’ÕÙÓu»!•=}ŒöÁ ¬.]–ÚL<ÇëåçÚ¸¥
2642
+ QÞo/IA6
2643
+ 3Õ}?™M#¾Ô9¢!¼-1¾Š¨‹cfæ:”Ù1ÅòæœÎP†éƒ*ìm?‰¢ #3L£m)SÅuø¬}%†=MQƒÚ¡Y&ŸºÓ¶Y]ž6äNÒàuà2Ç\kâ–yòÀåú_̰ڍeÛßUÿ7{Skè¦b;ùâø¶[ú¡MR–$-ûQyò¾µô<×§Í#kGY°æ!§DgTVXÂÆ¤u§3é÷¼¸¦So6Y³B âł7Š/ÙÀêíΌšê€Â;ëVØÑã½}˜ý’‡fÀ'£>¬·äÂæ³ËÇ]yeïŒO
2644
+ ޛñ¶íþ<ÔaŽ¢/uœØ±"E{axÿ·òø·¬8_B÷±Èo×_«PT  !Ìu,äÃM°Ó÷#[P¨ð@,¢±‹.fŠP¶AÄ.¦P{F´w­Á„~)Ê8Õ£ˆè¦“ÑI¼Ël*¨€ü$Cùý:é÷;±¤§dь™4¦JñLªF
2645
+ ~T"qQ<z;c¿vLó®…îóxöF摛‹<¦æÔ­«ۘ’Ó3˜Ý_¡¹Ö©äïldo@)áD^¾nbàK9ýބ‚…r¸þ²â«»I„¦Ç’•mJ•ú‰È·æù·‰LmoßÝ ”ù„ÿì,$SY¹©¥l:ÒØßLÒtҙù»íÔGùdGÀÙK§ï¶Ù\»¾ë;¡\Äʐ۸g‹= ^g¶ƒÇqàð_%XßJl†A<LDüÉ(¥ehi5SÂÕ8Ûå˜å¶pßÕ¤M†ÅÈlK¡R¤Ë븙Ù,°’þÏI‡·~%çuP“%³jJ _{éQßJävt±ÀuíÊqõ8œÈÆÏÐ&¯óUüƶYÏÅdÓ®Àq•XŸÈãÍȾèSôUPÜ¡×ú­ä­„çfœêºX™Á©æ†ì÷UòÐ¥c³{xKðêêúvÖÿˆš”;Òûû¨ÓŽÇŸŽ[²r=}õñ¡³.ò[©[ü©¬çO¦ã!Þ*f¡¿½íÕ …ïÖ›ù֋Ö=M›‡û֍ûÖZ^IÔjàXJœãÙ;/ßsµ½¹gäÙ Onñ„)æ¿°¤Ì$úá2´—kЙÕDšE96hLw²
2646
+ ‘rü_Le«¤42rì°BÙThSýdºìL‰æèÀ,;典Gc—»,5ë„éÙMkÆÑL™yÒt¯±ƒÀ<óDø Oç.Yìvèsœw¾%"™~ê3S~¡%g5p´vÀWh¡Ç]*ô«I±Bc6ªˆ6IҚÊ2¹Ç´0wt‚cÄ2cj˜rfÅR=}´1Ër†|5¦OÉðÊÉbÂ*­ßËòÝkµ_^ËBÅêÎ6u>LucÖ:éFŠ·Ëæù)
2647
+ (¯ÉóMËî¹P•Ü'ô1ýÈ¡+-æZˆÀ~Åá,1m ψÒgg³Ò4mö‚ãžM
2648
+ ߋ=MÏåÃÎ?l»_>‹sŠÅmˆÉVÖS•ðÛÀ£Ò¦.*©ZÈÁ«á>}<Þ
2649
+ 2 Ëk…§NÎöƒ C]~x xÊgëlÖ|ôgis¿ªD… =M^#F©;@?€àï]&hÍU¿‡¦8ú9Bv…h¨1ïÏ9Q}ÿ¨Ø,Cäç:ÓÈQßè9³<ެ€ø¸/{mØî¤=MFL‰VæRsFþ“sÆ7»Ò¦ í7$¼ö4Ry þÿbB/( ±4B6Bå 0Ïm†欓ΆXUºr“~þUÇðì¼3ådíЀe+‚ÔLX³Šaß¶œXŒé„ykœâMÙQ‚é¸=MvdœÐ»·5[û͍ÕU‰¯ÍÑÐÕkµUwdø™ý¦EæVlëÓßIÖ™ö¶ßô9·„ë ß=Mxð®£ò–ü-Ócø.´žÐ‡Ò×]G[ q5“@É#“<<˜v = bgdŽ[BN”ÄÆè±SS½¨Øäv}GÜS¼øTþ¹3î<q–Æ@î¹wŸØP†ß+N²N|(•ǁ7ü×ÙÃK+œ|É ”åžÍ;ØÑÿù­9­Ž”N•GÞ[^v¸uØÃVï#é >œRc᯾©äeot”\QíäƒÜ7éG݈r‚œÂ7{áA¬„Ýi¯†ìO^¼ü=M£—?ª£œxY£v’_Òáç7ýN&÷‘µ?yΞ<ŠC”Å_û¿3„ï¾ZŸ26'~ ­¶!hv$P{T°À;¡ü0$‡‘@~Ӣ؛U¨9¦a„&Á^U¸ó7¢¹Ê3l‰fPî3b0_=}â%0ärb8SF´öƒÁ„K¥2:?ª(/¥ÁK7¦š”8ÊߥÃÞO<=}ɐ$X4aðÎ(òßgð0<á?ã1Lþ1éñO±Ü*¨äÔ_²ÄMq¬œ¨‚£4ï›Âü8móûˆöšeÉSºÈ•Qlš=}ã8¢ú‚¸ÒF¶÷O‚鐩…skLÆËy<¼ȉ¬
2650
+ ª˜ò?ç“üA¾¤˜®Mk@=M"·=M2ÈÈm²džž°¨ÎmBˊ2©}´äý›i†½¤}u2G7Fó—G9Kë„îuF¢4"ŽÇúB¥u5IT¨Æ˜KµɌHo…˜~:‘WóðSkay:ûÅS†Z-│jóÑ2é= f&/¥9¼Lí€ÓhFÂWR9Gì„ÔD³Ùyô|ïÂx°eŽi6¹“Óiß¾m¦@» ²Œ*p‘]§Fa.EYI²ë;ÙL7ÒËT·kB™Üܱ§ÒP/ò\d‰Ø±ïxӜö·“~!ÒW+SKÀÄÌ QÂ¥ Úuè‹bŒë+I1M‚ú=MBîz4Ávqdò‚Ûsìië‚ÔJ«é}pâ¼ÛEü×JáÍʤÁ¥Å<Ùwª¡•I•õŌ{|¦úRJêøz{¦²’:>´“àÎ<ڒf·vq%A5ì‹È= š™EÕ¯KYx©‡ƒEÓvvAÔª6ÇJÎVw1Ûʺ-ïËєɆr‹U҂UÞÈÑ{-EU¼{{kâËz˜ôÿqëÚ•XÝɃÑw=}6}•¨ŒÌç}]S
2651
+ Q ɇæ&,_TPóÏ!³Þ&dÖV‚ɱå!­X,TBÖÝ)OmŒ/ŠB‚È©C[»iöìµ°†Jfº™ÒË¥Ž6äãzv”ÔRoÊ5ç¨vVúfôÞVnëÔq<õæÿû ]ð®¬|[3ƒûQÓ£u§[(tˆœ'™Ÿ—’ˆG}j½hG–RßN¤çÛxÍúep’7g疳—Ò»
2652
+ ý”Å–CYÞ§‘‡šPñ yf/^3›ù—ηt=M~΅r[Ù¯W78ñ=McAǯióQÝôž|ùRƒ ÐK#<V:@Հ «Ó&IÚVèM³aŠª&™\‡¨¶-jPd‡é0d¦ ÞQì›Ó?}Vì{ñ1ú­ü‚¤æª1O8Å îHwÍféÌ:åšoÛê÷¿˜ –K! H8ûn~¬Í=MVû{û֍û֍û΍ûÖ=MY<1b•1ÕÚ«¸R}äÑ=MBD7e4H»mìúü‚ö0IÆâlQc—ªù™iìÓo‚Ü.)µj8rkâÖ~2ﲀùMÁ5)}Þhx´’B¿´OÕÅdhÉTgj¿$IkÏjYu꛷,—!9ôµñÒϬѓ…Œl´‘º¬/ÿ„ø\’’7´sþ¼l½G‡ƒ²¼÷\N¯g¡Ë°¢ 5´ ÏÀñœ%]²5¬ÙÁ€/%»$E›*IY{é½j~íw]y©Æ2ëoE~Ϫx|e&J’-pq€¡ªst4ÙÉÂo5E܊jäõ4‹ÀÆè U%ŠÅÈé‘sm¦¿Šb~-îØ&}#-Ÿ‹˜_㣄-7ŽˆøcãFaëÜbzfö÷òÉß¶zÕä³Õ¤Žˆ±ðäÈa=}‹
2653
+ 8õogәZ*G ~÷»®CŽ]+* rwoÑޚ̓\hðÓʾ¡´‘9PWÕÖ¡åÝ-T¿ßý&¾~VÐÓ¡¶.CÜfŽõTRËDZjS­è–:i؈ÄýgC¢íä|FtW1=MŽT3ÝÖ¹¾Wѽ©6†Sª<†vvQsÜ«¹[³íýŒæœæì
2654
+ ÷†&+ÇÓxˆ|ñâ .6oÐÀü€ê)+î766ŠÌ$SzyvöjØÍµåƒÌ(‹Ìì\‚eäꐥ­OQ;júØúâfÉ1VÖM×A<ÐQÞ­‡‚[5b–V5ÑςÇý€[§6ù)Äù ™ëî¿–œ~'=}+YhÉ= õïaÕÙ.FXؓåa«£6.GëXÙsã©Ç§³Šó½¬ùD¼³w½˜mNꆓñݲ«=}} »š7ª3NÂï}4uÛÉ¿þmòŽæÔ’SŸÄ»KüD>“Þ»ó‚/·¢>ÎfC/÷'šØÒàã„/çϛøíãV·àҜ"sŠ)Ið‚¦= Ù=M"yï+8ÿ)ÜRšY¶õëÒª~–r‘Ü·àZOÏ®šiœ…ØâgÙ¸/c)?‡º¸Tÿ·°±”ëgÇ¿^"¢¿s%ÍGüûïñ¹žúÃۇý[_Em!Ž…-ð͂ ™§ Sæ%(Í-Ðh ¼¯# ²%é?)Òˈ°¼m¢Ì;4DØPè@ò aڜ-’ý1ˆ¾0K˧p”+ñ‚j¨]»bXo¥BdºZ¬^¸ÚÅâL‹1 ÐP¹¶¦‰ßGì
2655
+ {(dH¿_bz1ö¨z¤{BîdHJb´~9ÂlL=}…‰ëH{§gùÓTêÑ]qîþª’g´k8åXySæ¡Q–o­Ñš“¬9ǂ,š1ë X Ð1àpÔӍÛÖîӍû֍û֍û֍ûéW­sI†ðƒtDŽÈ–_];9Òko;š*œó\«¡U>#=Mê;Ð×Uœ´¡™K,tZ†@3#;29Éyàh"¬LʅdtCýV;iñ輗fL‰mŒÑ¸¨6WÑÏ©)&¹øYÿ¤—Ï©×l‚xVS?܆ÊwPÓË͹üÃí”}üqS¥?» ¼ð⡜6rçLtȁrw+7GyhÛᢚöb×w6¶ÅВi·ŒÅ= Kr?K•‡z Öíê¸ëvžÐÒZ½­v;›ªûøÿäæþ¡V–ìÓў׭åWŒlŠÃ†[m}–j¶Ñƒ‰‰GùP[6ùùÔÿîÀ[–êÔ³SÛ£[~'“ë[Èõæa¶±.nL•ð°#'Ÿ[²óiÖ ³m5½´ŽáHG=}·[ñ=}‘R¡³ÔŸ½¬éBuðåÀjNÞՓñœÔ«Kë}䝨xàeâßN
2656
+ ’ÓEF…EWUúÙyRêí …Ž¼§ýÔ݆åW“˜è@uðÊ­§)C\Œz!/O˜ð°^»·\>OeêšQÕïÁbOÙši—óëO~¾…‘æƒ})?ûˆRàg„®¯t[œ|Ý ƒ›?-òI€“kSÁ¾?Å·¿sìø§ÓžÞóS‰ ¬%#L®%v/ÐÇs ™| cK#¨g#ŒŸ0àGàÌ<a²¢ÔN7Œë@öÁa&O(’—0@=}_%ù±NäO“¨°6Âc0kš¥ØRUd¢­A¬‡b´˜>‰P¥¹4.ÓВ¸U=MâŒ:9†ë²P;§y™Kìüρ愬ðí6ÁnÑ(T¬°Ëo¤¯óB<þ8ò¹(Õ¿gH¸Xê£Üq†§ÂtÊ4EiûH;¦gÉÙHê¿] q"¿Â¼j;ÃÖIæSYfûZQþ—«ñ†‚¬Ç˃ô\6£8¾ÿQƅ«ý5ÇrÉXK»äõOn¹‘揮“ Œ¼lO´j,âÚ@üÌ Úöp€HäcŽðR”œ+]s(MDð[FðÅÊ= «"Uf*H«%ì›%r~7˜a€wбñš±:¢h¡:B¯Zªì?MrÉhºB[¨TD²\Íär£¤Hj|ÉAñijäñ2}·jœûGñ¦ä«¯2Uóè<õëX$¹õ…þ”°qgél{L„¯¬ºlR‹sJ\Kİ[ÆpÒªbÇÖ*ó§IŒ»Ï§â³«*~I²ÊDé¿a5}™µïíu¾,pY_s…ëFµÉÇuZ\qIwEg–­çn­µåUzUðPôØSqƒ J­è­'×U&žñè·ÎH{,eIJ4?£ eu0eñŒûÖ}kŸ‡îl֍û֍û֍ûÖ­ëëõTŠÔ÷ØU|Ãú"­Ó[Tê~ôxrC™,½n9”î·ðé=M”Ì“Ø×nIZî:½g”þñ™eGc‚£Ù-:‚ð×ÊáÖ&k¦:Ì¿‹Ð• ]‹ÐÉáÒß&ór»,LŒòlSñ º„ Š•¬éñEF¸ÈKFIþ¸¼©‰Q@Ãeñ²6WŒ«^­LRÒø\ñb‰‘ e=M;6þ‘N‡ÑñêøŒŒòUÕ õçú„»bˍ>ÒY‘óFég;_¾ãèÌ.êXܼy§h?§ú³=}Ú̒8žð
2657
+ -§™=}6摹·ù…ŠI·®k·fN՛ÚdFØÄ}–ÏëÞKNC~ۘQ\2ÇX~ôÃ×±ßÎçÅî>}g™Ä|ъÛ'\n^(Ÿ›|lY|öDŽu¿Ù͝‚,‰Xã‡Z¿Dg
2658
+ üyñ™ü |y"Š·*8‹' Œ0ß{= ôÑ!96'4ù9pœ Tà=}€E/ɰWÄDAùthü¶AO¥<¹2R“uhë#݋A_~§Œ¯Nˆ¿v°ÓÐbea:¢=M=d{'+¼¹¢[ $í®(~ÿ4ԚO˜2kr]£ˆqiAmRÞ¶•›i¥Á²iÓD—÷kÒ?µTÜE¹~’V¶—šeîÂ*Íҁme–ª1£5³‡HÆÏul[ĸ}Q­çÀX (µ= q”Wû֍„;ÿ†Öû֍û֍ûŽª®q%´t"+ÄÊLv0øûj€˜Ÿ¡Ús$Î4XÜwÀ E¡Ìï%n6ˆ½xD†.±ù…dU0ù
2659
+ ª´ NҍÔhá%B+רDXIòÎ赯±zl©á‰EN5´hwuâ´D†×®EÂm±HØbÂù>©î7Dæ^±xc‚}œ¹¹…–4·ùrk†µNSË£ìðARM‡èô|C³ ìÇëR¿ë,MsC±b´Œ*ûjJ$•42º*;[JT8Ê”¦b×U*q/H,ßÌ0Ùâ *¿3ÈXytn4wé{k…¸Æ’Û½jÞaJ}ÇÊ |Á×jáJCµQuVåöؼna­HuT2):ÉzˆÄ ͱ’¼f¥:ŸV‹\_ƑÆæÊW:£ó1²
2660
+ „éÁ´îªZZ¾Á³Ê£îÑaZ=MÇ
2661
+ DyÁӎ·nÓZ÷ ø¿”¾fWs9üíƒðÈÜáþ&&ù<£A½-/UH^ã€J£S›,2½WÈP²ŸVø2ãžJ³™mÒµWIÿàÄÁÂ—R§¸$ól 5FâN³Š‡l*üSiá}4«ÃéLÆАjyʍlÕ¸ÿæÂ‰_«GxLˆq‹Óå³C6]Ïy䙁Q Çeª˜V³óûäMˆóÇÂífV|»U½‚,ÕqÆùL{ŽާmÁsV͏ûLœƒ“ÏíϤ.9R[´KðÔª£ÿôÁ£ð͋.“ˆ_ýá{ð˜Çc¹s. Ž[œ›=M¯ã¼$Nf·Ü¥|~t”yðèÅ©ÏÃë²aNõFÛü ò™«k´ÃNCÏÚäŸR{„FÆgt>W“™tH=MQǶçwùÆk¯I]]Ž­hWëc|Qš·çîs>¯Ž™ä˜=M±×g¹˜^•ò(œô’±{÷ÇÉsÃÕoþ^ f½“ƒµïÚ}^oôÜ3µïé¿^#$4k3_—àðò!YŠ%<°"ºU/˜ôMÀР×s#zM-˜ØEÀé± Ý·#Ò^.8Iv´°"ibš‡.YtHDšå°ª-bÚ:Akû¤¼=}™th²yA™v¦´ÿ1r ˜h$£ )5eñŒûÖ=MZ‹ûVÞ±]xû֍û֍û\~5ù°ùÕéŸN³ßc¢‡~3|dÐ)áèb¢”eaAC˜?áúf¢=}%ù&(n®3”ºKmFÛk0n*ŽÝAˆÀñ7DÍþ³üÍD±{’ÌÄĄ-餿EoÄDÊ¥„jWé}cEGkºL´ì}OÙØwö9iÁ{5eÓ75þw¬vQCׂŽéìvwl«ªq)e¯†ª&}4аB÷$å«4çwKFtD®KØÊؔφøóºŠ|S@«FgAí¶:KU·ž÷D
2662
+ ŠŽÔòýc“œÈÆò„í¢%ºö‰:ö \ÁºF™¿ó¦›þT„ì7¦a%,‹ê:NöR\˳´Ag“cÑN¦’#-5æ9êîV4yèÚõAã-‡ŽÓLŸøò%ëïzžê’k–ëâ¶_Jxþ³¶-ßy2‰ëËMLóÚxj,Ô ;‹©ÓL7¶…’»MÇ{Š¿ÑÌ߁é ÃS®ûÿ”´ôQgçÕÜ®¼Å<-ÊYZçõß=}?V´‹h:¸Váц®ƒï*çM®S'R›æ‘ ¦ƒ¾uo›Fß Ñß]E“›þMÙpéSc™òߛh‡˜SïÀn¾r\÷fššlœßðӚ­Ç.ï©ã¾ÿî›îÿ:áࡇ"…þ(ìXî¡fÙ"›ª&ÞÉ8ˆH"˟)\½(´Ž<ˆõNPχ °àk3"ù†'ÊN+ÓQð‚oÀûà k¡A—d&]< |Ä»±Ú¿d ±ÂÙB?7­üsAÒÅv„¬Ë&±ÓÍBãÚfÊ,¨\TZRŠÄ¢èÅu±ö{C>¨¬Y5RL.p= $!0í֍ûοû– í֍û֍ûÖ=MÚ§p—/§34«Iø¶x°Y½€†.a⢖…$gÊ)²W4èö¢£}%±ÝÀú@áØQ¢ó$Ÿ6(ÒÌ6ôûJÕP Ā …áÉÛ¢{ï%o_*~6Ü.G™6c’G±Œ:é%D#kjºv¶ÍK)ÿ|’Ù£„¶,Ò^²äãD·æk¦î´y<œ÷h³D_@ùžrrÒ=}iû‡²wE½žj¾¦vT®ÊX=}oq@¥‚~fe¨üªFe4»ëHâusôÎϸýb‘ÏÃBÉrô Ã8Utѓ¼”e䥪¬Ë4ÅWK:=Mq”^ʐ4ÎK&\(Åâžr”͈0vsRºF}œmØ4º'9T{“Ц5òôJÅity“Ûֆf3m­ÖºPýT»ÌƑŸmè1º3T¥‡ŠNLôÔ|ř×iƒ–‹ž<.lψzýõ|œÊInÓ»F”(cÓ(¦ÍQ,12:
2663
+ ÆTì눘´ó°Ê°Á‘iã䪦cU-::ÕR4 4 ÄÁ›Oãa¦éÃ,“G9¶ìRL}„xÔêP‹³ Nc¿c¦–Ç,µO9ÒþRdœ„ØòÐÃÁocåp¶ˆ±L‡ƒzfDÔ4o‰¸áR_§Åœ!ë;LÃëyòwÓ Í‹Éöô’Û­Åm7ë+… ðû˜°ÅHë ©¶¢SM+7xâÍ(V M×y+–gM{ïx}ִލ9èÒÅ 'kæ?¶šA<#â[¶f“<­ ˜´äSÕCz†g²|®%=}y«[Òµ“„É
2664
+ hsç±ÐÑC‚Kç.®{ý=}›Íƒ–§9È\ú±”²,çÆ.Û챟͆çª}®æ'=}±oXÖ¼“TÚ
2665
+ ûQ±CkçÑ®ÿ<¯XZ§ܯ 6óRÞÇeRïÅT¾²¹]˓š‚5Ȃ¾+Å]¹J™õ¼ÏiúôóÆÕ‡…ç÷ý³îšºl8YPâš¼GtoÞù¾Z+]ý·›¦Îìø yÖóӑ߇qïîó!,Ÿ&è!€+@&ãù֍û„ûÖ=MŽ{֍û֍û֍‡›‘Cછ!†])Pu Ž?"ô6@ÿ¿ ‘bXþ§•<­ ¸6óñRÞC“rçt®M9<ýÒYR‘\H¸tìa9ç몮‘õ=}ù
2666
+ ZîU’Ô‰ûöQÞÓC‘oç Ïñÿў¨ÿgYv¬—D¹
2667
+ ¸XëŸÞÃrçåu®|;<³×š}®ò'<Ó®Z~½’Ù—õ‘¶C#gñÇ®àKçÚ®<±ŸY—T*E/Oì­B ¨I¼¯G\nLœjAkK¤éLdèAdìK¤KD$OFœOEÜLO|ÏB<ÌIÌÈG¬ŽL”ˆA´‰KD=MDœF< Ml2Áá ApéhXÁ„Aî,ô<áM4òN3NÌ2šÏ71Ö0Ê8'%[FdYMì^OÄÚBÌÚA„ÞK̙¾))Qÿ+c^+¿Þ+-(§£I‰bKcãK¯BK%‚H3“"E{rerJ§óJSI…ÓIã’I'Iÿ+I9ªIkIãëI;JI÷ÊI_‹I
2668
+ KÙ:KµºKí{K]ûK£[KÚKóšKÓ½R׿ÿ'P^j9TîçmóœþL¿_o©×hÙtÙÞrùÔv9Ùq‰ÜuéÚsÛgYž= 9Ÿdɑb©•fٜ~9›yI•}•kyoÉh)lyrÉva¹eéãv:wþ§P§QBfPÆdV2fWåR²äS†GT‚GUæÄP¢ÅQÚÇW>„RJ„SVTU|!†CoQƒœi‰9C%ƒ„…¾8é‹9 :‹;8;;yº;=M{9«ûÜ.fÄNfÍ·QÕÏÑw¬g¬p£¬tc­ÂC¬íάÁ3­‰s¬Eó­-Ó¬½“­+¬c«|†<x‰ ~ÙÍWvŒ×:×8—;M9/:ù®8Q®;?o:î8Kï;#N9ÕÎ:‰8ÿ9g:>×çf¢‡æ½7æ¼÷fݗfì¯æ ï^»±Ç×%Q= n!‚= Q0̍ûÖýnûÖ=M†‹û֍û֍ûÞëçSÒSl_ a­Gá­qÁ¬,­Ó­Ö±¬pq­ñ­¼Ñ¬³‘¬Ú­·)­i¬鬁I­‰¬Ñ ¬(9†CdVß.“NÃe~šžÃ˜AƒƒC~Qƒp)™IÔyƒ…™C„EÑ5ƒwUC’mÃyƒ{}Ç¡qűQÇ©‡‹†Ä‰ÔÌ‹‹ÜÄ „T=M‚ì†| $„ ›­† <ˆ\< /ÛC¬Rìöƒ¬Á¬%3¬=}³¼“ªÿ¹†œº$¹d¼‹ä¹DyˆÄzŒÄ{
2669
+ ^¶›{ w;I÷:©ö;QWZ†ÿ6V.ôNƒë>ïÛï9/XAÃô1CQïâ ¼T–¿VF½Uz½W}”‡·­[wüãUÃû-ÃMÞŸý•Ç­*/îƒ3—ìHâòxúˆöÝWŸO¿¬ø¬c½Û1 ÇÑ·q¯Ï÷„*Bn&5­£«?Aä¸pBq8ÑAÌH4~¼©@Šf2/B«vqåۈ“,YÆ6{œªCZæ3Ï«Æ)åÍd‚2‘XÉè±|LmAÂÅ2jM~Ç1õò©ý e²¬‚hF\ÓH¹uLëF¢0-’ª=MÙdÄ\™~ÑK¿¨pà+ªÕ¥äž1QÉÈ÷JF²¶0MkªõÅäûòBƒyñÞ¼xu~\Ë@2w2ÕK«)uäñʇU±Î¦Èws¬ÎE–ö6o ˜ÝšB—ñС8úðÿW’æîûä WWíeÉ6îørEÆÖ6‹ú¨£åõ–îñþ•0ÁZ©8½]w7±ÁËèùm4 Nª0…šª*ÝdÅþ’?ýu_qÎßS-0¥mµèRpÄ:D/|cd°ÁÃ×'ãäÙ„¤›=}Iæ¯2]gÛ»QÂøx±†¼(_þS›[WaÌ»Hæl2ÍF4±Ê=MüTŸ_}¹™†ÚÃy³×cÓåäYÿ|½Gޙ[P¬|¹7ªx«ä=}+6Û§EBår—éROŸvÙ׉KJ1šÕøÍç:Í؍Z%2/PÖ½! &‹û֍×ï֍û֍û֍ûÖÑÖQÕ1–³éf®ßT ‡×i3îY€Ž»Til»÷FmÁòDS…¡ÿOTwfNÒO«­cEöØôÅêR›ÝüøÄy|:ÍÔ:éœÛúÙp­ó—Í6v³Ü°¬Ú#´÷F§ð‚ÃÙ
2670
+ ³†ÿ½œÞðJÏBýV§ìûÕ΄ù_¹–
2671
+ ÜiÛk;ì‡:™ÜÕ瘊ÏÑٍ¿‘(ÁÜÎ0¹/s™}ÿ\¸{TîYm–½B~XÂF¼‚gýW~_ƙE¬bçý¾^~’ª•ðÃhÀøIƒ‰=MPû™e7ýºCܟöޒª¯ï9«sœÈ³ä1þôjW‡'o‹ÆËÓ¬ûO‰ã9g0|ÆùåZ
2672
+ ÒlE¤ïΊìùà=}º
2673
+ ¼@¯‹Ë«Q¼3\ÃÑNé(®¤öÚP#øãýa¿ÌDºÕ÷u9ëq/‘VԀ>·™ZôÝÂ]«ÙêsbK†“ºâ=MAU9îv˜Iâ‰á„±è‹±Qí8ï.B˜Zê}Ç:xä)ލö¢³­zƒAg¨9—´ÁMƒyçYލî®rԀH«Y= Hä™G„Ä,í9ä<֓¡D>«×„ÁLm ã„v“° ŽlfÜcšªp³Ö,„JKùë%ÂÙCñ™·TÃ\-è@FѸí<2±üÌAŸ¨7™¿èiQÊð°$syäZ–‘¬«¤²àÚ'™¦÷°Ïéd>ªq¾ºTÂU}ëpæQ­™Lƒ=}ûøëq@BiÆ4›à\êóÜè Üëgœáׄ@KÙèo1jr¶jtÃV‰l“zó¾î”ÇW8äpfP¦l‚JS¸í|6иÅ̀5‹yïfVÓ­=} ‚/øïa.“´ƒ¼Dǟóñ¿"·Øì5Β­ $0h0á߉ ãž“‹?Ý¿»¿äDG‘_©­¤ÿh­Ä_h;I±vŽ–nŽ~ž>á;ò­=M™óýŽå¯ 7‘¯ɕý#”{} ·Zë´”ÎÆ„NÏRǽûV«A¹³ì֍ûÖyíû¼9g:&@*†!e*$£vËbáª;Vp•c,ÈåEUV!4yø Ô#Û%î%i[óX¢î¾Ù@à’À†G!þ¨@ÝIÐNZ= Ýóá¤àYá /žVâ ÷6X€ˆH\Øü&ð8˜ûwâ6õ2@ý Êù.ž‡=M+ç-n¢ƒò|øM/<ýŽNÌS‰Y¬‹Ý)z¿ ¥—CoáÎ㒱 ÐÁï›XÙ£!õ܀d?¯xðì
2674
+ ÁiŸ;ª•äÀž‡%Ёn= =M+W= ÓÖc[aS
2675
+ FÁð]Nô‡Ý'= “qr(¶ù¤nŒü«òÿ¿d&ÿ ÈõT4Þ=}z|ö ¿OW×SMtdH.τãRX&§o3ؘÜXÍ^œÊM–í£W´iâ]NüOå£S£Å·ƒç÷­˜Ý§½GÑU y¹¦ß§/6P0(Cúýb"þ¥°VٌÄᣈ’ÓÙ@¾YýòDŽŒ{òÃv?’EP©”=MBé­\ĽYäýRò øfâëEEf¼D+gC×úDZGÅÿ±Ç?TzÙ¡±†Ï€ÁÕ¯¦ð‰vZ’mT}Œ3x˘z×cºrÑM=M„ c-ɩԈ™7½wæc§Î»cû¾yf‡ÙWòŒÆÝÔc¥³ôØfƒ«Äñ·9‰ø%­g:y”^+{U]¤þ‚…[&fӁÏY낫‡Gªõ‡¹¦ÖŒðþ¬m„oÛø‘?/ÛS’.[S›9ÛùœC›…/û2”²Y£ÎÑ%/sy¢×ÌùJ­W6Oí\g0^JùêßÏ0í[Ü“'ÏÔ>žÀ-¿[ÔW?Y]±ž ØÙÃî<~ÎëR~Ìf¾Z—/×¼_á¾Þê+îoÐñ{Þ\e3K%©¹§íB¹§(c=}ËÈ·SzÔnf§èx}o\9öf|%Ýå¥~©‚Iǀ ü€ñY8}FfŸú@Rú1éþ3‚÷˂‹ótQøvœû|³Îaá,Óé>BG6Òê}—ÄJ|¶=}°Žˆöf6žõk¶ÌºHgN’j‡Ò{柾M;9·é—§WèO±›Ä3қËÒyt™ ;ù´ˆà©aš|—Ó^!ÝøûšÄ
2676
+ (VV¸ ÇÙcÏ>yoçz ÃvòG{3Þ£½šŠcמôŒ íŚé;°OÛ‰GØ<wÜW> rU]Žq­{û'ùÝír{*øï?t-ígùWÿ…&§] m}×ût¥‚Ë~ß&>&Õv!b#ÅÌ‚q¢µ|jŽÍüùÉ^Æ&™ôžþŸ~sIµ"“]d)uâ´‘ºvk Å\<͉ÿ­öꍽƒÂ
2677
+ ïBçϧmÙIólÜoëVbƒ¦¯éWÇû3` });
2678
+ var imports = {
2679
+ "a": wasmImports
2680
+ };
2681
+ this.setModule = (data3) => {
2682
+ WASMAudioDecoderCommon2.setModule(EmscriptenWASM, data3);
2683
+ };
2684
+ this.getModule = () => WASMAudioDecoderCommon2.getModule(EmscriptenWASM);
2685
+ this.instantiate = () => {
2686
+ this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {
2687
+ const wasmExports = instance.exports;
2688
+ assignWasmExports(wasmExports);
2689
+ wasmMemory = wasmExports["l"];
2690
+ updateMemoryViews();
2691
+ initRuntime(wasmExports);
2692
+ ready();
2693
+ });
2694
+ this.ready = new Promise((resolve) => {
2695
+ ready = resolve;
2696
+ }).then(() => {
2697
+ this.HEAP = wasmMemory.buffer;
2698
+ this.malloc = _malloc;
2699
+ this.free = _free;
2700
+ this.create_decoder = _create_decoder;
2701
+ this.send_setup = _send_setup;
2702
+ this.init_dsp = _init_dsp;
2703
+ this.decode_packets = _decode_packets;
2704
+ this.destroy_decoder = _destroy_decoder;
2705
+ });
2706
+ return this;
2707
+ };
2708
+ }
2709
+
2710
+ // ../../node_modules/@wasm-audio-decoders/ogg-vorbis/src/OggVorbisDecoder.js
2711
+ function Decoder() {
2712
+ this._init = () => {
2713
+ return new this._WASMAudioDecoderCommon().instantiate(this._EmscriptenWASM, this._module).then((common) => {
2714
+ this._common = common;
2715
+ this._input = this._common.allocateTypedArray(
2716
+ this._inputSize,
2717
+ Uint8Array
2718
+ );
2719
+ this._firstPage = true;
2720
+ this._inputLen = this._common.allocateTypedArray(1, Uint32Array);
2721
+ this._outputBufferPtr = this._common.allocateTypedArray(1, Uint32Array);
2722
+ this._channels = this._common.allocateTypedArray(1, Uint32Array);
2723
+ this._sampleRate = this._common.allocateTypedArray(1, Uint32Array);
2724
+ this._samplesDecoded = this._common.allocateTypedArray(1, Uint32Array);
2725
+ const maxErrors = 128 * 2;
2726
+ this._errors = this._common.allocateTypedArray(maxErrors, Uint32Array);
2727
+ this._errorsLength = this._common.allocateTypedArray(1, Int32Array);
2728
+ this._frameNumber = 0;
2729
+ this._inputBytes = 0;
2730
+ this._outputSamples = 0;
2731
+ this._decoder = this._common.wasm.create_decoder(
2732
+ this._input.ptr,
2733
+ this._inputLen.ptr,
2734
+ this._outputBufferPtr.ptr,
2735
+ this._channels.ptr,
2736
+ this._sampleRate.ptr,
2737
+ this._samplesDecoded.ptr,
2738
+ this._errors.ptr,
2739
+ this._errorsLength.ptr,
2740
+ maxErrors
2741
+ );
2742
+ });
2743
+ };
2744
+ Object.defineProperty(this, "ready", {
2745
+ enumerable: true,
2746
+ get: () => this._ready
2747
+ });
2748
+ this.reset = () => {
2749
+ this.free();
2750
+ return this._init();
2751
+ };
2752
+ this.free = () => {
2753
+ this._common.wasm.destroy_decoder(this._decoder);
2754
+ this._common.free();
2755
+ };
2756
+ this.sendSetupHeader = (data3) => {
2757
+ this._input.buf.set(data3);
2758
+ this._inputLen.buf[0] = data3.length;
2759
+ this._common.wasm.send_setup(this._decoder, this._firstPage);
2760
+ this._firstPage = false;
2761
+ };
2762
+ this.initDsp = () => {
2763
+ this._common.wasm.init_dsp(this._decoder);
2764
+ };
2765
+ this.decodePackets = (packets) => {
2766
+ let outputBuffers = [], outputSamples = 0, errors = [];
2767
+ for (let packetIdx = 0; packetIdx < packets.length; packetIdx++) {
2768
+ const packet = packets[packetIdx];
2769
+ this._input.buf.set(packet);
2770
+ this._inputLen.buf[0] = packet.length;
2771
+ this._common.wasm.decode_packets(this._decoder);
2772
+ const samplesDecoded = this._samplesDecoded.buf[0];
2773
+ const channels2 = [];
2774
+ const outputBufferChannels = new Uint32Array(
2775
+ this._common.wasm.HEAP,
2776
+ this._outputBufferPtr.buf[0],
2777
+ this._channels.buf[0]
2778
+ );
2779
+ for (let channel2 = 0; channel2 < this._channels.buf[0]; channel2++) {
2780
+ const output = new Float32Array(samplesDecoded);
2781
+ if (samplesDecoded) {
2782
+ output.set(
2783
+ new Float32Array(
2784
+ this._common.wasm.HEAP,
2785
+ outputBufferChannels[channel2],
2786
+ samplesDecoded
2787
+ )
2788
+ );
2789
+ }
2790
+ channels2.push(output);
2791
+ }
2792
+ outputBuffers.push(channels2);
2793
+ outputSamples += samplesDecoded;
2794
+ this._frameNumber++;
2795
+ this._inputBytes += packet.length;
2796
+ this._outputSamples += samplesDecoded;
2797
+ for (let i = 0; i < this._errorsLength.buf; i += 2) {
2798
+ const errorDescription = this._common.codeToString(this._errors.buf[i]);
2799
+ const functionName = this._common.codeToString(this._errors.buf[i + 1]);
2800
+ errors.push({
2801
+ message: errorDescription + " vorbis_synthesis" + functionName,
2802
+ frameLength: packet.length,
2803
+ frameNumber: this._frameNumber,
2804
+ inputBytes: this._inputBytes,
2805
+ outputSamples: this._outputSamples
2806
+ });
2807
+ }
2808
+ this._errorsLength.buf[0] = 0;
2809
+ }
2810
+ return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(
2811
+ errors,
2812
+ outputBuffers,
2813
+ this._channels.buf[0],
2814
+ outputSamples,
2815
+ this._sampleRate.buf[0],
2816
+ 16
2817
+ );
2818
+ };
2819
+ this._isWebWorker = Decoder.isWebWorker;
2820
+ this._WASMAudioDecoderCommon = Decoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;
2821
+ this._EmscriptenWASM = Decoder.EmscriptenWASM || EmscriptenWASM;
2822
+ this._module = Decoder.module;
2823
+ this._inputSize = 128 * 1024;
2824
+ this._ready = this._init();
2825
+ return this;
2826
+ }
2827
+ var setDecoderClass = /* @__PURE__ */ Symbol();
2828
+ var OggVorbisDecoder = class {
2829
+ constructor() {
2830
+ this._onCodec = (codec2) => {
2831
+ if (codec2 !== "vorbis")
2832
+ throw new Error(
2833
+ "@wasm-audio-decoders/ogg-vorbis does not support this codec " + codec2
2834
+ );
2835
+ };
2836
+ new WASMAudioDecoderCommon();
2837
+ this._init();
2838
+ this._ready = this[setDecoderClass](Decoder);
2839
+ }
2840
+ _init() {
2841
+ this._vorbisSetupInProgress = true;
2842
+ this._totalSamplesDecoded = 0;
2843
+ this._codecParser = new codec_parser_default("audio/ogg", {
2844
+ onCodec: this._onCodec,
2845
+ enableFrameCRC32: false
2846
+ });
2847
+ }
2848
+ async [setDecoderClass](decoderClass) {
2849
+ if (this._decoder) {
2850
+ const oldDecoder = this._decoder;
2851
+ await oldDecoder.ready.then(() => oldDecoder.free());
2852
+ }
2853
+ this._decoder = new decoderClass();
2854
+ return this._decoder.ready;
2855
+ }
2856
+ get ready() {
2857
+ return this._ready;
2858
+ }
2859
+ async reset() {
2860
+ this._init();
2861
+ return this._decoder.reset();
2862
+ }
2863
+ free() {
2864
+ this._decoder.free();
2865
+ }
2866
+ async decodeOggPages(oggPages) {
2867
+ const packets = [];
2868
+ for (let i = 0; i < oggPages.length; i++) {
2869
+ const oggPage2 = oggPages[i];
2870
+ if (this._vorbisSetupInProgress) {
2871
+ if (oggPage2[data2][0] === 1) {
2872
+ this._decoder.sendSetupHeader(oggPage2[data2]);
2873
+ }
2874
+ if (oggPage2[codecFrames2].length) {
2875
+ const headerData = oggPage2[codecFrames2][0][header2];
2876
+ this._decoder.sendSetupHeader(headerData[vorbisSetup2]);
2877
+ this._decoder.initDsp();
2878
+ this._vorbisSetupInProgress = false;
2879
+ }
2880
+ }
2881
+ packets.push(...oggPage2[codecFrames2].map((f) => f[data2]));
2882
+ }
2883
+ const decoded = await this._decoder.decodePackets(packets);
2884
+ this._totalSamplesDecoded += decoded.samplesDecoded;
2885
+ const oggPage = oggPages[oggPages.length - 1];
2886
+ if (oggPage && oggPage[isLastPage2]) {
2887
+ const samplesToTrim = this._totalSamplesDecoded - oggPage[totalSamples2];
2888
+ if (samplesToTrim > 0) {
2889
+ for (let i = 0; i < decoded.channelData.length; i++)
2890
+ decoded.channelData[i] = decoded.channelData[i].subarray(
2891
+ 0,
2892
+ decoded.samplesDecoded - samplesToTrim
2893
+ );
2894
+ decoded.samplesDecoded -= samplesToTrim;
2895
+ this._totalSamplesDecoded -= samplesToTrim;
2896
+ }
2897
+ }
2898
+ return decoded;
2899
+ }
2900
+ async decode(vorbisData) {
2901
+ return this.decodeOggPages([...this._codecParser.parseChunk(vorbisData)]);
2902
+ }
2903
+ async flush() {
2904
+ const decoded = await this.decodeOggPages([...this._codecParser.flush()]);
2905
+ await this.reset();
2906
+ return decoded;
2907
+ }
2908
+ async decodeFile(vorbisData) {
2909
+ const decoded = await this.decodeOggPages([
2910
+ ...this._codecParser.parseAll(vorbisData)
2911
+ ]);
2912
+ await this.reset();
2913
+ return decoded;
2914
+ }
2915
+ };
2916
+
2917
+ // ../../node_modules/@wasm-audio-decoders/ogg-vorbis/src/OggVorbisDecoderWebWorker.js
2918
+ var DecoderWorker = class extends WASMAudioDecoderWorker {
2919
+ constructor(options) {
2920
+ super(options, "ogg-vorbis-decoder", Decoder, EmscriptenWASM);
2921
+ }
2922
+ async sendSetupHeader(data3) {
2923
+ return this.postToDecoder("sendSetupHeader", data3);
2924
+ }
2925
+ async initDsp() {
2926
+ return this.postToDecoder("initDsp");
2927
+ }
2928
+ async decodePackets(packets) {
2929
+ return this.postToDecoder("decodePackets", packets);
2930
+ }
2931
+ };
2932
+ var OggVorbisDecoderWebWorker = class extends OggVorbisDecoder {
2933
+ constructor() {
2934
+ super();
2935
+ this._ready = super[setDecoderClass](DecoderWorker);
2936
+ }
2937
+ async free() {
2938
+ await this._decoder.free();
2939
+ }
2940
+ terminate() {
2941
+ this._decoder.terminate();
2942
+ }
2943
+ };
2944
+
2945
+ // ../../node_modules/@wasm-audio-decoders/ogg-vorbis/index.js
2946
+ assignNames(OggVorbisDecoder, "OggVorbisDecoder");
2947
+ assignNames(OggVorbisDecoderWebWorker, "OggVorbisDecoderWebWorker");
2948
+
2949
+ // src/decode-vorbis.src.js
2950
+ var EMPTY = Object.freeze({ channelData: Object.freeze([]), sampleRate: 0 });
2951
+ async function decode(src) {
2952
+ let buf = src instanceof Uint8Array ? src : new Uint8Array(src);
2953
+ let dec = await decoder();
2954
+ try {
2955
+ let a = await dec.decode(buf);
2956
+ let b = dec.flush ? await dec.flush() : null;
2957
+ return b?.channelData?.length ? merge(a, b) : a;
2958
+ } finally {
2959
+ dec.free();
2960
+ }
2961
+ }
2962
+ async function decoder() {
2963
+ let d = new OggVorbisDecoder();
2964
+ await d.ready;
2965
+ return d;
2966
+ }
2967
+ function merge(a, b) {
2968
+ if (!b?.channelData?.length) return a;
2969
+ if (!a?.channelData?.length) return b;
2970
+ return {
2971
+ channelData: a.channelData.map((ch, i) => {
2972
+ let bc = b.channelData[i] || b.channelData[0];
2973
+ let m = new Float32Array(ch.length + bc.length);
2974
+ m.set(ch);
2975
+ m.set(bc, ch.length);
2976
+ return m;
2977
+ }),
2978
+ sampleRate: a.sampleRate
2979
+ };
2980
+ }
2981
+ export {
2982
+ decoder,
2983
+ decode as default
2984
+ };