From e6ea21fa0114e11e3efaabb8cd7a5db5c2577859 Mon Sep 17 00:00:00 2001 From: Daninet Date: Sun, 16 Feb 2025 14:34:04 +0000 Subject: [PATCH] deploy: d65de5db2579b9d615d76bbfeaf59ccdffe13120 --- .gitignore | 1 + .nojekyll | 0 .prettierrc | 3 + app.mjs | 175 + codec.wasm | Bin 0 -> 115892 bytes deps.js | 5 + dist/deps.modern.js | 2 + dist/deps.modern.js.map | 1 + dist/index-1c9b5d92.js | Bin 0 -> 80237 bytes dist/index-1c9b5d92.js.map | 1 + dist/index-286dd7f3.js | Bin 0 -> 38012 bytes dist/index-286dd7f3.js.map | 1 + dist/index-7d6171c7.js | Bin 0 -> 83041 bytes dist/index-7d6171c7.js.map | 1 + dist/index-95487546.js | 2 + dist/index-95487546.js.map | 1 + dist/index-99d7c744.js | 2 + dist/index-99d7c744.js.map | 1 + dist/index-a875d74a.js | Bin 0 -> 71585 bytes dist/index-a875d74a.js.map | 1 + dist/index-e32e9397.js | 2 + dist/index-e32e9397.js.map | 1 + dist/utilities-0f571cba.js | 2 + dist/utilities-0f571cba.js.map | 1 + index.html | 128 + package-lock.json | 6688 ++++++++++++++++++++++++++++++++ package.json | 15 + src/index.js | 5 + utils.mjs | 89 + worker.mjs | 219 ++ 30 files changed, 7347 insertions(+) create mode 100644 .gitignore create mode 100644 .nojekyll create mode 100644 .prettierrc create mode 100644 app.mjs create mode 100755 codec.wasm create mode 100644 deps.js create mode 100644 dist/deps.modern.js create mode 100644 dist/deps.modern.js.map create mode 100644 dist/index-1c9b5d92.js create mode 100644 dist/index-1c9b5d92.js.map create mode 100644 dist/index-286dd7f3.js create mode 100644 dist/index-286dd7f3.js.map create mode 100644 dist/index-7d6171c7.js create mode 100644 dist/index-7d6171c7.js.map create mode 100644 dist/index-95487546.js create mode 100644 dist/index-95487546.js.map create mode 100644 dist/index-99d7c744.js create mode 100644 dist/index-99d7c744.js.map create mode 100644 dist/index-a875d74a.js create mode 100644 dist/index-a875d74a.js.map create mode 100644 dist/index-e32e9397.js create mode 100644 dist/index-e32e9397.js.map create mode 100644 dist/utilities-0f571cba.js create mode 100644 dist/utilities-0f571cba.js.map create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/index.js create mode 100644 utils.mjs create mode 100644 worker.mjs diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..de753c53 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "printWidth": 100 +} diff --git a/app.mjs b/app.mjs new file mode 100644 index 00000000..2a4d891a --- /dev/null +++ b/app.mjs @@ -0,0 +1,175 @@ +import { downloadFile, formatNumber, readFile } from "./utils.mjs"; + +const worker = (() => { + const w = new Worker("worker.mjs", { + type: "module", + }); + const callbacks = {}; + let id = 1; + w.onmessage = (e) => { + const [id, ...args] = e.data; + if (id === "error") { + document.getElementById("error").innerHTML = args[0]; + return; + } + const cb = callbacks[id]; + setTimeout(cb(...args), 0); + delete callbacks[id]; + }; + + const call = (fn, ...args) => + new Promise((resolve, reject) => { + callbacks[id] = resolve; + w.postMessage([id, fn, ...args]); + }); + + return { + decodeAudioFile: (...args) => call("decodeAudioFile", ...args), + encodeSEA: (...args) => call("encodeSEA", ...args), + decodeSEA: (...args) => call("decodeSEA", ...args), + }; +})(); + +const DOM_ENCODE_DROP = document.getElementById("encode_drop"); +const DOM_ENCODE_FILE = document.getElementById("encode_input"); +const DOM_RESIDUAL_SIZE = document.getElementById("residual_size"); +const DOM_VBR_TARGET_BITRATE = document.getElementById("vbr_target_bitrate"); +const DOM_VBR_TARGET_BITRATE_LABEL = document.getElementById("vbr_target_bitrate_label"); +const DOM_ENCODE_SUBMIT = document.getElementById("encode_submit"); +const DOM_ENCODE_RESULT = document.getElementById("encode_result"); + +const DOM_DECODE_DROP = document.getElementById("decode_drop"); +const DOM_DECODE_FILE = document.getElementById("decode_input"); +const DOM_DECODE_SUBMIT = document.getElementById("decode_submit"); +const DOM_DECODE_RESULT = document.getElementById("decode_result"); + +DOM_RESIDUAL_SIZE.addEventListener("input", () => { + DOM_VBR_TARGET_BITRATE.disabled = DOM_RESIDUAL_SIZE.value === "vbr" ? "" : "disabled"; +}); + +DOM_VBR_TARGET_BITRATE.addEventListener("input", () => { + const value = parseFloat(DOM_VBR_TARGET_BITRATE.value); + DOM_VBR_TARGET_BITRATE_LABEL.textContent = value.toFixed(1); +}); + +DOM_ENCODE_SUBMIT.addEventListener("click", async () => { + const fileInput = DOM_ENCODE_FILE; + if (!fileInput.files.length) return alert("Please select a file."); + + const inputArrayBuffer = await readFile(fileInput.files[0]); + const { + samples: interleavedInput, + sampleRate, + channels, + } = await worker.decodeAudioFile(inputArrayBuffer); + + const residual_size = parseInt(DOM_RESIDUAL_SIZE.value); + const vbr = false; + + DOM_ENCODE_SUBMIT.disabled = true; + DOM_ENCODE_RESULT.innerHTML = "

Encoding...

"; + + const { encoded, duration: encodeDuration } = await worker.encodeSEA( + interleavedInput, + sampleRate, + channels, + residual_size, + vbr + ); + + const { + differenceFromOriginal, + wave: decodedWav, + duration: decodeDuration, + psnr, + } = await worker.decodeSEA(encoded, interleavedInput); + + const pcm16Size = interleavedInput.length * 2; + const compressedSize = (encoded.length / pcm16Size) * 100; + const status = [ + `PCM 16 bit size ${formatNumber(pcm16Size)} bytes`, + `Compressed size: ${formatNumber(encoded.length)} bytes (${compressedSize.toFixed(2)} %)`, + `Bits per sample: ${((encoded.length * 8) / interleavedInput.length).toFixed(2)} bps`, + `Encoding took ${encodeDuration.toFixed(2)} ms`, + `Decoding took ${decodeDuration.toFixed(2)} ms`, + `PSNR ${psnr.toFixed(2)} dB`, + ].join("
"); + + const audioUrl = URL.createObjectURL(new Blob([decodedWav], { type: "audio/wav" })); + const differenceFromOriginalUrl = URL.createObjectURL( + new Blob([differenceFromOriginal], { type: "audio/wav" }) + ); + + DOM_ENCODE_RESULT.innerHTML = ` + Encode result: + Download Sea File + +
+ Difference from original: + +
${status}
+ `; + + const fileName = fileInput.files[0].name.split(".")[0] + ".sea"; + document.getElementById("download_sea").addEventListener("click", (e) => { + downloadFile(encoded, fileName, "application/octet-stream"); + e.preventDefault(); + }); + + DOM_ENCODE_SUBMIT.disabled = false; +}); + +DOM_DECODE_SUBMIT.addEventListener("click", async () => { + const fileInput = DOM_DECODE_FILE; + if (!fileInput.files.length) return alert("Please select a file."); + + DOM_DECODE_SUBMIT.disabled = true; + DOM_DECODE_RESULT.innerHTML = "

Decoding...

"; + + const file = fileInput.files[0]; + const encodedArrayBuffer = new Uint8Array(await readFile(file)); + + const { wave: decodedWav, duration: decodeDuration } = await worker.decodeSEA(encodedArrayBuffer); + + const audioUrl = URL.createObjectURL(new Blob([decodedWav], { type: "audio/wav" })); + + const status = [`Decoding took ${decodeDuration.toFixed(2)} ms`].join("
"); + + DOM_DECODE_RESULT.innerHTML = ` + Decode result: + + Download WAV file +
+
${status}
+ `; + + const fileName = fileInput.files[0].name.replace(".sea", ".wav"); + document.getElementById("download_wav").addEventListener("click", (e) => { + downloadFile(decodedWav, fileName, "application/octet-stream"); + e.preventDefault(); + }); + + DOM_DECODE_SUBMIT.disabled = false; +}); + +function setupDragAndDrop(dropZone, fileInput) { + dropZone.addEventListener("dragover", (e) => { + e.preventDefault(); + dropZone.classList.add("dragover"); + }); + dropZone.addEventListener("dragleave", () => { + dropZone.classList.remove("dragover"); + }); + dropZone.addEventListener("drop", (e) => { + e.preventDefault(); + dropZone.classList.remove("dragover"); + fileInput.files = e.dataTransfer.files; + }); + dropZone.addEventListener("click", () => fileInput.click()); + fileInput.addEventListener("change", () => { + dropZone.textContent = fileInput.files[0].name; + }); +} + +setupDragAndDrop(DOM_ENCODE_DROP, DOM_ENCODE_FILE); +setupDragAndDrop(DOM_DECODE_DROP, DOM_DECODE_FILE); diff --git a/codec.wasm b/codec.wasm new file mode 100755 index 0000000000000000000000000000000000000000..4ad35a7d039457b7ad19a3aef144ea5648d13232 GIT binary patch literal 115892 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 z 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

ok||V95(!k_ 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 U~WH>Hq)$ literal 0 HcmV?d00001 diff --git a/deps.js b/deps.js new file mode 100644 index 00000000..46cb04b0 --- /dev/null +++ b/deps.js @@ -0,0 +1,5 @@ +import npmAudioDecodeLib from "audio-decode"; + +export function decodeAudioFile(buffer) { + return npmAudioDecodeLib(buffer); +} diff --git a/dist/deps.modern.js b/dist/deps.modern.js new file mode 100644 index 00000000..e8b534e0 --- /dev/null +++ b/dist/deps.modern.js @@ -0,0 +1,2 @@ +const e=globalThis.AudioBuffer||class{constructor(e){if(!e)throw TypeError("options argument is required");if(!e.sampleRate)throw TypeError("options.sampleRate is required");if(e.sampleRate<3e3||e.sampleRate>768e3)throw TypeError("options.sampleRate must be within 3000..768000");if(!e.length)throw TypeError("options.length must be more than 0");this.sampleRate=e.sampleRate,this.numberOfChannels=e.numberOfChannels||1,this.length=0|e.length,this.duration=this.length/this.sampleRate,this._data=new Float32Array(this.length*this.numberOfChannels),this._channelData=[];for(let e=0;e=this.numberOfChannels||e<0||null==e)throw Error("Cannot getChannelData: channel number ("+e+") exceeds number of channels ("+this.numberOfChannels+")");return this._channelData[e]}copyFromChannel(e,t,n){null==n&&(n=0);for(var a=this._channelData[t],r=n,i=0;r} A promise that resolves to the decoded audio buffer.\n * @throws {Error} Throws an error if the decode target is invalid or if the audio format is not supported.\n */\nexport default async function audioDecode(buf) {\n\tif (!buf && !(buf.length || buf.buffer)) throw Error('Bad decode target')\n\tbuf = new Uint8Array(buf.buffer || buf)\n\n\tlet type = getType(buf);\n\n\tif (!type) throw Error('Cannot detect audio format');\n\n\tif (!decoders[type]) throw Error('Missing decoder for ' + type + ' format')\n\n\treturn decoders[type](buf)\n};\n\nexport const decoders = {\n\tasync oga(buf) {\n\t\tlet { decoder } = decoders.oga\n\t\tif (!decoder) {\n\t\t\tlet { OggVorbisDecoder } = await import('@wasm-audio-decoders/ogg-vorbis')\n\t\t\tawait (decoders.oga.decoder = decoder = new OggVorbisDecoder()).ready;\n\t\t} else await decoder.reset()\n\t\treturn buf && createBuffer(await decoder.decodeFile(buf))\n\t},\n\tasync mp3(buf) {\n\t\tlet { decoder } = decoders.mp3\n\t\tif (!decoder) {\n\t\t\tconst { MPEGDecoder } = await import('mpg123-decoder')\n\t\t\tawait (decoders.mp3.decoder = decoder = new MPEGDecoder()).ready;\n\t\t}\n\t\telse await decoder.reset()\n\t\treturn buf && createBuffer(await decoder.decode(buf))\n\t},\n\tasync flac(buf) {\n\t\tlet { decoder } = decoders.flac\n\t\tif (!decoder) {\n\t\t\tconst { FLACDecoder } = await import('@wasm-audio-decoders/flac')\n\t\t\tawait (decoders.flac.decoder = decoder = new FLACDecoder()).ready\n\t\t}\n\t\telse await decoder.reset()\n\t\treturn buf && createBuffer(await decoder.decode(buf))\n\t},\n\tasync opus(buf) {\n\t\tlet { decoder } = decoders.opus\n\t\tif (!decoder) {\n\t\t\tconst { OggOpusDecoder } = await import('ogg-opus-decoder')\n\t\t\tawait (decoders.opus.decoder = decoder = new OggOpusDecoder()).ready\n\t\t}\n\t\telse await decoder.reset()\n\t\treturn buf && createBuffer(await decoder.decodeFile(buf))\n\t},\n\tasync wav(buf) {\n\t\tlet { decode } = decoders.wav\n\t\tif (!decode) {\n\t\t\tlet module = await import('node-wav')\n\t\t\tdecode = decoders.wav.decode = module.default.decode\n\t\t}\n\t\treturn buf && createBuffer(await decode(buf))\n\t},\n\tasync qoa(buf) {\n\t\tlet { decode } = decoders.qoa\n\t\tif (!decode) {\n\t\t\tdecoders.qoa.decode = decode = (await import('qoa-format')).decode\n\t\t}\n\t\treturn buf && createBuffer(await decode(buf))\n\t}\n}\n\nfunction createBuffer({ channelData, sampleRate }) {\n\tlet audioBuffer = new AudioBuffer({\n\t\tsampleRate,\n\t\tlength: channelData[0].length,\n\t\tnumberOfChannels: channelData.length\n\t})\n\tfor (let ch = 0; ch < channelData.length; ch++) audioBuffer.getChannelData(ch).set(channelData[ch])\n\treturn audioBuffer\n}\n","/**\n * AudioBuffer class\n */\nexport default class AudioBuffer {\n\t/**\n\t * Create AudioBuffer instance.\n\t * @constructor\n\t * @param {Object} options - buffer init options.\n\t * @param {number} options.length - buffer length in samples.\n\t * @param {number} options.sampleRate - buffer sample rate.\n\t * @param {number} options.numberOfChannels - number of channels.\n\t */\n\tconstructor(options) {\n\t\tif (!options) throw TypeError('options argument is required')\n\t\tif (!options.sampleRate) throw TypeError('options.sampleRate is required')\n\t\tif (options.sampleRate < 3000 || options.sampleRate > 768000) throw TypeError('options.sampleRate must be within 3000..768000')\n\t\tif (!options.length) throw TypeError('options.length must be more than 0')\n\n\t\tthis.sampleRate = options.sampleRate\n\t\tthis.numberOfChannels = options.numberOfChannels || 1\n\t\tthis.length = options.length | 0\n\t\tthis.duration = this.length / this.sampleRate\n\n\t\t//data is stored as a planar sequence\n\t\tthis._data = new Float32Array(this.length * this.numberOfChannels)\n\n\t\t//channels data is cached as subarrays\n\t\tthis._channelData = []\n\t\tfor (let c = 0; c < this.numberOfChannels; c++) {\n\t\t\tthis._channelData.push(this._data.subarray(c * this.length, (c+1) * this.length))\n\t\t}\n\t}\n\n\t/**\n\t * Return data associated with the channel.\n\t * @param {number} channel - Channel index, starting from 0.\n\t * @return {Float32Array} Array containing the data.\n\t */\n\tgetChannelData (channel) {\n\t\tif (channel >= this.numberOfChannels || channel < 0 || channel == null) throw Error('Cannot getChannelData: channel number (' + channel + ') exceeds number of channels (' + this.numberOfChannels + ')');\n\n\t\treturn this._channelData[channel]\n\t}\n\n\n\t/**\n\t * Place data to the destination buffer, starting from the position.\n\t * @param {Float32Array} destination - Destination array to write data to.\n\t * @param {number} channelNumber - Channel to take data from.\n\t * @param {number} startInChannel - Data offset in channel to read from.\n\t */\n\tcopyFromChannel (destination, channelNumber, startInChannel) {\n\t\tif (startInChannel == null) startInChannel = 0;\n\t\tvar data = this._channelData[channelNumber]\n\t\tfor (var i = startInChannel, j = 0; i < this.length && j < destination.length; i++, j++) {\n\t\t\tdestination[j] = data[i];\n\t\t}\n\t}\n\n\n\t/**\n\t * Place data from the source to the channel, starting (in self) from the position.\n\t * @param {Float32Array | Array} source - source array to read data from.\n\t * @param {number} channelNumber - channel index to copy data to.\n\t * @param {number} startInChannel - offset in channel to copy data to.\n\t */\n\tcopyToChannel (source, channelNumber, startInChannel) {\n\t\tvar data = this._channelData[channelNumber]\n\n\t\tif (!startInChannel) startInChannel = 0;\n\n\t\tfor (var i = startInChannel, j = 0; i < this.length && j < source.length; i++, j++) {\n\t\t\tdata[i] = source[j];\n\t\t}\n\t}\n}\n","import npmAudioDecodeLib from \"audio-decode\";\n\nexport function decodeAudioFile(buffer) {\n return npmAudioDecodeLib(buffer);\n}\n","export default function audioType (buf) {\n\tif (!buf) return;\n\n\tbuf = new Uint8Array(buf.buffer || buf)\n\n\tif (isWav(buf)) return 'wav';\n\tif (isMp3(buf)) return 'mp3';\n\tif (isFlac(buf)) return 'flac';\n\tif (isM4a(buf)) return 'm4a';\n\tif (isOpus(buf)) return 'opus'; // overlaps with ogg, so must come first\n\tif (isOgg(buf)) return 'oga';\n\tif (isQoa(buf)) return 'qoa';\n};\n\nexport function isMp3 (buf) {\n\tif (!buf || buf.length < 3) return\n\n\treturn (buf[0] === 0x49 && buf[1] === 0x44 && buf[2] === 0x33) || // id3\n\t\t( buf[0] === 0xff && (buf[1] & 0xe0) === 0xe0 ) || // no tag\n\t\t( buf[0] === 0x54 && buf[1] === 0x41 && buf[2] === 0x47) // 'TAG'\n};\n\nexport function isWav(buf) {\n\tif (!buf || buf.length < 12) return\n\n\treturn buf[0] === 82 &&\n\t\tbuf[1] === 73 &&\n\t\tbuf[2] === 70 &&\n\t\tbuf[3] === 70 &&\n\t\tbuf[8] === 87 &&\n\t\tbuf[9] === 65 &&\n\t\tbuf[10] === 86 &&\n\t\tbuf[11] === 69;\n}\n\nexport function isOgg(buf) {\n\tif (!buf || buf.length < 4) return;\n\n\treturn buf[0] === 79 &&\n\t\tbuf[1] === 103 &&\n\t\tbuf[2] === 103 &&\n\t\tbuf[3] === 83;\n}\n\nexport function isFlac(buf) {\n\tif (!buf || buf.length < 4) return;\n\n\treturn buf[0] === 102 &&\n\t\tbuf[1] === 76 &&\n\t\tbuf[2] === 97 &&\n\t\tbuf[3] === 67;\n}\n\nexport function isM4a(buf) {\n\tif (!buf || buf.length < 8) return;\n\n\treturn (buf[4] === 102 &&\n\t\tbuf[5] === 116 &&\n\t\tbuf[6] === 121 &&\n\t\tbuf[7] === 112) || (\n\t\t\tbuf[0] === 77 &&\n\t\t\tbuf[1] === 52 &&\n\t\t\tbuf[2] === 65 &&\n\t\t\tbuf[3] === 32\n\t\t);\n}\n\nexport function isOpus(buf) {\n\tif (!buf || buf.length < 36) return\n\n\t// Bytes 0 to 3: detect general OGG (OPUS is OGG)\n\t// Bytes 28 to 35: detect OPUS\n\treturn buf[0] === 79 &&\n\t\tbuf[1] === 103 &&\n\t\tbuf[2] === 103 &&\n\t\tbuf[3] === 83 &&\n\t\tbuf[28] === 79 &&\n\t\tbuf[29] === 112 &&\n\t\tbuf[30] === 117 &&\n\t\tbuf[31] === 115 &&\n\t\tbuf[32] === 72 &&\n\t\tbuf[33] === 101 &&\n\t\tbuf[34] === 97 &&\n\t\tbuf[35] === 100;\n}\n\nexport function isQoa(buf) {\n\tif (!buf) return\n\treturn (buf[0] === 0x71 && buf[1] === 0x6f && buf[2] === 0x61 && buf[3] === 0x66)\n}"],"names":["AudioBuffer","globalThis","constructor","options","TypeError","sampleRate","length","this","numberOfChannels","duration","_data","Float32Array","_channelData","c","push","subarray","getChannelData","channel","Error","copyFromChannel","destination","channelNumber","startInChannel","data","i","j","copyToChannel","source","decoders","oga","buf","decoder","reset","OggVorbisDecoder","import","ready","createBuffer","decodeFile","mp3","MPEGDecoder","decode","flac","FLACDecoder","opus","OggOpusDecoder","wav","module","then","n","default","qoa","channelData","audioBuffer","ch","set","decodeAudioFile","buffer","async","type","isWav","Uint8Array","isMp3","isFlac","isM4a","isOpus","isOgg","isQoa","getType","npmAudioDecodeLib"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-1c9b5d92.js b/dist/index-1c9b5d92.js new file mode 100644 index 0000000000000000000000000000000000000000..6a8a6a625ee78318f07ada7f1be000f3721e6fac GIT binary patch literal 80237 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%0Alh z!hs!o66 zt+;--adtZ9?1cHvV7o>>rJU4}V_N>vQGTS#w3on(|Ah)VOhj`G>;8d^%zC)<&zV#+ zR0tz1i^ag;$ZK84nh)FP6af_khVsW`m-P8MoAP$85MgKP#x6K-80*J$S4{m(WUS8k zgfmSz7SsCoCh0OQ=NoKk-!0P*4|Lp9@aukIn*N+Le{$ez^qmjx25~!8pNU+3Dl`H~ z(2dxJV=1|bjraF-57w#o+Wgs4DP=qz;a&34#`3x=w^uqB5%f-5-80Th`QA(VD?pka z8mec|6+^7vdJe>G*7?}m$(adwlsSAEE(f%0A=WH2rp!I=CE(d^l$2KEmHf%@FO|W^ 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 console.log(text);\n\nvar err = text => console.error(text);\n\nfunction ready() {}\n\nModule = {};\n\n/** @param {string|number=} what */ function abort(what) {\n throw what;\n}\n\nfor (var base64ReverseLookup = new Uint8Array(123), /*'z'+1*/ i = 25; i >= 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n base64ReverseLookup[65 + i] = i;\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\nbase64ReverseLookup[47] = 63;\n\n/** @noinline */ function base64Decode(b64) {\n var b1, b2, i = 0, j = 0, bLength = b64.length, output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n}\n\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode01d9cc1a928b\u0005f\u0014ïÛúí\u001c8ñõp;ºñ˜nnÆ\\E²þqõqû\u0000L’i\u0011—ø\u001dÝW‘fý±¹\u0001„_³qI£B1åøav\u0011Í^±‰[g·OKr.€å\"u0õ!\u0002þbM&²’EéV’×$\u001e:_\u001bÜ®\u0014ÿB„å\u0004ÁßvISò\u000fþ«}§¾fSœÔoÍ=}\u001d’wJ¹á\u0001HºWh6Ò\tš¬ö\bP•Øåcž\u001aÜ:í߸•XV\u0010÷µÖ!#ù\u0006I›¶Ö_\u001fIP°ó]s¡\u0000Ló‚\u000bø•ZˆŸNP\u000fn\u0001ªW•Æ\u000e²>€+7ø\u001f„—\u001afÀÿ\u001e8¯Wë¼®‚çóÌ)\u0011Oƒ¯«WÔ#\u001aÐmÒKí'ñ±´HøÉ$¼‚‘oÇ¿\u0007‹4ïŽ5èÖ&?:þêP‡!ù>\u0014\u0018Ëò4\"\u000f´’'­\u0019>õޓ{7ÚN³¦aΓü¿Þ#~;«¸ó\f¢«g\u001eeÈ®ƒ,ýÉ°Ž\u0007^¸Í#çßJ„†¾ºHBþøì,Ïð¦o…À\u0014¦erZ­¦Ät׫þ–)-2MÕÒ¾ž¼9\u0007tĊÒj¾ž¬äu~²+ìWC~AåÅ5\u001dF'\u001fDP';ޝå3}ph\u000e\t\\O/µïÞ?dی6Z‘êÞ;L&þSdz®·\u0005æb>\u0012AX\u000e³ÌŠoۘ&>E]”ðt\\\b;„zÃ7G¡ú?”“X ®™ôc獫jªC<\u0011ÊxçÆbØ,®_\u0019\fÕtŒ\u001e>Ë\u001a‚Ñ£\u0016ÖÇ?*ʼv…Â\f‚MËcý°±(ø\u0005îÂ2GkKêÀ’nÕ%à\u001c!œ\u0018v\u0006C).ôƒÞ.+j3à´\u0012C\u0014k€\u0005?Käj¯Ñ31“(7ó ëa_v›\u0006¿\u0014}\u001aƒúso±€ð> ñH¢3w¢çòxÈ\\í­°T;}\u0012=}D\u0007ï(ì\u0000fžGŠ$}­\u0018ç\f…Ð_\u0005\u0002ÓÏM:ûÜ\\\u001až#\u000f°ðõ\u001aѺSž§ž»Â«iÿS¹)\t꿓¯\u0004Ÿªo\u001a\u0016.ÅV‘M\u001e\u0010°+nS4\u0003Fhž™uròQ‘@‡hÈîÌÖ\u0007åÆw€Z€à\fòs“í·öu(ÞßP<îUà´P¢¬™‘$Ï)¯zö\u001cBY„4™KÉ\u0004Æï¦GªY\fÍj·\u0010o7\\ßèA\u0000”\u0019\u001c[3Ÿ\u0002·^\u0018”ÀӚHsÇ»0‘º\u0017+\u0004a<±ó)榞r7¨\u001c\u00052ìܓp\u0014mÁ)\n;*¢’Ãó\u001dhô|›,Sã3זv‡,ŒáçN›¦Qf¦ž|‡'_¶QL4…yææÆ{k\u000eªýF_èbn\u0005Ï0ŒVk‰rí\u0010ª¦ÕõÁšÌ\u0017\u0002º\u0000ÄÎK$»CWÿ¹ð$nôï\u000eõ^šbñâ.+G7ĺ-^œ\u0016dڂ¨é\u0016ë“;å9Ñ«¶\u001b¨Ï”Ò1q{\u0006%„–\u0011^ÿåoµ½8ZYq\u0012c]ɓ¸\u0003í<ÔF&ë]&ÝÒÍê†\u0004=d{ñJØÏ4ŽÁ':۞ÁÈo±×h¸ƒäL\\\u000bñóãv\u0014ï\u0003(jÖXb×#ô,36q;ÞÆ\u001fƒ··´w{\u0005\u0015N—Oè€ËwŒ@~Kh ™„äW۟Ç$•#¬\u0018\u000ešà‘ˆ•ÄíÏC|ãp\u001c\t\u0010A‚N1(Õ»\u001bzý\u0012å\u0007›&¿”\u001d)­c£m‚â'ÑmJMc²]/´^[\u0001Œi±P©Ü[ãí>š#2\u001e2þg‹\tò=}æ\fj;º”ämÝz¨_ÿŒ\u001dl̓)\\\u0016}•–èrâÌçËò{—…™™•”ô\u001b¿wgX\u0000›ö1ÐvEƒ–Wó½\f^Ö_Öó֘|¹\u0000s€((^ÎÇ÷\u0001×Ó®}&= \u0011×Hàößëö\u000eM\\|ÿ¾ÕX&›\u0018O2ä·Ð°S1¼=MVg¯$\nÌ4ý\u001f$¯ß=}œƒ? ž_Ýx7ڌ1\"\bÝãÅín¶“\u0010&@Žÿ‰×{39àrOX\u0006¿]‰ÐÇA›àq\u0004õgý±i‚Ôº5CJD’÷²Eßt\u0006V)\u0000d;= *\t’õ3\u0004dR.\u0003ÁkN©{2¯Ý¥.)¶{\u0017¹Äç\u000ft4}®ž\u0007|\u0013—N\u000b\"›\b…Y|\u0013¹@4ub^\u0011ê¤ÿ\u0019ÝìK½â\u0011ÈÕË\u001eé Z\"ۜ*w+åßò81ð\frÆ·\u0004ß,<ŠŸky\u0006D]\u0007áYÆQìì¦çŠ2üæÖu­¸‚ôÁAͶ±~<þ|¢\u0017(ÛéŒ\u001eVôee†L\u001có T'\u0003ŒúÝ1{–=}m„gɦ$2ä*|‚,‚¤/AÓ¨™bìv´Ú\u0019\"aþØòýJíª4-ˆG\\ú;‘b/\\\u000b‰î΢õ\u0001ï¶ù{J\"CCCC€\u001fÏ\n§\u000e\\“nµ+º#IyÅ[\u0003|\nŸ!K;Ù+rÀÀ§¢{\nâ\u0005™l®q\u0005CpêÅz{—whòÿnÓ?”\t¥–\u0007½4ûç\u0006\u0007½º{K\u0011ÿ\u001a*²Æ\u001e«…aç©\\\u001e†\n\u0004°ûÍ©+:f[¸%\u001aà\u000eEPÚ'ixí\u0011åÐñoñTåÜô¦ºÉ~؃î…ß\u00140¬¹\u0007Ë¥yôZÝ\\…\u0018‘òjWö\nªè+K>d̵:X“’ˈüÛ\u0006= ¼IÑ\nW\\Žøòn|,öËJ-9\u0017医;\u0007áÚ×?‚'Œp‰2\fØÄ9\fÃ=M\u001aÀa“+hz÷÷dýnýVˆÚY㹛)Þm•\u0019Š\tÆ[ôþ/f = vÿïµ\u0011\u000fO\\\u000bþ<Ž=}½'L>T\u0016TÕ\u0014·\u0007íçòv\u0007Üaï\u000ew_\u000e@q9¼¶·ëZ‹ë\u0001m\nUtêóÞP\u0006ø‚íð2Tö\u001fd{\tíD{ûµ\u0012\u0002ü‰æÄãAcßçæá!\tþ* \u0011q\u0003+\u001d×j»2g-\\dðe„ò\u00165·\u0019&I–ÜN®m’\u0003+\u000b>ý+¨w\u000b¨g­®,¿Ã!6\u0018>‡h­¦,¿¿!¶\u0017>Gh­Z\u0002Lù+\bs\u000b\bëfå¥jz9Ç\u0013¢êJá€tS­Tɒ\tÜ\u0001ãML½ÚÍQPM=}³1 ãøØh@\u000b)\u0015=}j\u000b\u0015NZ‹\u0011/´†å–Š‰Êøˆà‡2\\¶00{W~NÔÓ?Óÿœf±\u0006ˆþ¿u8Ÿ«\nLúœBØиН \u0006;׀\u0001Ž\u0015ö\u0010²ø;\u0016Î7*˜m&©LÆØEÌö\u0004ç\u0015ù8ØFØ鏮šbôç§V\u0005ˆp\u001e\n!1li³¡ÿ—ó¹é-Ç\u001büLºYÆü¬ô²nÁ\u0005„»—ø暣8–GÖªZn0؜^®ê\u00040oï\u0004=M›\u0003Ñ×\u0015˜F‚ÔP”\u0007{\\Ó[΋jÿœ{HcÜÕQÎ=Mzq;+E@,•Í7 •¨Õò\bã±³\u0014…«Ÿ»9ažP\u001f–g|¬\u0005ˆ%L\u000e‘­:£È­“$ìhîÕ½óW%­šˆqVÀ„4¸Íjp\u0015OÉR¨õXÌ|ðÀ\bE\u0015ÿÓ9ÄÞ¢DÇ\u0013̽=M2§XG¼ìp\u0007Ö¤^ çƒÉTÐ͟ŸŸ¨ ŽòA­Õñª©!²¦\u001c\bÕà ØÁzËw\u0010Ö×D\u0018{‡~#\\gxÕ±¤8nÆ\u0015\u0018Ö±šÔX½è¿§uÒ\u0006O\u0001ÃÓé_‹A»Æ=Mµ¢édW~‰ØÇ\\ÁKƵ‰Ö6p­€= Ä£d¯K= ›†p™Å\u001e6§\u001b\u0002̺$Ã\fšBü€ÞÀ\u0001+Ü\u0004[ur¾…\u0000;!HW2Ùq‘\u001fGW²\u0019&\u000f\u00102-Õ\u0006e\\úÈ\u0013ï|ºÉ„\u0018…}«b(\u0010’b©\u0002ý\u000bŠ|YŠðw3;\u0005\u0015%=M~\u001d °L—I̼ã\u0015KÌf\u0014•mtI\u000eåêä¦{\u0018\u0006¿p&y^MɽwGAÆo\u001bA£lépËc¾'\u001a·ÛñÌ$ê³\u0012™ü˜UޚY-ivªy´z\u0004þ\bÏC)FAÂá‰1‘ºÃg؉SBô¶fpÌñ\u0004ÆzçªÓßN.Uþy¿\u0018~?\u001fz=}Ù?±Ä•s#\u000eÖچ›§6‡ê\u0001„š7SΫ<’;ï÷ Á92Æ] ‰†å×ì0IPz\u0011\u000eÂ\u0018\u0012'oIý¨\u0018I…‚#¯¨*°¨˜ËQ©ÎT®O9µ£¹¸Ö¾­^»}؟J‰Yú1GÐ4ˆ6Q\u0005ÖàF=Mê„çA2Ê[†Åª”ÁՏT\tpbëÏ\u0018“Ÿ\u001c{‹6Û\u000b\u00167$S–Ù·Ÿ¬Inžt85\u0013ϨŠÂ\u0007Wùz²‹£#Q»ô(= 5ÌE\u0014\f¹+4’QHI´xJ%UŸ2¨NdbyUŸò\u0015¸…*“8\u0011µþ\u000eŒ¦SG\u0018¼=}y•õ›€·Ê¢ªŒÂðñÖÈ\u0019ä\u001cÁ[¢ æA¶È””ÌȜâöº\u001dGÚá\u0014Ûùq\u0017‹´éM׌\u0000†Ä\u0007\u0018B\u0016yFPñ”\u0007i>Ñâ\u0014֊›\u0016ŸD½š\u0018sՏä˜É^\u0004a'€·ØÏhÐ\u0018À¤€òç×ÊF8ÖÎÈTŸPyÒlx’Ïe¸tÔºÂæ4Íu֗È\u0011Éb6˜_wÈԖb´(w҄Âñ§ãÎ\u0011VqÕ²MeLLL hö&0N\u00195:\u001cž9ëKH[\u0002\u0000[œ\u0002\u0004=M“ŸoŠ”\u0017ð\u001eº÷T̲Ù]œ'Ó\u0017\u0016¨5bâ\"=M²\u0005et’\u0005CÕ±¤Úp\u00188c,\"¢áRh\f³\u001a©Þúv×wªo\fß=M1še.Ý=M\f\u001aÃó,üWåm›M\\«Y\u000b?\u0002ًãK*\u001a¡†Ñ\u0018_\u0010êH‹„û«Ïÿ5Ã¥â•wÑ#A&ûÌn©,š2„z6€Ü&—¿ô»ñ,'&ïgë\t+z\u0002o\u0019,ñ®ç|n&–¿T}Ì\u000e[’–ú=M‰36A›Eã°¬¤§f‘ýØF ýqÐ\u0003½ä‚9$Ç\u0010\u0003+ìÔ&ï‚E˜‚Rv¿íkq*\u0018:edzšÏLU ýMŠ\u001cÁ;#Áû\u001d\u0006Ý\u00060¿ª-â4©ñ\t«Äa61êmÁë^é‹\u0019£p´\u0007yæ&ÿ\u0006Ú§iáˀÿ\u001eHU@B„Ý\bùØ^¹~=M4³óyjòÃf#Y\u001bÌ~†FQ oQ€îêåmëª]\u001f)\u0007\u001bòüg)\u001fp)Ÿe\u0019òöMia<Ü*ç\u001aàø+J\u001c\u0019LÜ\u0017\t\u000eŠ¹®:+ˆäÕõ7éžþ1\u0015'Û¶Ñø7!X‘zHÓ0\u0003¢;$‹üß{w\u0005??ÁA\u000e\f\u0007«ÅP§Å¦¥¥¥¥ÅnËVd–=M\f\fœøqr\u001f£õC\u0003\u0002‡-z\u0001‘4Ü\u0006s<}¾áƒ\f~…\u001dÉ­+'¤\u000f¾r‹¯±\u0019°‚…>rã%òD¯Üv€coB\u0003\u000b~†rèí-®\u000b}ú,¦óݳ~oÿfqŸ¯M.ÅwE^:n³3c­:Ã3,æ=M$ì3k­<Ã4l.J¡=}\u001c_þñN½q½ˆ=}¦G:\u0016=Mqïý~¨úh\u000b,7¿¯õúùhÛ\u0003÷…²Ïya\u0003l\u00072Œ\u0005yeús%Þ:¯%ä\u00019]à\u0016D_÷M\tš-ê?&,\u0019ÞNj¯í|Èw'CbÁ„©%\u001ex^?\u0013Ó\u0001=M\fªTzrf·ã¦5Í3A¿|ÔwÊ&\u000eS\u0003=MœÁ~\t3Y\u001aÜrÁð\b\u0002ìl\u001dõz_\u0007 XݯgBj^}5Í(ùvqoqo\ngWáyñ¬ñBÍ\u0012S¡Ôì;3êiNª<Ú%Ÿ£%D%\\Á\u0012Øým*9aÒ\u0013ÃA\u001a\u0007q³\u001b$çK9\u001c\u0010ª\\1Pi ^úw\u0016ÂKç;ßò(K%^{’\u0003¯Ð­™d¤\u001dÙ\"å\u0019gß#é>¹²@¬£K×6A\u0013ÒüR\u0010i\u001bfªN\n®õ\u000e*\u001dïB\u001f8͙ê:\u001aÜ\u0014Ò|“Åo)?í=}oO-\u001f*˜òecÁ•Õ@qcSÄ\u0013\"=MèÜ\b\u0007ë\nmí]e|ekzh\u000b­\u0001òòQ\u000fȲ•‹\u0015å\u001f1Mû^\u0007 mK­ž\u0003Ÿç\u001c=}ªðkN­@\nt ôē1\u001b\u001aI¢*Ú\u0019 ÏKá¡Šü†\u001eƒ7’\"‹\u0005œ™dÌ\u001dMÖÖ»·96ø{„ú«Ô[\u0006T……¹\\\u0006\u0012}q+1ª\u00192…ßrlùþE\u0011ëSK•ü6Çyœ¢†ÎV= ¨ëªµJ‘Âh=MÎ!C¸ºN¨¯nî:)l¸ß\f®\tdÕ¯2Ŭ%涖$õ:¹žBûƒ»+\u001c³*3\"®4.®\u0003\u0002ܨ\u0016´//[\u001aã2 \u0002¥y]udÎ\u001e҆ÔObrn’0\u0000b\u0001û’H2!ª”í®þúܨ…@/2òß6ÍNRóÞ-çKW!vh±ÀUua\u0016¥Öäqö0N\u0000g¯·.N'v,ÀM0\u0018ýŽ­\u000bÅ\u0003Ý¡S9\u001aõ´ñà‚]\u0006¢\u000fßÌ_R¾v:'\u0004òéÓÌÖü‚Þ\u000f\u001dr¨r\u0001%õ›&óºTÆ\u0018ŠÀ\u0003š;E¼ÿ\t¥™eˉÊ9÷§´Ì^¢.ÿ\u0015%\u001b¹‡¸Hƃ,€®ë\u000bR#8x³¨Ž°7ԖÏ3D\u0000üiì\u001b\"ٞ/iˆ;±.áôP¯¦“´ýÊÌ\u0011\u0012æúøÞ½öî½0c\u0000óZõê#Ý\u0001[•\\:\u0014éo\u0012ď‘$iђÇþ\u0007H¹U\u0004ù86\u001a·üw9ÝK\u0019\u0001šFó§y„òM\u000eÙ(}ø\u000bŸ\u0005Y,ÁH‡\u0006H•x“œmzõ¹×½<‘)\u000bəTØ\bsÛ°çYS˜FŠgüǪ å\u0017\u0000Xªù³²E®\u0013xþ\u0010\u00025 jS¹¥õÐ\u000f'ÌÔý5\u0014VZ\u0017uò«\u000bµ¨ôÒ;\u001dND\t|ôSH\u0004\u001b:jÆ5ñ\u0000ÑB ï±\u001d\u0010)Xß\u0018õ0\")ӛ\u0019RF ÇU U)ߊ-T¢¥¤¸\u0007@•Dд+8å’%^öEå[5\u0015½ØYÂím\fԊ³W4¯¹=}Ø\u0017JÿàÁ\u001c¥ZVÔ«¸A¤Ò\u0017ýòÈӕÚx³ë®\bá&\u0006çvûâÑ7ü\u0010\u001bI\\Éaj]\u0007¡º1c6‹?\u0012ב’§)ñ\u0011ÇUµ\u0019?eÇT÷\u0010]Z}(¸:ÿ%‰gÙj(öXÕq\"®NÅJ,÷¹¶\u0004:@\\û\u0003èÉ1%zéðÊÑîÜÅ\fht[Á2­ÌL?YÔòüpg‚„j\u0010KºUÅð&’X\u0015ö¯§Ùi/ôÐ\u0003\u0004/\u0007Ï\u0019'ë!:\b= D_îôØo\u0000%êʹï¶Ô'µÜ]\u0001…\u001ek!¼É”l©÷Vuòw‘\u001c\u000b¥7÷w_0…ÎtaT­X=}›ÔÈËÊñ.óËWæRƒÀ,µâ˜h\u0014‡Jdê»íÀ= CupÏá±ú«»*…øó;F}^Ï\tÃ\u000b\"§Å(Ó?W½PÜÿ ᬌK\u0014¿úî\u001c\u001aۆµkß¾@w=M…ždí \u0011”»UíjɱZíÍý“[\u0000„Þ<ä\u0010\u001e#5ê\tÜ\fã\f\tä(t\u00061÷\u0012…0—¾8\u001c£û1Äy~\u001cjS±4£<ûµi ñ!•\u0018Ó\u001bù\u0015ԁ͐T¾óýf¡†øm@]9\u000bŠk2˜XIbjg\u0016\u0001\u0000Xƒ!I4°ÚËF°Ú'\u000bƒcQkÄ?ê\u0013½Æìj\n™\u001d20Å\u001e–ÚÒ·Øúi\nòò\u0019\u0007X8IÛQ\f0'×=}êÜU\u001d\u0019\u0007ƒ™4%ZÝÈÈåÚ·^I_IŸ]Å[\u001aR°lšÙ]¥·Kž!;-rÑ¥\u0003\u0017a$}É4˜eGjÖd\u000b1ß5ƒTr\u0016^úmÖ\u0004=}'vÂÄ/øü\u0017³^g\u0017§ú2\u0017†¬]Œˆ\u000euìÖÏÀ\u0004sÙö‡r•ªÀ‰Êœe¤!¸DŠ×æHâٚ™é\b蕓¸jå“\u0005ÙöJՊÙ9V§÷=}\u0005|å+GÝW#î>¢±X‡tÿëÕ)\u0012VùÖ}\núo5ÉXä'Í\u000fT2¸©x= •YYT“a¿‡ ý#\u001b™_bù™×/Œ·ì–G\u0005Ë\t=} ñybÀ\tŠN²\fž,]V%dµöú\"Þ\"‡y.GèP´\u0001'ȂÛϹ\t¾Â¥¹=}òÄ¥¹\u000bÕ#òStŠƒ¿Øä27ã‚àº\u0007˜õ»\u000båI\\ë+÷ÜÍ\u0015\u001aIG—aªPۏì\u001dQHiM&’8\b\f¥´Ø)¾c<¡\u001b¡~››ûK\u0015 ú÷Âr\u0007»#ahpâø¤Åyٚ\t‚#\u0019CðQ3sò\u00014­ç‰,áê\u000f0ÿsŸ^@äï= k\b\u001dr!¼>x%\u0006Ôý§dItë‚Å,-¤\u0017rzÅlê²\u00004xþÔí\u001c\u0017¡­[ž™Y[žŸäïô/à\u0001ýI\u0006ì\u0005g.‰ñÎ\u001aNåD‡nɤ·ù†ÞA©ëmė“G\u000bÀS\u0013N*,Û=M¤õc™íß {K•ß>ž7]ýŒºšBè@•»–ˆƒQÈ\u0006ɷ؛\f’dÉÃtøÖÍ(GԚ\u0018·7¶98Êcž£ÎbžµC@ ¡f¹…x1í¨hס“ø—\u0018T¦ '\u0005ïª$~¹áª\u0018Í\u0010ÒØS½ ÌñëI˜-6)o\u0018cÊÊú‚‹#™})\u0004jyó\u0001ˆvïdLïÙÉ\u0006¡2Ž\t¹Ä[Øñïsê\u0001´˜\u0014íˆ\u0004ªóKºæÒÉè#UòA½\u0011\u0011,±ç˜0\u001f\u0011ϨV%{ìz¿¢A‡!\u000fÙ)\u00110§9‡ß¢J´lnH¶Ä3ûÝ2÷Ti5YGò)Š[\u001e“\u0005h>É\u0000¾kö\u0019£XØÙ²Ï\u001d•O¼˜±ž±/\u0005\u0017¡RÊZíÁŸ¡ô$S\\N~«ú¼«pËâ°êZ\u0015ޟ'#K6ùj\u001cEê¼ó\u0001/\u000eÉY*¹¿\tɾäÒÀU¡â@ª—\u0001álë#Ù´má3+¥ŽP¾Š\u0000udˆjݾþi§66Gœ@+é2”\u0000x›@\u0007ðwˆ˜0\u0000éïj´\u000bÙ]•&6k{ˆ‹º\"Ò-\u00119vàOÚ֞üV¬¤¾·JÈ]f—Ì\u0019ê/â\u0018ç½dÌÍ\få„Ý­\\¿c€\u0019aÏU^\")mÆ«Å{›¯\u0011\u0005F\u0018ÊWÈM$\u0000§4\u001f篹±Üø™K¡ØäGãd\u001eä„Jû¦ÿ5g‰Á’¢|ú6¨žGK˜¹LrÝdTEùÙ³GδªÆ«—‚Ëú0’¿ÆBªìkÎ\u0006£ŒRˆ\u001fɂÆ\u0018ª HÆú\u001bð\\\u0014t‰žåVƒg½¬\u0015\u001aþø\u001d\u001dËB°ˆ\u0007Î?uQ¿Õ\u0002~\u0016#ö¢\u000b®èÙúÍ\u001bÑDIÆA,Ýòuw„sÏ6Xü\u0004\u000eh“~G…=M5ˆÛ÷y§ã‚1p\u000fȪÄá=MZ\u001dÒnŒÇš\u0018e\u001cèi\u001bðK6zž‰cA1¯ìôbϗõ4ŽÇN[\u000e9$t¿ö\"¤J«Ê23¡«Ë2©p’\u0016š›üVò6yÃ4¾(\u001d.\n†@´\u001edÑZ@®\u001eÄ\"”¥s\nCm\u000fŠK\n¯§úâ\u0014²\u001eÁ¶\u0013ʍMŸJŠOW@V§ˆ×Ü\u0000\t—\n\u0013ˑ2\u000e!n\\_\u0006¥ÿN\u0014Ñ*µž]\t0MI8ûl7£{}ñ¥\t¾r¬\u001f@ò\u00006V‰E_JÂÇ\u0015„?%ã\u0019&蓮Ní\u0014\u001eÿ‘';Zìóìbóá‰;\u0005†.5çu.ñÎÝ kMoMÏV-0Ùµ\u001d¿F5cg¢¢mm\u0007æa\u001c«éø~%0ƒ¯ÁôÃÙ\u001d&eã§CëlæsŒŽíËÐ\u0018ÈÇ:(ߗè@+£¸\u001f$Æ1ÿ.\u0017’®:\u000f\"€°˜†MN¹[D-1\u0015ËDZÞñ¸äÂ8\u001e*9\u001eÔ6Ñ/¿zû£O®\fp˜wÀ“\u0011= ¨ªP9RVƒ›3uÛ\u0002=}q\u0000',bil¾‡‚‰ñHU€Í,ánù}\u001d€–\u001a¾+v’Fµ8U\u0018¬o%Ûÿi\u0019@g,ƒc’ÏFŒk\u0005¥O\n(Iuފ—¢†ç;á”^h\tt\u0000\u0002K–ƒHbf$Ç¡‡\u001f\u000f\u001dûšŸ¸†ðËL Q\u0003ÎËôø!¦á媂œ¥îû=M•÷\u0000Ú9MÖÊ\u0003ò©Ò\u001b\t ^0JX¿tiÏî\u000f1RŸ¥ÀµfúžšR²ïá•l˜<±}f†%¤Ž'½FÉvˆ'Xó(ˆ\u0017ɔ‹ŽÓ˜\u0018ÎϞXÏLh\u0005\u0013\u0012\u0004w\u0011úJ8Õ¨PÈÆ×ÏpýǪˆXE¨Ç.X_\u0011\u001dE\u0017ŽÂ PˆÓ_!ð³Ëm[Pj…àè\u0005£\u0018@÷\u0015*øGAã¶å‡Þ=}]ט$Za‡”Ï®ÌhÖg­½àPÕñ\u000fÁr\tµþ%pø2ÓJµëÑOÂñ(ø\nÙ¶\u0007x{\u001cÉG\b;€ÊZèí†ì¾òß\u0007\u0013­¿\u001dÒeF\u000e~õ6Ôº{LPÒµRå؀—öiĸjfȚvp•À¹ü\u0000\u0017[Ÿ#«\"z‰‹ò[…Ľ\b&X%[u\u000b\u001dø= -·ÝÈ\u0004âP\\\u001e\bÉj©2µ{EÔ¡bTÖ\u001dí™0À¶\u000bêûË9öYíÄù¥Ìï7£ùU(Úïlœ‚:h\u0018·ál®$—‘Võô¼£‰jð=M\u0005ùµ|UhÂã²FKç¡£ùv\u001eb¿\u0016®\u0015\u0014¡ïy±+ӂofï\u001báQö\n7ZçؒbpۋÀ!>Å\u001b,ʗ$H†=M®› g/>½3›Ò\u0001Fò#¿Ç\u0006\u0010§;Ø$0c^³û$j=M\u000bÆ\u001b¼¤\u0011¾\ny\u0013\u0012=}qhz@41U?ã]t…]\u0000¢òïÁŠ«\u0005,‡ÄûÔ!!\u0000Tg7Öñ= !ʛ†£=}\n-9Ù\\Ž%ÙÐöã×ÿ[H-êä\u0013Â<®Þ=M¢½Þ¶÷5˒¸3Mr¼r™ÄŽØ)s ‹0ÓÉ\u00199^EH\u0007\u0013N\u000f.¹\ni\u0014\u000e’„åš\u0006©æ4\u0002q„µN1CÅ:aaõÛöy;®z¡úgŒ{G¾\u0013-ˆd$…¯ôŽ¯'Cö|9ª™gyZ&†³p#\njÑ)þ˜\n‚?UÅ\"\u001fd¾¶\u001b\u0010ÈÙ\u001d6\u0013Ž5e\u00163×î3×\u000f)–*Ê\u0010|\u001b\u0005\u0014\u0010×\u0015.ú9a¾\u0006\u001e€ÿ›ÄN^¿ÞÙ3$4vÜ{ß\u00066$¡\u0015i¦ð^S= fÊbÆc£÷\u001e> ìî¦0¾*Z¢A\u0001\tâv)\\\fŸ_ÿoF0ÒÔ8©4. ×´\u0014ù͇¸Aiàí¤>¯ô?\u0012ÆHè=}O˜ÚE{\u0005Çô‡V¾\u000fgHšÙ‰u\u0003\n}^\u0006ðQ\u001eÙ\u0016óÉ\u0007£åê\u0003†\u001f\u0010O̾Šxd*“p÷'I\u001dPï\u0004mNšÉáŸïbÞý¹g\t\u001b’\u0002¹3Yº<¿\u0004\u001eC|ån‰z\u0007\u001cô÷£Å¹c\u0004qÍ嘝1º3®™÷‰ü|å×\u001a3=MùYƒ@Ê$¡—Ô‡Õk)Òþº’Ñþaa\u0018d8ëfË$[ŒÒþù\u0017Dç°\u000bW\"½îŠö3ÿÖ|±MïY\bÈ\u001aŒ\"ûᐅø\u00151â_W5\u0019\u001e\u0011¼îºå\u0011ýô=MyC Pd!\b2\u0005íµ²{öðè-ú¥ŽÊ©ô3§ù\u001e1?=}\u001ežA\u0003d(+Ú¢æ')äE\bÄ\u000e{\u0003\u0013´îÑ+¯¬²çÂE^§Ï¸ï\u0006~L„Œö«²ãvêHê8ª2©HÉ~E\\\b>n§¯¬²7é8cSN‘œ\u001eNy@¡³Ë\f³\nüÁÓæ_ö¬ò(÷^Yh€ÙÖw]!ÐP>¶2þj\u001600#ûTׇÑÅ2P—\u0004o\u001f,˃Ößµèo\u0015\n\u0007ˆˆ7Çâ\u0005\"»³9/ÔT=}°O68ž\u001dµ¢ŽŒ9®;è=}M*ÄÅR¦äÎoôì#—\u0010<\u001bÖêžÔ×ÒÍÎTX0<\u001b–z\nz×KÆÖn\u0005ܚÕ\u001c¬ó)è\u001c°!þù¨<1a*3³KÔÙ\u0016\u000eò=M¤Õ&ì\u001bÀÛ¸ø\u000e\u0002]\f‚J\u0002Ø«È;+Á*„/YoÅãÏ]'3Ş“ÕÄ·1Þ)´ÜCìéh«>¿:v‹Rð¸l/“é\n\u0016Ҁè–ÄDZÄçÐ9ž]1Û+\u0014\u0019^\u0016Ý.{Kª\u001b¸áÖ\u0004¡ŸX¥ç\u0000INJ= _š‘\u0018\u001d¹v‰UÜ \ns›\u0002ý³2x½eòù’¿\u0017cµåW£\tÀ\fŸÀ\u0015<§£R“rÌB,¾5«u(-\u0012(xvÌ=}\fÀ|N§\u001eœ#j\u0005.Çl¥–¬õ\u0003E..\fyÂ~?öÛ?­…dÁŒ«ß£Ó\u001f…âZ\u0005Ÿ\u001e‰\bMÉùä¬V\u001c\u000eqođ=}礹ÛОqy)%l\u00051¾Ê\u0012\u001bU\u0019¬§\u0018Ôcq¨YZ~›“ª1„jFvÞŽŸòQÔÉOú冟j½ð\u0000ۙõÜ\u0015#Wž{êÃ\u0012_l= v±?3þŠ·§¢q\u001cšž…$þ,œõm4N\tx_ñ?î=MN‘Y\u001bB0\u0005\u0006¦\u0019íRÀ\u000e\u0015\u0014U\t= Y>O1]|”G#•i\u001e÷ì¢\u0006Êí,\u0007Llkà[“‚UŒ\\’N=M¨]Õ†F\u00182³W[Äñ\u000bs*;çï9y‡p­¼Gߝ\u0007ŸÝkQŸ¶3Pj3H3d¥;åÄf!=}j¢f\f‚ï\u000f_;ݽñX\u001a.GæX®{í£û\u001fݯþ\tՄ\u0006\u0017o¸\u0013\u0010T$—³øf\u0005¦ð%=}yºd²cH\u0017Œ):9\u0004ºé%\u0015\u0012L\u0001àØÏ´¸âQúžŒ1œ‰\u001cú\u0019½4åúFü}ë«èîÖú}\u0017ùr•èd)Û\u0006\u0006­‰­\u0012ûH1c¯÷Qù#By£uFº\u0002ȋÊΟ¿Àð72¨= \u0015cQ\\é\u0006ñ]¹\nÈ/”ï__!ޝRש|Èw{tfšºãœ\\è($\u0015‹®?‹ç\u0012_G\u0004ÓKËëmÓ\u000b7+§\u0018òšÆåN\tªö¬¶.^\u0019³g\u0003\u001bð\"”—7£\u000eám?\u0007åM¬ÿ7\f\u0004§)ómÍm=}|$ç(Á)(œê6«‚g³UvÀÅ­Z(víï\u0007d­\u0007\u0015á\u000b\u0013œk:k‡°© ÄÂÊÃ=M&ÇU÷\u001a~µ|8?˜Ã\u001eÍùž²éßÞ\f½/ø~\u000bM~\u0001\u0006Xkç|ÛF%LÈÀfpÛÍúºÂ íç]À­ÊW\u001dšÊÝ|wÑu#é+M µaZT‚ê×AœV“j¿wÐ#Ñ[_xõ“Ê’Ìð\u0016Û •œ÷ˆ)3mé¢Ôd\u001cqé¸2,ÙÂD~± ý½å\n\u0018«¡Qº/:.(ûÛ\n\u000e\u000f\u0000na\u001cҞ3\tÊ­¼'RÞEþêŸ0Ù\\g\u0016#µ,TíŸìicZ9¨À–U¬B{L˜Q$\tqÙÚ+\n(s…¤ƒ™rg$l¸cöÁEOŽI2 žÙùÔç:Ð;ü£Zk¾G@y¨Ä\u0005Æ\u0012*’“n6ç\u0006BIceƒäã3]u'Ú\bŒx°\"ÜÉWlD¬6Ÿ¹¡gq\u000eàÙ^TÔDŠ: ‚º–¿S\u0011þ4\"ŒBÔn\u0006ð¥ü­mï!¥¨Âh¡J”å̉չ“µ\u001bSôàIó \u001a = 0\u0005FñðºÛ1ž\u0000¹{µælô5fœð\u0019?þ~Í#¥8xX\u0007Vx0Í\u0014Fu_\fga â%\u0005¢^îõ\u0010[jd\u000f#‰a\u0000¢B+Ã^Ýh;\u0002ЌEq6€û÷Z3U\u001aÒ£9En\u0018\u0011ˆ%Ý\bùf= 0¢à<ßEÅγÒ\u000bŽïó„\u001aŽ\u0006\u0016|KÁVUŒpºŒ•5ûb‹^¦òìCÙs„¥á”í¤IŠYÌ\u001eúOSv\b\t.ý‚…\u0010ˆÿ³]%Ù'§¤°ÿÆ=M--Z…µ.ãN³\u0011Á•+ë\u0005â´Az5ڔORÒù8üx\u0004ßR/6üÉç“^£T‡¾Ó£-X´NVä¸ùÈTkÍcï3‹$\u0017ôۓ³:QV3B\t\u00188³2U¶){ßÉ »»ë¹\b§éG:Ÿ\\›¡[ª\u0002x˜dµ„oĦî\u001cÝcrÄÓb\u000b{vùoÎý\u001e˜..¦éqõŸš0±ëq{l\u0016xÀ\u0011Ú8G±æ0ò{•gA…¿¼~¢\u0000+IÇýŒ8­³[Ã)ƒ0åbyï=}±º\\\fý\u0013Ô¨×'Ý2ŸIàK+ee>”Mø/;mÃ̔0$–\u0014R„rênûr\u000fâØb’ö½\tc@€›Œ»r…Ë›?¶¤…˜Á6f\u0003ÉWäЯö- mýÍ\u001døÎ\u000b»@7ë^Îsi˜\n\u0016Í4Æ®íø]ãƒ\u001dmÛA{{¹ñ\u0006¸oZôtìÁB\u0002\u0014\u001c‚îy¤¨¡kUV\n_z«JFò\u0003\u0012\b‡\u001aÈ]Ì^ÚPÅ\u001e[Ö\u0013\u0011&6\u001e=M^F=M\u001e¡\u0003SÔóœsO§ƒB€ƒ‚ˆ÷aZû3å~ÑÓMUV\u0013ý#+®þj“éLÏä]Ñ\u0013ù⪠zX\u000b\u001dô(nÄ~Ôr;\u0006s˜.×&\t0Ǔ¸NDnw\u0006\u0010.7’P)×ÃÈ*qŽÙÀŽ%9Pð_w\u001cz\u0015A\u0002¹ßh°…1ý\u0017‚ñ~hT\u0002\u000b]Gõî”\u0011m:•\u001cßÚC¬OFE_3§?ˆÝ«Y©È[•e&\u0004T^[ì‡ÆXS—é= \u000f©Õ\u0005>!Ÿ¤èµH=}(v¾ö”<²Ø^*˜Ì®U¶\u0015^=}ŸÀúZh#§#¹ìšµ1÷&ÔX<¬¼†ŠŠŠÂï\u0015\u000f瀀\u0014¬?S\u0013ã+/Ò¼k‘\u0016\u000fv'$sÙ|ÒÐ[6Ö'H#ƒâgÊ\u0013¹­d²&oz\t^b;\u0005Z+E\u0007G†$~&ý‘è\u0003†FS?\u0003¨–)/1,Ò7?[·Ã£üc¹–.¦%¬¦%['r\u0011Òè{=M—Ñ},p¨á+‚i¤é°;6>c®¦À–z§Ò“”\u001axlƒÐºS­\u00128LÕfR0\u0017;\u00049vÄ;%<{ýuôÔúãiòûÝ(ËÙ\u0001\t¡€$thЛŒcô\u0002 \u0007\u0006RÑÆ\u0010¿\u0006Ò]Y¸ƒº\u00045\u0004.¢\t\u0006{4\u001câUh-㶡œ¾\u0016\u001cT€Y\u0012-…l÷/óÆô\u0016œçl¦ óM[\u001a¾àÈ\u0010an\u0001r‘ @,Â\u001bÄ5o–Ù”§\"å{\u0016ÌÖJ¸ÂuݦKw…Ä©èói¾–\u000bé=MS\u0002­ûHý[\u000bn°Á~³ù[Ì\u0006è#ÁEª¬òv¦\u001b°„@äl–“™]\b’3Œ\u0012\u000bÐßmÔ)\u0002\u0005÷(á£\u0014\n8ß֊70ãnÝ\u0001Y/rN±mç¬r$ŒJëà\u0004=Mê\nX’&¹[\u001dx¥\u0010)Y#q\u0002½ë_\u0012~= ’ƒ\u0006ìdÄ>\u0010í\u0016%S¼ƒg\u0013= ¤¿‡¹c\"éíe>ÿYIÇèá‡\u0006}ÅBº‡^›6d0ѕ»p( |òçä\u000b\u0011œŒ‰ûª»=}&zû–\\˜\u0010\u0005†\u001c¬/\u000eMçؐ\"êɍµq)“®$_¦¯ú#+h¦+³qٜSó(%¢± Í«ßºmù0ÞppùÁs•à»[xµ›ï…ÄðAƒ¤‘\u0019¯·âÂY~º·ùKnñ'Zî\u0012͋èÚ¿\t\"«ˆ}\u0006“‹×$*‚èė“xe½Çt\u001f£ùnó9\u000fŸ–t\t\u0013S0õé.\"µQ–êâ*\u0010/CuÖåŽpiÖ\u001a\u001dӍuúÎÜ\u0010Ɵ\f¡\u000f_\u001aí\u0000Û¦éù9¤Yb}³%e\u000e:’'\u0001\u000e³‡¸ä²£\u0003fÚÂJAÚΪ’'œKyĤNŽCÙS:M¥Œ:ÏUîa\u001eö†ãAX¿pW¼(Üê¥\u0006ð9;Gg\u001f³“Tä\u001cDq.ö@¼Kú®«v\"È \u0017M~Økz\f\u0010\u000fòývG«šM³ÆMžî³ÎcH\u0003öŸ£]¯Ñ#*\b\n\u0011é†ñÎVÀg³ïu\fÞ|*ή8»ì\u0019ñº~!é}\u0004¿˜­wìÍдÈÛs„Di7\u000eízº/]°íµUõ2éòj \u001b²?ËWJFN˜ÁFÌn\u001bÎÞDôß\u0004&p[h\u0016\u001781Ò~\u0002?.Æäó+G-\u0006†ž½7J›rÅ.’k5Ũ}\u001d%RϾ´LɯßMW\u001f\u0011®bÎ¥Ï4÷¢\n³«,­ª\u000e>‰tÛ\u0017Žv\u0011¹¨ö\u0001PÞ1êMê:\u001b÷sã&@QM+šøÄ,ħÄ3¦§$2sßu|×qi\u001d\u0015Èq= gûÿöÞ½i\fhÃjA’ù\u0004Ã,ø«a[³\u0015%\bÛ»)å_ûþÈ×-\u001døÚBS©±L¡M%¼@Önjg\u001c²= \u0006O= Œ\u0018óߏJR¤ªêmÿÏdº\u0018jXÛþ]åfÊ<à<†™1ô^êù±„ÛH‚ÈàeP•µSà†%XûjÍå¶4\u000eÇ[¸#¥ÖW\f»_q\u0016\u0003D€[Æ¿\u0012ñÚâQÿ³“\u0004è¨x\n\u0010\u0017DLj\"ˆu\u0004¸WV½¨¨\u000b4å\tJ1v#Ï9Ž•I-i\f\u0003\u0014\u0010¹\u0011»Å–iãNêÿ¿Ù©^¢”,щëӅÙ3Ú\u0001\u0012ök\u0014…ØÍÌÈ×µHدxX©•'dɉ\bíy³ì;hœÌòSœî\t\bŽ¥{í\u0015L1¦æ@B7Jün ¥|C¯¦\u0015f=M«m\n€ß¨.D5Jfµ·µeÄ\u0004–´{í^c\u0014™û­ü/S‘\u00185 ƒè\u0001\u0002¡\u0006f_›ý—\u0015Zmþ\u0007{-â\u0017\u0007\u0010í5\f‰àß཭\u0001ð8?\u0004>\u0006ØÏ\u0014=M\u0017]\be\\V !SÙs*Qr\u0010'\u0007åuÞ\u00015\u001f\u0011#eYR‚o˜ ¬È9Ò8nä\u0013oØL¸âZ]ː槣1\u0017Ö§\u001c\u0001ö8Š\u0005͗HtZoW^\u001b´oü€?¬³å\u0019eŸ¾–?Ü6=}\u001e“-£õéè†È$ࣿ­Ó—‘ó¯Ðf3¸\u0010CV¸QÄÔnÆV´\t•H\u0001\u0017J\u0007´ÔO\u0018Î\u001e+IwÓòHkŸ\u0004¢9«pêÛ®?pv—0ž]ÿþµúµA1QûÎ\u001dƒz\u0002¶\u001a˜¢\u0007²Ïi\u0006nW=}¥ÿäºú³6@˜Y1ý},¤þ㙽\"\u0012çböCꎕ5ýe7ê‡:ˆ+L¸qO<ñDŠËL”Dœ¸ï\u0000æ\u0016Q¢x‰e©íïøʾ~(/~Ž2s†$<\u0019ûö!Ëϸ$R…÷™£øù2'ì=MÙSÑÝv™rU0©/‰mó\u0015ƒ.Â[A~^\u0011‘=M#Å\u0013yuíóÓ\u001bt>Ž)\u0019¤ô˜Ék¡@ð\u0019b@x¦ÀD¸.²Ôã ñù»îIEZµ\u0019û×T\u001b}jÆ2ú«\u001a\u001d Ô+»4ÿ\u001cœUÃâjí†\u0016z\u0016³\u0003÷\u0016æcý\u0001Ê\u001aê”\u001eè\u0017\u001dþ«KkYŸ*éj.ê\u0016\u001déšwÛ¢5…O1\u000bÎ(œxaX3Ö\fÉ \u000e‘òæ6h©y_Ž·¬dP\u0019…Œ¬\u0013\u00148ÀËM.ŽÝv•aÌ)5Æjãï\u0016/ƒ!VæT\u0007†äa=M&{BS!œs~‡2z“ª\u000b\u0006\u0016<Â\nÓ\u0010Ǹ2,/h’<ë¶ÐB\"ÿ-è\u0016®\u001cÅò2T\u0006\tüVñ\u000b6}ýÙ\u0002=}Z}‘?U.6á9úY²ŒZ¢îð\u0017'\u000b\u0011沁¹ˆ\u0019VAсȩí\tќ+\u000f\t»c£T\u0002–ô\u0003ÈïS\bÎ7s²\u001bT•æ\u001dA\u0010öO}A«b§öÑÒú¿6CDil1\u0011,QG­o\u001f>뮃{G«1|\"-5\u001eƪ!|ëbcƒC-*ôþ\u0003…{·…*/|?ý£/*È©\u0001|*0!m‚{‡\u0007\u0019~öe\u001a= z·†Ìx÷ÛX…!r›™ŒZRf¿V–à„*¬\u0005ª ÆСA­~¬ –«0\u001a|S…vh³Ä\u0004‡*4!ìøΈ\u0015’=MC\u0016\u0002Â|çï\u0016ëòDŽËíQ|\u0012醯†Õ\u0014öÕðh'¥Àx|§r5\u0014Ó¸\u0012Rӂ¡\u001fàÆ:ä䴘DßnǦ 'í*sÀ‡™= ö”\u000346q\u0012È\u0014‹üì_Ñõ¾±óã]Áå_ßm|= šR…ËûNIVXQA,\f~-§Rfq\u0014J:Þ=}Ú\u0002H\u0019)d”¨\u0003 &2Ú\u000f7nÆ\u0010÷¶ÊÓú‘%ûBðÚI= k¾\u0018Ч^\u0010¨«‡xEz\u0001|H61\u001d§ce\u0017†L_\u0007]s™ŠPúÏ\u001dRm8Ž™2÷ÊZ¨\tÄû«vzÌ]-‡A¸æ,Í@]\u0019ûôÐ\u0007\f\u0019k\u001eƒTod»^\u0005XTÀ/Š\u000e³»\u0012±÷íˆXÞÛ¥§z’º ùÅ\u0000þ\u0007Û|\u001e7Råè}à\u000eañ8ìÓ „0ÏÃÆ{GÏ\u001d\u0018²€¢[ì²´_­G\u0003RŸg\fÉàïôz\u0007×Y9¸­\u0000Fƒj¦\u001b§±çú€‹\u001f\u0015Ö!“ö\u0003\u0015-®¶hRëHäRÊ9J«õ™p¥Y\f0\t\u0015\u001f\\s Ë^©Q» :,\u0007™= ÿ”PQ\u0004Ó\u0003xhVGP)CN^òÁR4H4QD©\u001e\u0013Å\u0004²˜Ê\u001aÁQê¼\f/ÉÂðê\u0017–{–H¸\u0017•\u001e›fÔ±Wò\\„•mŀ½\u0010·€2,\u0016•o¶Òõņˆ\u0004\u0014sÃèf„<9Vcp¦íjf£íCÐÏ\u000b4>2­sÐqÂDŽÊxw![û²’Ö@5K̶ý= Y\t‰Q>_ïˆ%FÊ£©»®>Úãã\u0010߶¤[á‡$[ŠpÞ\u0015IäN5=M\u001bvµQ\u001d²\u0010’ÌŽ÷@]Cbj½\u0004I\u0004‡hüñ/àôNî¹=M-iþ\"„#\u0007ˆ›¶\u0007jÊ£w{\u0010¶þ湛1AS«_¿9ý\bP{= wšÂ{Ç4\u0018ƒo'\u0017¨Ú–U~œÐ¡bµY\u0006\u0005l\u0000¥H¤@0ÝèÔ0¬ÙoŸxh­ßï¥D]­´}Id\u0010ó–'ŽÎ\u0017+‘fLÑá_\tÞflãHw”D/\u0011¿V•\u0002·\u00178Gð&\u0002¼x€É?…¢a6Š•Áµ¾\u001e¤£Œ@p@ £„¿¾HœY[˜²ŽiÎ2‰®ô;=}ƒRvé#/”áºÓŸí¸ôœ\"k_Þ©\u0010ÝX:¹_mv>WÿPz£qü\u0005z\u0000Ê(jÂÌ-ï#\u001d*ƒƒ\u0015zs¹¹ôÞ4y\u0004_…ÕÍí›\u001fwÌ\u0010ËìWpÖô±=}\u0001è þñe\u0005\u0011hAÞ5î\u0019ý€˜èM)\\|„8þÍÎ\u0011\u0000?ñ\u001cnRáÕ6\u0018¤¬éù*»ýhj֒ý$+J»\u0000k‹\u0012F~pã\u0005;2é’æÞ§sŠÛý”9ˆ¶WäÑ]²$¬4eŠs$æX\t@:H¹V\u0014Õ\t®*ß.FšîEÛþs\u0011m×·!éWr‡Ž}m\u0001K!#?\u0010áÜl˅\u0014¼fOu°ÐØ#%-4å\u001fåQHìà]ú\u0012À^bÅÛ¸ÙÉh…šE®í¥/î:òÇîXðBàƒ»ò£85^n\u0006º{›Aoc\u001eÕ\u0017õA…¬Mñ\"ú\u001fPmô\u00194’û+ûËù\u0017™#êëX„Ð_Ã\u0016ÖªÚ¿—žT4ɛ+ŸêøiAËHÒk\u00130IQ\u001fJ\u0001Tà­í¶…(_Q\bë\u001dzqï‡1\b\\\u000e\t®ü|âÝZã.S]\u0002iŸçÇ\\†±·³\f©\u001cûá9)³c‚S•æ‹ªô­Ì9H\u001b‹]ñ\u0011k\u0017/TcŸK°N¤\u0005p\t¿›I£Ãåõœ\u0016q#5Ó¿(ìO\u0016ð\u0019eÕo2ý€?÷©ž\u0011<F%›e=}A¡×\u001cª\u0006Ï!)ã\u001a\f± ;@ã°²e\u0013üG” µƒd)\u0017ÊT½rxsK*Ÿ\u001ewH¾çá\u0007\u001eªo.«DÆ£—túP\u000ee–êr€®G-\u0001éº³aW©è\u0016û}–½2\u000bT2—\u0011Š\u0014éò\u0001mÔ­ð\\–@2@Ô¢ÚµjXh¢¯ÞM\u001fã‰À\b9\"ä\u0011Ë\u0000¢#ÞáÍmN­\u000b›ƒe~!cÊéä\u0014Ää\u0005\u0014¾]\u0010\t0s6^r\u0006\u00009ùE¯2±B[:&b\u001eèÍ5/”¨à<Û-Mü\u0011)9Î;c ·w\u001eq§’ÊOO\u0018*\b…èÿ~Äӎ²¨ËvŒTˉBö(;#Ü= \u0005ªv®:¸zŽ€°õVlÖ4HïÊ\u0006qÅAøê*Q?Ûd]j¨4?ȇT7+ƙ\t긴daà~\u0018†\u0017ξ,»\u001bú/ü·WÔ-W\u0003Ö7£¬\u0003ˆ²»Êb¤…\u0006¨Cچ5œÂG\u0000\u0007Á™Ó&)\u0012l—qï¼\u001d\u000bé~@4ã\u001e¸t¬-?Œºn¢Ÿ\u0003Ô@fBB\u0018?¸\"ɬ\u00043L5·¢\u0000åZô…ð.\\‡^y¡Ž>¦¸œ¦ h岕¦\u000e$ª~?²Z£Í—NÊ\u0004>Q\u001a›çG\u0005¢Ý\u001a\u001cÙ\u0006A\u001d•€h‰=}èÙaJ’ÿ\u001f±(\u0007œð\u00030J^Ú§cët= 3Mu×TB5zõ4›´@ŽmÜþbôçÀù\u0012ei¬ó\u001b3È\u0015y\u0005\t‰=}ò[ÄâVlnMU{\u000b$S©L5¸B{dðkœQå÷\b;4\bÄ\u001fR.\u0002²Ð›»Òíí¾a±l8=}²ý(åf26ݹ·G5QeÜ\b›G\u001b+Ä&-RÞ̑ñ勂ö4úï/…oøO\u0013\u000eà²ô>:)„r[Ž= \"~õï\u001d%—ºÀL¼fc\u001b͎±}ö·t—µ,\u0013?ø\u0019AKíŠ=M\u0013³e¾…ÊmM—\u0015 \bUˆ\u00117Ù\u001a®¨d¼^\u001bk”Åù\bÕ½shæ\bi¢•,ûF~‡F‰\u0002AŠV3­¥?IGFƒ\u001ež\u000e\u001cÌHP3u¢sX¥Íþæü¯(i\bعÂPXéH»®b\u0006\u0010.þÐô)2°=}0ûl¥X–/swèÁ^9Q;“uþ_ÎZå\u0004\u0012ë$«ã®ú¨\u0019üGx\u0010i\\YÐ_2sŸ¹oH|d8\u001e×\u000b\u000fíÀ tQB.äl6Ÿ‚l\u0005d\u001b½øÀ¿köuÀ\u0010͞ÿßïµåmÄÖ÷i<,\tÆ\u0003é¬*B\n\u0014\u0010?Fí}.Pj)MìÆÜ+§Ô2g¿Y³Uv§°Ž²fÃg-1Æ#AðJ× PxaVˆ“\u000bQÙÀµËо\u0011R\u00185kú\u0012I>ÉêȧÖtM˜‰Õ/IÏ#«ÈZµg\n\u0000~3º—¤É®YM\u0016Ý\u000e‚=M,h¿ï $—’:Áw\u000f̪\u001e0\u001aœ²êà \u0011„n=MM—Ž\u0007\\\u000f-Öï\u001fE›'–\u000e²&ó‰†ì–ŽÁ4÷\b÷éÃ<ݨ菋*椓‰\u0002\u0016ibö¼¢Ò84q\u001f•i—¾E;Sê\u0013ñPcÞ[\u0001\fe­†Ë¬;i\u0012\u001b\u0013,×\u001e¾¾x/§‰Õؚ\u0002Ö4¬Õ\bÊ^%œ½zÒ\f\u0013\\«)¼á\u001eþ@†j¾ˆÍ¤À<=}SK¿mÌgB}Ô䓤\u0019¸×[%#\b\u00033W<¾4࿵IÐYÜ@v\u0001ˆSíoì 0œ\u001fg€z}\u0007\u0018²ðZ@m32\u0015Ÿ¸øÖ¾î\u000b‚Ðît->¢/hí‘&ƒ\u0017]ü'U掷=}\u00191¾ðûÍÝsGPtçdÐ9S\u0012毌\u001aø^\\ó1»¡º!Íì}c-©\u0019£(\f(:sR¨ñ…ÙJsª¾Ï5Žÿ¦w6®X>%ƒ.0Ö;Í\u0013‚\\’\b ¾xX\u00149dÅ\"Ž»GÌ\u001a\u0003{ú\nZúEd´U±Õsӓ½\u0006\u0014µohW©Foâ¹|\u0000cp•¨––=}¡iv¦8+üÉ\u0003§¨\bR‚\u0001ÀCN(|“8\u001fN($Nx0&ß\u000f†úuZ>¢™ð\u0007bÈö\b\\ºÓ=}¨&¢þY—\u0006ì©$}}€ø \u001a\u001d»\u0001\u0002äR= \fñíJ\\w)î9°Ì[HïÉþîRÉáJë»2Äá7Žgvï\u0016\u0007\u001e4\u0007:¤²Ì\u0010s\u0007\u0013ÀŸ\"-¼Ø\u001a\u000e'{ó\u001cÑ\u000eר\u0002@ß!Ǻ\u0017@)IÙÙÅU1½þý’\u000b‘= §dÜâž'÷µÒØà„·’ê¹ãùÄãiÑ=}ß\bB\"t:ÒÐ\"/¶«U¿6˜Òú\u0015…\tX¤\u000bÀ@iÌqzÔ*‘h„Ԑ¹—¬8¢\u0015(§Q¨œÏ8¶N\u0011ÃßRÿ¼Äë҇kí %>nøÇEƒá¤Þ\u0001Y]‡)·Š‰ vÓ7(îo\b?’^B)\u00140͚~銸NA#‘Ña\u001cq–?ö\u00161Óþ\u0012¿–w‘t€\u0001?Á‚Û-¿Ín±{€\u0014Š·¯\u0019›ùäඬ2c›^\u0003ãðS*‘É\u0005*‘\tD€¥}‘âƒ^ºAÝf\u0015ð•mgÑ\u0006LÐû×öÇk\\àÌ$ý”‹ yX^&\u0000ÿµÛ\u0013\u0012V|\u00032¯|;òð\t®^|.ÍíŠs\u001aQ×ER¨@]/ÚcL\u0016ýC¯\u0000õãВ÷74®ÈÐSãÒÅó\u0013$\få©H›~ \u0019¨h7j£/c-·ãˆ\u001c\u0000JËJí.-‡/=M \u0018ÑÒ\u00032u¹A„É\u001b™LÄ­”';ÌN…Ds4H]t$8\u001b²GþÛ\u001e‘6ۊ¥³3ÐCpmØ\u0014©„™¥&\u0019\u0019P\u000etû(©ÈU'(\u001fõ\u0010“GN÷h!P\u0000Á)-’\u000bâØ\u0001☉ XM ×d1Õä{‘@=M:=}òBT\u0002B½S“É\u0017öÅ\u0003Ņí\u0001/$u\u0011“–A=Mš0ƒÝ:BqÙm\u000fƒ5:¾œüAð&ùš‡dÇf\f¬þ©ý\u0003»²u–ƒMԙFs\u0006Ÿ¤\u0000\\6Uf;õäV]Èø¢\u0003HՆwR¾…CÜ'‘2P\"Ï3\u0011pæì´Á1¯P\u0005ÔPøÿ\u0002Ó–žÿå\\L、¹\u0017\u0007\u00160x\u0006>ß2*\u0013X5\u000eƒ3vgƹx±¡ñ¬bÂäò÷N\u0013\u0006ñWm?\u001fÀí\u001c\u0017ânߤ˜\u0014\f\"\u0003,´ÿEøy\u0018»Fž‹ÚýE„ÕFêБÕ&cÔ\u001eËvkÈ\u000fÒTŠÍWÂƬC—§¦oïp¥ËZ\u000f»†ƒfuˆ ò¥”°\u0015dâ\u0019€\fAféQ\u001c•’5Ù˾/±R\u0015\u0018\t\bÃ>uBÂÎ'*p³ë%\u000bK\u0013y IºY5= #r>‹4Ɗ\bDh§1=}›\t\u0019ðÌ;›†jomü÷êÒ1Üêr\u0006baÒwé₮;º(½uw\u0003ëZŽŸcô\fký‘©g\u0007ó¢«z]\u000b1‡\u001b—\u0017Tz&Ÿ\u001b\u0006j}\u000e)°es’>q\u0007¨öÊ\u0001Ua§Ÿ¤+žå<\u0002uԕìc?—[+Çï:,¿4\u0007‘= \"\u0017\u0001ÚÜK3ä>H¨\u00104X҂cg\u0013| mð@^cmFÿ]Ø\\9‡eˆà0ÿn‘Ê—þ\u0013tË\u0006\u0016\u000f§À[\u0012sZSÂNŒùfõª³±˜óÁ4ÆøIol‰ÎUVt[ª²=M^˵\u000fRAÿÈH@ÓA\b÷̶_x\u0004ɼã“\u0010ïtêæ@_xò®–\u0001|\f¢8]hå:흄´\"G2(à¦ûù݇\u001eÅq\u001cÓôÊÌ¿úq\u0016\u000b½&\u0017âÀgU\u0004\tï·ÑÿëF2Œ\u0006|LŒ’#²)\u0015€u@.¿mÅ\u0005\u0006eýè­4Îì²\u0013í×\u001cÒ/U·c£\u0001þ^«)\u0015Ü\u000e>†±\u0005Qâ¤ùR†0Z\u000fÁ¢€ªlÞh°\"¥)\u0015؎V\\r&äµbôð%WÎQæoº®Þ«\u0015Œû3\u0010\u00023ÈÙ34½í\u000b\u0017”¬— §\u0000\u0014¶z;,ò‘ÎLÐâtv\u0003\u0019x-„[­¤(©¯±7ûÌ{šÈ\u0016K6¼®Ý÷*bWãPüÃñìµROÛñ·*ÝgK;18×zjÞA쁬Îi*;\u0011\u0019\\ç\u0014®P÷2¡\u000bÝ\u000e“™ç\"xô9~‚b2\u0001\u0007\f$Í\u001bâ\u000bŒ2Ÿ´YUì\nãŽhöäÞbGBÏ\u0014Œˆ\u0019’E\\œ\u001bgÎÐ÷³Â}6Çÿ\u0014qÛ\u000fGfu¢¯µÐ\u0013Åc×ë\u0001{wú\"›c]Òï/\u0005ó|\u0000•€Åy\u0017Pâªuê\u001cµù˜Ë¸!£\fomSc\u001cºB×w\u0013\u001fw‰žoÅÎI\u0016<Ìð¼TŸ«·o¯†“‡d̔€(Ù¼~”\n™Ð¥¤\u000fT8oœSˆžYú/$]Ձ>Äõ¬\u000b(\u000bÅmnC–\u0011¤\u0019G&˜\fùʽ\u001c›Š\u0016†\u000f‘þ\u001e\u0006B@\"\"du9»ŠÇom)a¸(e&Šr\u000e¹\nqï;t–c\u001dk•tªàȧ·\u0019+ÑwÊ=MSŸ!à\u00156P™þ\u0006ȍúv¥‰\\AÐ\u0014‚ª$_n÷f?¦Vê€%\u0003ö;³F^Ç­=Mñì\f¡ö»«K3ÿþ\u001d\u001bf=}\fq6Àó?q¹ìÇ\fëõŠ\u0017~s\bõ\u001b\u001e †r¤\u0010Ѿþ‡opѲ\b\bÀw€‰›ATÆv;*53¨8É«ë°$d3{oì@¤žµ’¼–˜¿X­;ð¨Ë\u001fíuQYèêE®é\u00018ã±¥âPãDUKæ8¼¼M\u0000V‘4WDõž\"ÒGíùT{\"\u0002É1$\u0013\u000fçú’N‚\u001d mÍÉ#6§¿†ë+6vÕħ\u0007I”ê\n$º·‡8z\u0003C½½¡\u00071?Àä\u0018\bD\u001bSºÍ9Š¦ƒƒÓî1\u0012GCo5w]\u000f€\nDØ𕔟2T¤¡…öÏ;þY¬Ò§¶pyia\u0007hôü¥È9袃Þ2\u000bBb›Qœâ|ŒR]\u000eL\f\u0017¡;^Å\u0014\u0014HÁl¶Ý\u000eÍ\u000e¾L7\"Ä\u0007Dç¥cp“%¼²° £Kcù):b£$ÑJ-£+¶òÞvÂ\u001f¦õ‘¨FS¶¡›éJºü\u001d\u000e¹ûD÷W·“U¯= ý÷ûG¨t¨cžkf{AÔz7ê\u001fïúÍ鼤»óì:fšÈv¤ßR]>èê ñVMR…U3±&\u0001å6\u0006\u0006ìM¡\u001fø}\u0016&VA\u001aS9·ª÷poös\u0010ƒÁ…hyM,r—AÙ9‹Å¡\u0003Û\\ÙÓ㷝NÕMOêÏ+f\u0016\u0001\u000f\u0003ô9*ċ\u001d=}ø¾È\"×w\u000bcÆ\u0016\u001fª6]šÓ߇_F›\u0014¼B<\"ô$\u001b1ë›Û÷¿µ+©›lÙ®ú ´(Ìv:²¨ÉÐ\u0002×\u0017F‹ë¸\u0000\u0015÷€b óš½ie¦2zîTrȀ¯ò¸°wƒê½Ö\u0003i¼ÃޙoY\u0006š2Û\u0000K5+9OÃXç\n4#ú$ã2+¡k\u001b¯,¡Sã2Bª‰G¡[à¶G¼ÆÜõá\u0006³”ÌÈdÑsºœ\\ÚàS@¹;\u0000÷1@)²¹35Ò¡Ê\u0018Ø\u001b\u0001N%s=}\u0004“\u0018r(Êł6þ¯[dòŽ´+…\u001esÀ“Ç(î-°2Ä»Ã\u0002\u000baÈ\u0014\u0002ËóM~6Ì9èñ9\u000eÀ+\u0000Ç­&\u0012¢Àµ·’–kªÃ‚\"Ô7%7g™P\fÜۅòÿ\u0002‰ÄåËM!ۜÒM\u001f\u0019H±lˆÎ= ]ŽÖÙڑñršåTÓXV\fk\"•µiÌ\u001d?Þ\u0012®×ïª;^”ˆ{\u0001É\u00071\u0012\u0004ÿ\u0014\bë\u0014ZtO—ìR\u0016N–>ªú‚g9ÌÓn¼ø\u0015\u0001ô\u0003r=}= îó\u0004ü\u001e®Ö<×x›>dJ,”?žâ\u001e\u0007™pS§¿¯&b\u0010Èûo®w\u0005\b›„\u0015Š9«¾C)>Y5\u0012í¡ \"0i\u001f´šçã\u0002\u001eƒ¡ÏIïF\u001f„)ökdCë£þë\u0002††ÀGÄ´\u0002hVóĤü&€\u001d‡,{ª£*‚$[¿\f¥e…g€^ž_Z Œø=M¤|}æJ\u0004(DP\b¯Ë¿¯7¸ˆó–eOÌ?NøÙCžÏáp\u001ag_áðoýy:’44-!më ¤®rû÷‘&ÎzÃ(·Ð™XÍÌÀ,Š'Þ\n€Û×÷BJãB>ò G…Üǂ\u0011¸­™,FFž®‰8+Ñõ½ÝË\u001d…¼Î*¢gcI- ‹ø4¼ÿ>8\u0006ì\u0005\u000f'ÊN\u000b¸¯\b)\"5à´Ç\fi·Ý<àäC°&çI—¤æù=}Îü­Nè½\f¾[ÄÇp4œU\u0006á¿ë‹ÿ\u0014#Ùòg┈܎\bo͉»5@²¡Å9=}ÿ\u000b\u000b\u0014fj\u0002Ç-\u001fʞÌGß$[m5*\u0015:¶\u0014Sô¤À¼±ß¨öé\tSF\byw›Q\fÔU\u0010<Àdô ]\u0018gâqâƒÑÍH×^ZÒDw\u001el\u000b?K•eA,yêç_tr¬´’ršL\u000e±Ï‰Õi¾= —Uu‰)WqH»TܾjØ\u0003¹^«ÁJ*Ü­¬÷­+-\\\u0013öŠÌ҃\u0015ó\u0002~ayý€5„²ó\u001a6…h\"Ç÷Å\u0002èʡ黊a†»ú÷Îéh\u0001\u001d=M÷Œhû\u0011¥W\u000b;\u001cÓÅÐÑÅdêOT\u001f\u0007].:֍ë|JÛ·gßmÓ]…(= \u00036\u0013\u0014†ˆFÁD\u0004]ü?ú4øbjY E9íë|é†hwYŒŒ8,¾u\u0005¦”z\u000bÝÕ\u001c\u000bˆ\u001brGL¬­±síé\u0011&öä\u001a\u0004íŒu8\u001c£zù\"4^xk\u0002@ j¹õˆtm)iŒŒ3Ïê\u0012£œŒîÁCF>ƒ^?¿½yq]ºMõž\u0014õLÈŒH÷\u0005]¶›ùG÷ø²¶…¯T\u000bTÜÔn®ë§9Nˆq\u0003qmQ\u0001nÌ\u001f\u0016í\u0013ðº5À(^ôÎ-Á½-ñ8É\"{µ\u0001\fьºû0÷uÚ̔5€§\bà”ÑÖÜøm\u000f†HHkadš!\u0016\u0000\b—\u00132A>TO=MTV\u0003Šü²ýr·ï2#þ\u0000øŸ´\u001dä ø\u0003;¸ìÝ2ZꦚÔf\u000ff¶¸LF†¿Öù¨<áDó¥NŸ˜,\u0001ÿÄù9…Äi\u0010YRU,×çF¶kî!‡&+ȹ¸6×ÅP\t¤ªÅÝ1ûEÙf¿;V,E÷ß^:k[\u0015!F’\u001d4'³ñ«ßÚß\u001cø¦u¡@ì2Ù¾\u000fýæ:¤\u0012A·ˆöSF\u0018ÇÎÑÝ®—ˈ¡uÄpG)\u0007mȍ\t~² \u001e†L¼ë”¸+H‚xðºLr²Ýê\u0002½ºn€©Ç$Knme?ÈÊ‚Ýp\u001cO\u0018S(b™«!™YÐC¾¯¶u!˜ñ¹›ë)O¤A¹£«0Hª–kÏÖsל‚˜}Ä^ݲÝN&XµœÜðzµs\u0000÷\u001c÷Dòêé\u0002Å?¹q\u001cGÄ;—újül¸\u0001îoîõ\u0011\u0002\n™_nžÁR’\\ä'z\füL^°¬ ¿lõ\u0014ϋ4Ä݋Bj-´CÆW6ÂW\u0005!8Ð=}m×EÈ?/‘pâՖ%À²µ¤ÁX»íÅ\u001f\u0010´fôX¾Ã8\u0011#ΞÞH£\u0007\u0015´ –IMOF\u0018\u0015\u0018Dó\u0016¨Ïf\u0000=Mmézä:6æܐ\u0010À^\týPÕ+\u001a–7!£gePXÌÄÈRÞ\u0010\n–ÌòLF÷8ɾfà¾;sžZÑ%ÃýÙ\u0014¹&;L \u001fQK8—¾2§x•,9\u0007»]Ë\u0017\u001aãa†V\u0016>ñ”U(\b\u001df)ݱmÐâ¸?º¶HïíUHMoôWɌó½\u0003;\u000e\u0010í< ‰Pùq؏á\u00146t ¨—ÎãZJ†d1Ä]Žï}½\u0012çšÞ´TÅuèð4\nPW µ%Å·\u0001ý²»»\u0015>˜pËGiÕ6\u0005£+DóÑoBÊ\u001f\u0002wŽ\u0006°Å\u0006¼Ü\t‘ÑÊØ¢4—\u0015ó‚Q{î(I£¶˜ˆa$§Ÿ°¿ÂÐY\"[s€…RÅDwµ©à3ä{Z4E\u00173Ejðñ)ó\u0004è+•ÀoȊ¯Û±9ÔY&t\u000e“Úþ5\u0011¡ŸYBE\u0006O\u0007I“ÃuL¶n{\u0014Kr×GjÁ\u001b\u001e”>Og.¿\u000eÖ\u000fHŸ¨ij\u0011JæWµpÌBóãÚE{éÙ;eÄ\\\f–âxÝPXSnf\u0002¦\u001f1‰ö\u001eVIV°µ{®u¢~~Æ= 5ÆR=}\u0002\u0011ÍÓáB°÷–\u0014púL|?ôÐòk°\u0014ÖÃlúJâniAyìã”ÚVGŒ(Ÿ --‚=MÌ\u0003âÜy4\u001f%–\u0010V݅¾ÌÒ®RÙÖOTøŒÃ\u001f\u001a¹H‚Q_[‰Íg\u000b9ñwcd¤8ÑOyt}EY–Æãhxî4YҐܕ³:YDÒ'²\u001f\tŠH9DW\fDHºâÉlº@ß.’(Ë·Á\u000fTkEÏýª\b\nHáÕE\u001aQ&\\YåJ@þkЈAÒâ\t\u001a9fµH.Qï娬A4„\u0013õ’Ãi„\u0016¸Ò\u001d®AªT}¥„½rZ†fæ\u0012ê\u001e\u0014º8Ë\býº/SnñàÌ\u0006A\u0014Û¼˜ö= Kh’?\u0019ÌFjQL\fkCÌFF\u000føV¦¿D;+:ê\u0003ÒªW‹¾üy³Û–Å\u0012*YH*‚fÁ'_Š\u001eFÒ丑Yïî\fV¸AÁ\f\u001bʃ\u001eZçóŒ)ÃE2¯ü“>m3•n°sh+þ\u0019¦Gdæôí°0¦°Xəëà\u0003pëhÆþ0¨¾•{K\u0017\u001e}Ðȵ«‘b\u0015J„¾äÏea\u001fÿ=MHµ= ²ÔT\u0005\u0013S!¤'úeï\u0010„±(0Ê¡Î^ĤMnLIÊnš…½ÅpÄàRûxT™ó\u0004ÈҒñ{!ö\u0017É_\u0006€Õ\u0011©b:ÈsÔ£†šEª6£\f–Þ¨-¾\u0005šxÄ»=}^y¶ÓqmùF°’\u001d\u001b—Ì!\u0011¨tóY¡£@=}\u0019= àc%\u000fK[Ӑ”E‰ˆE„¢±üß:\u00062)\u0015Åçx\u001cA[„úN­Vñ>‹n£íð\u000f= PJ¸“¹^¤‰DHÊÊ\f$Ï78°t嬮ƒóGPTbã½j‰‰Ø\b°›EgÆ\u001e«\u0010–=M&\u000e\u0013\u0010#˜AÚÉNJk\u0004¾Ïòæ¡\"¢A䏍ª—= ÿüõü\u001e>µL’¯ÙæQ<È/º\u0014c\u0004éná=}|IX\u0000þ\u000fì¨#]ª\u0001ãk\u0019Kçuʞƒ^\u0000;\u000e*و\tž×֛Ú\u00041¾™\u0019!™Ë›B¢¡³rY@xIÂ}%3»ð!’i˜êÈË;\fÉsV«\u0012\u00119ÿA\u001c\u0015Ž\u0003\u0017 Ü\u000b_j\u000fQòAð.[?“‚¤­mßnŠ§\u0002 ’cKb=œU.Ãó›ƒ\u001e(\u0013\u001bk\u000bD¨­6_­\u001fP£<Ø\"¶ƒKš†s\u001e×ñü\t¤“‡nNjBÚZV5M9øY\u0014\u0006¡ÆK4ù’\u0005¾“\u001eÈڛ­úg2ƒ›Y‰ †uÂ=}4årº~öÒІ}\u000bçšM°‡|4p\u001d\u0017ÒáýgØý\\\u0017ëݜÞ= L\"\u0002pP(mt‚´¬iYo–S€í\u0007‘\u0012ˆMŒ^Zp!í×Hk›WH›ŽÒ3f\u0010ÞØ\u001cëÏ@áTã:n«@Z\u0000æ|Þ§R¾6„š\u000em*j\u001bœº•>\u001aëÔ\u001fZQ=}k\u000f_~#‚T'\u0012g\u001f+…Ì‘\u0017m1–M©¤!pú\u0011¥*SM¢9VBnïT7H´sð.k\u001d{>\u0004Eqi\f Ð\u001a%ÔaĚ;š\u0004\u0017Ôr¨\u0015exøy\u0017š…ì™\u001fu¢×ëc\u001d˜JõOv-MmۉŸ´«\u0012˜MÑÿT³\u0017Ñ+±}\u0007\u0018=M\"œÐ²Ì=MÕÐê—&›\u0018dÉFˆXa{žÓ’ð™ú»dÓÙý.\u0019;‚\nxMº\u0001™l€»Ï.…æםWa­HŽTŠ´‘¯þË=M®¿¸aj\u001b–ï=}…ôEVÕŽ+Žý§â¿8Ü¿çÖº\u0005‰­\"ð\u0011/ý{CÖò4«rϾ_³\b\u0007ÿFx\f˜è»}\u0004ð=}Êq\n\u00144ÿ¾ö\\óE¯\u0005(5!ÌÞ3Û\u000b[Š\u00113©#ºëùà\u0007u“\u00195·®³Ÿ70ÞCžªºv\u001a\u0015-(J4ç\u001a\u001c\u001eëHŸ\u0010~Ϭþn—£_—£,&žnyUÓJ؝'3„\u0010î|ã'\u0019H\u0018~s)Îd©^ªvùو’^/¼íí\"1Ï,B†u¦cµüîšG\u001fCÜ\u0010CÌ3Ùê\u0016ìðEŸÌ\u001a\u0000\u0003VI,Š©ŒödÎn[£\u0018\u0006“&øÖ¹$j\u0013Nn_ŽÛ^$”Ÿë\u0019¡YñƒDä\u0016¸Y|°4IÁ‡ã\u0012Rû´Ó“\u0017z*@í’tœ\u001c,\u001c-€æS{b;$\u0003é@>\u0014.rœ‘$?ñr*íÚ*7 Dçî˜[_\u000b\u0013Â1Ä}„/ª\u0016\u0001Lä-ìä­ë\u0011K?“ë\u001aÂ\u0012¡·-bH3l³‚ç…áV\u001a©\t°êæÍ\u0016s™\u0019dêw°ž\u0004…0X>ۅø-ÀšÃ´×xèfž\f$6V¤}5„ˆ= o\u000b§à\u001eý\u001a>eiäÔÈ¥±=M§œJ„v¡äö¶=MÅПŒbÂ-¸\u001dãSì·îÎ\u000b‘AU¢Ç\\X•Ï¬Ù\u0011[Ÿ«ëÐØo¿\u001b\"z7‘þƒà\u0004\u000béþÈ\u0004!²RëQn\\ˆ„$«·‹©B_£Ñfô‰”%-¤ÒE\u0018*’)·$œ<°'¤.fåâ\f)¾\u0015'¤À.Q\"Ü*>\u0014«±\u001e¤›;øóCÁ6óóúí\u0010…óSè(ŒM·D,}éXÒ\u001bñ\u0006Êÿ€U0©°eÿ¿#µÍš­[=MnUgdYž›öJ\u0018d’ç¿^X´ñ|¨³eèÔ&=M³Hýyóä@ƒp¯ûÒõª2¬C¸»\u001d²©c\u0007ØъCj¼,Døj§‹5pí³ÃTM±nÚÀZ\u0016›Tà‘= ‰\u001b#ê\bð˜'ðÉïÃ$¹\u0017ÓA\u00198,×G%\boS]\u001ds€å†&i°ŸºF\u0012§ÖÒ\u001bS\u000bæ\u0014à4Ëå‡÷ÇT« TqÕ@Íl®LEG5(=M¨ËWF¾ˆ:´×4·\u0011!P\u0005¹1üÁ–åk°}Ì-n'Ûã¦\u0019\u0019Âr\u0003çTºíd\u0017¯ÓàÌ)\u0015 \u0004h\u0006æoӑ£IÏ~ùW(¯$ÊÏ5Ñ+•|®fÍˆ\u0003¬ÄE\\å\u0016°´õ?kŽscø6ÆS±cú±°¼«öø}ã2\u001fæ\u000bø‘\u001aå'»³»º\u0015ŒàŠ\u0010ì´n\u0002\bk £hþL^\u0015@JÑS#s¡œ‘\u0010Ê6µ\u0005”\u0003³\n5j\u000b\u0015œ\u0012Jüg= ß“ÁÿƒüÕ&Ø\u001b{ó<ßé\f’´C5Sö’F\u0002Z\u001bÆëâ·[E\u0018\u0016ÖxOؚØV¤ÏÅÔ\tÈÛòMÅ_j\u001f\u0010/\u0017µî%9VœK\fq¤Å7OJÀI‰5“h\u000f\u0007fhÖ\u0003ŸMF©\nK?\u0001¬0ð:Ë\u000f}Ðz¢gì¾BÛ1\u0005kžõà…Tñ8')ÂÙܕN\u001bU\u001e ynd¤\f\u0018zrvš:#…\"\u001bœ«Žï(\u0005“çKü]Kä\u0000céÏ\u000e*™ì]ú¾Ë”Q\u001b[÷Î\u001a$ó‰,\u0017Å=}î1]d\u0011úì\u0004ÌZžp_biï\u0005tø\u0002;@÷‡µªâ%r;µ«\u001e\u00005XŒý\f™\u001d³Cj”•©´\u0011Æ\u000fFuü\u000f'¬\u0012Źœ\u001f¬M6ãä€&¬¶ÄLöû\u0002«\u0017%ÎÕª\u000fCøÿ’TA!­^+\u0002“ãœïÓY£ëÜ1HÈã^M/ó¥r쉤b€ñþ\u001dˆFl#¹Bøс߫%Â\u001dF=M†¥m\u0013Ü\u001c~Ÿ~Žz«âó\u0003¦50æn'=Mån?.8\u0017“6\u0005n3\u001a\u001a)‚\u0003ŒIÛ\fL¯\t03=}saaÊ\b\u000e\u0006o¯Ï\u001cŒÈDó\u0002N2lˆÎa\fN€FEèôâ\u001eÿ%\u00063÷\u001fä®O‚Í\u0012)Bí„Ÿ\u000b|~26= =M\u001eè»b\u0011ŽœJhr>‰øM?AoË]Ù\u001f‡z_̅]\u0002¤ø/t\u001dP¢çH=M8c9]vëF؇3NÁ'ÁÅÀ)³€\u001b¬6)ìL–û\u0007:jÀtª™žUçËHžî§7;Ûbòpl\u0007F(úB/;è= „3ѾÿêՂr–\u0007_b—ÎÌ\\˽ØáÉ1*¥,41\u001fåY<€\u0010“Á“q=}ЫQíç<ºÚsÝ\u000fÜH4³«‹­„ü\u0005\u0015b?(q= ¥íÇk;YŒ•{â6ä_û[ÚY!«.¨Ü}Ԃd´ìÎQú^¹ÖzYFo£÷„W\u0004Ù:fpÝÍ\"Û@ÒùÚÛÓ\u0007žÌڇÀ¸ê\u0001û^Au\u0011ÛhT>!/2\u001ecðfN…užQ%‚\u0003\b¯·*¿ïî%ܕû½]­ä‡öì£#ïD<‰ÛØ}HSä“Ã_¾”·LMߨ}a¡¢”g·RE\"\u001fʾO3•\u0010˜À±»jžüÈå\b\u0016Q¸N¤ªžþS~\"\u0015kÅã\\\u001b¥¦?‰ÄÞcT.­\u001f¤\b½z€)ªK\nwÝx\u001d¼àÅç^vv\u0004+Őù(ôýh£\"–\u0019‚Öb—g]ý‡²;z1«AŠçk©Õ8ª\u001edî*®?\u0006ñ\u000bD.f­öù?S\u000f1‹¨žE‰‰C\tJÝ·yC& ‘Ž¯\fÒ)\u0016­}\u000fþ\u00103®Ç7¹šã¯N\"ØR®~TWM»ß\u0013b{Ü\u001cKv¾ÁôÁMóÁý÷vQxD8Ù\u0013\u0007¾·\u0015ÉØ\u0004K»59^\u000f~\u0012IæÈfc§\u000eÜ°·Ä9Ùé\u001b¥ëõä4ùïS¬'8:>‘5ŒEÆþҊA\u000fTñÿß/”ÍŒ\u001aÄÅsÔBy.&Ü\u0006Fa\n¯•.(ݍg0®U…*̗ˆRÈuæÚï1LaôÅLæxÔ5ê°Ñu‘Oô‘Ï_‘Ϩ= D˜ZD¨¼³Vï‘'T5l߇?—R5Æ\u0012Tm†Sm®÷~öµçJF\u0010IÆ7Qh+G¶\u0012IÆÕÖ¹³\u0012ø‡v˜è5\u0012ç%\u0003Œ“fï×R%ílØuÿãµ\fÉ­ä\u001b\"A\u000b™Ÿ!Û\u0016¨\u000f%ø8H0\u0006±\u001c“©fFá_ÈsÃ~%ëªJN·\u0004l‹ƒ¥õ\u000fã†\u0012öÈrÅ,yaóœ*/\u00073}(cQ\u0007x™wۗ\u0004cçñ£<\u0001NŸf\u001a¾93F4¹\u001eÞâÁ!Yý&r#õv\u0012\"±\fa#®\\±’•ÆÈ+?5°ÎЌ4É\"@‚˜ü·\fóÓ®:Á3ðc­®ù8¦¤t)¨àË°Ð\u0003蓃,mXn—\u001d²ôY\u0010;µ\u0003©\u00039€m•¾PÜuŽÖ„\u001a\f‰76˜·mnb¸\u0005âÊ*&â¹ü'õt%9Õ/\u0004|‡Qio\f‡\u000e8Sàx$\"\u0015\u001c÷oï8=}[û¬ž\u0006æbT-ŠU\u0018\bt|ÚGò³µz\u000f÷2ú0y&¢°Ýeë/²¾<¡eƼ€ÌûìB¹Ï²^£\u001c™T™\u0007Úzuž¨¥Wس'\u00174s\u000bmUë\u0012†ÝÀâ5†•dhé©NYO \u0018{\u0015Û ó\u0010ÿ̈DŒÀ'á6ÿת“œ“Læoʾ\\>U²9òˆà¤ÑÞæoʺ9òØÇ\\žÐbÏ¨\u0010*ëö\u0001¢¤LD©‰,\u0011\b\u000fT\u0004Ċ¿_?\u0016p°å´a‰GÒ cÂq\u001d\u001bÌф35À‘yÁÉ©Wď¼\u001eÔOš+ 6O4j!I¨>뵔–Õcÿ¨gðVh¶ïۘó™\u0000\u0003Å?ñæ:\u0016;ðÜÓqY\"Ù69ûn<ƒ\u0004iã±\tEܜ‡\u001b±‘]âï[ãûÛ\u001f¥ù{^á]&\fEä›+âdv¹öüû:]\u001c\u001d[á]ÎñÚ:ö@\"0)\u0017\u0003;U\u0007n+Ûâ;\u0014µ7͎2‹;õŒºOá>5Û°Ó{Nô«&µW•q•†q\u0013§p\u0015²\u0003ç÷Me—tÝíFéú²jW®-å¥=M\t\u001cù˟\u001bsƒâ3G5a­“–é{”â=M[酨B\\S+C+¬7xåÎ\u001d Øޅo+”ˆÂH,Û\u0013b'ýswæ»\u001a¤!\\­Íþ\u001f\u00162\\™áu9¼\u0007€\t;Ÿ±QæëüIu† \\>£¬ŠÑ5zxFæ³\u0000#Ô\u0004m™4!/-tx\u0007Óy\u0016¶0$&õô¡Š\u0017+Vz›Fž}­<<\u001eTQ¯ÌÚ®â\u0019*³4ÒîUû_l˦°0MH\b“w¿SB¯\u0013ßÎñ]\u001fÄ~\u0016\u000eOÃے= '¬™Þˆ¹\u001eÈ\u0004CPÿÇØ?›Éyš´Î= 5i–q\u000føû”ܪˆ¡7Å{ÄÔ%\u0003\u0012÷[«Ÿ\u001a’3 \u00161\u001dÓnÎ\u000f¡Z\t®˜Z-!¸Ô0X»à>êoYü¹š\u001bÇ= h¹ãñ°½UsG@©3ËÇ~\u0012*w:áȼ(¡ÔoÍ\u000eÈ\u0010J¸ÕIê¸f°Ã=}\u0010Ø­Ü7ì \u0014\bR¨š 'Uý&ÌN\u0013á|™y¾ŠP £®\u0017\u0007ç#\u0016bÔ§³ö9\u0010cpŽ\u0001Š‹\u0006TғMªqQš\u0018¯ö«5\tDãd&ú\u001epá\u001coó귍½5›\u0002iim\n·:ÿ3\u001a·\u001bŽ=M«“á1]R\u0019$1G—õ0¤yƒ™\u0002/ÈyÒYŒ*\u001c\u0018p2šÙÈâR\u0002ŠXBÅ\u001b^\u001aÁä\u000ff[ÜðS…Ê9è\u0003{BŽ5¼0ŽA¡Ê(\u0003ODi××C\u0014zõ®ü‹\u0012!~\u0015\u000eÞxÐ$pP\u0001 \u0001wågþRJ5õQçf#õI¸ûG”ø.Áá\u0011I\u0000pÍN\fÃ/1&ž&q~¶è­(M\u0011ž\u0006b\u0002¦î”í\u000eÞ£ñ\u0016kÜÔ\u0004bM;éÆ\u0013ÓÕjD|\u0007Î_†R6k…U6[Îwð\u0014‡.¸É3\u0017*Ž«ž'¨âqw5o\u0019åA.ECJÝ>(IF¦{\"|>p‘S_äŽß§=}\u0018²h©Ï°£\u0000\u0006å„îêÔñ]©-ŠM<æo£ÆÐÑ);ŒG:|GŠ¯¦¼ìS\u0017\u0015Ùo†Ã3ùõ¯‡\u000eË¾cYÂ÷Y©­\u0006‡Ãï„Ù²Þí0ð¿›ß\u0002Tù¾P\u0006‡¢ÊhÈª9݂bÜa‹ìÇSeSVçëX5ç×Ï\u0011q\u00189šÆwnH˜=M”@äBAr°ÿ\u0003Öù‹ÁS”Ómą¸ð²Æ\u000eŸÕm\bÇ10\u0003\"1ˆ(\u0011¢ »ï©ª\u00058sD·û˜™œ\u0013,Yj«¿\u0003«ø[Ý択¿#Ûfë‡ýbÿIVvW6´˜~sá#—g}QêC¢º\u0005®1\u0016î©MŽ%©ŽÖï#*Y3ò90pó÷^\u001d®Ë“W\n9¾q\u000fO¼kx$ôÇßÞÞVî:+~EɃ\u0019î=Mþ\u001e\\FŠ¸ÞÜk_…Œ4ØùñÉBNÝ\u0005‘wÝrš= hÀ,w+\u0007Ÿ\u0000ŸZAÃ㖢aÉ÷«^\u001csÍùƒ2âœS!èð“\"™.TY—¤-u\u0007«ƒ\"\u0018û21…o/M„«tÞЎ9G¿Ü ý*n=}ëÁÁ=M¹Š{‰\u000f?wI‚¸ RÕµºŠF¹0\u0013Cz¹Êô@²\n±æ9}\u0002J¼£q\u0005í‹ïI}Wär¬\tÄí\u001f¡{ë62€\u0012NTý©T²B\u0007\u0001h­Í•ùlŒ\u001as¾\u0016nÍó_åLe'x>)ΰ{6frû£\u001c'$—X ‹\u0018¬2atïO¯S\u0018bO®:+Щ\"7gÔWî\bÈ0FF·É…W®Ÿ€\u0016u?©G¤~+§¸9:®9³5¦?ãZ;åß\nšsVYƀ—\u0018I±°}Ê\u0005=M”YäѶ­-šR²=}¬Íãg\\óM+[Û\u0001jZ\u0006Á¢³#\u001a¦oDZØÄ\u0013\u0014Œé:0V…\u0004{êë_fÅxԮϳ/4Ä\n\u00156ÎJ‚\u0019ÿg~ø™†…Ý•åP׆ËÍd>BP|#o\u0015 méýUÀ*\u0001]ôŠ\u0019Þ¨\bœ*\u0001Ã\u0012»ÊèŒ# ‰ˆ]æ6rl$ad›ÊyÒoÄÂðÏ:mcáÎ[za<¢™ªh^¼*AÉ9.‘ \u000fÎäη80®qTVðäúÖ¤Š¦Ì\u0019êC=M\u001f=}Õ#\u0001•ØÒ¾dCFôßUxç\u0017\u0002ݤ?÷Tû~’jÖ °Î\u0001ÃStÐá \u0000/v#\n\u0004'c\"4q3ìÿ{¶ßv^Îò‰\u0019òÉ:¯\u0002kþ3\u001d]Òz燗Мë'ÝgC½Ôö?èðËïzS(\u000e½ÞíÙOÝMæ\bêQ\u0002ºúᗇÑû°î‰±©}Óö™ÃGÜ)'= \\«plÑK©²š\u001ajÁ¾~ÙÄQb\u0013›W4O\u000fuó8ðDr»LΫî.Ôé/?m5F\u000fiÃÂqÛ~³¤OºJ<Ȫòj*kñl€gm̀\\‘·Ü_þ'¬\u0004vç+\u00009Ÿç9´\u0015\u0015e\u001d\u0007ÿêN\u0007!Öµ™ßτWf˜Ä9Œ½ô5D™”ôCöt>± À\u0017\u0013ôÔÁ2<ø\u0002…da–xªÃþñ± ®Õ©\u0012ð®Þ8þ\u0013롹dÕå#\u0004w±E†%í\u0003bZ\u0006\u000f×M\b?Šð¤ \u001fä\u001cº\u0005…= Òtžº—s?ékn´³\u0003Ž«\u001f4P\n¿vž\u0017LK-Ù\u0005õ²@'\u000fÁ®NoÔ¥mÔ%4ÆÑ\u0006”\t’ߦ GA¨þ%p¢{²nôgaÑ_\u001cºî\u0003–’nô'ê\"a!,O\u0014k±?¦ü\u0006§\u000fCwÙüíp\u0007ȾlfWkguZüï@¨\u0013K\u0000©\u0005ýÞ{>Îe ãg\u001fç¸ÂËç³\u0014@šÊ\u0012䏗¹}\u0003¸¹ªA§¹aÔ ž\u001f\u0018*Ãj”P趔 Ç¶À7RëÄÊ\u0007’×Æd|ܼ—×Úu\n%l\u0015;a\u0000‚gݎò®Us¤áð\u001c¹ay®\u0015ɽ–CŽâÖûmœa\u001d-æóóVs2ép»(K?)^p¼&a™e?ø\u001d\nûx¿IËCVz\fC\"ôp¦/;:d\u001dÈUR\u0007Ÿ—Á¤µÚ G›èËÇS\u0006…oa€ñðá!wN5\u000bÑ\t\u000f\u001eü·üÂ\b¯\"áQØlܐou—\u001b\b+fQ°öÀ\u001eb:e=}\u0005¯üùoÙù©ô\u001eyɆ\f‘|Î\u0019¯¬N8†v_OÅÖbD: N+—)Ĕ\u0000\u001a¥ö)†Í\ndÑw\u0012\u0007úÈÐúPӍ k\u001f¦Ì.|1½¼îâ\u0019û¯Š\u0019FN0kÑm\\Z\fÓ'öÐu#*1·‡MÕ\u0000\u001e1 †Ûõ‰¡V›\u001aî´®\t\\\t¦\\Ófß\u0000\u0017\u0011‡[Æ!C´áG}G.„í‡ù~{¾e\u0007˜.†…9æ;á1֏A°ì§™= ñØîÁŽMÞï‘c@ep‘’©° r³ø= \u0007\u001d0žpÔ½1\u0012hÁ„VðÛÚò&–£+]4†êÅÙ\f= ìZ \u001a˜ïpþc5œ\u001c\u001c\"àióî/§\u001eaü›[4\\æ±e\f¹â\u0005¸\u001fÐ\u000eñQ;YhE‚Ä&\u0012ÝßàÒñdÍ5\u001bd…bgiU\u001b ¸ƒ?NƒŽ†‰õeSoÄK\t/ažm\u0016½ýµSJöµ‰æƒÚ“E9‰PJMÑ\n°n\u001c哪môâÚ¶sÚXx¼~\u0012\u001d\u000b† í\t?B\u0011ïÒÚ«öçéÂCOMYMà\u0007„_\u0019¸&ZçÁž.h¨sÜÚö”ç%ÎǔŮv2”å\u0002²Î6\u001f˜\u0019>\u001b”%L”\u000bAÍl0Î&\b',ˆË×•ƒÃ¨\u001aN\u001dö$*|\u0007§+<€89\u0010\u0006]\u0011$vbÎ6X\u0018†P¾ëûH†Iú*aH\u00178\\{虎\u0003†ç4j\u0018ø¾„Ö쑱\u0014ÈUpõ\u0003gò\nÅécÀ³\u0013‘ìÇ4­VåÇPdTtu\u001b›\u001f_üz†‡\u00105ôïYú˜0!ˆ@ÊY\u0006»¥ÅÙ6„Å’¯\u0005è/vÚ.‚c…•…•õªy\u0012û»–T¾KýÙ¸$«ï\fi%Æ\u0014u¤QGšƒâ6—82\u0011ê\"þ\u0006ÖѼøu(L’ÆÆ0•µ\u001f»'­/D\n؞XpÝ2ÃÚÀú\u0017ë\u0007ðøâÀc½EÊê\u000böÞ\u0014QYêâ$ä±±f£ÌÃs+f\b!ò\u000bшå\trùZ\u0017“Üˆƒ\u0007BÅõ-©V®ÄcÜ\u0018ƒö\u001f‹þq¦\u001c° qa5֙†öQÙéMÒg\u0002˜ìSU?dZAŒ­z\u0000¹çÙСꋆ¡ …DyŸë6ø…1%›+r,_ß\tðY([ô \u0019ъ߼úž\u0012%s\u000788skh5]FnùbÞâ\u0015i”wå=}ëOœ6£‘4\u0006?v\u001eÏʐúÅßdŽµ¦}GUð\n!™÷mèã= Ïr¥9\u0002^Áã‚O²lWÚÏ\u0012¸eéX 0%ʕ3C³±´\u0010R¡\u0004I›J˜y\u0010\\&^!Lo\u001b=}\u0006!^|Y²(ü\u0019Ôy±*ŒšTµÝ\"ƒ\u0010dàsÅö\u000b}]«‘U¦\u0013æ/–¸Ï|ˆ=MÒÑY(g-õw= R\b\u001a=Msøƒw(1Ÿf\u0016A€%šxèÄ\u0004ï/ÿ÷í½½tƒ'¯\u000e²×\u0011^‹~ý¤e8I²¸6f\u001c9:¢îwétýÝç&ûïÁ·\u000eƒ\u0007½b\u000b¿b‹,j*õò$®z/*ê#f\u001f9= \u000eqé¾].\u0012Š5í†\u0004\\\u0018ß\u00055Ï9÷\u0005ÿy»Ä‹\u001bþŸëù,DR\u001a¢\u0012GgŸÙ\u0001ÞÏyN1:ø[[—}¯’#Cz}¢¾þÎô¦\u0011²A\u0006m®«‹óÆc7{U3= cc\u0017æ\bµœŒÈVŸó¾(Ó·÷w.,z\t£8Š‡lÙ®\u0018¹Ÿ£‘RÈ|Vÿëò-MŠÖÜ\u0015\nÅPD\u0006ÇrÑ%\u001bt–Àç3£º\u0004kOð\b„p±¼2uØJÂ\u001cï°jæû\u0003ܶ_ï=M’\n‘Þœ„}‰Â\u000b\u0004TG;¥5@Où\u0014ùr9\bl}/ëZê¡uÍË÷@±¤_ð/—úmš5eÏ(čÔs“\u0016ó\u0006ÁÔÚÞ\u0000!v©¸ÖrêãôíõDùE°j[v\u000b‡4énû–\u0019g֜\u0003\"n.SëFÃßi »¶}™ƒ›”æaë>AÛé \u0002bɑˆ&xahB\fΙ©FFê\bt뻓 =MàhA˜€|\u0019Ø÷\u00197Æú¯Ò\u0019%´=}\u001cæ@´Ÿ-¥ë&\u000e“&ÞF(,h\u0015^\f~\f\u0001Bê\u0002¢\u000f”.G¦\u0017= Fž—Õ\u0012g_7ßÒL.é>\u001b°zû\u0004˜^n¡’…Õãõ’\u0011Wèg›ŽÊ›\u001fgð¸è\u000f\u0013w¿o\u001b\u000f©Ë1×UEOO¾\bI\f\u0011™˜)_º3PꯧŽ1†c\nÐU3D„ñj°$å§\u0006(;=M»é\u0007go6Ɇ¡ª¤öî/¢Å¸$\u0016_Ú²&Bšì= «›= “®§=}ÌÖ¿bݔjð;Ÿß’~ó^ç2“\u000e]…wóƒÞ-êWöí\u0002›\u00165´YD\u0006NçÛ¶\u0013EíŠ\u001a¼;U\u001b5?8\u0018\u0004£ÉÎ\u001ccfÄã!°3>ðm—µe\u0000þIAlr6՞ï£X^‰ÅS\u00145fV^m‘\u001f#EÅ3¤<$j±ncºÓq‘wÄúJÖ\n6Øò\u0015\u0007“÷Úxg‡= z¨#°\\»ÓV“\u0017\u0003‡¬Iv\u0017þ‡¨\tå‡ òÏY‘\u0017¢\t‘o¹›ô\u0010Ÿò-•\u0010\u0018\u0001ü˜Žjòê\u0006\u0014ÓSOèª-\u0004½OߗÂ;ö7—÷ w_ìM\u0002bƒ\u001cÖßwßTKC¶a\u001cw4\u0010à\u001b6\u0015™\u0014æ×\u000bN|÷É\u000f*\u0016=}ys@F±Õ\"5Ÿ¶lõcûv\u001b‡Ÿb||=}‡\u0019'ˆ °/5b£\u0017Ò= •×\u000e.\u001f3wL\f~¦\u000b^¿= B/\u0014\b#笙ãÑ]c(\u0011[(Q÷Uy×¾ûÅ\u0003ôLšÑ\u000eV\u000f°û\u000306à´ÑçôŸ]»¬îªÛX\\v9\u001cîšCÁ ]\u001då‹5“d®D £;Nm€éÓ£].>ƒ3±äˆ^2'.Ê\")&6]\u000e\u0003é=Mjß®ýíñfùFw\u0006«\u001b³7á«\u0013\u000ft\u0010ícFOâ%”8bã|Öy\u001cKíŸpFï\baH^[Ò·*i\u0003\u0018àŒ\u001dL'‹°lhBy><+u=Mž~ˆ\u001b•I\u0005=M\u000f‰=}½\tèÿ\u0007\u0014=MŒ¿3}‡Jµ<4c“o,®„G¸S\u0002U\u0002Š€ž¿\u0015!I…}Þ\u0011¼åú\u0006˜Ë6çáXâ(\u001aÄB\u001b_CâTšÙÙI·¡ŠAE)ÍI…w\u0003ÆÇ;ö%¹ó\u0000Ú¬û•ƒC?\u0016¹=}¿+Do1Ó)”‡}\u0014ÒÄ*G£<Ë\u0004¤\u0005]\u0017\u0002qêª\u0017\f*N,¹¢î\b_ç¥\u0012Dø°¢³FÊ*tò\"|×3Š.,\u000fœ´÷¶aa\u0007kNòÛe¬õ@µÃº\u0007n= r¤œ#FWÛ;{ôÏ[ÚlôÊ^Ž\bÿüñÞ\u001fäÓ#)RÓ°üð>tŸ§É\u0010ŸHRżêÈoý+þ§ýÕqÚ霈\u0002BÃrŸO\u0019'«\b³]\u0010Í\u0002€\u0005Y}=}mL¿\u0010)§\u0017ßsVó·\u0005ƽ\u0000UBÔoð\fmPŒîð¡&\"mÍ\u001e¹áÒëdCY)\u001dz Ÿ?èc£&íu\u001e\u001e¨^YÄÓ£7\u0019Ê~L=}{·\ttP\u001cã\u0005b˜”´˜¬\u0015‚LfþH¬=MÆ£/VR-Mߦ£‹t\u000bVB<[\u001bvM\u0002y;ñùï\b&¥\t[2§\u001e\u000e§97ñî!é’h2Û8dÅD2ò1ÿgš#t&4k\u0011t%H¶ñÏ\u001e\u0013š÷}‘ãÖo\u0000\u0018–\u0013t\u0005Ӂ\u001d#¾ÉË\u00048›Ç8ó7kÆñíšß.†s.Ìvćå‡}&›¹RËê\u0017'úøÌ\u000b¼éы¹^\u0007±R ”w\u0011Χüx“®7G7›}¿\u001eËr—\u000b±\u0003x8‘Ä¡v¿‹¹;JO½±ÿ¢Ho¬¤ÂÙocÛ>u?Iµ:nN\u0019ÏA넲º\f8ÛòBޑ\u0015’Z¬ÁQò¿j@ó¾O\u000e¥öºÒö\u0014Ç¡ç‘ʼfʁÀŒ_1i\u0010X­\tä…\u000bEu\u00004µ‡!\u0019ëdéŽñ92B¥oFâ…\u001d\u0000MÓIF‡}ëÇ9<’ü\u0005t'¼r\"n\u0015$u]Îa\u0010›;ž\u0014o)z–\t ©ªÂ\u000bÁ[M²úÓº2vBM¦m_t´YÇ\u000b3\nBä>‰ykC%|œ¯æ£x8ã/d-íz%¤q\"J-Rò©\u001båkMUå\u001ct÷Xçðs\u001aºAÙJzÆ»~^„à‡w²SÎÄØÿÈŁ=}Ö\u0010Çѹ ‹\u000eP5*ô’ƒ‰^Sëx´›Åàþ„ËLXÏΘÀòÊUÑ0XÄHÁÒoQ÷ԙHؾ(œL½ZÕ´hõÔDSGê¨ð'vª=} žÌbØÕ©°ñL„Q÷Õ¾´—\"èD_V¯\u001a„r.®MEô\tmìð\u0017\tU\u0003Èü‘eyoÄ!¹=}&Þ#š4B‚\t_ïžO!ªüV-~\u0018\u0006cå²Z\u0015Œ= …mYî\u0015º†=}O\u001e\u0017'.4\u0010j6úç?(úg\b¬]ä’\u0015ݱœ¤Å(“¢§7µrP\u0018eÉàˆ×ŤïW»0ï˜\u0007!ÒÉ i?RQ\u001d[,Vp\u001c\u0001«S±{æL\u001eæ(M'hXêËM‰pöf\u0014QÝ»ìǨ4qè~Û«@Äúôúï\bü‘¯\u0017ìlŠ‹\bȯ=}=}[™NÐ.ŸÂ©´Ï”Ï\u0017@Ж¥=M\u0014føù¦ºÙ€'§I\u0003wZI9\nsCMA\u0018\u0001ߋšœ\u0004c¯K53æ5YRÝ5£üÇõÑI%OM±4pg£îozkƒ\u0012I]\u0019ۘa£€˜^ëÝò@Òéª{:âëJ$\u0015I뉭ýšA>î\u0015\u0005\b·h\"Lm·ð1šH\u0007„¹êL÷c\b\bRœ·\u001f‚†:‚ÉÆN:Œ­o\bN‰;‚(Þð5CäßK“=MiüÇlOHRӘ\u001d\u000b/\t£l‹^\u0002Ö3rŒ\n¡žæ— l\u001cj½ï‘\u000f.'›proí\u0003øcc•¥-O~cw\t{YjoÆðÐ#ˆ\u0000O–:øÕ\u0004Z&J­\fI¡ñɼ\u001d·er\bT¹GŽÞùÑ3–Sï;un\u0011í õu z \u000b©=Mí‰Bo´EÕ#áà\u0013 î\u000b6\u000eéÝ+aÔï~©\u0002z©,8Éí«nZñŸæåüh:T\u001eå¼êå´cz¹Oç厾\u0003ò®\u000f\tÂ¢<Ñ®ß_ îœ\u0000ۚÉØ­ñ\u000f\n1~ñ]³\u000bb{âÝÃ;ü\u0002’\u001fO¤@ÙNM¢°ª’Ì/añ\u001f;K6µPR\u0010çHŠ\u0018#Ã\u0001¾\u0007K\bA]k8^œ\u001f÷@h\u0003T‚ý\nP‰\u0007›×î´m4Nߏ¤\u0013‰f¨r<ý\u001c™·&\u0014ž–0Ô~Ž‰9§¹SÂh-\u0012\tÎC±{Uƒ\t\tOq‡òO3œï(Ò\tí,t;G¦f\u001eZŽŸcn±àû\u0017%žþÍw,«~XÏÐØow€þÿy¼m\u0013SkՄ\u0017RôêЄÀù¶€_Lj«f\u001d\u0005/|âx]ã/·øí¼èî*Îë€\u0006\u0018؄PÖNa¯YÌré{Z¼èo\u001a\u001a°&4ק¶ØÔ¿!+!I\u0017þ×\u0018Ӟ\u0000h™ÈzXLT¾Q\u001e)šP,d~:Ot¯ñ-g~\u0013&Œa ×ÁÁ¨=MdÑËlh•t\u001eÕG×VäàØÀ=}Æ1\u0013@êDP-gnd©€\u001c*]ô˜6Ü ‚Öx6_Àš:%ñßíjúnIñkîEcÂzï~9¯Å\u0005¬GÃ\\øòOm\u0013ö[ôV>S‘ A=}iq\u0013µà€Î…¥÷£†âg]Üe\u001amcæ¸h˜FÄîˆÖÑkÅ\u0010‹fèç#\u0011\"æ§GÇ\u0004‘öUi¹pÄ\u001bÚÓ«P¸*Ç\u0015T ²\u0019Èqٙ\u001fÇ@‡×ŒÄ?·Í\u0002yŽ?~‹ÿ®ó.Ò­= „Û\u0006ãu3ÚÀ°\u000fäÅÒU W̲¾t²\u0010\u0005(•µÙÍàÀú¸Òz\u0003ÞVÄìrÁӝHQ\u0010\u001fSÜ2ðZsXÀËsÝ@Â:|#ÅêwÍØxŒd\u0011\u0018Õ;uƝ\u0002«ª¦/ãÄ\u0003ÓGðwiÉ\u001b㊗iŒ„­²Ò\u0004Ø֝ø\u0016ÑÎ8ÒÁ\\ä;»7Õ8ÑnØÉðX×0XLԜ»¨Øb\u0018ع°×´Ê\bÕ£ ï‘s¹&§@÷\u0015ÎÉ\u0006haxð˜\u000e\f‘iJV՚ºAÖ®h½òŸyí¦\u0006˜¤Ç)=}'ëòS \u0014C#ó„*êðUÑî˜ÏzèF¨‡\u0011Ô\u0005~€\u0016”Ú™w×ë7hš[Ù èN^ü\u001a\u0012I\u001d»\u0011Ì\u001eJI:¼'’¥5Iùh£~\u0019—è9“<Š5ð¼C.O“Ž=}Öó,$Ñ:rjµÍ»‰s\u001c»”\u0002+vʤ\u001fU\u0013“„ž¿ò…b«)Mý\u0006Š¤\u0003xSëHi²AÚ\u0011¹\u001dÇΉ$š×Á¼\u001f\u001c÷S«ÒZ= ÏÉôwµ|êh»;‘\u000b(Î×\u0014eŸw?Ëüåæð\u0018\b÷Ã1ÜفÐn_Ô¯¨rS-öRUñ×W∵P\u000eµÐ\u000f«Ä4øÎ\u0014Z´\u001e·¡»CìVŸàdn?Ê+\u0015÷ˆ3YÖpaeq(oÂÞÑe~‹\u001c9’,d-åa›½UÂÇ\u000e¾Óº4\u0000½C\u001a\u001eêÐ+͹S&25q“Q+lÁ@™\u001eD¼›žÞÜw҈å¯\u0010ô\u001dq&¢\u0019–ïZi¥–\u0019ɶ…\u001aM’–¤\u0003ŠÈà2ºQÛ]\u0007x/‹]uióÇ~_Ôª_ÔM\\MUTœg—–ºElÆà7rïMÈö_4䉉\u001f³òRÈéI @ý”¥ê\u0013z2h¬º%n~%niñ@Ár_å®v\f\u0007¹\f8“Ë‹°¶^çlhn\u001a5,Åð\u0012ý•Â=M\u0010ÿ«Kx7\u0006\u001e}\t•÷á!1|\n¾\u0016€h3ù#wpX´&«H\u001dÃ+aëåü&î7Ý\t>mÆÞ/w\u0011=}Á\u0016B\u0007œ|üMÛ¦âìaš‚‘Å\u0012àçJæ«øâÍÚó^žPAý\u0019CÚðé\u0001ð#ÑÜ\u000fâøÄÒ°Œ½‚ÔÀG]N\u00027\u000bÑÁþˆ6c+¸\u001b\u0003(z%²×\u001bQ1ôZˆ[m…]oâ¯ò1”1\tÒ\u0019àûÒ\u0003J¤Ž~ў¸fÎZpâÅ#\u001c£Q£,\u001dêöê\u0017¡énHÀd)á•ÎJ\\¨¬hÊü\\OÇSZ\f/ž|Fi\u0006´Ÿ@:¡ÃüG¹[ú×⣈\n\bý\u000fýè \u000e®þÖ† ­¶^K\u0002äëτ:§T~\u00047_8à>…Ç·–¥¹&\fí†#Cˆ\u0016³Š³æ:–gDT:\u0016‘4qg\u0014Ù\u000f= \u0003Ó×Ï¢›N‹­°fѪ\u0011ݧ¦Ú¬ƒÅ5Kò»,8ó\u000b\u001bRCw˜”!\u0010¢=MY\u001dã\nQ¥=}H\u0003“c\u001eä\u0014ú½¯–Bç÷šVi\u00108ÚpML@V̧ò];Óö˜R@Ëw4éjõÎÚ»w\u0012ƒÂé—Ê\u0001Œ\u0014ÚNÍo4Éς\u0010鿈\u0002J\u001d÷¼msAº_Ð0<××C)e¼“H«fœ\u0000š5Py:+P5¸¹\f\u0015ƒ{ðR±»ÂÁyF,=Mñv54÷‹!hrv{\u0005%/\u0016øh\u0000 Ú\b8ò—ѯ¯¡¾\u0012\n\u0015”qtWd¥û/–óÒ\u0013ÿ\u001e=}Š£&œ\u0010Æ/–AJ\u0011Ié5Cr;â~p8VeÚ= èÀ,B|xPÇL,\u0005Ÿ&¶6Mðw|¨LF«Gv\u0000Z<23ÛyOvÙ±ÿx‚¤œfË2NRÁ]\u0017ÈSwÄËZ–íB(âÏ,\u0010¯‘¼LÀ¼\u001fwˆŽ&€sñð,¦ZR¸ÄaGdá¬qŽ\u001dR»ï½ªP¹\u0014ƒ¬'\u0002­÷Ù\b%No%U–¹>Ôg¦nÚ^n¿I\u0001%é\u0005\b‰\"<›Ö\u000bu°ZÝø…æ«\u0014ìâ–ßöÞÛ8ê;UX)ªPHåg¶{\u00193V›µû\f.˜a|¿frù÷Á\u0014Î\u000e\u001bƒ’ѯ߸ڠ\tª]!ß\u0003Á±âˆ \u000b™‹%½z\u000e:Ž)•ö[ۗ¡8ÄMR4D3\u001dì}(å\u0011N\bH¯ŠÙÁ­ô•<ôykÀÇ\u0012—–Ì\u0002¸â9\u0006+€\u001eÅEž\u0016f6íÔ'–1\u0018\u0007\u0016à¶ß\\áR\t=}J$+¦€\u001eäÕÝQ}n~³ì\u0007t,úÔÄ@dý4n$u(Ãk\u0012¸*ƒ½¢¹\u000bW†‘­ñ\u0016,ß\u001e¿ÿ]\u0010ªä~iÅk{Þ\u0012Q\u000f:’YÂt„÷¸Óž\u000fãpu\u0016£Sï/[\u0005H:Ñ=MŒ7ž¬ÃŸ\u001b£²§L™Q\u001a\u0010b\u0001觼3\t\u001d3¨¿\n¥Z)´áŽ‰Ë9ª\u0003NW\u0014¥H ˌ‰nYùp|äã\te¹\u000f\u000eà\t­F\b½jAP˜+ˆ±+y†fëÉ\u001a¹ÚÉ:;¢ïökÄdçíàcñô\u0013ñ¦sîï\u0002¦\u0005å!À‹0\u001fë\u0011\u0001-Ôr,k—7j qŠGn’ˆ\u000b9‚SCýû\u001bëEs\u0011“Å\u0007ÅÑ\u0006äï\u0002òM@€@]—ëktØD«è¦]ìä¿ù\u0010Í\u0000|ŸgWä}Òø\u0007?\u0011·#l@¾ˆ¶h¢²•ˆ\tèÀ\fC¼!\u000fÈüØìû\nâ×ÓÖ•ÐW¼û!‚@Œkü”ÿ8^Ê\u0014¬Q\u0018Ø¿_Ô\u000e=}W\u0014@:]߃=}9ãØÍU\u000f\u0007Žkµ2(;\u0018ÿ)ØÅÚ¡\u0011ê\u0018x\u0006X$Õ¸\u0011þ×2á(Õ¡Eò\u000bòY]™D\u0002Qt½èv\u001eY%=Mö¹d‡èŒ\u0005OÚNìÈo\u001aÏ\u0003©SŠñ—ÈÎüU ‰= ?ž\u0003ÿ]\u0019zÔcŠËè[¶\u0013Æ°W5\u0004û>wo\u0006!rY´¤[}Ú\u0007s\u0004+=}‡ùx\u0005(½?qå[$–K´yœo\u0007nwþ¦·€—C´\u0007­’§m\u0018Ã_‘֝\u0015\u001f®ˆZ¥\u001a3]\u001c\u0016N¥ø€\u0017™M\u0018ײ¨o\u0000sÎÂàµ5-\u000fz\u001c°o7­ÀgíøÝ¢çÐûûOª„?\u0002û­ÏÔâ\u0017*P8—/\u000fL\fú3éµS²\u001e—8c7Ôw\\ž“v gØÒð›üÒeͨNA»ˆõØ9ÈÉ\u001auQƒ&¢„ÞÜ\u0010LPšNú\u001a9{Èw|‡!ق\u000fÿ/>OÍGFÚ ÚWҏË\u000fŽWŠŸiWê'\u0006Dà>À€#ÜRÀŠË(\\6i \u0006\u0014>™Ei>i³M\u0005Põ–ª\tßa u6À\u0019\u00176\u0007™á™›´Ñu\u001fÁëFÙðƒÇú«9=}cXΕt·dä\u001f+•A<ô½úÃ\u0006˜Åə+0y\f9Þ\u0001ഗ_p\u001bbôx\u0006³ƒ\u0011Ä3Ù\u00110³”âj\u0014BŠGý‰ÊqÐܽ\u001fs‹\\´°\u0007\u0007­’\f\b”°K–0?æQ\u0017TÞI K¹3å‰!p¶ŒLQ›\u0015±ÞŽ¶Ì\u001b?1:ÎÙ¤§õa¢‡ñn›°\"ª\u0014à±BdynmªÒ¢;uQ(m µ5w‹ÕÊËسÄ\u0013aG˜ë´.o\u0006ºönÖ(‘òé\u0013™LµŽXƒé»z\u0002\u0013{ã^V1҆À§î„P:ä\u0011gRF5»®+“È’\u00147\u001a¢A\u000fî÷-\"QÕku‘\u0012·ã;lv7FÝB¦ç‡Ÿ'¾Q?\u0014%1ÈsöSÞþ\u0012³î¬”?ž\u0012\u0006 Dùß\u0007¡%ÚÍ/³yWøç¸ €W5 ÐèDïvÒ:b\u001c®±‹Áóc»„\"_mäÿI\u001eP'ªŠŽœ\fõi\u0019j«­R˜L”½¾oÓTC½mV*TªÎ«XQ!oY½_[\b\u0002Â\u0011‡\u001fn­êÖ\u0019þ\u0010kÒutÌé€5°v\u0006“T}ex—G\u0017Hzȹ2ÈÞ\u0001\u0012¿¶Kz\u0015\u0005\u0007·\u0013\f<úD!ÒXj°©Âà\u0005݁g\u001ae—$N×oí­–\"hÿޝ¸é»\u0013™–Llýì¥~ÙK\u0014Ãw!æ‰øu\b\u0018îÉâ“\tç\u0003þ§I1¬ùs.yƒ6ò\u0003é‰Íb\u001b\"½3À#= FR Ãѐ‘@\u0005˜f8¢lÇ\u0004Ÿ@\u001eU3u¼‰ÂÛí }\u0017™y1~\u0011\u0019F2ˆ\u0000¸O6\u0018M\u001c¤Ü\u0006©Fëìɹc¯´5DÇ\u0017\u0010r–yA¦n_¼šøY£F\u0011ó&#\u0015\u0012\n\u0011\u0010:Ä\u0016º;]ü&’Žµ…ä[ui5f+FÝd\u000e\n„œ%–§>±\"\u001düÄýeÊ{j]$\u0004äy¸±ÑÓIÖì}kVímÁŤ²Âyn\u0001€zg£¿;;(Œð½\u0006\u0016­kªše\u0010ͦ‹SB\u0011\u0013\b\u0010Î\u0007ž‰Âú'Ï5µ³üéõ…w³\tm[©F¶\u0011ðÕP\u0016A#lÎ+= Çcoy™MÜ= ›ðÙ[w|9o*›}HðŒV¯œp€D\u0006ˆ\u0006ÅÿÝ6= óœòiž\nø~Ê¥¢mÑ¡ÉÂu&zWŽýـ\u0017I{.‘\u001f\u000eÞñ‹8\u0011zhST2ÞÏ\u001eòê&[ù ø϶ê\u0004XT1\nâÙp+ UàL:0hw\u0002³6\u0015l\\K‹å±öÿ±n‹÷øʦ4s{.;\tú\u001eÔ)5HnBê)Fn55‡´\b¶”Å¥\u001c¶ßÌ(\u0003\u000e\u0001T\u0007íÓÓrM´gUf­N&Æ\u0016jˆòwÖ6pl\u0002¡^r­†Ò™»Ô‘R¾%\u00037¥†µAŽ~ùú\u001e/3Í\"ÅÊ¡HD\u0010\u001fot…¢\u0017\u0007xJúvø&VðdP=}\u0019ŽÖY»E¾t.tŠaŠ’Ó~C‚\u0001XíôƒèJ(ùØ·j#lv-×]$ÏÚ[J†à\u0017©xºý:©ßY\u0013 \\ˆxáN= «U\u0004H)vð\u001a»\f\u0007†óíCÇ¥\u0011\u0012­½\t~Í^K\u000bÀõñûNü^k®BR^\u0001½žY^ýŒaì\u0017ßÐ¥APMSóáÄB™zx \u0017ûjŒ)òA\u0018\u001a\bÔ\u0007Ô?Ås(\u001f\u0011\u0012M«°riàŸ°$R/†¦>ˆ\u00079¿ã\u0000…²û;!\u001fkNß\u0019].¿ÛÙï»ÄÎamQ2û·\"ÈF܁.w†æøÀE\u0000ËÙéRCèsOU7eÖaôû\u0007‹\u0012\u001a(˛²%\u001b²ÕTýû>\u0004ºÙ{= ©áÇ\u001a\u0012\u000f¨\u0006ð\u001eÉf0½ç‹\u0010Üå\u0015\u001ed*·Ó÷òÉêìÉã\u0016hQ3ؽ÷vì\u0007,÷mr—(\u0001~²L3˜\u0018çÀ\u000f\u0011ª’ê§fM\u0013\u0011öv\fI§©ršrªr™r©ò™ò©òšòö˜Ö\u000fQSÉ͕@ówBÈ2è¨SȲ٨ßȲۨïȒíw$®\\\u000bàâ\u0005šÄ\u0003\u0011gÜ\u001a®l‘a\u001ad„àp6*= =}\u0017½«\u0013=}³= E„\u001c?U¡o\u0013=}–è²1= \u0011ø‹zçZäú‡ç²Á\u001c¯°ú4U¡%ö‹¦= %°úpÓi…ç’›= ÍÃi„U!+^!Æ\u000e°¶ìê\\f½„ô«\u0010H½ô\f…\u001fqå\u0015eA‹\u0019J“Uúá\"RQ·ä¼½Ù(¿¼\t=}iKssÊ°\\&¸§¾—\u0000\u001cDðÅ:â“ì\u0010tb˜²íUI’§J2Our®Ô\u000eCŠgÃC­§ÞC¿Þ¾°\u0016\u0000²§Œ}@÷àÀC€ÑŒ\u0006\u001e¡Ôè\u0015tE×ÞÑ̡ۛêCõzX7+$vš†š®ƒ5k&Ýùï8H=}Ÿ\u001c§=}\u000bà_§ÞâÚ½Yé?\nòÝ'=}â~!鑗«ß¨ò¡†i\f»HJ\u0016\u0014€e™v\"‚Äí¢\\֜QK§s…é¥Ï¹‚W³ lI\"4sup™ë æ\tÀ:u]¯nä—û¾Â¨ôXbÔ-VFåÍí²\u0000_¡o€©é‚+T‚ê×Aœ6¸ªpâdߛBZƒ{˜\u0002BÓÿ<ï=Mk\u0006‹í‰ÏmlåeoäµPµ£ùØEY)uZ = ZvÓý\u000b–3¹ÃN‡‹Ó\u0019ë/¤!áôð_ƒør¦\u0007¨þÝS„áÚl,!ûñ¨6š¯Œ”Wµ\fÕ)\u0011Ѭáèàɦz\u001f«\f~­Û;T\u0019q\u000b\u0004íY’ìi\u0018ú\\\u0017YêïBNð¶PÉK\u0011Ieóƒx}x=MŸkõN°¾+-°\fä¯z=Mb§fˆWFu\u0002:#\u000f= ÃêÛY†1´\u0016ý\u001b.Wi\u001erÅ= uªo»@\u001f\u0018b‹4Œ\u001fúGlT\u0004}Á„t\\\b¢„8è„´C³4·\u001a«'•\u0005cüÜá£Ü‘\b,\u0002Ì\u000by\u0001âJæS\u001eYô·9Qœô­\u0010•\u001aNœ4óá\t±#Yº8‡)¿\u0011³Q¾\u000b¦Ar4\\J«ä^væÔ^Áé}·\u000bA\u0001\u001e\u000f,ËÞô\u0007Vb\n\u000b$®B\u000f%kÂé?o°B\b/êcvá¦W›²°§xc\u001bT\tm²&JhÎ\u000e´ŸYa¸ÁfRÜÐ^E\u0002Ó3\u0016jB{,Kæ¯Ï\u0015Bá=MjN_a<;\u0007!G/¸\u001døߍ“íÞЭ= À\bœðÏê)Š,÷Ÿ&´(Q•\u0018\u0013ã2ÿ\tÚvš6æ\u000f= d+&4ÈlXå%¨6\u001fÅåi‰'YS»VMJòÍ\u0019z´ÿÃ=}ÞÃ¥QóP³Ÿ\u0010(j•Út½dœ}!·\u000b¨b\u0004€ñՋ\u0017JÏ&(ýëÖ39Âkv¿©¾Ù|;2*¶¿H\u001aM\u000fçZ¾ó˜?;\u0006bŽd\u001fÂ\u0004±ÎÃ7¼@ô\u0007\tð= u\u0003¿=M§ùJV¿L•Þ\u00181ñ'ܘŒQæ?=}Ïb©ˆià2’eÖ´›ûŽà PL‡©\"ay\u0002¿O/’kún¢ml\u0017ˆLÕ\u0005ÝÀ8 \tB\u000e𦿻ÝmÖ³+ÿWF¢ n·39íL¡Çoúd\\÷¨þ¹Á<&\u001eD2@Çϐ\\\u0007Í®y·\u0006r\u0000‘«z¹nÝ\u0014!*Z…\u0013qض§Æ\u0018L\u0010­—Fó\"\nÂ= fbÄó\u001bÕç\f‹9= …Cíë\u001c›tÄïDAis=M‚÷Lýhˆ\u000eï†c[Áç\u001bú@Èn^ÜæCI”íŒr\u001av(WgҊ÷R݄õúK™\u001aËá>j]¸!\u0001Ó\\\u0007ÏS¼Ø€SÛ ¦îj¥\u001c\u001br‹‡\u001ce„[•¾…HõOhß^›’č\u001fLçã-/n¾[0\u0003¶Ýÿ&PÂûB\u0001I\u001e띝º8Ðü\u0000W\u0003\u0010p¸RÇÎ9\u0012;¶mö*¬grcbµ–‡5\u0016í:Í.Ë}n¯J/\u0000>=MßÑtEQFM·€’»|\fTÓ²Ø:W¦¡&Kk7¿™ço˜øk˜üː\u0001X$qà\tòñuÁþ·!•jQüÊ\u001f»þÈ\u0000V·F±\u0012Tñ\u0010S\u0011\u0010vÜï¹õ\u001a’ö¦”ʲ¿ ’vÈ7Ç\nxÐ=}\f\u0018£Æ¸xa\fl˜òҔéõá$cƸÃVHRθ®Ð#±\\»\u0011ýVºØ¨2.I–Gœ©wöõH˜9ó½Ê\u0004eò£Æ<¿Ð\u0017Žo,xýO¿\u0011~8\u0018\u0012ÍʁµÃÃ3Ð##øL6ˆÑԈ†¯ 0’—\u000fÀX«C–Ì݆/\u0013Õê\u001fSBKÆ¡kY1ÛZçÚþØہ\u000e oõú\u0006™!Iïpê5kïì[ùg. ˜5Gœ±{g!@gm×ÍvüÍVî›K^\u0013ý‘MÄÇAÛD‹r\u000bÓó‘üTæ\u0005\u0013\u0013\u001aÙrŒ]¢HÀÉ!Dëi£?ÇØ)·\u000fgW]€%³’¢\u0003\u0013\f\u0006æ…áÞ2é½AÂ!­2f>=}Ú= \u001bNßä3;wj¼¯¶\"Ȥˆ·¥ÿÈµø–RÉÉ×Áh4\u0010 \u0000è€ ¨Òjv£„ÅŒrð\u0014ÐXa\u0004*i‚\u0016î@áþþTšUé¡ù\u0001vË{E{=Mb'¯}²“qcõG-¼È\u0002\u0017üþÌmüº±QÁޚ\u000eiÒW˜\\e\u0001ËÑÝP5\u000ei@Ι\u0003ź\u00170)\u001bÖÂ\u0002\b#– X×\f 1’öÕ»ÚN¡Ðu)Çç€K'i\\\u0015¡gÚǝÛG×JD­ÍÈó½rˆÈ\u0017~\u0015ëì-ó+ˆ\u0005ηßë\u001d˜VÕaZxMPA.\"0¦®â…~\u000eÝ\u0000#5\b\u0005ôùÁ-ùþe•ÿâp?‰\nÓ{¼«•z\u0003”UõRø^\u000b¹DÎÑÇ0ÆwíÖ¼i\u0018K_}\u0004G¸\u0018¹ÓÐdö9\u0019,(Æûá;$U\u001dÖÝ\u0002ãºV˸Cu\u001dùf&©n\f4h0\\qÀ\u0013ÛM\u0005[‘Ôz«³L5ÃG\\ÇÐʏjN¬q\u0001\\1\u001eÝáÐ@¼JŽ>fvèûnýgŸ\u0017\u0016òtæ˜3Й:Q±]\u0011鼫eÄW؈(d5ãÙMWQ\fKžîƒ\"õq\u0015ïW5êӐÇ۟d\u0015ڍ‡Ú\u0015\u0014\bò‰mÆ͋¶G\u001b,¾Ã$¹þ5|cJꬾË+\u0002K˜¡N§\"ÚÅ4Ž·#Ìü¦ÖR¾Æ\u0006Ø0JÓ²#û:c\"WÕàEm4\u001aÁôø!¨Êº8M®Ü†3Ù^º²ŽF´F´F´F´F´\u0017¿SØW€¶¼Fe\b\u0011„qØ|eÄÔÇUÄ6¸VÀøyz§˜š¢ÝÖI$ðT§T¬•k\u0010» ‡LœÖ€-~=}Ä×¾]\u001bñBm¶³\ta9H|ù\u0003{zV´GFTNE†\u000bFvpkPýa•\u0001ÃñÇdZb1Y~1^αfÖ\u0011cL‘_4Qa€Q^hÑC°îì\"ª‹HxÇÇ\u0013t:}³Ï+ µÞ˂<÷°\u0003ˆ–K8ƒ3ŽZKp‚¯–X¡“ÅY\u0017\u0003²~( SF4„OƋó)ù8¯UR-‹/..\u00044–³x\u0004°J\u0016Ԃ¿Ö\u0013OümFþï€áÀ\u0005\u001e\u0011Ô¶ÁVD®\u00022·R\u001e¢\u0019!K!mìßÌtþÑ8[EZÙt\u0018ÕE—ÉZ\u0010•¹Z8ÑZÈÑc¨ÑYPQfpQc ‘h´‘g¤\u0011= l\u0011[Ö±b¦1d¾1Yrqeªñ[—ÁcOAgӁZc\u0001^û¡= õ¡eM!^½!cý}!Z­¡aõ\u0001Y«gÁ_jq= †\u0011h°ù‚#\\ãÁg^\u0011ä(}ü”f\nìpêwt¤;\u0005§üKA‚ß¿¼\u0012\u000biÈw\u0011]©:~\u0003q\\ !÷'C^.Qg]º~Cñg&‘bøa¡TkñBj÷\u0002éö75”ZîAd=}‘%\u001269\u0001Xõ]§­Vbý\u001b,³\u0011dOø½kD‡7égÀݼïz\u0011!ù¿éa\u000f]úì:Q éïë]\u000bwŸUýá¼Xólk\tÅØ?%nˆ\u0015 ñSX\u000bÿ» %û›Ê֒\nPxòLni\u0015S\u001bßø\fèq'9\u0005¥S!Ò!a1¡bZÑ]âh\u0001= T„˵Ùw˜\u001c\u0012F7ñlZ‹,*(\u0006Ã\u0014!ñô©gō‚ÝÆt!4üÔk\u0016ÓK¡n,Ó5bŠSœT˜\u0010M\u0001wÍ\u0004Š­ý~½l'\u0013w\u001e³l$“,Y\n\u0007\u0007f\b\u0004ž„›U°;gô#Ö3!–³$ü”\n§Vò¸úkò\u0006îq\u0005ÎuþF1\u0001\u00161úވp»GpëÇl›ön÷wo7kk¶mÿ¶p\u0007\u0016nw—ogVm\u0013WpwQ#ŠÖ~!_Lz\u0006>f9‚'í$²<1\u0013ï´+9\u0015$øì3óv«Ò=}oÏ}‰-\nn~J‚\u0006N!<Âàk~ŽÅhœøÅ2ÞIÄ\u001féVP‹=}²+ë x2:'²ì=MmrR¹\fݶ)òm\u000b\fL\u0014)º\u000b\f\f\f\f\f‘\u0004BÜ×¥Áv’RoO¸–|’4Ò?M€\u0001<ŽàËÄoC\u00102ÌOÁ—\\ÕÖ¸&xçx¶vs¶,Æ~PW“í¿ü‡ˆPiÄw\u0014VG\u0013A€\u0013ÒÅó¡ÈS,—˜= \u000b{Oƒ¡ìŠ\u0014,= åþ@Ž$…LÁÁøƒr‘$,ŒD\u0010¶1R\u0018nQ¢çÀŸ'\u00122hÂÞ \u0010ðÁ‹\u0012ùÔtÓö=M²â€*ª\u0001ü'\\©ªYY,èbSဧÚÃwV?ÀÔxV¿rԁÁP•×¥rаxÒÊV]GbªÈñ:UÈGÓYr·Ä@Íjl‹@©\u0000¦…¶= ’œ©¬\u000bDÏeÂ=M\u0011Æ\u0006ö\u0006Ç¢uU~ñþÚ\u00051kXmñÒäw°¢Ì$ænü‡\b\u000e㱌Á\u001bó~d­\u0011˜e\u0004|\u000brÏeî¾\u0004$¹ˆÆ×Åц´×¾·\bRç¯N×Ó\u0017˜K\u0017XÏRʨ\u0019Ù\u0013%\u001d\të<\nòžŸ¿a: õa'uaDÊá—\\\u0006Ïî°c]åQB“÷\u000füü '\u0005…µ=M“Ìnù×1;Ge\u0006bN\u0001\u0007 <Ñà\nJ\n\f=Mc§Ž\u001f(‡4a3þ\u000f\u001e쏠×A^\u001c¥ÔÉò\u001fcö^\f%¦¾ …ªìä¤D|ªà_„ÆfG5aàÉ܃žºÜCó‚\u001e\u001fg¸KzVdëD(¥šª}ÎéÊ£\u001e”Q\u0019m£ú\u000e˜Dl$Dď·T§Ñe—êÄ/U^\u0013J~q¡å&\u0010\"„‰«Ýyš]nz\u0014zð€¼S\u0015ZÈ\t*Å\u0007'ð\ba\tJ\u000e¨µZJ ª\u0007†¶•BÄ_\u0001„êPT;÷&•Ð)&õpšf¤ŽŸ´n¯û®“J\u000b‡~wVZª;@J\u0003‚&¥-Œ\u001fh\u0000ŽAE´vd= ­O\u001e\u0014§Ÿ6ÑÚN»;Çô(´1”S>ÐF‘³’ñ‡\u000f’µ3¨®Q\u0016ʃH Ê‘óè¹äeþnŒž\u0014û\u0003Ä=}\\Ek\n»swR#¾ô°þO\u0017)“ßeþ×ϝ–õH™ï–»ÜÊrÑ\u001fÕýë+°N\b—q»ŸÌ\u0018Œö\u0006\u0016·nK¢…zĕò\u0006–ÇŽ¸ÅÇ\\,\u0006¶ÇÖ²©øÇ.°Ì\t¬-.®­y;]Z9\táÐ{Ä\u0003\u001bwrs>Ú­\u0013qzio@_yª4f·À2ٖY?_=M¦ãúRÕä\t'n&îÉ\u0005Ÿ‘\u0014|œ¡Wµ§ÑܼŸn\u0017\u0017™‘Tnhøå9\u000e<æ‹V\u0004 éν+}ö‘^¡$p*\\ti\u0007\u001aK_‡DNÀ¢:E¡ë²—ò‚â´\u0014§Uÿ#„˜Úðü6]-flI®#̈cíT{\\ËÂaÖa¬—\u001fXX·x­dÓ+–=M#Œ}=MTG oLP¿«ru÷jwZDùÀxÐØI'ÌÒ¿-O\u0019“^-Z¡+ôKìîKp\u001f\u0017·¼Uû¼Å6[À´,væÉ#ÀǶÐ\u0015©\u001a£V2‡]Œ\b\u0017h\u0002̽\u000evŸ†\u0001P×jVÂRU7Ȅf\u001f\u0011T|\u0017ÀX= Ì\u0006†ÙplKH#³Ô¬²úCTä \u00118\u000f¥ÒSÈ,Çÿ*ø@f(\u001a\u000eu¾þ\u0012 æ‘\u0001‰Q\u0003Âõ7AV»=M\u001d\u001f\u001f™ýýçNI½–\u0003°ËùuP›š¯Z›Í\u0007.Y{ì)~)„‰6º³\u001bd\u001b2zz‡­ÌÓ7ÜÛä>²¥¬ã\u0012›~!Ær¾Ns¢L!°\fܘrg\u0014Îj93gT\u0003Àüf»\u0017EκQ}@B$S\u0014kPi—¿\u0013}·Å¨Ý\u0006¡ÀLÝЋô«I\u000f ×´ùv \bÕÇFÇz ·Æ\bRl<ò_ÀÎñcÍå8>\u000f\u0012gw!°«óB\u0018Ož¨“L\u0007÷4Ê=Mt\n#̽Å~G!H*ð‚\u0004+$‡b3Vš¶Åd­ÛÂ\u0002§úÖSð}¨’óÂ\f}”Që\u0018Væ<ÄçW:n•O,WŸ<öW\u001bS\\<ûÐVÑíÂE7 ³r(ñRŠ4tÉ\n÷DLîø\u001eÝ(I=Mˆ»2L§\u001bSu\u0004<ÈP»î\u0015ó ¦IÝhû֊p¸óªE¥¤Q…ž$! Êñ‡;Ã=} Iò\u0014û\u0016›\u001feª…¥6&²Zæ\"a\u0018vóêØ&=M\u001a“mœŠNó´tÞ[Ú÷\u001fƒ¢\u001c\u001e––\u0013ðjî= 'þ‘hCýÍ\u0000xf!Ր\u0006b= ô‹÷b\u001c~ÁX=}ߝŒ–×\u001fÆm£ˆŽä= ï·\b…\u0002õ†À®›\u0005i\u0012)\u0005š¡x[Š\u0007.\tý;Òv¢!dÁ[*\bæ?:•rhñÆvŠŽY\u001a‘üUq¨UŸ\u0016žqØù/¨¼\u001a}\u000b— ¯Q\u0013û¶a\u0014\u001bÜuD9øh\b\tðÂ\u001b·è­\u0018Y=M= È\u0001,\u001bTà\u0015g¼R'ŒnñÒ\u0004ñ¤í\u001e¨ªEÏ\u00193gª˜mãþ\u0015$Ȫ\bûKøá- \u0010i'9?§À\u0012Óûö™Î±ó¦åµò³žÃ¶Òß|Xä•$¬iÃ\fîÂU\u001f\n\u001bLK~È|è«Ê\u0015dJ\bŽ¾vÉiÊh*\u0018\u0015Ь¶ ¿!ЫßÔ÷_\u0014Yʶd@\u000bPUžJ!\u0016’ï؟\u0001XôüQ\u0018S\u001dvǺ$e:|“ç\u001f˜\u0004À«(\fí\u0012ƒîtú\u0016¦4±ÃŸŠþѸp”BZ@HËí«\u0007’àÕ[T™!\u0018ü֝®jlJǗIðwAhad\t8cÏh‘c\u000eòÆÇý¦vl7žö~ï«2\u0015§Ù¦¡\u000e¶\u0002=M¥\u0004!\b¾ôµxÊHÅp\u0002„˜˜­\u0018¿Ø_^'^\u000e\u001aŒËw\bzY=M^ãEæºP}\u0007m¼!ì›\\ Ònðüà\u0002œQ6fË\u0012–i.uaª[ښjà\u000büXd!\\\u001c\u0002%ŸÑp¿\f\u0007Ó¦ûï9øvò] b%¹= \u00114¯â¸\f÷\u0018XYÈÁxrÔW\u0007yì¤Ò=Mû±\\ßEbeúsì%ÖÚ+ ßíÎjÐrì2M¹R}ŠµYԜTR« sîöù\nU«Ýà9\u0010Ó¸þX®ö¸\t\u0006¼ÒD£>s„= \u000b\\½\fPÜ#”\u0019\u0004f\u0001ÜȽ÷9¤\u00158\b¯t¤f¼‰®sT±\bDnL¦¸š¯HJ\u0010z\u001b±ûЇêzú_*Gõlé•RÑO°iSÉþÇáÇå†qp<Ã_Ô¡Š¯\u000eU\u001ad±ZLÑu6\tÓ\u0010þ.Ô@ëœÔÆ®•ZMåxžˆ†å\u0017þJײť= Ã|\u0002£.­Ä5ž ýµ¸¢DŠÃA§½#\u0017š·\u0010úÎ= Øˆ\u001f\u0000\u0001¾Ø\u0014žŸm\u0004N[p\u0011ã\u0018Ve´\"Ñ8iØÈãeX¨g½\u000f\u000f›Œ= \\†D;¾x©S\u0004ÇÞ iÉø¸T1ÚEqι¦ýþÉ°\u0016\u0019ãÇèhJ\u0010éÑ(¸YÄ,f\u0002‹˜˜°ÙžÕx”\u0019—ô›˜ÊØ×^@\u000e#L×ìËXœÁØéòÐò¼\bkj(9w}”´^¨Ü2\u001a+³Ï‹åÌÅ+¿%+\\Ño!c;\t7j\u0013[jx\u0013™ùÿûÒ\u001b\u0013{[á¾iMœÐý–i·ç¹Þ}’zæŸ>Fù¯°¦CzêjH\u0001^Ñû\u0001¨q… Å‰G™3™\u0013yVŬ\u0005µäÇ óœ%\u001bܹÊÝOÀYõºÎe\u001fsš”\u001d\u0010áþi·'ÔôÆ\u0018\u0006 nÎ\u0018\u001bډ4…øw²¸¯\t§Ôì̘&«Ð…É\u0016ç~\u0007Ô^= ÷µ\\Í>jÃ(%¸ l\u0001•qÌ켔ó\"üÅd@\u0018*t&I\u00163kÉȀPÌÿ÷\u0018›ó\u0013:‰Þ(ºª“¹ðÅ\u0010„Û‡ÃÀ\fËpgšöúVÚmÁZ1Ò\n0jS\u001aÃ܈j)¸&’KŸ\u0018bØF2ÚýFØ(Ř<‡uîW\u001bXŠ3(\u0010÷bŠ\u000fýÊԆðِ½6ÐP\u001bYU°ºÈ×ͯ8Õ\"Îp\u0004DY¹Ö\u001as¹T¤}%|à…(;ØkôzǓ7u¡˜“ÖI}òØJÐ.cW\u0002ºX\u001fª†0öóù®|WAqC­ûž2ž6o“}ô݈‡#&YuRÜÃTFÕçŽjC*\f\u000bˆ\u001aNÀ\u001b.+-nØ(¬.à-nMJ‰\u0014‰”\u000fRMX\tIÅçIRï\u0002¶±#Æ\u0017\"â8ômM€6\\m\u0006¶F©\u000e\u001c<Ì2P×t\u0012Àµ×žÆxpE´—#%˜\n—è'Ò\u0005\u0001¨…~\t´Ø\\œz´íÍå}#ý\u001eíµÍ\u0015©–ìíkÈ´\u0001ÓÂ,©\t\u0014ƽƒ\u001aºF¬ƒºÉníïµ.uÏNë^0\"sÃâÖݯƒ!ÆgHûùÄX­M#êZ\u0018~®\u0003ċâQÇä\u0018™“\u001e¹HÖÆfl,áщ\u000e\fØfþĘ́&Ý'rÍMugù¹\u0000²VKWíZR\u001e”\\ּ᭠#HE&þ©Ó}\t,Ö\u0007ÚW8e€¹\nÚ|¸NGeˆýi/Wý\u0011{\\™\u000f¼(Ü@Ÿá]ÆÐBå6\u001bšo(ô/„,ÉdÖ­‰ÑéÞl)\u0010¾\u0004ÇíÃъªòŠí¯HJ\u000b\u0011,\u001b\u001a» ı\u00017\u0000±Î·\u0007îßøX­\u0006£\u0007[ƒÖ\fŸ\u000f£ŽÖcDEÓ⋵9´ÓxR1À@wµˆ•¤É\fG–w¢piÑÑN|µrE&†D\u0011=}M\u001f/¯h̒°YͲ¸³ìé‰ïJ‰ý¯Sǵ̘¿ÌUüָГ\u000fÑƊÀ1¯¾‘\u0016=M|ScV\u0003íÁG\u0006$’ºÞ·sT\u001c¸-Œ\u001a;\u001c•€½Í•\u0012V¹mV:Â\u0017†)}ƒÕ\u0002\"T][*\u001c&±\u0015¬¼Ñ\u0001À…'!è^+\u0004˜\u0012‡ŸUÅÌx, [?ãÌ\u001f….ÐpÞú?hX½W1 \u0002ã&üfX´p)\u0011ӕÆÁ·*,Í\u0015ÍÍ»\u0006¨\u0001Ýp\u0004ôÉj°¹¬p\u0013h\u0001\u0011“Ròž= 5\u001a¥jËrWê\u0007–¦\u001e|´'‰]‚¸¿ðÿX%Ôjçc\u0007\u00060Ãbz\t¶bȈ\u000b·ç\b\u0004Øs:î#:/o•Í×Üp\tL]Š”Ïß*g\u0007\u0007)M¡¢ãy‰IËדðÛÕ\u001f\u000f\u0002\u0016l\u001bß´‰Œ’u\\͑J¨ˆ“+±\u0007cÄ3‰e\\rü,4‚b¶c= ”\u0007ßBU‰|iÖ¨\u0015áËè\u001d€8\u0012Pôq,Ñ|TÇr‰³¤‘›I[ÐôÜãËs\u0013|\u0016úa\u0012{œ\u000eU8RÌÉc³¨DNÐ)‘qø˜R\\Lكã\u000b”yŽn[ ]o¥b‡õM’š\u001c‰Ü\u0001aììt˜I\büßâ÷´(æ\u0005\u000fÏ\u001céX<8jû^ZÏ.02´\u0011ªÖv¾ïïÞ¼\u0002 šÆ·>U·UÑÆĸ\u0001\u0001%NU\u0014ÃbñÝV¥O7ó“\u001fôÌDÄ#×4%º¯ò\u0000\u0015®ÜªÍÊ\u0006Ê\u0017+íQˆcÕ^Ìv©ÚRv}eòíÇ}=}Ç\u0012– ä\n¡´V\u0003Îv½\u001f8}1ŒÔÌ\n\"ã\u0014¸pôֈj= Ÿï3µqËr™Ý܇ï\u0000ŸðÐ á&we鉪¶.©”,aòK>Îo–xõe†Cÿ\u0013Ðé\u0001,ìÄMm÷ |ê†\u0003ÎÆÝï\u0005\u0004“’=}\"\tG&up\b´%™JM›Ïáøù\u0016™Ï\b0,\u0002ê7§\"v‰~gYZØ{ƕ]\u001c13GM¦\u0003Û¤\u001bO1= £‘¼\u0004b“Žœ~Ý¿¿rÏsH\u001bå\u001c)d\"3,†\u0007|\\ë\u0004S\u0010•ý¹\u000b\u0017ƒÇFZì\u0003\u001a’|xë)isæµ\nêC\u0003ˆÇl§\u0000irºÓ‰aXß\n¥KÏfWP¯ãês²ÑþÑßÿ™f\u0012\u0007zû¿ºÝrÉ\f\u0010Çì±êüC\u0001A˜ô†c|ÄÇé\tªqv΍Âõ?ñB©†@„m\bw\u0006=MSòTvِӤ»bƒû-ÐÀFŽFòÝÿ_ß¡¸–Ã_—\u0015”+ún\u001f9ƒ×ËPH¦Òa:‹‡€$MVw‚y”4èàÕj\u001d\u0019\u000e [®ý\u001f´°}\u0006I'ùéJÿÑÁ§où\u0015Žº¥ÖJÝëÐ)†\u0000£\u001aq:™Í'oؒX•ÊÃÕÛn†\nÝçö\u0013I‡Š!]X8¤Ï­aÿ9Š½8'Ëu\\Á=}«ÇãOíZ˜¯ó@¬tû¥\t€ÀVî˜=M\u0002\u0014u6\u0010֍­\u0017\"K• †¦ŠÕ+$Mü[Y·^\u0010Ó³æõÅ\u0006¯Ô¹Ê†8…L½8d.À\tœ‘r÷Z\u0012\u0014b\b\u0017N\u0017GT¡W\u0019ôT~«ë8՛S¼ZÇHÖËc‚Ÿˆ›Ñáesϲ\u001fë1êÀW\\kô?q³\u0017 3Ø$hñ\u0002¾\u0003!ÏWČöƒ+·O4ûŒ–žC\\ªÝ\u000fï¸mXëNÚ$\u0006®ªØ\foYc“/Øö4ê?ñW¾±ë&H<ç'TGÄ«ÝÛ'à(­Á/aJˆILAFûÚbY2߯BUíEî)Ô\u0005r™†‡—5Ҕðê|å<Æ(›%È1»y¦ð\u0003>é±E\u000bQ±Dæ‚v6éuWvYpÏ£].,\u001eÑÂq9“šPÞ3ÂéQ\b¢á\fcKÑ\u0017¸Öœ\u0013à\u0015TØÌ0tøé!×\tO¬ÿú¯¶´íºr\u001e9𰃳º~èW\tÒ¾Š×õÛXïâ1x\fgü\u001fb÷wuÏ/Ž¥ê†4°•Õ\u0012Ú̎?D\u0000\u0015ʜo†\u001fG/ÞÝ\u0003î¸\u000eÔ\u0007è\u001d£‹\u0014T\u001b$á\u0005Qa¤$øã\t|9>cý%ŠYhç¶-qP†o™¦ü\u0000v•F–*ÏððVìZ4ºµ\u0004^ˆ\u0016ŠÄ9RV\fÚ\u0018¾0›Œ$\\é|UøD$P˵ѱ瞘\u0000ìÛè«ôç­¿ŒÊ€ÞÔÇ\u001eèë1\u0018ëˆ\u0016\u0004oh\u000eè7\u0015ÊZYc\u0001&<£ß\fc‚óI¡×öê¹vl{í\u000b\u0000+\u0001E=Mr/\u0016Oãn¾Ç»ˆÕŸ\u0010‚0^ø\u0018>âÉ­n®ßR+íG§¡)!P\u0013bñ~îXb\t-C¿û°k\nlm®¸Ëè(\u0006¾–Ê\u001f”#è£ÎØ\"šSÂ7fe\u001bLM”Vk±*w[¦ëz\\e–\u000e;í“ÅOZ°»Ùç×qHwçíu\u0018gZ*óè”Ô(·\u0002”f›g}¬óÂ\fÒQ™X¿í˜VíëÿD Ôu\u001be‹¨7”WÎ\u000eZ\u0000—ÃÎ;:ŒÂÒäL\u0004NhIjh+ÖÑ\u000f4ã”Åþ,èDSü¬4k\\D'+1~LDËs#(¥\u0011[ð\fB¶pÏ X 樸Ã$zÕ[Â]\u0014€©áݏ¤Ê\u0002õ\u0018ꇰ̝äRÆWÏ\"\b]\u001bxyu\u0000\u000e£œelÉ\u0011ŽÇ¶®Íd‘¸s\u0004”\u0016\\›m®¢ôI\u0017ðÖR½\u00012ÏY[+P+—q¾f‡\u0015‰0@\u0016z\u0019U#îl\u0005Ûé¼\u0019StŽ3÷LÊÕ :B8Ã\u0002]ðãÏAÒx\u001e\u000eÕDÀL´\u0002ÑðqG¡vÑèÃ\u0018§<¾æ+i©ÑÂéí…xbçç£Bؓ¼xF£×·3Œ\u0000ÖŜ7Ϻ¹¹¹'IfÖÔ QÀoÆzß\u0014ߋ̺h\u0019o\u001d¸Ø…äÑŽZ¼\u001c\u0000¡´úìL vÇw»ÇT:WdH‘”í°Šß°ªº'\u0014õ¯vGe\u0002«-IâDžòÇØ\u0015€€x7¤ iHl8§ì\u001e½@Ã(¡‚ö˜%þ¨[L~䜈<¾™oš×\u0000˜¢a\u0003\u001arN[“\u001d<öDš«¨µ&p–NM\u001dîy3©Á'w¬€2ɱ—€\u0006T_Ѳ-ç£[Wb1OoÞ4\u001fC«w\u0005Wo\"-#“y\fHÑ\f¤e’\u0018\u001b¯þ°\u0007ˆŒ†_M°äƒlŒC‰ò87µŒDœt®üâKøzäS9«\u001f¾¦‘&~^H¸˜\u0004üƒà>\u001a”ÿØX¨Vÿ…1¸HBw/ó\"-æ£\\\u0003\u0010H–°ž]°\u0003\brTžÝ±-â£Eé-ÓÉÕ|ð\u001fU\fÅ¥oSŒÜFƒù6©¾Ð„ ‡\t;}’O“\u001f*¦˜\u0001\u0004K«ÞvJÆT”éüwOT\u0019‰X…= gmM\u0010ã“\u0012\u0012TLÚd¤ \u0016(£\u00157x'\\M\u001aèõ\u0017õ\u0018kž¯Üät¿®ˆ(€Êړy6hV6.Zžü;\u0004Õ¥\u0016éüƒà¾\u001a.løÒÈ\u000f¹ƒ¾\u0017¥T\u0010“‹&®y¥ÿ\u001aæ\u0000°à¡æQW= Œ\u0006…rç®c‚kM\u001a¾b<–§6œ¤=}4ç= çƒ\u001b€\u001a“yc”ž †0ŠØÊ~´¨Ý_ªBiÇ?\u001a†z¼u\\‡;¢Hí®€z\u0000vßÂ[ÃÔeÏb˜[D\u0000î69§Ô©\u0004vM\u001a®4Ì\u0018€7Ÿ¦ïÈ%Ã\f\fÁ\b£d\u0002Ð÷“49óê,o¿í¼­\f„óDST´-èƒÞ®\u0004Tð—\b›ü-0©©·À>\u001d®y\u0005¿*Ö%˜ûÕ\u0003”̶:„ÜM羞-\"“4ÞÆÔ:TEØ\u001bÕ±u6×ïôC,ÞÂ[ó}œ®Ìä‰Ä\u0014̊§\u0017\u0004«Þ¾ý>0õ§ ª¶à%+¶Ò„Ë;\u0003þ¶F‰@ÈÀØP\u0016èhQmŠT­ì▇!ð-ŽX\u001b|¸pIėkvö«ÃÖ\u001e2\n¾#zäƒ\"XÕ=MÉë'fL/†“\bŽ‚÷m²\u0007‹Q%1ˆ5\u0005tªUIO>¨!= Cž-æ£[ƒÃ\"X%•a´\u001dÞÎ3\u0013\\€(ý«ÞŽ¯Ø«X\u001cçO¢vÁ²\u0001žx'kMPáƒAAâ\u0016lf\u0010ÇOг|EÉð®c‚uM\u001a._\u0012ÌGÁÊ= ‘ð¤\u0010ÿ”\u001e\u0013mð,\u0002Â⣶B¥•š‘ÂÇс‚ÚMkyò[S]âðTïo\u00122\u001cœt^\u001f\u0013©\u0001[õè.±ˆ\u0017\u0007\u000e\u0003\nì0¥Ó\fS)¾“M£y¥'OH\fOÆR5I\u0001Ç\u001e̯Újç®c‚ómÞ.\u0010—·Â»2u=M‰:ˆi\u0012®Ø{•q\u0003\"0æLU“«A\u0016fH(G3±K,ùv\u000bÂ[#\u0004ûÀ³€Éy•šJ>Ä \u0013mî,\u0012Â[KŽ\u0010·APÛ\u0018×ÎËƝɘ\u0001l\u0007{+«Þ.ÇW°;‘ï”Ç'vo\u0011€ßö\fÂëN°\u0010K\u0014gr\u000e\u0006ï~ž\u001dÕ\u001eR\n¾…©¶ÞÃ\u0016Ê7Ԝ‘À]Ä(@\u0006…Ìð®c‚÷mÞ®\u0010Òí\u0016>\u0018Wp7³…ÌhIv\u001cR\n.lÇG©8Ào~Ɵ= WÞW\u0015,Ï|¥z3\n.[óÞÎq*N´›vÑbĕ\u0012Z£évÜ$\u001e)\u001aƒT9\u0016ïÀ³À\u000fº¯Ô—†d#⏂õ=M\u001c)høsÜÓ-•Vx¬uSè\u000böAí\u001a\u0002bÛ#\u001f= KÌÊìÒÆ\u0003Áj§ZDÐ×\u0010\u0013Ú¿â1ï×Ë-Ñ$\u0012VâÅåW˜;C&bë–á´Š>M—]\u0007èi²à\u00041ð\u0016)ƒ\u001bŸ¨h\u0003Ÿ¶ŽXpY?áÃ*ñõ©F\fC/\u0012¢RN\u0001&ڋ‰‚ÕÒc]OC=M¹ßøˆP\b\u001c(¿\u0014›楠\u001fÅ\u001aš\u0018N,\u0000T]¬\u0003ùŒø§ §ó= ¯ø\u0019LÜ<æô?S¬\u0003oÁ–\u0004ldhùÀ¹t6#lCª¾\\‹\u001d\u0004Ãô˜\u0013_?\u0006ÅÌ= T.tKHÞ¾\u001aîv²tA43nZâ&ÅH÷)¿Yyõ”Ø|ÇݓªÔ§·ÛS0\u0001\u0019ŽyÃ&–;8w\u001bÎÃÿ¡\u0003ÿ¬H°îz=}xZV\u0014%{Ð\u0012Ðëƒ Þ\u000eæ“²‘ñöSQ}P#Ì£\u000f®\\C\u001a’†oòcªÂC*\n’\u0016ÁÒ,\\‹yëD·ÐÊpj\nE¼~\"HÑ%{ã)÷->¯\u001dCˆy¿ssx\u001cX= «\u001cÿ¶<‰Æ̸.à5\u001ef\u0017,Ý.¤jên[?áÃJÈ¢ªh0jÔsäœDÓí>³ï\u001d‹‰‚¿q\u00134‡z\u001fè\u0003ð–\u0002‡&= Õۋyª–í†ÿóé¬Ô† vÆ8Áœím\u0012\u0007;É¡a5ÜSÒ#¿Š£\u0004a7ñy3©ðI¢ŠgNÈ©ƒ\u0017ºÍíY‹y8gí h?ªÛh–xˆEŽXyj\u0007A+Å©\u0006q\u001e@M6Ӗ¶@XBj‡\u001f©Œ. Oƒ:\u001dˆ§P\u0017XXrt&’À©Þ.¶v<¦\u000b{è¾ÔO؏\u0016m‡ámÞ.q÷Ë\u000e%Á…¥ =MÄê\u0016ZC)÷-k\u000eF½Aì\u0003q§D‡eL€\u0004Û>[\u000fC\u0013–XgâžÄ\u0003wgCÄ>,ÞÂ[—‰ÑvÍ\u000f|öuÃ&d\u0000\u0007M\u001e}ä3\t\n\u0000>{ò&–\u0017«ÎC)\u001cÓ\u0001ü6©\u001fwB5zòƒÂ/T^Z&v!\u0010\u001c)N\u0004À<—ïíl\u0018Eš]…ßM–¨yäC\u0001ñÉRÞn¡ì·–\u00163x‡ðmîM<\u0016\u001e¥Üvž[Ç縼ë3¢&ÀöÀ½\u000bºXåcZßÛ\u001aí\u001eøù(¡y™ñ÷\u001dÙ\u001d)Ù>}~‰\n\t{\t\u0004ùÙÞÛaÙÛ\u001aøiÍä®\u0000ÝÔܚ‹à –À—\u0000Ëqbå¿ûàÑ\u0019ž\u0017[ëSµ\f˞׼H\\˜¢ãH‰PÊïV&H«$ÓjÔvu›wÖhx¡ÞP>”¹8•è\u0012·ú= EìA¼0Õ%Ç9ub\u0015Ê[4ç\u0010áJî;±ï»…\n\u001f–ÿJÆS“¬=}\u000eò‘e\u000eô@‰µ\tåÛªÕ+\bv5Šfëÿá=Më#s7ÑؘÁ}‡\u000eÆJx2¥‡ÈW&wW×N‘™¿\u0010U÷+­\"\u000fÕ\u0011=Mb’·Šÿ¯ š\u0011Žš[¨\u0001|O何ižÐý/qYO$3\f\u001d¬ÞãOØSmfàø‰K”älÿ-ùÌ¢÷út= !g\u0014= ÂÁ¦½AŽÌ§Ž_ì¸\u001d2ÄÁ¢õ¢\u001b{Å~‚F¡ù,A\u0014€x\u0012é©óaÅz¦e'\u0001žF5ÝÜcà9!kPà,‰‚5d®lî\u001dPÓK\u001e\u0000ó\\a:Ñ= y}°\u001eqŸ\u0012\u0013è]ùsÐsʶ3á„\u0006>h¨\u001eOÒ]\fV\u001fñ¬·¹½l&Ԙ¯|WSó\u0014ž5Š!ퟕ—a4ZÞ%°\u0006º7ØA¯÷n½VÇ@³ðï\n*\u0001f\u0019âޅU6ry~›­arEª%<§n#‹\u0018=}Š \u001bÙÀ£æ¡ö\u0014$’J=M|MUr©Ôr~“ú\u0011\u0004ž{j\fg¢Ì^B‚³¦€‰CC\f°ŒŠ\u0007j=}Ž\u001f7~ƒk÷ï\u001a€—ö»o6‘_Í9ð•nzO\u000e‹\u0007~¬\u0006…XY¢\u0018³‰³9œ= \nR!4\u0004;;5ŸÃXB»É†Y|~Ü!^PlÇ|a&¡@\u001f°äÌVº138¥:žfÝ%?v\u001bŽJÛôθû1sY£{tͦ=}lNãÐ\u0003ër}\ff¶˜\u000e‹Át\u0004ǚ|âí\u0016\u001dF«\u000fϔ\u0015|À\u0016ˆ´\u001aN4÷B\u000f^‘\u000f\u0010LP½õ‡Î¢êë4\u001a.ô×D³Ñ;Sj3x\u001a\u000bSîÁÕ\u0014çv\u0016žµÂK¿Í†R¡ÀK>bÿ=} j’\u0006u5lª!¤¾‰· dJ¢‘&žVÀþ\u001dÝ=}Á¡l¼Ô¤:Û´Xë1\u0013¥ä0\u0000ŸçzÆLY¼\u0007›åxÑð+³¼\t.\u001a\u001f¥xæþȑÊ\u0013t,§\u0007\u001d³Cy-ô˜ D)ÅïºouÚ$¥pLÔ\u0019ìcÎÒm\u0012æl™>Ÿ\u0011–90À\u001eïÅ8f^™\u0016ãÏÑJ™U\u0006gŸ(a¶\u0013[¦\u001fC¥Vq= #8\u000e[\u0007?q\u0003—¹‘U\u0003L‡0J\"2nÊR╔ÏÙj\bä\u0011>ØÛ¢X’\nRmèz“KEC•¡Õ1G5—h[Â\u001dK—Â\f|†÷¨«\u00140i\u00073\u001b¶¾\u0018ñȉàRü*ý\n›4p€¼Õês=}\u001em7\u0001\u0000#”AôošJ\"\u0007ÇZ¤ñ\fÉl[‹Ì±\u0012E;v%ãtƒPúЎq ”;ñ•î¢mæz¥°%ûšåúvDс «\tXÝà\u0014֒¶n$²—(E‰wšaJg]5¦¹SÒöñ†:Çh‚\u001d÷ƒ»£1\u0006£Np\fœv\u0000\u0004ô±\u0001Öv NXÊ?\u0019èè„\u0007»†3A\u0006.ûú“ãöè‰X7\u001cHtù^s˜‰#Eî\u001f ¦‘0Ëâp‰3\u000b½&rCÑZ²³Óq0x\u0019SÑ\u0006ˆø扩|gÖ@o\f×\"æØSõcdœ\f‡ç°ë\u0017—Ûè¬ü\u0011?7€ª¾õ³= µ‚vº™p¿-}èPLÌOúREº²Î\u0002õ\u00025¥$¨VõBâ;c‰\u0005Xa&Ÿ¤ÿ[ê«û5\u0011¿£ÉI\u0002Ÿ\u0004TAÎ+¾È/\u001a[ääg÷\u001b\u0002\u001ek\u0017p\u0003ûC-B\"\nÿ\u0000¾ÿ¦æ,êám<˜¢\u000b=}fÜbFS§|ÒÞ\u0011Ç&\u001c4¿\u0005\f¥óñwg€\\\u0018\u0011‚¾¥\fX2·\u0017É<\u0001\u0000nwhPj8WôÞæL­ðñ\u000b„Î\b×ñs¡hNç\u0001¥G:4gøô<\u001c±—‰Úò|ç£Dø\n\"\u0015cràˊh\u001b;°\u0017MWTŸ=MßH§9×ì¤c¾×¬h•\nFyLÈ\u0017E(Ÿì«œFªU¥PÌ­}q\u0006—ŽA(€Ì¹ó½?Pk\u0006Obދ„±\u0012Éq¯<\nu¸7§ÿØÈñhö»¾È2Ý\u0007-\u001e\u0016Lúºöñ–\"¼(âNÃ7 Œ>#ۊ\u0003°!V\u0015îÔ\nD‰—·dP\u0019\u000bژ\u001fÌƇ\u0003ä›G¹×À\u0013;sðyTz\\g®\u001f\u0015\u0016{bÆTVWwÄ?ÈÜ\fµFì\u0001¥\u0011_ªÀ¤\u0005æ1]7zê\u00146ŸŒ\u0019Ÿøf®—Ý\u0017Xž¤Ìè1Ô\u001cpXò˜>ύ\u0013COßêÊV\u0002Ð\u0004Cq/¬%ԇ\u0005/°ÑLµ™[Þ×3¡×÷šMÌì¡ÕÃghÅ%å£Ýái\u0011¦H˜Ýk+Ö[pÆÇ-D/û\nÑg\b\u001a%â\u0004œÓ£+/]8|<ëâ4\u0013iō×B\u0000Jê»}! ;°ýž]è\u0012ñ7q¨Ÿq\u0013çÕBbp ûî\u0001lÕÂý\u001bŸˆÒPJÀÙý°ïߺ—\fÄʅ\ngF\u0000@HE´F´F4\u0010FtD6‚‘ÉÕ«N˜ØˆL“¨±M\u001dS:¬…-A¬”íïÞpœîÁXÔëÿ¸…= YE\u0003ÇÀõåq\u0018èÆ8\u001b§*¶ªXÄ\u000b¡-ì^l°Ù‹•\u0012Mš”q#iƒn›vOVú xj=M„®ºHöbÛ-³[ö̊Îv3Ñ̤õN¤vÁsôõèáf¡¢÷G(³\u0016à\u0011OϘxæmþ“2¯¶ªâ¶7­dìšòÿ°\u0011ͺokPÁs»\b´žc^È\u0007=}Cƒ’‡…\u000e\u001f\u001d½uíüSEŠÒei\b\u0004\\­4°'\u0013ó\u0006SuGîËM¯R>*œz³96¡‘\u0012\u0003S_¾e\u000bP= ŒOmaÁw\u0014­«Ìû‹]í\b—ü+¥¢Œ?›ÖV£Ï= œüƒ“û\u001e¦*6n¼N\u0002$\t&ïlû‚\u0013\u001e\u000f¨CŒ5ÒÏãÉð†\u0005\u000bÖÖ¡“ˆ\u001d·±ýLg¾±ù¿\u000f0²\u000f\u0005Uúh¤*J2ÀÜ»ª”¿.‹Ê®‘Lèçí°å\u0015þ«\u0007x°¹Å—€û…ªza\u001b÷ð$’„Óª¹\u0000û:'Asr|ˆaÓ\u001e\u0004·AË1uÁŠ‡Í›\u0014\u0010]NŠ|Úv¨bÇ= \u0013¦FïU2’’V\"$xœj‘¶\u001edÑ\u0018/+H&ž¨Òždƒ†Ê2šÉ\u001aII\t\u0001P\u001bRìA¡ð¸½\u001c8Ƽââ·sùÓ÷ó©Ð¹ó©Z•Ç[}JÁ\u001aV²\u001aö€zÜ-É¿=MPi.èÒ\u0012LkïK\u0015”˜\b\u0001ï³3Y;~Áû\f\u001fÇÿ”˜ÚYôä\f\u001fY;~Ptw=}¿ÇŠ4&y1q\nÜí\u0004éiié¡Ì\b\"óÖpª°¼\u0000xÀ}½ 6;Ðèݞ\u001b èy1Âf“¥%Ù½BÅø.×y1ñãÙ\u0001/GòÑý\u0006$¯E²L½mÌð\u00011É ˜\u0003!\u0003Žt”= €pÐpâøf/€\u0010ñ&?8\u0018ØY™y¹i©\td®?P\u00116X›ØÖ»ÊJÌ-T‘\\{§Ouf\u0003ŒO~ô•Z8K$ÇÜyúR{ße¢Z’\\þ]À\u0010yȽ‚™¶1ÐùS2\"\u0014«[\u0014Pcx'÷ˆI@>×,l?t£Ù‡üÿ;ÿ—hÑlÙë![!\tÚî\u001b\u001bb_]êäŠëôŠìàJë°\bRÕ¢Uk\bÒ}\u0018½lV¢\u0000\u0000\u0002W¡€Õ:Ð,Öb¶Ø\u0014Òa¯\u0019_\u000f\u00192+p=MþD䄹çҚæ7w¬\u001bW ‡\"àù\u0016231[\u0015Êÿöî½^Å7ø˜Áì`});\n\nvar HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, wasmMemory;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n}\n\n/** @type {function(...*):?} */ function _INT123_compat_close() {\n abort(\"missing function: INT123_compat_close\");\n}\n\n_INT123_compat_close.stub = true;\n\nvar _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);\n\nvar abortOnCannotGrowMemory = requestedSize => {\n abort(\"OOM\");\n};\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n abortOnCannotGrowMemory(requestedSize);\n};\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\n/**\n * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the\n * emscripten HEAP, returns a copy of that string as a Javascript String object.\n *\n * @param {number} ptr\n * @param {number=} maxBytesToRead - An optional length that specifies the\n * maximum number of bytes to read. You can omit this parameter to scan the\n * string until the first 0 byte. If maxBytesToRead is passed, and the string\n * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the\n * string will cut short at that byte index (i.e. maxBytesToRead will not\n * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing\n * frequent uses of UTF8ToString() with and without maxBytesToRead may throw\n * JS JIT optimizations off, so it is worth to consider consistently using one\n * @return {string}\n */ var UTF8ToString = (ptr, maxBytesToRead) => {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n};\n\nvar SYSCALLS = {\n varargs: undefined,\n get() {\n var ret = HEAP32[((+SYSCALLS.varargs) >> 2)];\n SYSCALLS.varargs += 4;\n return ret;\n },\n getp() {\n return SYSCALLS.get();\n },\n getStr(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n }\n};\n\nvar _fd_close = fd => 52;\n\nvar _fd_read = (fd, iov, iovcnt, pnum) => 52;\n\nvar convertI32PairToI53Checked = (lo, hi) => ((hi + 2097152) >>> 0 < 4194305 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN;\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n return 70;\n}\n\nvar printCharBuffers = [ null, [], [] ];\n\n/**\n * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given\n * array that contains uint8 values, returns a copy of that string as a\n * Javascript String object.\n * heapOrArray is either a regular array, or a JavaScript typed array view.\n * @param {number} idx\n * @param {number=} maxBytesToRead\n * @return {string}\n */ var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n};\n\nvar printChar = (stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n};\n\nvar _fd_write = (fd, iov, iovcnt, pnum) => {\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[((iov) >> 2)];\n var len = HEAPU32[(((iov) + (4)) >> 2)];\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAPU32[((pnum) >> 2)] = num;\n return 0;\n};\n\nvar wasmImports = {\n /** @export */ a: _INT123_compat_close,\n /** @export */ b: _emscripten_memcpy_js,\n /** @export */ f: _emscripten_resize_heap,\n /** @export */ d: _fd_close,\n /** @export */ c: _fd_read,\n /** @export */ g: _fd_seek,\n /** @export */ e: _fd_write\n};\n\nfunction initRuntime(wasmExports) {\n wasmExports[\"i\"]();\n}\n\nvar imports = {\n \"a\": wasmImports\n};\n\nvar _malloc, _free, _mpeg_frame_decoder_create, _mpeg_decoder_feed, _mpeg_decoder_read, _mpeg_frame_decoder_destroy;\n\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {\n const wasmExports = instance.exports;\n _malloc = wasmExports[\"j\"];\n _free = wasmExports[\"k\"];\n _mpeg_frame_decoder_create = wasmExports[\"m\"];\n _mpeg_decoder_feed = wasmExports[\"n\"];\n _mpeg_decoder_read = wasmExports[\"o\"];\n _mpeg_frame_decoder_destroy = wasmExports[\"p\"];\n wasmMemory = wasmExports[\"h\"];\n updateMemoryViews();\n initRuntime(wasmExports);\n ready();\n});\n\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.mpeg_decoder_feed = _mpeg_decoder_feed;\n this.mpeg_decoder_read = _mpeg_decoder_read;\n this.mpeg_frame_decoder_create = _mpeg_frame_decoder_create;\n this.mpeg_frame_decoder_destroy = _mpeg_frame_decoder_destroy;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport default function MPEGDecoder(options = {}) {\n // injects dependencies when running as a web worker\n // async\n this._init = () => {\n return new this._WASMAudioDecoderCommon()\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._sampleRate = 0;\n this._inputBytes = 0;\n this._outputSamples = 0;\n this._frameNumber = 0;\n\n this._input = this._common.allocateTypedArray(\n this._inputSize,\n Uint8Array,\n );\n\n this._output = this._common.allocateTypedArray(\n this._outputSize,\n Float32Array,\n );\n\n const decoderPtr = this._common.allocateTypedArray(1, Uint32Array);\n this._samplesDecodedPtr = this._common.allocateTypedArray(\n 1,\n Uint32Array,\n );\n this._sampleRatePtr = this._common.allocateTypedArray(1, Uint32Array);\n this._errorStringPtr = this._common.allocateTypedArray(1, Uint32Array);\n\n const error = this._common.wasm.mpeg_frame_decoder_create(\n decoderPtr.ptr,\n options.enableGapless === false ? 0 : 1, // default to enabled\n );\n\n if (error) {\n throw Error(this._getErrorMessage(error));\n }\n\n this._decoder = decoderPtr.buf[0];\n });\n };\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n this._getErrorMessage = (error) =>\n error + \" \" + this._common.codeToString(this._errorStringPtr.buf[0]);\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.wasm.mpeg_frame_decoder_destroy(this._decoder);\n this._common.wasm.free(this._decoder);\n\n this._common.free();\n };\n\n this.decode = (data) => {\n let output = [],\n errors = [],\n samples = 0;\n\n if (!(data instanceof Uint8Array))\n throw Error(\n \"Data to decode must be Uint8Array. Instead got \" + typeof data,\n );\n\n feed: for (\n let dataOffset = 0, dataChunkLength = 0;\n dataOffset < data.length;\n dataOffset += dataChunkLength\n ) {\n const dataChunk = data.subarray(dataOffset, this._input.len + dataOffset);\n dataChunkLength = dataChunk.length;\n this._inputBytes += dataChunkLength;\n\n this._input.buf.set(dataChunk);\n\n // feed data in chunks as large as the input buffer\n let error = this._common.wasm.mpeg_decoder_feed(\n this._decoder,\n this._input.ptr,\n dataChunkLength,\n );\n\n if (error === -10) {\n continue feed; // MPG123_NEED_MORE\n }\n\n // decode data in chunks as large as the input buffer\n read: while (true) {\n this._samplesDecodedPtr.buf[0] = 0;\n\n error = this._common.wasm.mpeg_decoder_read(\n this._decoder,\n this._output.ptr,\n this._output.len,\n this._samplesDecodedPtr.ptr,\n this._sampleRatePtr.ptr,\n this._errorStringPtr.ptr,\n );\n\n const samplesDecoded = this._samplesDecodedPtr.buf[0];\n this._outputSamples += samplesDecoded;\n\n if (samplesDecoded) {\n samples += samplesDecoded;\n output.push([\n this._output.buf.slice(0, samplesDecoded),\n this._output.buf.slice(samplesDecoded, samplesDecoded * 2),\n ]);\n }\n\n if (error == -11) {\n continue read; // MPG123_NEW_FORMAT, usually the start of a new stream\n } else if (error === -10) {\n continue feed; // MPG123_NEED_MORE\n } else if (error) {\n const message = this._getErrorMessage(error);\n console.error(\"mpg123-decoder: \" + message);\n\n this._common.addError(\n errors,\n message,\n 0,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n }\n }\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n output,\n 2,\n samples,\n this._sampleRatePtr.buf[0],\n );\n };\n\n this.decodeFrame = (mpegFrame) => {\n const decoded = this.decode(mpegFrame);\n this._frameNumber++;\n return decoded;\n };\n\n this.decodeFrames = (mpegFrames) => {\n let output = [],\n errors = [],\n samples = 0,\n i = 0;\n\n while (i < mpegFrames.length) {\n const decoded = this.decodeFrame(mpegFrames[i++]);\n\n output.push(decoded.channelData);\n errors = errors.concat(decoded.errors);\n samples += decoded.samplesDecoded;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n output,\n 2,\n samples,\n this._sampleRatePtr.buf[0],\n );\n };\n\n // constructor\n\n // injects dependencies when running as a web worker\n this._isWebWorker = MPEGDecoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n MPEGDecoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = MPEGDecoder.EmscriptenWASM || EmscriptenWASM;\n this._module = MPEGDecoder.module;\n\n this._inputSize = 2 ** 16;\n this._outputSize = 2889 * 16 * 2;\n\n this._ready = this._init();\n\n return this;\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport MPEGDecoder from \"./MPEGDecoder.js\";\n\nexport default class MPEGDecoderWebWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"mpg123-decoder\", MPEGDecoder, EmscriptenWASM);\n }\n\n async decode(data) {\n return this.postToDecoder(\"decode\", data);\n }\n\n async decodeFrame(data) {\n return this.postToDecoder(\"decodeFrame\", data);\n }\n\n async decodeFrames(data) {\n return this.postToDecoder(\"decodeFrames\", data);\n }\n}\n","import MPEGDecoder from \"./src/MPEGDecoder.js\";\nimport MPEGDecoderWebWorker from \"./src/MPEGDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(MPEGDecoder, \"MPEGDecoder\");\nassignNames(MPEGDecoderWebWorker, \"MPEGDecoderWebWorker\");\n\nexport { MPEGDecoder, MPEGDecoderWebWorker };\n"],"names":["EmscriptenWASM","WASMAudioDecoderCommon","HEAPU8","HEAPU32","wasmMemory","out","text","console","log","err","error","ready","abort","what","base64ReverseLookup","Uint8Array","i","_INT123_compat_close","wasm","Object","defineProperty","get","String","raw","stub","_malloc","_free","_mpeg_frame_decoder_create","_mpeg_decoder_feed","_mpeg_decoder_read","_mpeg_frame_decoder_destroy","UTF8Decoder","TextDecoder","printCharBuffers","printChar","stream","curr","buffer","heapOrArray","endPtr","idx","decode","subarray","slice","UTF8ArrayToString","length","push","wasmImports","a","b","dest","src","num","copyWithin","f","requestedSize","d","fd","c","iov","iovcnt","pnum","g","offset_low","offset_high","whence","newOffset","e","ptr","len","j","imports","this","setModule","data","getModule","instantiate","then","WebAssembly","instance","wasmExports","exports","Uint32Array","initRuntime","Promise","resolve","HEAP","malloc","free","mpeg_decoder_feed","mpeg_decoder_read","mpeg_frame_decoder_create","mpeg_frame_decoder_destroy","MPEGDecoder","options","_init","_WASMAudioDecoderCommon","_EmscriptenWASM","_module","common","_common","_sampleRate","_inputBytes","_outputSamples","_frameNumber","_input","allocateTypedArray","_inputSize","_output","_outputSize","Float32Array","decoderPtr","_samplesDecodedPtr","_sampleRatePtr","_errorStringPtr","enableGapless","Error","_getErrorMessage","_decoder","buf","enumerable","_ready","codeToString","reset","output","errors","samples","feed","dataOffset","dataChunkLength","dataChunk","set","samplesDecoded","message","addError","getDecodedAudioMultiChannel","decodeFrame","mpegFrame","decoded","decodeFrames","mpegFrames","channelData","concat","_isWebWorker","isWebWorker","module","MPEGDecoderWebWorker","WASMAudioDecoderWorker","constructor","super","postToDecoder","assignNames"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-286dd7f3.js b/dist/index-286dd7f3.js new file mode 100644 index 0000000000000000000000000000000000000000..fd5a708fae5bdcc62b7d32923276e98acd285587 GIT binary patch literal 38012 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 console.log(text);\n\nvar err = text => console.error(text);\n\nfunction ready() {}\n\nModule = {};\n\n/** @param {string|number=} what */ function abort(what) {\n throw what;\n}\n\nfor (var base64ReverseLookup = new Uint8Array(123), /*'z'+1*/ i = 25; i >= 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n base64ReverseLookup[65 + i] = i;\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\nbase64ReverseLookup[47] = 63;\n\n/** @noinline */ function base64Decode(b64) {\n var b1, b2, i = 0, j = 0, bLength = b64.length, output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n}\n\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode0146c05a3732ò›{Úb\u0013Wt.\u001fá#\u001fû=}ƒEfœ\u0013ÎÄV\tÐë³w¹´ì_\u0019\u0007Y‘¹¬¹°’[o•c\u001f×ßow¬¼´ô0ÀýM¬~ÞD\u0000þðñ\u0000'óù5F\u0006ý\u0004's\"üsêuüµ‡AÊ\u001c}*ê\nà (™¡ÒØûYG+»\u0018\u0014;Øï‚3ãJ†¡€>œÂñ?\býG1=}3/ATfC\u0004yÃ%K\u0005øSyPNçaHof\f¤Ç†ŸfªÌÄLcŠè\u0014fª>grВý9z•ã¢©Ôå?‡nì\u0010b%“Æ5Ç3>¤Þ\b= |¦Iá6Ãö_%U¡6IN#gˆ\nèý—\u00100\u001bü\u0004ü3;$Ýč!D\u0006^ = QãS©\u0007NiȄ\\Æ®9\u001fG\u001e@\u000b÷ƒíÞÊuñ^\n¼ŠõŠ¾©gfr\u001a.”›~o+›¬\u0011öP“\u0012,R€§í[Ž= z¿q¾n—þjë*Ó3ù>º\u0000H\u000f\u0014ñژáФç歒¼\u001aãW+ Î²Š‡†öt\u001bi‘îq6²‡)˜\u0011ïάF’}¾áÆ/ÈJ\u0019‹'ê‘È\\ít77ú¯p\u0006š˜è\u001c¢ š[\n\u0005\u0006\u001bZú\u001e‡Ìè>¢æ\u0002ëíwuß\f¯fžžiâüÜÕ-u1\bwýE\u0011\u001b\u001a Ø#Jš£°ÛR×±“!pÅ»3EyZ:j/?íð$oþ[rúä:dœ#•ÛƒÀpj#­»‹œÉ¦Ï!\u0007éJq\u001b5Cpv™ÛS€È$F®ÍÞ¡»¸µFÚ\u001aTì=}£\u001bQ°\n\u000e\u0007\u0015\u001aúR+ˆ—aËê½P…ëŸssëL8B\u0019e\u001b˜= 9)‹Ð\u001b4O­Ý#ˆy2„¾\u001cÚc= ‘=}Œ^n\u0017p\u0019Ÿ= ¿Ï\u0018ƒ{õ…'\u0014F(u²à]¸OÀÑ÷£¼I¢Ø˜öÖà؂kۃõ”kž‰È¶\"£=M#xûüdô{x ëÎ\u000f©x´¸\u0017 \nRß߈‰\u0012P\u000fÐeX˜‘©\u001dÍNF\u0018\u000eš,!ý^?(HÙ‡ç\u000e\u0014œŠY\u0007ïÏfqƒ’.£í1ÅY¿\u0000¨yU„˜n°.·èç°~ߣiO+\u0004J{ف¡—ÅhþÀhþ\u0010Ý]Â_@\u0018''Š3ËO {‡1bÐ¾€ôàïþ\u0017–j\u001fûQÆ2®”\u0007‡¤+\u0011\u0016Ý\"]¹t\u001c~ð¨Àau¡¿KÐ埫}ÇÀõ\b¬æ7Ð=M\u0011p~½£}D²Ÿ\u0001\u001e©]÷ª\u000bâÊ¥–Hӓ˜-Î[@Y\fü*< žGB\u0003†é\u001f\u001cu)Ð)ð#\u0013Eßí©„}év\u0005á¼èâ\u0001yyiƺˆo6–ÝndbÐÍí\u000f¾šDnŒ\u0016öø\bˆ÷BÊڪ׸Кˆ2\u001dwe¼rGÙR/Ì\u001d}«6DÆ~\u001c?\u001bàþÓºÿÆiÁˆb\u001f»*îõc/®îí,.K3ŸñúÏcóa\u0017€xh·ú¿Šác\u0003è)®AÎü ƒè#Ô<Õ®\u0005é‰i€*.\u001eÎÔO\f·©ß/˜×Êñ$MþrÀ:Ìf£šTr¹qZ=M¶·\u001f²%®0EöØÔ6Næi€H*ÎÕFõ6(\u0017žç\u001b=M…„U'ºÁ[\u0005‡ªeôÐÂþœÔ]ôbuµnƒ\u0013«ùËq¬qrßóöv¡à.…eÖùÉò–wåSb†…>¢\u0016ˆÉUž\u0016à^óÜ¢r©'¥\u001fvÑs\u0011·^Ƅ”Ð?'æ\f­Äj\u0005é²àÁ\u001d\u0012\u0012\u0012\u0012\u0012’É\u0013\u0012\u0012\u0012ÒÜbòðû¨#q¡PëˆÈ´\u0012lté|\u0005\u001dj\u0010ÃÿUº{ýÓô'¹\u0018û<‹úÈ<3\u000b©µ£\u000bµü\u0000ôÁî1ÔDöó­U\u000f\u0006õ0Sd°Ï&Ç涃ˆÛÃbzf\u001a\u001fm­iÈz7pùø\u0010ò¢wD,¼W>;\u0003‡è¼nªHäO¢\u0004\u001fÅ\u0004Š\u0005ë}~î[cÞOŽYÞ¶±\u001eqm6Ñ\u0003‡7‡ÇxG=MJ”$^ÁlXÚ\u0010\u000bö\u0007»Y¸\u00111¬–\u000e©æ¡’¶‡8‹Xé,4˜ŽXôÛ¶‰\u001c\u0019\u001dÁ<þG‘vÑIôO…Áý\u0006Tx×iÍQ1Mb7ÖbÚ·&¿\u0017ó\u000eYê!Ž\u0006\u0014Û\u0014i•àtê›j[w4\u000f(ðfœ—’j=M)E\u0010ŽŠëŠTâ^ûÿГ^Þ2\fÈKAôžYÝä= {–Qt•îthnä £ˆ¶¾Ø»ß\u0012X\u001e\u0019Ÿ¹ ž\bÜ]\u0019¤ÃÞ·Ê<ɯhëƒÅ\"ÏéP‰^³Hz™´OÓN\b>Æ0P\b¢}­9\u0016),Ò¢ôÉ$\u0018ò2\u0004/¥\u0005àyóOÇH ÖÙÉY4\u0010ìÕaj@ÓÜ!cê\u001b‚=}¨\u0017L\u0019‚?Êàý\u001aÜr»';É=Mª0/«) wKs¬ç%}Â\u001egÉV0\n\u0016³\t\u001c3­n\u0005ú‰ÉçÜNmç֖oC\u0003߉=Mjð¦ð©«œ\u0002ž¾uïÛܚy\u001dÎ\u001diê};)ãÛ]¹×ÆÎÔ¬?É[P\tàï\u001c¸ü\u001c\u0015ñ¥ò¹\u001c€²!D¸NCɖóÜoæo¡:\u000b\u0007\u0001¼À^]ó£‘ý5\"Úðê®ÍTŽ×~é3̹Í2_£P«+®Um²ª\u001c\u001b\u001f\u0004+ñï}U\u0002èf\u0013JçՓ!k\u001aÓªˆ= µ\f„´TB˜Â–ú²\u001d\u0010‡Ý¢\u0014\u0014XØ\"[\u001af\u0015e]\u0005Â4-±POm˜þ¿UmBåQ¨âÆx×®Ji\"þçCîT\u0002\u0005\u0005„ƒjw\u000bñm¤³Ð}ª#-[h®\u0015A‚-&Kß,[Î\u001dâ(S$w5•²ÕA-@ð;xoõ_8–xwd\u001d\u001cZº,×7E\u000b–_‡…ÂbD›f‡ÿó24NîkºI=}›½–ú@:÷‘TÝ°\u001e5!\u0003aM¼3\u0002Â\u00132Ø]ì›Z¦$\u001a5qíq:±‰¡\u0007G4Û³±]à9®øÍÑüÇkÿP°N[l½îü\u00031ÅTBˆN»¨.\u0007ӕ¾\u001eO:\u001f\u0003i‰ñȔæIí4\u0011«Þ‚û\"Ïӟ, ‰\u0015”‹–ßÈdExEq‰³´[-äý'Žiwo½€\u0019ÙÕå4!ˆ3arš\u0006'\u0004ù\tݪä\u0005¶$QËʲ\u0014ýGaD\u0010KWX3%΀–z/0T\u0015âz‹\u000bPŽµ·À̈‰üüãÑõåÙ®Óú†A×t\u0006iíˆ\u001c/?ˁQË\u001fÌe\u0002ÃU\u000ec\u001dÛ%\"…yµ$á¿5á•Øó•Ø‰4’ªpýa8ë»h×LihEg|·g†nGHrª¿å\u001e ؖ\t¨A¹¯°R“ÑQ$œQ´1\\‰ŠÖ\u0007soþ£u®Ña˜Nz\u0006t^v\u000bÚº·!ëþz–\u0019¬\u0019ä%?\u0013ãß=}Ð¨­A_\u0003ßÁ5-äÁ4ÿ-äÁ4\u0003)\u0005o–\u0004~×F6˜©ð\u0002.\u0016œ\u0019ٞB=M\u001a’U3§Ž&ù÷̕6äšÙüÑÐ_ò(Y£ôá´ÿ´ºÿ„¯¹×҃UÂþ±y£E\u001c|žãÝ&‡’wW/\u0010{ªRЦ«ãKINmÄNB1ZtÈ\u000biµ˜úp\u001bƉ¶g‰Â\u0010\fKš]d÷£¾\n\u0003ôQÕ\u001et¸¦Í\u000eÇÛ\u000eÇCœÙw¸Ö;×IŠTòŠT–´—diM\b„iMo\\\u001e|̍\u0006F\biÜ'WҒ«H'WýWd_d§fFda= ÉžÎü\u001böóTºbf‚@ŸÚñ—®í‡gPíéƍ\u001dÄìo†\u0006cn˜¶iÆsHxãÆ\u0012ffiHx%°rKªÁG߇†ŒJªof\u0001_ 7VÖ_Jªš†ìYÖÿéƂK\u001a= ×“qZ»ç¶ø®\u001b“£µ³±PL\u001cJj’ŠÏ_Ö\u0016—x1= Þ\u0011ÁD\u001eïðÆ0L™-‹\u000eÑ(¬´Ð\u0014Ûåä4B;%Î4~Ü̾\u0011±•“\u0015Ö\u0000õ·= É0èÔRüvˍ®˜æw屪3üA2gÐ=}æ\u000e\u0000”…_òrÔ»ŸÒý±\u0007õræ‰p ÁóC\u0005,/|O\\·\"qh'<\u001c\u00148yl¯lÚ\u0014·ëyŸëi\t,ôÖ½Æb—¸æþÎ(\u001c—\"–O×ñ\u0011 6m\u001d \u000flj–i¢—¡ŒÝI©ËÁKҗý\u0000\u0017–ãôOTˆ8_ùãFF'5Q\u0016=}’GfÄ_ÉÒßmÕrkù€öpj÷þ7藋ÞhsþMH\u001b~ôŒVÏ]’\u001eg\fûËÝg¼RÁ í\u0007½Ç®c•\u0005zÀ§Ùhê§ Ü\u0010$É>\u001f%{ísªß½\"N™vxOhŒ\u0002–-aQÖkRì\u0003lr\u001et,•‹Øº\t¶\u001b’ê„j\u0010³Ç(rZgIÙ\u001f\u0006ª\u001cyߋl‰È\u000bq\u001döÓOy£\u0002èdO¿‡ÉWFW dœÀlU׊\u0017\u001b\u000eÚÚy¶ÞMÉ\u0010\u0012–ß/qyë|Z\u0005x\f2\f\u0006Ø^<ôvX¯[h;²*¤¡‚\u0010€×jRÊZÑދÖÚôNœbš?‰¤$à= #=M;öoDZQŞM\nÒôE«§Ê\u0019«ûq¦3Á…’Œ\u0007¢Œ,•\u0001\u0012Ä/E>´~\u0006؂xL‹\u0014ÿl'ˆ¢g!*\u0017 xþVwd¬nù“Ö€s°¹w¢ÖÏ\u001aè\u0007s”hϔh ÏŒ€µüཬ}‘¦±YÍ¡\b\u000ehdÎ= \u0013Ó\u000e\u0010Zu¦aò!EHU:ø$ç¹vç¾ñ¼øÚoñ¥5<…mMÑ\u0002Þcád\u0011ՓX\u001eÊŵjm;#—Á\u001ab£mUâÅ&Z(ꁯ•= \u000b¿#dr²Üän\b*(BŠö(æ\u001cQ‚<0XÕ©;bÕðt6n1bÕ\u0002”76;RÕê<ÀjŠL€Úiɤ\u0016Ã\u000e\bÒO;£ˆØ±\u0014ŠïÏÈϐY¹lԯ誨•YQl4É{ÆùyO™î!Z\u0010œøOÁeÓ/¸¦À\\\u0010w\u0019+\u0006º\u0014JßtÞf\u0019+Î/¼µÉûƒ«3~ßo\u000f\u0012â\u0012ZªlUÙ\u001cÎÇ\t)¯'¶h”£=M§”T\u0019Ç\tzZ©T-IÍ/Þ\tb\u001c)¸Šò\fÎ=M\fÎÁW·r¡šp2½ÍŒ¬h\u001e¨&\u000bU\u0002>wuÄ\u0012Ñ5¿oÕ±A5SYwk÷],²þÚ\u0006]¼¥ãeËÿsÕo.ƒJãS\bg’ëv\u0001P¹’ë‰ÄZ”m\n\u001f]X3\nü\u0000Ì3¨\u0002+8ì\u0014\u0001L\\Z\u0010\u0011LxžšîZµPKõ!.ƒøººë͘<\u0016²qU¿\u000eÁd8wU6\u0018s½\u000bLAÆ\u0011D֐ÙюH›ŒX•\bwuÄ\u0012Ñ5¿oq³E\u0014㍺ôé»ðæÑ!Ò.š§xËßñº\\ñéO@ƒd\u0001C~\u0010© x£\fú©\u0000Я\u0015:÷ޔß$Ñ/Ò/A¨ÀȶgÁÂÇd¥®Õ\u0015Û\u000b8Eaѳü\u0007ˆïrZ\u0005|\\ \u0005—‹ç›\u00124 \u001c³õ]L´K\u000eŒæ·+!r¢—\"›c+’?âŒ{Hñ¶×C\u0006)²Y…Oy§òiwª+£Ücø\u0010\u0011aÂ@Ä2Zð\u0010žJ“—#\u001efùx\u001eÏÀ= bdôÙt—w^\u000en\u001a\u0004yL\u001fàw&n­ ¼/\u0002‘At£¼/r0°LLy\u001cèéÁxèd¯­&Nn¼¦Òøumc©ùä÷ÈÒ+©\f,×qZ- \u0011i9VÑùô~5Ñ9·7òqtA(Ø\u000b±<ГhÅðb¯*±\t¨‹\u0004Ì\\@—Q™³§À\u0017\u0019áç.߬\u001d¨îµ¼s\u0012\u0016¬\u001dTŒ84\u0001ܾéôû\u0005ê±Óü~‡ÑÙÕ\u001f¨ŽÀù\u000bÖ;¬Ñ\u001f])\\µ\u0014¡½%(3¹\u001d<\\±VI'Öm\u000bĨ5<\u000f¾+¯Mÿ¥\u0019cÖõ[RæþöÉy\tùÖü-uu{äø!$j?k\u001f\u0000–r:\"´K‡0± [§\\¼ð$\u0007\u000ft¼tx‡Øÿ$çX=}†Øâ“X\u0004ãáâ)!D\u001fªåµ­\u0014l­>\\\u0014lǵÁ­Ùƒ\u0004›­Ùе?\u001fjÕ»OÝ°C\u0014uëôuÃë±í*šhƒIƒ½‚©¥\fƒ\u0000€!dápˆ\u001bL²Ü\u000bQËÿýæö!KU\u0015\u001e=}¹\u001e\u0010Œ\ni\u0006öÒ³lz²á\u000fçáéÖ tûÍX·†™•×'w€\u0011\u001cÍéáûé­\u001aÕüåFÞI®{§ÚoÇÜی_5˜G'ë\u0017þF\"¸\u0006sÇe·ƒ7¿Ù\u0000—p&\u0019Ùػڡï\u0019ˆvíhȕügƒ›å°\u0019\u001c)+®VDõ\u001b=M 44÷×\u0005g#âu\t\u0017'Ê\u0004Ž6d42é+\u0011öñG~4”\u0014\to®H\u001eRÔ71Ží\u0014KÁHCÛÅ=}\u0010\u0005)Ú-’*o\u001b¹¥ƒŽ+~Ú½0æÇâÀUŠ\u001f¥=}ÌY³8þ”©\u0018\u001f\bš»Êr#QÜP‡âÇYm\u001c>F\u0010Å3P°u U\u0000Á#O<´¬\u0018\tÓæþ£ê0ÔÐÄ_ÞÎr~´ñ9\fr-Œ\u0007ö\u0005\u000bÖ]ÜKƯÅ-\u0018˜$q\u0002e\u000e‘¿†%Ñ=MØ\u0006¼\u0002¾è¤ˆ\u001c\u001b×<»êîi^ôüSÂ\u0007ςÄgaiY7TÍ\u0010ÓÖ©Û~4YÙ\u0016M\bɎï»Ý\u0000;¸\u0012«fDF*i!J“Gp\u001aˁÀÆ6¤øhœ¯ÿseqø÷hyègZ¼\u0000|?‡´a³Í|«q³àŠ,:rÆnˆÁ\"ҁ\tÓ Ö‹u|sŒ›\u001e{š!çԞƒ”ža ÆЋ\u0007\u0017V’:Tzæ&ËèBâ“ßæÞíóža\u000bR²ÒcöÌx|hÕ«t*q«?c\u0010\u0010\u0011¡®\fa•Ù´Ñ“\u001aD\u0014’\ná﯑˖\u0002(å(Àg ‹Í\u0010\u0018þ~·6õNx“QÔXTmN-JÕ¼/ãtÃ\u0002‘e5\u0018íz3ÀB•x#)Ő\u0019\u0004uEQ’=}+ÅO/qB)ë³äÈù~»¨.Ý_%¹ãn\u001dlj±Rm±Rá\u0004âRបÌûxâp\f\u0017÷(Õff$I\n×sé©F\u001dEYdÚÃh¤aʜ\n!È6\u0010ÎémG-&£õF8ÀtÀ¯9¤ GàÎ\u0014G²¢uñ™-kÉ#ɟs/tx¼M»Ücgòè\u0005-ïÆdÆP\f«p›¶æ«OŠ°© \u0002¡lûÄñu\u0007iœvÖÒ\u0006êY\u0015s´\"\u0005r„ºv\bÍ3Må‡=MŸº\u0017øC<\u0019Ó/äfô¡ÛÏ$r‚ëy!ÝêÉõ„çež6¹É¹€3\u0004ä\u0019WOë\u0006<[\b\u0015gµ»¡\u000e˜\u0000ðˆGõ\u00160”Sú…'¿„);¤¢\u0014Ub‚ò ªmðÀYs:(<à\\¶¬£÷zü{\u0018‡\t¯\u0003ûi%€ÖUÌi%\b¯:ïbÙôkò¬Ü&”µ+i\u0003ràWKn\u001f\fÇòJ­ØÅ/Çr=MIŸ4¼Mø–´—D‘TÆmaMøèÝä)³AG6hæ¥ÐE&“Ì7Z\u0003Üý'ûfë2•eÜÔ+Ó.-!¦ÿÛ\u0015:Alž\"ù‰H(\u0018‘6•ãû˜ò­\u0003É\\šzKœããžÓ‡{^\u0002þ¶?„š”ð'ô\u0005tÏØQnY´½h£Ïˆ&\u001b@Ž®RîB¾Âæîµÿ'NÓj\u0000ÐÖ>ßÚ½S\u0000•\u001f}¦Eƒ\t©M²õ¯¥ÿei˜œ\u0004þžÊ)O€æ!-ÓÔ«ô\u0001“Á9Ä7¼ ¹»ìÉ'bÜN­É…–M—\tu¥\u0000H½\u0011ú%ÛIYüàM¡Zª\u0012CÔ*ãõ\"uÚ#›ü&‹*ûõøÀÍ9\u0017åþLch×\foߚ˜u%\u0005\u001a\u000b»toíµÆ¿“W;îɎFØ¿u‡«Z^\u001eÈVêßKaϔŽ3\buD;ÅA½E+5E45›­©»]D\u001cU¥D}E6ÅB\u001d…?a\u0012ÀÓN7bNJ=}çºèÐ\u0003Á\u0004\u001a\u00109?…’FÎ\u0015˜‚±\"§¡\u001b| \"\u0011°M/¡\u0018²ƒx}½v¡ö \u0002ou)^l[UEvã\\\u000b\u0007iàƒÜñè…\u001e\u0007c̒žó8(=}Ó\u0014Xºk\u0001éÈ=Mî¢|¾ðܕÖz¢â9>˜ïƒžŠO7¢½®Žäuû3÷õ.¶&ï¥ëhv\u0001TYúÞ©H²'\"Æf\u001a,'Ž\u000eºR.?0ÇG֙uÎÔwò7M\u0014’T‡@@¿.ìkͬ\u0005À\t±t’\u001aߓ†[=MÁ¥T#/ó¢/'*DZ\u0001ÎÕã°Øð–Mÿ\u0014ÖçåKg·W&-+\u0007*\u0011h¶\u0004\u0012ù®Y\u000e¾ˆv3ÙÖoɁžï*\u0017:³¦L¾\u001f\u0007šm‹2Îÿ×FtÓ®)v(šj¾f\u0012°V³‹ž1^€\u001cç[û\u001d|l\"H&›Ù«e°ëYl?„\núHa\u001fÄkÖj\u0019Ticv¬\u0006ίV=M÷¡#yT?‚_}U\u0002z£CÄ¢Å\u0018™ié(\u0018‡UށX—7\u0004û?ç¿|~cx°\u001cêF\u000fXO%k8Ìð\u001ckqjðt7\u0010¿no­ú‘“*?°Ûù•¤[/Œz€ åþ= v\u001d\u000eR¹Ÿ˜þŒéN3åŸD‹Êø&ÿÆe†•\u0001Ô\u000f[[ϊ}X‰È”o 4\u001e•¾Ñ‰5•*¾\u0019‹ÔZ\u00004\u0010X©(¯¶:¶çàFAÝçB#¹žÓ\u0017=M$r¶Ö\u00051ü]ã:ÂÇÇF>óÊæ\u0004d\u0004¹Tµr­\u0005§öŔ=M\u001c±-[õÃï!9\u0016\u0012a€4\u0001¯RëeŠÃo\u00045»\u0007\u001fà|õ\\\u0013šŠ{Û=}f5yf\u0015\u0000Ò1ÅގœÔ?{Ýò¢ø\u0014ŒÇïó\u0016R/ó=}¸¿$ð\u0002o+æ¨dˆ\u0010\u0001.¢[Àž€]v\u0012Ĭ>ß\u0010UHe\u0018ô~Ó׳„beoe™c\u001aâÑÛ~|ÊP\u0013Ôߎ\u000eb5Ý39dìeÆ\u0003á]3“«t]Ãǎ¸..±¾À\u0018Ò­@¿n¡TiEx\u0018œ\tv¶Ã¿î\u0019Šeˆd®\u0014\u000bܛ\tQŽ†g=M’–GžÙ[Ø \u0005\u0017œ¤jñÒH®ŽFjeÊl/÷š\u0000S\u000f&ŽÆ¾éx\u0000Ä ÆK“dóöd@A[óöþ=M\u001aw„p„„\u0006Øk€/9?\u0004‚/€ÆÍ\u0007{֘¹œ,/èAVKqD-bì~/­\u001e\u001e>Þ6Ó\u001dÙÒ|>×I×\b\u0017{ºc(ê+\u001b»\u000e ¹À\"wÓô‰À–•¾Ñg3¢M…¸cú¦\b¢þT¤£M\u0019ÿT¤£M…¸c’-€ÖŽ©Ú’\\B&€Ž\u0010.a¦€\u001d\u0007¦°c\u0001T®ž-–ÿ\u0007ç¸qT[@\"F!¨ÌHü\\\u0017ÿøAÂj8~‚±\u0015vÛ9—okf5IŸ\u00035—“A@ì“=M×ÂÈÒ\u0010åÒµ˜~Löa÷MMξjÅã$\u001d>\\Õ*Տä!Œ8\"Î*Ó3j\u0005\u0014ýa¡ŽÄ·a\u000fuԎ$\"”8aÂ\u0001ÿ‡Ø8\u001dï4€\"a!OÅÙµµ²';\u0011!¾C8Î*UüÙB“\u0004C¦Q\u000fý׺Š8\u00133jÅѵµ´g?>|ØÕՎ\u0004ûã*k\u0004\u0003ûË*™q\u0006Ó'çÂta$w\u0000°GJt\u0007„H¦¢…YÚ£?‡è\"ûÏ\u0002¸kÀ×F-ö*Ìè@¾ÿ>b\tkl¾—›Ò…$¯Y\u0011Ð}†jK–\u0004Ÿ“~\fhÙ\u0010\u0018_«<\\\u0002™/¤\u0001*8ê@\nÜ)R\u0001_¬Køe>\u001e)é(i-i_{=}£\u000f)zÌ\u0012Šx\u001b>a\u0014„CNÄmeÑPò³ûR ’ÒµU\u001fØÀ¬Úȳ>|±¾$:6%wqNuà›Rom\u0010½MÚݜ—¤¤‰×¸è¢e–¤Ÿ‹¿»S‹\u0010Ï8 Ƹ©[+,€\u0010ÓT+ÓG+Mñnµô玗$= –´óè\u0002\u0003Ìh+£¥Un…¤‹?\u000f= ÐÚY+ÕÎ\b\u00046FÎ\u0002Z…Bý\fÄ@¶D¢Ž&¢;Ä}>P\u001dU¤ƒ\\=M\u0002Uˆ#@’â\u001aÿá\u0018ê¶Ø_yÉ$\u000b)€ ÝbfNÍ\t˜dπÝ\"‚²”m´\u0002YÖ·\u0014£>\nž-;¼kG\u0019\u0019\u0000ÁȋW\u0007zÄ·c)g\u000b\u0016Amíae\u0005ym\u001f&SGQŠ!åmyÎFëÀ[\u0003\u0016\u0006hÜEE°Ô\u000eárš\u0006GÔ6m(¸\f’¥Ï_pw‰k¬¡kÙ\u0004XjË*!>dɂEŠŽÉÍÕ\u001cÊ¿\\\u000fÈÚ¶²+?ÊŸkŒ\u0016Xe‚!Iö/¹s÷Sö\u0011 #l%%lÅ\u0000ßey–t7ôí\túã\u000e³»\u0002¿“\u0001Þ\u0004\"tô¤\u0004¢ÛX€\u0003£á#£û_Ç[üÿ’g„\nó\u0001Ü);Q\u000fqí;Ὢ2T\n,RºÞc!= \u001a^RöËUšÓ[°A'†=}eå¤Lo\u001aڀå\u0016‡iRƲᦑ%ä²O\u0012&Çê·MìÑ]¶Yö“ñMÕ.c8qQì;\u001eÂKƒ˜íC•\u0001\u0018¹uNè?…w>èHû×Óáüµá«±f= ;¬%|;¨š¾‘Pmrbx%Ø\u0012ƒ¬t *× <)³ðœ­h)\u0013 ©Qê%xš×´¸>\u00166\u0010-9ÜåïCÿê{Í%¡Çr'Çr¤AÑüõ¿¡7½=M\u000bÁa\u000bu#ÿ>+·7÷Ó(1)¨ýœò,.ÛwŠ\u0000S(›ˆzÆei\u001cmÇ\u001eº\u001f t¡õ\u0018ŠP\u0000\\Þ8þÜ)í\u0002VV¼\u0003§¡ÉFì§õ žŸIO¸d]O\u0013Ö3 @OÜ褏|M›\u00061\u0003|\u0019ç\u0002|õ„\u0007~쌮˄›U\u0015½B‹\u0004\"\u001dž\u0002«\u0007Όu_Ëø\u0001OºWz$ƒ\u0003·3×%D\u0002Ã\u0019÷\u0001%¶24ᖛ%.~÷H1°\u0019!Jç9\u000f\u0004E=M%E)*qî¢XÁÝðcxFrgjž£¾ø ïS¹S¸ÉWnӉº²Çꅺ--ÈÐܘ\fŸ†@=Mþ5cy\u0002\u001a\u001bž(,¦´_ìå\t\u0002m\u0005\u0001gOŽ+çíØÍÎeqKm¼Y{Õ\u0010DiÉô Ìgø}žÎ@Ü%ïèŽvþ‹T\u0005Ïý|\"Xˆhsñ\u001c–ï\u0016\u0001y2L3‰Í-•ƒ€„<ç\u0019„\u0002'\fÃ..­«CÈSÃ\u0010û<\u0016\u0007£\u001eV€—í#\u000eÌ>ð«Á\t®.fn)™dšßèÝ\u0010§tL|rçéF<æ:y3HÌâÌPm‹B\u0002¨zÊ5,“Ä÷7@éj\u000e™\u001dß5*û‹Qu\u000f¤ƒù\"9:\u0010ªØÊ_ˆEÚh=}\b)\u000fãÑNՂ¸‹\u0007‘ifžÁ@\u0006û7_ã\u0019-ìfíìp-ô:öò/¼>·Y]Ùry;{ÈM´ã\u0018\u0002í±eì\u001a®¬D\u001e¦œ±]…³ÑÝ~¡“ÛÃ\u00100Âc5\u0011òÛg¹üÜÏãÃ:ضÙ1-~¬³k\u0005Ƴ=}ô0—^bï(\u0000;áQ™>¿ÁVHÕR(´öÄB+(m«‹*bw“:ªPP ß®= ÄêÑ÷·Î·€ë5E-\"\u001eûxŽ©D\u001f%\u0011ª­â\u0012J/™äç‰y·å^–x\u000f¸©}ÛòlqªyÍ\u001dèé蔉PºA— yi)\u000bü\u001cÚ±ßbI΅͈a›ôzÐ$z^R?øAf€\u001dÉÕ×\u000f\u001e\f&\u001fÑyŠø¬a\u0003®ÈœyQž.SŶ/!\u0015°õû\u001aÔp&naýêEÕè4®å¥ïے×\u000eæN”GÑ4&Hö‰BÐô/‚ÖÆ †\\\u001a{tŠ=M\u0017Þ¦~۔jÀÇ#zP\u001bÖWF\f5ìÜ0‚\u0001ÛçŽy:ð^õ€eÿŠÿŠ%ð\u001f\u000e+¯Ò¼’))\u0012Ò:v•-\u0007¨äüC‚C(\u001e<:ôNíLw\u000b\u001fî»wjV>P‰ÓÏ\u00103Ûëuj¿¥4!/øs/\u0003RtÛÏ&D\u0019\u000f\u00033u\u0012\u001968\u0003\n‹tÅgÿ½abÑõü<¯èB_‡}Ê£îö­h2(æßG!\u0011tÀÞcê8n0ß\\˜\u001et\u0012Æwaʓ>³\bÔs±\n\u0015…TÏ(¾Ð2§{y€º³‹·5ïåX¬ð\u0013v~ˆ,öä\u0013ÈhuoªePÐ\u0002‘\u0013¦bŠ*ùS×µ§oSù»§}ù×Z¬çêZP†­3ä\u0002í3¤—]°¿nÉzZʅe¬ÚGçÿP¯RÊÃB÷¾ÆuT5bWZ*ܼ*—òÃ\u0015žMùT‹ã\u0014\u0013.A.i+n\u001f>þM¡|ô\u000bfþM­‹Ù³¶Ê©Wâÿy>v»d…D\"#£\u001a©hC¯ñ\u0002¹|6@“Ï[\u0011HZôI™†1OX.ò—W¹\u0005„ëÿA;vÛõyÛEВ+!ßøI™é\u0002°‘$÷s¿Á¡84aÀNôì1a߼Ӓ©iKž=}×7WX¯ÚË?ü)ÏϙK];ºtÒt³Aµ\u0003½ì%.’­Ž©µÛŒâlvfKª|àr<ùÌÁ%|¢\bcâ^’Ã\u0006\u000bæÜ m\u000e0·qÛ\u001c\u0019ý|¢ö¹ŽªC‡¥S= 6Jµµˆ@Ãq[•åP¯ú\u001cŒ“-\u001cm\u0017áM¦‹y¸,\u001d\u0004Wç-º]ŸÜ¾Àë™fhdÖ8ƒ4&®p\u0006Ëæ‡(\nT]]YÃRIp–3͗õ‰¤§ËîqŸ\u0007a\u0018›\\ZV\u001f:¦XYQ/øbÑ«V$ÑÊO\u0002”XÙ\"ÿs#œÔ=Mï¹\bÊ\u0017´L¯Iû§ß\taT\u0018!„\"íi\u0017–È\u0004C6Üĉ\u001a±é½“\u0018\u0013Ä~\u0017gVC\u0012\u0017¦ ›aªe¶\"ä=M•»f\u0013\u0007‘O¿KÍ\u0003:\u001dåƒ1šÕƒU\u0004º‰Ü\u0003„ÛŽRâX¡:GGÁŽ\u0004òT_ ­¼RX*\u0007e.rÅØ\u0002Ÿî§RÅßg*Ô\b¥ÈSÈcÇ[²+ý<ˆªZEø£6ñшóè ÙÐ\u0019žFé%^%ˆ&Öj\u0017¢|È\u0017vØYüЦÍ\u0017÷Àì\u0003\u001eÒ\u0006$»¡\"\u000f\u001eÎÓF$£úG)¶\u0001ú—w¾Z‰>\u0014ôÊ5Œƒ,È)E©O\u0015©\u0018E‘CªoÀŽ­qpà\u001b\t”“O~nàÑ#'JÈêæ®äÐÜÌZÐ\f\u0015鋋¹—\u0017Bž\u0017(\u0001hŒJ\u0003\u0014s³Í>5Z…î ¶ÙÁÎ!Î8è¿ÓÙ\u000e»Ó\u001eúÎõ\u0014_xÇô!0r²ª\u000eee\u000b]vˆÀ«\u000eO¿Eחž)o\u000f†¦\u0019F\b6ÏRJÈÞ\u0011oJÜ/å\f\u000e'Օ{T\u0003\b{_4\u0007ó‹Ð³MûfZ’\u000b{b×Bö\u0006Sÿo<=}%€Ëï¨\u000bL”…ãžç3õ{yž\tã\n\u000eå=}üA‘\u0001T\u0004k 6Ĥ t?ØOùñà©\u0000âÞG¿\u0014P#ª\u001d= T5>ïe\u001d4Î-ê[\tLí\u001fjå\u0014Ððð\u0010ʺw\"…v9XÂÝQ,\u001b¯A(\u0005Ž\u0011ø•\u0003:嬫\u0017íäÅýn­Ã0\u001c‰+ºn@ùê\u0012A\u001a…\u0005¯\u0010\u000fF>Aì\u0012L\u000eE³\u0010ú•\u0003CÔsC–<\u0005²/Ì\u001aŕ͆%vØ\u00130‚=Mt›aM\bïÒ­¡.w;…\u0013ÿãI\u000fq\\\u0018]#ÿ0\u000bó|¿zT\núCf¥\f\u0001sœ\u0011§·]\u0014k\f]ó\u001bùAóéë_vš\n= ³\u001bþpÜ݅1pRL¯\u0017U\u0017[ž\u001aB9至¤a\u0012ða£ÛéÝlßßæåê‡ w#ì\u0007ñÜ÷@˜d\b‘ë\u0001…3÷ Æ냃t\u001fÌ æ8Uwgé¸â&Ò= ®þáa¯= \u0002\u0002®7A£ñm«™\nX\u0010v\u000b\u0017;ÀÔ~\u0001‚m±\u0007é–ÔÈJOiMl&f\u0018j’fDâ¸\u0006×a4|6©&\u0015)–ùƒ\u001a=}¡\bÎTåflì{^.¸µòzÊÂuܜnû \u0000\u0019ÝÄV‘¹Ú€sã:ëe\f˜Õ˜õëôuC¿rûn“û\u001aæ:\b§\u0003ÕAjnýàý³ÌaÈ\u000b1˜x+; ·\u0011ƒ\u0013ðüëÃdùW®†ÅÓâ迃2¥\u000e¤>Ôæè‰áÂÔV­˜ò\u0017¶ã:è*¼€\u000f“\tTk]\u001c\u000f\u0001!×u\u001aéZ¤ÑvUAž@àg:V˜6Ã\u0006#€\u001b2¥~B±= $Vykcj.öþ¼³Uož\u0012ˆ'tàuh@9\u0019ë\u001cTŸ-ˆbë—÷,ú\u0000;T[Q\bó\u0011þ_\u0010\u0001à/Ž÷\u0018‡÷8Öé|!Ï=M´n\\žz€lµé¦Ù<Ùý\u0017to ÿÓ°\u0017ŠÐî›(M¿\u000f¶ð ¶¨Ð<öü—íR»\u0010úï\u0006F‹-J°\u0013þŸtê± Ip÷¡·›=}0«\u0007âæm¹þ­÷Œ\b¼ØϘ\u0017q\u0013ÏSëg»\u0001ã€5g½ìô2ý0¶\u000f¯\u0014¦_>±\u001c[]cz\u001b[ n\u001bۊ¤éÿ=MwŒ›= ð’e¤kq~©Ló\u00143:\u001e™’\u0002NڊíÐ.µŒºÕµ¹q(áíàzh ëè“ë\u0016h\f\u001fžÞ-ԍ*ßë\u0014ýç>Îb»¼\u0003®‘~R¡>\u0010ÄK\u0004†,¦§Yñ4'Aّ\u0016¿\u0002\u0014*sxƒ’»aR!~ãlbÃÞ]= \u0011\\º¬Y7¯¢Nïm4‚\u0002¦ÍeÑeÉåj* ¡À\u0006&¼\u0015€\u001d\u001e•³‰oÕìÒÝ\u0010¦Îû= Vd™hÌGŒ\"¹˜R\u0012Ÿ\u0018,bäĀ\u001côZ Û´\u0019t¡6*/•S)^\u0016roœÍtË\fG\u001c†ÚØÚ-\u0015¹\u0016¿\u0015zܱC\u001d\u000b̄m„2úz#\"Ñ’ٓ}—„xýqÆ#¦NLËî^ތí\u001fQ\u000f= \u0006A¿JŽ‰@Œh6jø.t=M^†ãT\u0004•§à5œà%W\t?Äîð‚\fH‡7Ü\u0019G½…¢W6fåúœ;Ý\u001aúsvÞp£^ŽÃï4§VÎ%˜k®JØÄ-\u001bŒˆ±a—…\u0019r~…Tm«P\u001bÁ96X—V“¢\nñ_+]I<àÜmiµ¤¨åå= !I¢+ÔL’n\u0003g=}“!}‘cÄÏ0¤½ŒEñ \u0013ä½Ô}&éû¸:°(¤mÜÜ©Ÿ\b Ó#¶>]ÓÝ\\€isÒ:Ê\u0011Ýìê\u000eÏ= 3\u0017QK\u001dí\u0011 \u001f-ˆ \u001c€r›Ï\t‡ý·’…óSà\n\\5ó™>“VÎK\u0019c†ŽGÖXæVÝ\u0007£v@\u000bâ\u001d¥þÖ\u000e\u0011óŠ\u0004T7\u001föE½\b­å³v½™3bð\b´Ù‰¥½‡½´\u00054\u001d„2Åõ\u0014©&~^*ÍbS¦6ʎw40æÁß\u001dNosÄЍ7÷Ô\u0007øS3\u0011!µ\u00192f$3:HI>'ͧtÕX\u001b~÷}”Ê·(\u0012~÷…”âÑÏ_<(­\u0017ˆ+= 7VLÁdh^ò\u0019r|Ô¥#xaƒÎ\u000fÒ\u0003|ؤv\u0002ˆŸ(ùlytV’ýS\u001bKÈf^_~2ÜñÀ‹‹å˜«\u0017ǎ\u0013n­îp²­\u000eULÇÕN{K*dPÇ\u001b¾«†\u0013~ÝR&?¼‚màÙ¥yv\bÔ827ª™•0Û\u0006 \u000bô\u001d3®rÜ\t@îْ,R%ó/lš³egɓ$_\u0012A\u001a¢Ë\u0004#¿¨«²ÿ\u001b÷+Gøíˆ4ܜY= \u001fõ<ž/\fÎ*¬¾”ýù~ãö8ûÔ*øsðAÙÀ]0{ßémZ\u001eÕ*\u001bÕ@= w”ÅD<\u00188^\u0006Õ\u001bQ.€\u0001\u001c<ýlpàR9Ë\u0000÷Þ)˄kÎ\u001aö1˜\u000e¤QÄ\u0010~\nŸ’K· ¢Š/œðú—ý‰|€&\u0010õ«>\u001c\u0018\u0017\\Šoš\u001b2\u00062¿fñ6ÿÃ&/‚’Œ\u001c\u0005ßW\u0013¥I\"òƒRDðÂEI1í¨‚ÿj¡lÝþ\u0004\u0014‘ÓfŒ.Ót¬Y\u0013\f*|&‰ß\u0017]ä¡\u001d݀³ üelHå9>5òûÕÇ\u00006UÏøSPx0ªú>'0¾].\u0015oÏKs½b\u0012Qˆ}¹\u001e†ée_)]n‘’À.¤j\u0005\bN6Èɯgi“\u0005HÌhÿ(›\u000b\u001fªò¤â•mM{¬Þs¯_}\bIÙ'\tXÔeÜ\u0006?PO\u0016\u001bA³èü\u00199Ö\u0012Éð\u0007îX!ì[†tB\u0014¹\u0015ŽqI$åÛ݃\u0002ÊC­t\u001e]äW›ã\u0017\u001a“æ{Ù&\u0000µ‘öàºû= \u000f\u001a6ñ)Ž£BT\tˆ0Õۀœ Å\\Arò±\n!y§¥ìáQ4ÿ­~+F\u0011¢\\jæÜ'ùH0ŒækÏSNfJ|]7\u0001éŸ\u0017\u001d²È\u001f å_W‡\u0006x3= -5ô·´›þA]\u0012Q\u0015:»t€ h=M‹^ý®\u0017û\u000eÍ\u000bp¬²\u0018¹¢²”€´\u0014¬óct '\u0001œ†\u0010”\u0000¦®’¶7ÁYÙ\u0018¼–\\os\u0016\\DÂé%ŒÛÓ —¼‹+ ×\u0003Ã×! jK\u00045}6\n\u0015\u0006!!x\u0006ñâ\u0017ܗq³wö4\u0016æWŸ:º#è™Ç\u0013{ÏE\u0014,Z4}í¶¥º1\u001dYâ\f]·= ½·= }€ÓãéMqò:\u0019~”ä\u0010zQÖ!•\"ù¦~\t¹Hû$ä-Z´œì¶%“'Kí6‹ÅŒ\t¯P™~™Q’'Ñ\u0017Z\u0014¨”'\\k\tZăädÒ¹~qjƒ%cÅ,6ãÄm/tí$Yãeî\u0003–SêW¬Á\u0018¨êô†\bLW8՚Gô”6”t56œ\u0000£€ôtÞpáaÔ°äã\nÈÚ%¼Ø­Ö\u001bϗ¤ôJ\">$\u0001\u0003’\ftS*8W¢= æÃrÝ,\n=Mº¯”BÿÿzmnÏ¿º¬,\t¸´í“î\"ö¨C½Õ­6µ\u0013˜cCc3_V=}úvOrR¸\u001bôøî¢qøýu¸!Ñ\u0002€ì§|ÂW_0xð%\u000b@õa\bQÅEÕ\u0001ñÎØ!Nè$›!i5\u0012¾^Ü\u0001-ßß?V¬¬¬äOy3{,Þ©”§€,\\¬¬¬¬¬òðôEÚ|\u000eÒÏ3%;˜Ã\u0017B܌x|‘\u0016h£·˜¯˜\u0018ò™\u001b;¶› £”Å\u001ceZßÛ\tm-\u0018Ð:¿Ýó\u0010Ô\t]\u0001h\u0017×ʛT‘b(WA{¬\u0010\b\näïy‰\u000f\u001fØ󤮑3ù²\u001f\u001ctú+|í¢\u0005\u0016Œ\u001an \u0010Ëü\u001eÜÊ»®2Å»(–t\f“ÜŸ\nxi¡*kæ˜Ý\u000b•\u000f«Ä_d$﹀ÿ²5.>]0ésC#ñåìë7Idďêæ\u00057¼pfLq÷é+˜,Ù9†\u0014,·4\u0011 ÈäV©Å¶ín\u0015°ª+\u000fÔú*\u000b³Ýmž$¼KÈc\u0014¸‹È͌û£Ï6w\bx'™Ê[\b-NñÊuW\u001cN¥iòY\u0004‹\u001efÂÕö>W§e'­ÊCÊ¥WTVč~Ž>Y'V'µÊ\tÊÅW ÿsú3bí\u001e¼)+\u000fõ*ƒ\u001d<ŁĢû˜t[Q)8ÿ²\u0015\u001e~y\f¡Ï°\u001c€±š«?Ÿ©Íµ\u001eøG½ŸÍ\u001c„\u0019\tGÃW.çƄU:¦†½†UJ:_æAI@Z\u0016ÃGÃH.¬†eI\u0000W\u0016ÆôM:gæ±GÃF.°†5I\u0000X\u0016ÁÆtM:tæ‘G\u0003I.¨†uM£N.\u000bæ9Gƒeº2¯ÀÛ8BüÄ|ᄩÙa\n:TÍ\u0019W”ܶx\b7Xԍ®kúNMjb†\u001eÚöÏöp§[§—\bh\bâÊÊ÷Êwˆiç‡~ðÉÀBf_…¤šðÓ²\u0015\u000b£QíAòT\u0000\u0017\u0012©C'p1gý¼\u001d\u000e\fÄ\u0007¨éOxR\f+_¨Ö*¢×ç.˜Îq‘¿ôh‹\u0001pÉ»{W\u000e\u001b‹|\u001dμ†Ä“ü©!:1‰\u000bò½î/«´–·£p°Ó!ð®Û!p­Ë!ð«ß!pªÏ!ð¨×!p§Ç!ð¥ä ×\u0013\u0016\u0005j”q d˜˜Ú.$Šv’½\u0013ŠÖ„uŽåPH[î¡àú'j€³§·\u0000¿!/\u0007\u001cøW{*îÁ0pM0Q\u0011$‚ë(Jü·ýÉê\u001aÌuûçëè\u0004¶³µ\u0014{Òé\t®Åž\u000e¾Î}\u0010\u0017go\u00010\u0011ô°\u001fîirµ1\"éÙh°\u0004Îà\\Ç\u0012\t;ûo=}\bw1ÿ]lkÚÃO«sGkï´Ïƒmõ(\u0019ñ®À\u000eoš»i²3¾“ÓŸ±‡;\u0010“2圛Úçg¡\u001a­\u001f話ØÂ\bb¶\u0017¬C*Jp¿ÇpVÀQ‹Ÿ±g:=Mãñ\u001b\u0006¶\u001b2\\ªXd\u001e\u0013Y.\u0006ô\"Û++\u000e.U\u0019'ô*ƒŒ÷ejøœ?Èúo®OV\f\u0005Ëjq\u0019é¨\u0019\u001aÚ0°:x¤õ’ è˪\u0003\u0017\u001bѲáزÐpœf™ruž\u0011GKºÍK\u000e愬ٍà\u0017-ðâ%Ä:qaµ\\±:¡Ì‚\u000fŽ&ü\u0000ó7´\u0011¾ý«\u0002!x0üÒ\u0000sé´\u0011î!x0üÒ\u0000sé´\u0011î!x0üÒ\u0000sé´\u0011î!x0üÒ\u0000sé´\u0011î!0ÿ\t\u0013§íküÑ=Mà½è÷;»ö£ßZ!˱bü±Ä=}›iÂ9äSþ\u0011Œ.@R\u0019\tGÃW.çƄU:¦†½†UJ:_æAI@Z\u0016ÃGÃH.¬†eI\u0000W\u0016ÆôM:gæ±GÃF.°†5I\u0000X\u0016ÁÆtM:tæ‘G\u0003I.¨†uM£N.\u000bæ9Gƒeú7ºql!ëå\u0013,\u0015®µäS¨@NÍ\u0019W”ܶx\b7Xԍ®kúNMjb†\u001eÚöÏöp§[§—\bh\bâÊÊ÷Êwˆiç‡~°J;>½ˆ'ëËŸ4àá¾m\f‰7·â•7£\f= ƒÞ\u000b\u0002ý\u0012ÜT\"bL),x\n´äê.,yZ#Ho=MsÚh#ho#s¬ö´Ï\u000e*Üо´_5À\u0017T\u000ez\tMnž\ntÛ»/N{\u0003&\u0011î\u0012tÛ½Oý›!\u000b\"œ§]·¡›£\u000e³ÛºGý›\u0015?\"œw-·¡Ûâ\u0011x$´-V\u0012lã 7_ƒ\bá˜ZÌ/´¿ð|VŠ\u0002^}ݹcÖ²Ñ1Z\u0007Ó³Xÿ˜Û‡ïçHáï°â1|\u000b\u001c× {“üÇsø$\u0001\u0019‚à\u001f–Ÿ˜[†§ë¡;$å UÐN\u001d(ì#©=M²\u000edá S\u0018Qø$˜ÁŸ°ìŽu\u001aÀ)2_6¹1l¹¶mlíag£0HC™Y¯óÚP²#LNÞp_€T« ]¯&5˜\u0018 \u000f«X5\u001aÙÞ\u0002Ž¸ØT녿úÑ\u0017A¹¸Ÿq»= >êd\u0002$Ì\u001ax¶¾\\9jœu›\t{+²Ö¹‘\u0012œØÜ\u0013ˆ\u0003†|ÉB\u001d¸@ö\\<€ÿÇ+Q¬\u0011\u0000\u001fç-á\u0013¥\\;£Ë¸\taÁ\u00039*\u0010÷$7¬œ·=M¡ò­+¨W¡\u000f*\\þ\\ÏüÝç\bï¥ÝinÀ‘\u001e:Ü\u0016ü\u000bX”<Ô¶|aˆ·Ó[µ]ñ°Y±°U1¨Q‰>_§å \u0005ÄûÃI°=}LOõkbh\u0002Ô¶Þ6Àˆ‘¾Içi\u0002߶‚'#ÊYN5g⎾e'j4å¶x=}•~ËAmâ\u0010CY”)DOí¹EÊyþÅ\bß\"Ž!\u0013È#Úaõ\u001c#´ì\u001f–‚z~\u0016%\u001d!²\u001a±ñúê|±Eé dØ^FèvN\u001dªã«²!\u0004¡²=}Ó-õ03½ÉÄîDt¼\u0005e\u0005s=M\tÂáúH\u0002^¡‰«>‡¤Èµ*‹>ˆ¤Æ•*¿>\u0006¸TòŠ\u0014ÈÛ\u000e_öXSœhí\u0006*~žÏbIq×é¦k¸JòŠTÉÛ\u000egöXNœhM\u0006ªežÏ2Kq׃¦køa\"™òɡ붓÷Tto\u001c\u0007\u000b€~ëžM=MZ1&Ö«m\u001eíÌE÷ã¯ûD\u0017Aè2pürýçæëm…\u0005´M\u0002^\f±ãy1¾,ª[¼Í\u0011‰\u0012\u0012:k'B‡Þ½'òùQ\tejðði!u\tÇ_Ÿ¾»s‘0ß¡›NO£JW\u000bí¶ý\u0003oÈL'´§d4LPï)·g\n\u0005´q\u0006́=  Óa¥m@mèQêu_êÚöHkÀ,ò·X¤¦˜²ð\u0010Ñè\u0017áÀ™úvæÆ5v¼»Y\u0003¡–‚.åÖ áùØY\u001cÞà6‘âsŒ\u0002uœpû0>˜Å\u0010\u0018\u000b‘\u0011„ÖÃÍÄê&Z³…ÛwØ(\u00117և\u001d֒énõÍ*;)IN\u001d®sêÑýԂX\u0003\u001dŠ=MqðøX½ò)oö†7n…G¸Ž\u001d®Ä®Üª9f>H\u0005ånbº›l–©fTy»…_\u0017ÜÿR¤Wµlò¯†5ŽÔ[òk•º}xr¿¸Üç_\u0001ŠQ)åŒ7äÎQ)'a\u000f–Þ\u001fVÖÀN다KŽ»sR·7V+\u0011¶%ø1=}\u0015þZ¨»…\u0001 \u0013ôð;ôÂ%â—)9«Íàò\u0016\n-lDE“BzÎ= }=}¯6(s‘\fÓ;†y—ÐÃózvO¨·òV_¸\u0000_ߪ´ö8Hýí\u001fр°¸†ö\u0000ch÷ç­ã?¡Ûtl\u001bֆý0´áÂ,L\u0012†ÄÞ߅AÄÂÜ*Ø{׬Ü,,L\bÔ\u001c\u0015_´=}ÙÏùs­Q\tŸoˆšr˜ò=MWT^,\b-tóà.\u000e MÊÓå7‚Í괗>–­¢\u0015HÏQ!Ûühî®ÒXÅó\u001dPÂf6ý\u0014\"ü\u001eô4\u0017­QlƒçP¹wÇӞ\u000eeŸ;Œv\u0015ªüR‚Ãvè\u0000÷æUlÈMŠÓrö6®ú)Ƴkéó\u0010Œ\u0015áûÝ\u001f.= Ùɧá¶lÖB*RÿõëlàGÚDf˘þp>æ?®Ø€v¨ý+ä•]'s݆<\u0013)ʾ¨\u0011\u0003\bމ;µ™Òtø”~³}= \u0014L#_¾a\u0003d-3§øÔÙØDØ8Õe|\u001bá\u0016Ü\u0010d§Ý^P_Øy@]…§:Ì!m1U÷Ân\u001fN\u001cíòÂöór’=M\u0012ì²=}¶Al3ݬBSª<ñõ½€\u0000ôÛè\u001bŸ\u0004.¯)T1ÁüÒD-P’\u0001|üí4w‹†À?\u0004¶\u0015„Èj\u0010„‚X#•\néýù\u0010íVP‡(U¼Ãsy\u0005šì\f™ì1á1Ÿ<û\u0010*aÛ³&ÄU—ØZÍUcÈS‘ïƒÖh¦ðG$Ðï[n¼ßp(wâ±a÷÷ÁÃ\u0005ª³Š9H?8 :ÌCG÷\u0013=M¤1Õ#×å!Ɵ©õg!ÒJºB÷IÃ\tämvèý¶iï\tʛ\u000bÕÚÇ.µ^“= x>Þ;óÁH¸w&CgezįXÝîÖ؟GÉGð\u0006¿2Ò¥ujï\u0016ßÚ= \u001e¥Ä5c“Øv5Ҋyõ…9I$ôO<\"½!\u0013tŽ.0Òô6ð­\u0001ߜFÄå\u0016\u0002^Íf&¨(ØZ\u0011\u001fj\nÎΜEV(\u001c7ö¾F76Á4“×,.xs)G\u0003(×Ô]8’e\u0001!\u000ef#«øøð.÷ª«ãJöª¢2#\u000e•JH©G\nc\"AÙ( û¶Š\u0000€(Ý\u0017L• ~vV• ½\u000f‚‚7a*¡¸ïŽ\u0011\u001dB?ƒÿD]–ý\u000e·\u001føp¡,mݪ—àÏï\u0013ÇŽ9¥ÕpUjB Õ\u0011r\u001f\u0016¨@!¾ÊË©èþ(\u001c؇ŽsÈ*Rffºû¹•)'ؼgâ‹G|m¹õëg2Û\u001dҐôڗ³\u0010¬M*Œ\u00198í\bc\u0000\"À= 4 ¥\u0005-£KçÀa(È3çœJ°ÊLïcZîKEcÀ̝\\†¥™æ³M{}!\u0016A¼J£1B\u0019Ÿ¢ÇÌßyÚâù#>¬M=}Äx™\u000bP\n\u0011›¥\"h\u0014üÖ\\\u0014ÿÖ\u001cýÈä\t®‹\\»¶\u000e2NȦ«­P£Îña)LGžë›VôÈ´~5ª€I7͠Îß)Wn‚´ö°\u0016]vjù‘¤\u00190—6Ï\u0000kxjÿ*„ϦuÏó%íóƒR»\u0011Q[¤œ—E.¢ž¹å\u0019ð8zÈÀ\u0006Švy@øÚu‰8+*m¾õ=}¸Û±¼ÊíÁq+ð\u0016]}â1À\tË´Å#€\u001fL'\tÂ8\nëÏUrÁ¬]Ü\u00183ÊVº^Ɛæ{ž\"X–н\u001d) k7œ¶›s1‚õ«\u0003—\u0016ø¬—Mî\u0014Ë*ß@XýF“ÀwðÉØ¥+A\u0011\n¬‡Û–kùö3ÍKŸû\u0001¬E\u0004\u0000D՗(|ðnÌß⡬Æw:²\u0003åb~Ÿ*æw®\u001fH\u001cæë¬J(FR6‘€ŠòÊ5A\u0014\u0010ŸÀ\"\u001f¸¶û\u00007|%6hÛOg†¥HؚJ8‰/QˆÌFR\u0014zšlžl¼òäfç\u001a)2a\u0017\u0004Ò²ƒ,fëE× l«vVjp:¥w~¯/çq\n^²«\bš.žf\f(Ǎkýh3-—d7N(.Š)\u0007ºÃ)¼Ä\u0017ÿ£C—EëD±C½@¥;\u00051%¤¸\u00141ý(Ãí˜g6Ä۞pá¹z²NxŠ–?R\f%a8*kÓ°H<\t_â<9dÖôÿÑ\u001e\u001eӗ\u001c%'Â\u0005a3C¤EšEMFYG2DlLFF¡LF‡ûSQûh¬’§‰FFFFFFFFMTObaX[~…|wjips¶½Ä¿²±¨«Ž•Œ‡š™ £&-4/BA8;\u001e%\u001c\u0017\n\t\u0010\u0013ÖÝäßÒÑÈËîõìçúù\u0000\u0003=M\u0006\u000f\u0014!\"\u001b\u0018E>7<)*30ýöÿ\u0004ñòëèÕÎÇÌÙÚãàmfot‚{xe^W\\IJSP–Ÿ¤‘’‹ˆµ®§¬¹ºÃÀÏÔÍÆÛØáâ÷ü\u0005þóðéê?D=}6+(12\u0007\f\u0015\u000e# \u0019\u001a¯´­¦»¸Á—œ¥ž“‰Š_d]VKHQRglunƒ€yz”†˜›¢¡¼·¾Å°³ª©„v}hkrqLGNU= cZYôïæíøû\u0002\u0001Ü×ÞåÐÓÊÉ$\u001f\u0016\u001d\b\u000b\u0012\u0011,'.R\u0018ÉèžQRFö(§ü³!ü³!üŸ\u0012ü³á½ü³!ü·8S¿9C\u001d=MUFEŠOI·kGŠÉ\u000e؛¸†„\u000esïf\u0003êÚj\u0016š †®s\u0003æ\u0005:Út–Oð‘‰ïI«ëHJS+ÆbÌÙ¶’ô\bsÿh-'sÂ؅8c¤\u000e±¾N=}ªdrÜûøH¼\u000e´\u001eJ1«è’ÇŸv£Ì\u0007®_pLô‰¶ZT\u001d¯~¡í0J¢Íá»ÕÌ&£ÉѶ\u0004$\u000b@Œå)UCÓe7ã¤\u0016\u0011¾Yõ/—‚덺…\\\b( —\u0011¦£³Æ\u001böø¼\u001bd\u001eUÁ±q²õsûOl\u001bZÞT™±t\u0012õ{QŒ\b.à–)¦žÓÆEfpAÅbԉÁrÔ5wƒP­(2¤\u00169¶ \u0015\u0006\u000f~÷}(,$\u0017!¶¥e\u0006#þù;= ¢Õ±Áot5k\u0003N5+‰Ä\fÕ9S\u0005\u0013]?âÅ6\u0015BÙ\u0005?™Ä+•B„u:k\u0002ÐÝA|$+¡ÃIÕ)\u000f„\u001d­6Že\tɞ£®öÓûWz\u0019,\u0016j= µa³Q3ê3üҜ!˜¡†U2w\u0003ê­<ÛÄ\u001f]Á•­/Ø#÷1º\b”\u0019‡ ­‹óJÛé\u0018œÑ0¡“ñˆãî\u0001Sú„\u001a\u001c€–y°²Ïnÿ«úzÚ\u001dP–|\u0010²—sL\u000bé\u001e\\Ð\b!EŒJ\u0006‰¾ZÊ'¯VJ&O\u0002TÈFbHï¾SuÈjÂ]ÈFBbÀ7µDN‡F\u0004\u0012}çTeËfF5-ˆVJ&x¶Ûa¶{NH¶U4M%ÿ[JGþO\u0012)ZâTœ¶tNH¶\\ÔJ‡FD‘Vb†ðGF†FC<½í_ˆxgJˆˆfÊÖVNOgJˆˆfjy’ŽNÊVXHggʆŽNÊVXHgg2\u0003%¥E\u0004ÅÃEB@\tdÎfAζ\bWˆŽ·\u000bSxâiÏ~íî7\fM= ÂéÑ|å‚èÒp\u0015n6\u0006c¸\u001ex\u0015h<ò&ÈY‘²'ËUþù\u000f€ôÒ§ÌKYžy\u0011zÜ^x\u0012n\fR¦Æ\u0005Bçä/æ@Ô®è׉”¯ëÓyà/þìô/ìÍaÀ\u00011üä€\u00002ð\u0014t.æã¹$põè=}ð>(ِ°?+Հ\u0004ñï\u0000õп,ËX¤qñúÝdpòî=MP¾&EJ\u0007IFæNVF\u0006\u0012óÃ!|\u0014ü³!üßÓù³!ü³!ü{©ÏZX&†ÊXR\tµ6i^F9vQ,È[>a\u0012Ǐ>Iâ\tl\u001eP´¦}¾IÕöIÜÉi¶P±\u0006|rÉ˦I*\tsþQ&wîIÛ6F$Ét\u0016Q¥†y\u0002ÉÝæGÔÉ¥&uâG\u001f¶StÈR6dT\u0007—6KÀæHÉL‡ÂðCï+hp°ËδŠ¡³èüÎ6Î÷ ƒ(ð¼˜!‹Z\u001aq×\u0013\u000e\u0004@Ájõ-\u001aEh\u0015ו;ã@o¸ç„ÏbŒì\u0000¯Rè엱ÓÃ\u001aœ)ë·Ñ@Ô\u0010°\u000e\fšéW›Óp±òéÕà}\u0013:†\u0019èÝ\u0017¹\u0013̬m\u0000^£\u001dBÕD\u001bB\u0018Jàü…¨Å©9 +\u001e輕\u0001[Ô£°Í\u001c±mz;°ÀëÊÓDg7à>\u001c5m\u0000DÅܞ•20Ý:±Ï_Cå\n\u0015Š:OBzCy\u0013Ë[\u0019ˆ\u001eS!ìY\u0019‹.'\u001e:d¤“•ì\u0001ö¦˜³ì<“$™?j­8ÝÀ”Ãà2’”ïQُ0v{“\u0012¾Öx“Ÿa5™ü\fu)¡\u0010½\u001cžÔ\u0005˜€\fÓÚ°\u001f¾cbÓ´Œõ¦¦ª\u0007xÞa{Ҁ‡wîaCM\u0005Œ¥ŒF5°úUÆêXLT&•—\t—øPû=Mno\u001aäè̐Ï\u0018£úoð铗c3í\u001e‹Aoœú娋Aoœ~ðíž\u0017ìîÔ\f£~4èÓ)t Z\u001b\u0017D$ý&3ƒD\u0005ýOE+jQg$KVGf\u0003fÇFWF˜r'¾|O\"PÙÊüXܜW´ˆ\bŠç»Ê=M½§”ˆfd\u0010i\u0012´Ïˆè_Šœ\u0015Wÿ\u0002X[Ԏ*ssВjRÔ4jxØ6w„¢‰ÎæŠÚVLX\tƒWËÊãMÊù𶙊šbX\u0015Î-=MãÑÝ=M£ÏQ\nuÒ=M(\u0018(\u000e7A(&>\u0014¾½\"ŽÜãäï§Ã§˜žkray×/§[øª\u0012MrΟ\u000bz÷èîFóâ¬çЯt0VðÔ<ÈL˜aïL r\u001bá“™˜µ\u000bŽ^óRµ\u0012pL= YXi¨\u001awšw5¨âÒïw~É=M¦\f²\u000f‡\nRw…-âžä¹kmf¤n\f¸\u0018¸\u000e(Ãöþ™2\u0014_߯\u0015= åë\u000fB؋\u000fr\u000fú«k¬¿xQy«ŸUxçòðr™¬ÚVÆ\u0010gіRÿʉʀ.KJPaËLnœ.ɬ‰'󺏌±Ì}ÛLàdØt\u0010î\u0011–ë\u0005‘½¬’“=My¾_\u0012:sbÆ£\u0014ü¶\n²]­N=MÄ\u0007LÓbIÜ)©\u0015¬qý¾ØÊ\u001cJuµ›H\u0010Q'ÏX0Xš\u0002½‚­\bšdä\u0006‘¦8üjiÒjÄ8ÿj¿8Û*†\u0018\bjrsßâúu_”0’¸mÕ*!K)K= D]GË¥\býOXKdÄg¥l¾\u0006ÍJ›HYå\u001eEqW…¨F€Ð’\nÿ·‡×É~™‡êWÀv¾·Q·\\\u0018µNºÇ\u0001Š´–Ë÷\u001ca\u001dÁ\tjg\u001fk\u001cX­Î¿ãšdpž ôÑ<‹µ$4/ü½aÃáìáƒ02\\'\\ŸZ½ñøññ±3œÊB\u001fæ{Ö\u000f0Ó\u0012¶zB?Œ/¬—jd¿¹y\\·ÅÙ¨Y…Ⱥ†]5Ñ%Â\u0006\u0019Á5‡@‡“µÁ\"\u001fC\bCø~4„«òqü¼e\u001899´3´¸•ûÏ\u000fŠß\u0015“\u0018ƒè¤¾õáÁv\u001cC\u0003Ð\u0003Â\\†£Ÿ0u{––YˈŸÆ€\u0010²zÎ|èRê•wü^sºC\u0014†Uþ*”›R±Ý·Ý}Œ\u0018ƒÁÍ»Íù\u0001ÿ\"\u0013ÖyJ+김÷•\u0002?â­\u0016$9:9à‡<âù]Ë]«\"Q\u0010\u0007ô\u0007û]Ö2\u0015­û­\u000f\u001f0y\u0012rz1?_ï“j\b‹}³ž,C\u0019Ð\u0019B’†þ\u00180ý= ÊcS욐0ÈLM´Éf®JTì’ïµïýê.aI¯¶ ªépã»\b¾\bát_ÞÃ\u0010À\u0010\u0016Â\u0018ãg\u0015VâJ~qqCÛL”Í\u001f\në¶]Þc[||\nd—Gșö\\\u0012H0UK@\u0006ÃhUï¾òp©ÛÝm/áÃ\u001eÀ\u001e\u001f\u001dÂ\nãf•Vbgc\u001bk?Ø|e;j4óé\u001d¯X3\u000f­ÕOÕ\u000fØÿ=MÛI¢I°ÕiC…\u001d®±\u000eC\u001bû’Gp¾¤qó\\;\tA#ò\f>=}sPQå•>UÖ¦\u0006V,O«X\f{'ØNa§\u0019~œŒÿè?zÊðir×O}ì^P\t‘¾Zw·ÜrTÒ½Y¬s²Êéiøl¸¯(—X\u0002Š$ŠHâu‘LÙ\"ŠlsÊÕFJQS/äRl§†Ùk\u000fúW¼âÊy«Ô‘\u0012eÐR\u0017S7Sk-ð8’¿Ú¢5®An\u0017nÂú’LÔ¶ÕÖ\u0011rYÆÏÇÏ6JÉ\bi­\u0010—ˬðªÌ³Lz\u001b_áêâ*à\u0012åQ\u0012O\u0012Ç-= šd{™Óðz‘jQ³Qçk\u0014¿\u001eÂ+Â\u001d‚Ägø’ý\u0012Žt–+á8oK$\u001b<{è{>°\u001f–-\u001c\u000f |iLã\u0007ýß\u0002›û\u0013úÓø\u001b¡²uX['\u000bøX¶ÉÁÉ\u0002\nøa\u001eY\u001eI5|b:2©4‰U°–Ï\u0017¬Ê–-”²Í¸Í±m\u0005LîTš\t{̀\u0015·,·ú”©Ü¦|RxU§ÍÛÍ£Í>|*ò4ò\u0015Œ\u0004怵€•ÿ&óý}Î= 6À\u001foö\u0017#n…«ÿK\"T\"̵_´¾ôyõé}zk\u001d²\u001dæñ”M¬ £TDi*ç4ç5W\u001fó\u0000µ\u0000•·Á5\u001e¡‹ó>cŸY\u001e2´Ü}Ÿ¤hõºõÂu\u000f\u0015›¤ÙÝ8\"!¯ÅhÀȽ\u0010 \u0007|½á\u0002#8c>X>HÅ}Â:¨Ĉ…°„Ž$!$‰eâ„\u0012õ:\u0001Â\nDí]·ÑgØúŠ”b ûa:LzbÑö´üû²3\u001e,Ñlۘnf£žl/ôn5ÈÁfƒÓl9¤\u0002Ý©\u0005q\u001c\u0019!Åƚ'Èæöˆ\u0018·Š£K=}‡@a±\u0013\\\u0002å)Þ±Æm\u0017ÅZV\u0018aþ;VjƒkmTà ŒCŸzQ\u0011ú 2s]€\u0014A\nêqÚe\u0006eË\u0005jБ0\u0011öZ_¯B\u0013B„\f'ºS9R=}%Jl\u0016¡ÿ½æÏ\u0018lÿ¢ë\u0016|1eè™÷_\u001c<s4ÔA\u0004\u000f\u0006¢@Y´mz tñš |CqºOü\u0016@\u0018„\u0005+¿Í\u001d}Õ:U+]¶ï6ãŠñ¾ñÄI\t\u000e )}9ÂÛ)ù±Ë­ÿ…†h™|ÈáÊ×ØsÐô0´6¼JwLßÉ·\u0003i\nû\u0014ù$%K\u001e“­¸Ÿ\u0016d¯âÂå0æ|¤•‹—\u0012®ë\u001f½úv€¨ÂÇ= \u0000Æ\u0011Íðë\u000f8)ð€³ØäÉàw\u0012\u0010üe´.&?T×øo­\u0006\u0019ˆ×*è¨öÀVÂT÷= ™\u0013o~4^.€/'•I´\u0017·‰ýëx?»\u001bS3NCV:p¼\u0013€\u001a´µ\u000f3\u000e9Ž\u0019nU\u0006=M\b/Ø\u0001PëÀPÂU?\t~$BYDí©ò\u0011+¯7Õisì\u0002L¥N]äo\\î{6™*µ)\u0015,\u001f>¥ÔŸôTÕ=M…Y>”¥\t£SÃ×ôÚŘÃ\u001a0:\u0011\u0016U\u001eÁ±ç#%˜\u0016×59G†^kPÒÆÞؾ‰‹ÉgjI[©Ÿ~%ä2(¿~\u0004Î= ãÍs\u0007!\u00008ƒ\u0011ÂYFK«X~I= k_g\u0015›S˵i\u001d—M¼[\u0005©µ¸#=}‚:ÃM„˜B&Á.Ïê“D¢;XôG0n͇R°Öz\u0010uî²6dªe\u0000Y‰7¨Áϱá=M&!¡ú\u0005º‹¯\u0003D\u0018\u0000ì3³a%\u001aLcëd§êž¹•Ò\u0003~9ºDýæF;sA£\u0010%ÿä÷\u0015¬\u0004\u000eE\u0003\u000eŸÀÿ(CåÝ¢“=} d\u0002_ezÔ𪕕_߁Âòª,Õ?ùѬ۰p\\\u001dõ\u0000úèO´A+“\u0017\u0006\u0018‡[\u001f;CtS®0\u0019\fÃYZ\u001aË Ûcß\u0018yý=}\u001e4y/?ˆÃ\u0000w=Mâ¯[~ØÎc\f<َç:®´þÖkә\nîï ÏjÃx½ð¶úšì\u000e™U\u0017\u0014\u001bñÒ9\u0013Qó±b€¨I\\@\u0005ք\u0017Ã\"U\b”¯\u0001\bñÄë\u0003ë\u0005§úáõŸ¡c\u0013Š†e?½1U= ½ÞÓ\u001ch=MLH\u001a¬Å{/~CV\u001dròÝä˜âå\u001b ÈÕ\u0017ð~Ûï¾$\u000f·-¬ãov[enqõr±†tõµ$\u0018\u0004/3µ\u000b}\u0011t›D 6=M+Ü,\u00013Õ%ÄSD’Á\t?m;õ\u0002Ô·•­\u0003t>ÿ¾¬\u001fÈ\u0010‹S±uuµ\u001cüuÃA™6ž Z\u0014ú\u001aw¿\t\f­C–Vbbˆ1\fgí<\u0010Ñc\u001d©\\ëfû~ó²¶ëîçE+\n,\u00043&!7‘ÜÆѬt¤T\u0014¡RusJ­sぽ”Ç\\fÄ%8Ƶ%Åj\u0004Ìa”úÒO\nFÿ\u0004G×'îfN>=}ub\u000esÇhɈǢYZQAE\tZè\u001a·ÏNÖÁKÐR?”BÆ¢‰\u0010ÅLrm°ªfýtkø¡~wŽJ—= XD}r\u0017qN\u000e³“ÏRC=}nW\nš™iÉS\u0012ÅG`});\n\nvar HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, wasmMemory;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n}\n\nvar _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);\n\nvar abortOnCannotGrowMemory = requestedSize => {\n abort(\"OOM\");\n};\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n abortOnCannotGrowMemory(requestedSize);\n};\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\n/**\n * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the\n * emscripten HEAP, returns a copy of that string as a Javascript String object.\n *\n * @param {number} ptr\n * @param {number=} maxBytesToRead - An optional length that specifies the\n * maximum number of bytes to read. You can omit this parameter to scan the\n * string until the first 0 byte. If maxBytesToRead is passed, and the string\n * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the\n * string will cut short at that byte index (i.e. maxBytesToRead will not\n * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing\n * frequent uses of UTF8ToString() with and without maxBytesToRead may throw\n * JS JIT optimizations off, so it is worth to consider consistently using one\n * @return {string}\n */ var UTF8ToString = (ptr, maxBytesToRead) => {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n};\n\nvar SYSCALLS = {\n varargs: undefined,\n get() {\n var ret = HEAP32[((+SYSCALLS.varargs) >> 2)];\n SYSCALLS.varargs += 4;\n return ret;\n },\n getp() {\n return SYSCALLS.get();\n },\n getStr(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n }\n};\n\nvar _fd_close = fd => 52;\n\nvar _fd_read = (fd, iov, iovcnt, pnum) => 52;\n\nvar convertI32PairToI53Checked = (lo, hi) => ((hi + 2097152) >>> 0 < 4194305 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN;\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n return 70;\n}\n\nvar printCharBuffers = [ null, [], [] ];\n\n/**\n * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given\n * array that contains uint8 values, returns a copy of that string as a\n * Javascript String object.\n * heapOrArray is either a regular array, or a JavaScript typed array view.\n * @param {number} idx\n * @param {number=} maxBytesToRead\n * @return {string}\n */ var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n};\n\nvar printChar = (stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n};\n\nvar _fd_write = (fd, iov, iovcnt, pnum) => {\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[((iov) >> 2)];\n var len = HEAPU32[(((iov) + (4)) >> 2)];\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAPU32[((pnum) >> 2)] = num;\n return 0;\n};\n\nvar wasmImports = {\n /** @export */ a: _emscripten_memcpy_js,\n /** @export */ e: _emscripten_resize_heap,\n /** @export */ d: _fd_close,\n /** @export */ b: _fd_read,\n /** @export */ f: _fd_seek,\n /** @export */ c: _fd_write\n};\n\nfunction initRuntime(wasmExports) {\n wasmExports[\"h\"]();\n}\n\nvar imports = {\n \"a\": wasmImports\n};\n\nvar _free, _malloc, _create_decoder, _destroy_decoder, _decode_frame;\n\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {\n const wasmExports = instance.exports;\n _free = wasmExports[\"i\"];\n _malloc = wasmExports[\"j\"];\n _create_decoder = wasmExports[\"k\"];\n _destroy_decoder = wasmExports[\"l\"];\n _decode_frame = wasmExports[\"m\"];\n wasmMemory = wasmExports[\"g\"];\n updateMemoryViews();\n initRuntime(wasmExports);\n ready();\n});\n\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.create_decoder = _create_decoder;\n this.destroy_decoder = _destroy_decoder;\n this.decode_frame = _decode_frame;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\nimport CodecParser, {\n data,\n totalSamples,\n codecFrames,\n isLastPage,\n} from \"codec-parser\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport function Decoder() {\n // injects dependencies when running as a web worker\n // async\n this._init = () => {\n return new this._WASMAudioDecoderCommon()\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._inputBytes = 0;\n this._outputSamples = 0;\n this._frameNumber = 0;\n\n this._channels = this._common.allocateTypedArray(1, Uint32Array);\n this._sampleRate = this._common.allocateTypedArray(1, Uint32Array);\n this._bitsPerSample = this._common.allocateTypedArray(1, Uint32Array);\n this._samplesDecoded = this._common.allocateTypedArray(1, Uint32Array);\n this._outputBufferPtr = this._common.allocateTypedArray(1, Uint32Array);\n this._outputBufferLen = this._common.allocateTypedArray(1, Uint32Array);\n\n this._errorStringPtr = this._common.allocateTypedArray(1, Uint32Array);\n this._stateStringPtr = this._common.allocateTypedArray(1, Uint32Array);\n\n this._decoder = this._common.wasm.create_decoder(\n this._channels.ptr,\n this._sampleRate.ptr,\n this._bitsPerSample.ptr,\n this._samplesDecoded.ptr,\n this._outputBufferPtr.ptr,\n this._outputBufferLen.ptr,\n this._errorStringPtr.ptr,\n this._stateStringPtr.ptr,\n );\n });\n };\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.wasm.destroy_decoder(this._decoder);\n\n this._common.free();\n };\n\n this._decode = (data) => {\n if (!(data instanceof Uint8Array))\n throw Error(\n \"Data to decode must be Uint8Array. Instead got \" + typeof data,\n );\n\n const input = this._common.allocateTypedArray(\n data.length,\n Uint8Array,\n false,\n );\n input.buf.set(data);\n\n this._common.wasm.decode_frame(this._decoder, input.ptr, input.len);\n\n let errorMessage = [],\n error;\n if (this._errorStringPtr.buf[0])\n errorMessage.push(\n \"Error: \" + this._common.codeToString(this._errorStringPtr.buf[0]),\n );\n\n if (this._stateStringPtr.buf[0])\n errorMessage.push(\n \"State: \" + this._common.codeToString(this._stateStringPtr.buf[0]),\n );\n\n if (errorMessage.length) {\n error = errorMessage.join(\"; \");\n console.error(\n \"@wasm-audio-decoders/flac: \\n\\t\" + errorMessage.join(\"\\n\\t\"),\n );\n }\n\n const output = new Float32Array(\n this._common.wasm.HEAP,\n this._outputBufferPtr.buf[0],\n this._outputBufferLen.buf[0],\n );\n\n const decoded = {\n error: error,\n outputBuffer: this._common.getOutputChannels(\n output,\n this._channels.buf[0],\n this._samplesDecoded.buf[0],\n ),\n samplesDecoded: this._samplesDecoded.buf[0],\n };\n\n this._common.wasm.free(this._outputBufferPtr.buf[0]);\n this._outputBufferLen.buf[0] = 0;\n this._samplesDecoded.buf[0] = 0;\n\n return decoded;\n };\n\n this.decodeFrames = (frames) => {\n let outputBuffers = [],\n errors = [],\n outputSamples = 0;\n\n for (let i = 0; i < frames.length; i++) {\n let offset = 0;\n const data = frames[i];\n\n while (offset < data.length) {\n const chunk = data.subarray(offset, offset + this._MAX_INPUT_SIZE);\n offset += chunk.length;\n\n const decoded = this._decode(chunk);\n\n outputBuffers.push(decoded.outputBuffer);\n outputSamples += decoded.samplesDecoded;\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n data.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._inputBytes += data.length;\n this._outputSamples += decoded.samplesDecoded;\n }\n\n this._frameNumber++;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n outputBuffers,\n this._channels.buf[0],\n outputSamples,\n this._sampleRate.buf[0],\n this._bitsPerSample.buf[0],\n );\n };\n\n // injects dependencies when running as a web worker\n this._isWebWorker = Decoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n Decoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = Decoder.EmscriptenWASM || EmscriptenWASM;\n this._module = Decoder.module;\n\n this._MAX_INPUT_SIZE = 65535 * 8;\n\n this._ready = this._init();\n\n return this;\n}\n\nexport const setDecoderClass = Symbol();\n\nconst determineDecodeMethod = Symbol();\nconst decodeFlac = Symbol();\nconst decodeOggFlac = Symbol();\nconst placeholderDecodeMethod = Symbol();\nconst decodeMethod = Symbol();\nconst init = Symbol();\nconst totalSamplesDecoded = Symbol();\n\nexport default class FLACDecoder {\n constructor() {\n this._onCodec = (codec) => {\n if (codec !== \"flac\")\n throw new Error(\n \"@wasm-audio-decoders/flac does not support this codec \" + codec,\n );\n };\n\n // instantiate to create static properties\n new WASMAudioDecoderCommon();\n\n this[init]();\n this[setDecoderClass](Decoder);\n }\n\n [init]() {\n this[decodeMethod] = placeholderDecodeMethod;\n this[totalSamplesDecoded] = 0;\n this._codecParser = null;\n }\n\n [determineDecodeMethod](data) {\n if (!this._codecParser && data.length >= 4) {\n let codec = \"audio/\";\n\n if (\n data[0] !== 0x4f || // O\n data[1] !== 0x67 || // g\n data[2] !== 0x67 || // g\n data[3] !== 0x53 // S\n ) {\n codec += \"flac\";\n this[decodeMethod] = decodeFlac;\n } else {\n codec += \"ogg\";\n this[decodeMethod] = decodeOggFlac;\n }\n\n this._codecParser = new CodecParser(codec, {\n onCodec: this._onCodec,\n enableFrameCRC32: false,\n });\n }\n }\n\n [setDecoderClass](decoderClass) {\n if (this._decoder) {\n const oldDecoder = this._decoder;\n oldDecoder.ready.then(() => oldDecoder.free());\n }\n\n this._decoder = new decoderClass();\n this._ready = this._decoder.ready;\n }\n\n [decodeFlac](flacFrames) {\n return this._decoder.decodeFrames(flacFrames.map((f) => f[data] || f));\n }\n\n [decodeOggFlac](oggPages) {\n const frames = oggPages\n .map((page) => page[codecFrames].map((f) => f[data]))\n .flat();\n\n const decoded = this._decoder.decodeFrames(frames);\n\n const oggPage = oggPages[oggPages.length - 1];\n if (oggPage && oggPage[isLastPage]) {\n // trim any extra samples that are decoded beyond the absoluteGranulePosition, relative to where we started in the stream\n const samplesToTrim = this[totalSamplesDecoded] - oggPage[totalSamples];\n\n if (samplesToTrim > 0) {\n for (let i = 0; i < decoded.channelData.length; i++)\n decoded.channelData[i] = decoded.channelData[i].subarray(\n 0,\n decoded.samplesDecoded - samplesToTrim,\n );\n\n decoded.samplesDecoded -= samplesToTrim;\n }\n }\n\n this[totalSamplesDecoded] += decoded.samplesDecoded;\n\n return decoded;\n }\n\n [placeholderDecodeMethod]() {\n return WASMAudioDecoderCommon.getDecodedAudio([], [], 0, 0, 0);\n }\n\n get ready() {\n return this._ready;\n }\n\n async reset() {\n this[init]();\n return this._decoder.reset();\n }\n\n free() {\n this._decoder.free();\n }\n\n async decode(flacData) {\n if (this[decodeMethod] === placeholderDecodeMethod)\n this[determineDecodeMethod](flacData);\n\n return this[this[decodeMethod]]([\n ...this._codecParser.parseChunk(flacData),\n ]);\n }\n\n async flush() {\n const decoded = this[this[decodeMethod]]([...this._codecParser.flush()]);\n\n await this.reset();\n return decoded;\n }\n\n async decodeFile(flacData) {\n this[determineDecodeMethod](flacData);\n\n const decoded = this[this[decodeMethod]]([\n ...this._codecParser.parseAll(flacData),\n ]);\n\n await this.reset();\n return decoded;\n }\n\n async decodeFrames(flacFrames) {\n return this[decodeFlac](flacFrames);\n }\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport FLACDecoder, { Decoder, setDecoderClass } from \"./FLACDecoder.js\";\n\nclass DecoderWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"flac-decoder\", Decoder, EmscriptenWASM);\n }\n\n async decodeFrames(frames) {\n return this.postToDecoder(\"decodeFrames\", frames);\n }\n}\n\nexport default class FLACDecoderWebWorker extends FLACDecoder {\n constructor() {\n super();\n\n super[setDecoderClass](DecoderWorker);\n }\n\n async free() {\n super.free();\n }\n\n terminate() {\n this._decoder.terminate();\n }\n}\n","import FLACDecoder from \"./src/FLACDecoder.js\";\nimport FLACDecoderWebWorker from \"./src/FLACDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(FLACDecoder, \"FLACDecoder\");\nassignNames(FLACDecoderWebWorker, \"FLACDecoderWebWorker\");\n\nexport { FLACDecoder, FLACDecoderWebWorker };\n"],"names":["EmscriptenWASM","WASMAudioDecoderCommon","HEAPU8","HEAPU32","wasmMemory","out","text","console","log","err","error","ready","base64ReverseLookup","Uint8Array","i","wasm","Object","defineProperty","get","String","raw","_free","_malloc","_create_decoder","_destroy_decoder","_decode_frame","UTF8Decoder","TextDecoder","printCharBuffers","printChar","stream","curr","buffer","heapOrArray","endPtr","idx","decode","subarray","slice","UTF8ArrayToString","length","push","wasmImports","a","dest","src","num","copyWithin","e","requestedSize","abort","d","fd","b","iov","iovcnt","pnum","f","offset_low","offset_high","whence","newOffset","c","ptr","len","j","imports","this","setModule","data","getModule","instantiate","then","WebAssembly","instance","wasmExports","exports","Uint32Array","initRuntime","Promise","resolve","HEAP","malloc","free","create_decoder","destroy_decoder","decode_frame","Decoder","_init","_WASMAudioDecoderCommon","_EmscriptenWASM","_module","common","_common","_inputBytes","_outputSamples","_frameNumber","_channels","allocateTypedArray","_sampleRate","_bitsPerSample","_samplesDecoded","_outputBufferPtr","_outputBufferLen","_errorStringPtr","_stateStringPtr","_decoder","enumerable","_ready","reset","_decode","Error","input","buf","set","errorMessage","codeToString","join","output","Float32Array","decoded","outputBuffer","getOutputChannels","samplesDecoded","decodeFrames","frames","outputBuffers","errors","outputSamples","offset","chunk","_MAX_INPUT_SIZE","addError","getDecodedAudioMultiChannel","_isWebWorker","isWebWorker","module","setDecoderClass","Symbol","determineDecodeMethod","decodeFlac","decodeOggFlac","placeholderDecodeMethod","decodeMethod","init","totalSamplesDecoded","FLACDecoder","constructor","_onCodec","codec","_codecParser","CodecParser","onCodec","enableFrameCRC32","decoderClass","oldDecoder","flacFrames","map","oggPages","page","codecFrames","flat","oggPage","isLastPage","samplesToTrim","totalSamples","channelData","getDecodedAudio","flacData","parseChunk","flush","decodeFile","parseAll","DecoderWorker","WASMAudioDecoderWorker","options","super","postToDecoder","FLACDecoderWebWorker","terminate","assignNames"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-7d6171c7.js b/dist/index-7d6171c7.js new file mode 100644 index 0000000000000000000000000000000000000000..ad5d65e2cfa8c56852d14c95d5f737057bebc72f GIT binary patch literal 83041 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 literal 0 HcmV?d00001 diff --git a/dist/index-7d6171c7.js.map b/dist/index-7d6171c7.js.map new file mode 100644 index 00000000..f6596474 --- /dev/null +++ b/dist/index-7d6171c7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-7d6171c7.js","sources":["../node_modules/opus-decoder/src/EmscriptenWasm.js","../node_modules/opus-decoder/src/OpusDecoder.js","../node_modules/opus-decoder/src/OpusDecoderWebWorker.js","../node_modules/opus-decoder/index.js","../node_modules/ogg-opus-decoder/src/OggOpusDecoder.js","../node_modules/ogg-opus-decoder/src/OggOpusDecoderWebWorker.js","../node_modules/ogg-opus-decoder/index.js"],"sourcesContent":["/* **************************************************\n * This file is auto-generated during the build process.\n * Any edits to this file will be overwritten.\n ****************************************************/\n\nexport default function EmscriptenWASM(WASMAudioDecoderCommon) {\nvar Module = Module;\n\nfunction ready() {}\n\nModule = {};\n\n/** @param {string|number=} what */ function abort(what) {\n throw what;\n}\n\nfor (var base64ReverseLookup = new Uint8Array(123), /*'z'+1*/ i = 25; i >= 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n base64ReverseLookup[65 + i] = i;\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\nbase64ReverseLookup[47] = 63;\n\n/** @noinline */ function base64Decode(b64) {\n var b1, b2, i = 0, j = 0, bLength = b64.length, output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n}\n\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode01a36c6f98c8\u00173ø%yã¯#6ïI\u0001Øh€¼ÿ-^\u0001\u0003º\u001a*:8‘ÖJÒ#Á(¶3\fùs\u0002Õ\u0002ÿ\u0003›\u0016§£Ÿ/.*[v²¯\\\u0001õz\u0004ºÜá»(’oBM×å ÊvmË1±ˆIü(\u0002&Øb?\u00150˜=MáPðxA%TÔΞ\u000e=} c×0ÓPùœN:Ê\u0016£\u000b̆ӱæQ•ñҒ¥M_ªqA\u00141k\u0014ð\u0011¹¥ÊŒÇ@6u§­k¿Ä9Ó²ŠFÒà\u0006(A£c\u001e£ \u0000)ìTÆ=M\u0004]+àaåÅBñcȼ\u0019{±!›Õ\u0010Õ_ò#²ƒßá'֛«ñ†\u0006Û.òƒ¿á(h›¯Äò´ýÏ\u0014\u0011” ÆB\\0¬\u000fE¸\u000e?s*iê9)~QÄ\u001aõÿ6+º·=M”l½\u001dUÀƒ«¥$´ª\u0005FÏó\t÷¨M/‰§=}\u0006WÃs¥FÈ$9»PsH0Ç3»P®Wq\u000böCðé~¥\u0010Ö}¸\u000b:taãž/±©Ý\u000b\u0017×sôd™‡v[<á\u000eëŸx[ôÿ„\u001d0bñR\u0014\u000fºƒÊ½j\u0014–\u001bËz•h\u0002q¹˜J\u000e›•\"Ò\f'*¤0‹Ó34Þ¯‘rÑöv[B/\u001c¨\u001f¿ê9!†ïr÷²\u001bÇn5ɓME€\u0018k”5Ú?7ڃk,–*ždÔörÏk4\u001f\u000fœ\u001b\u001cVáÔ†ÕÖÝjoooožaúˆ¼l—^Û=}MQ\u001dï˜]½ßQ²lÂù[gŸ=M9\t~“êÃŸ3\u001b¨¨Ó 9ñ\u001fgGze\t¹©ulfÙ\t|¯Sà¦oÌt\u000f= ¶zÈ<÷ÿñ•ºßÏ×h]9Í©:–#Dãø»­3LeÙ\t˜¯\u0013\b©[¿)hÓ¯fó¦\u001bÛæþ?p9\nV\u000e…ïȁ“nÊ\u0000á$˵¥Ö\u0012%Ú1Érn:fӯ温պ£¬ó+\u001a ”\u000b|\u001e;ýoô:*W(©Jÿ+vOÄb7<\u000bא­ßëÙ\t[)o\u001fU89~ÚÇ3€ˆ\u000eÍ¿\u0017”\u0002\u0007V¡N¢&¿\u0002švlG‚ЕäÝk©&M6»\u0000¡ƒ˜6!^\u000f°©€äÞÔû›\fÏ\u0007\u0000vÚÃBÆL¿\u0006,\u000fY\u0010+\u0005ÏÇj\u001dàìL£¡Rñƒ¤…ekX\\ÍyF= \u001d1X1ªhýQ^úd\u0005ç@!G\n¥\u000f\u0000\u001aÑ)°\u0013+w±\f\u000eyÅIOiǵ;gR#ó¨'%âfº£P\u0011¾\u0000S\bÃã[¥Eýcœ&0\u0003\u0001›\u000fv¢‘\\G„\u0011ˆ-ÌÏù\u0011Ù¡ÜpSX-\u001cUQ\u0011Ï <ăJ#iƒ\"Ú<Ùo;ðúÙ¡Ú6i¹“\u0010|#òm·\u0017ÝßÝYÐÓ\t= ë$‹}¥‹Ö\nq_.ľ³}–Êðÿ\u0003X\u0005i·xKQQK=MÎK\u001dÚ8ÏR«ø钳M[§ÍôÛ§\u0006@\u00024åÁË¿Ç(=M\u0001ð2¦ù\u0000Í\u0018\u001dè\u0015\fÃÊÃ\n\u001fË'Çe\u0015Ü\u000f3£<ü\u0004¨Üš&lw\"‹j5i–,¤–›{ŸöÞØ~OcÒWØ®æ„Ϧë\u001e\u001bJòªéøX¦±n\u0011«rüÆ»g/\u0010Ò\tðlzd²‰IªÎ~¨\u001bÖ\u0000j=Mv0ª¬¢“©Aí~DøÝõU•\u0010±nø+møFÛæiáFU'\u0012ª³'ø^%šnp\u0004Â\u001bû\u0000d)\"~ßVÔÒY…¿gò}Q7\u0017\"Ìæ]Â\u0007º¯eFZ\b0í\u0000î\u0012v˜ ídcœ§ª^\u0012i\\Ò\tqÖáϕ¿û·Ã\u0010dý©Ä\fîŒ-|7Ñ{\u0004à~‹\bUr\u0012ÂVƯ£ª/wYÒF\u001b'˜,\fnÃæŒV¶\u0003óc‘yçiØç7µe$Š\u0000É~)\b&òûô$d1G5‘Sê=M@= ƒ\u0016ӏçÓ\u0006^=}Q²™U¾µ:ã7ç4ÿît3?\u0011Âv\u0018s›º\u0012ïÿ\nð€ëA¨ 4e\u0013\\WÓXÉ2¾Àlf«#¬pªÔHê5\u0013_Ìî\u0011r³\u0016—é\u0015ļ\u0016áˆõ“,=}ËÖ\u0003õ7Â= = T\tq\u001aãM\u0016aѤÖ)_;©T\u001c$¢¡k\"׊b¢\"l‚ë­}žåëí\"ÐDã:Ԉo5{\u0001ϑªæ6Nnû?=M)~9Î* ä‡@­Ä\u0004k¨c$ne&^3ÕÔ/\u0006Vì§\"ñ†\u00191Ô¯»—3Hæ}oTÏ{Ë\u001e’Z= jùÔòó¡\u000b6_DÒKM÷ÞwÙ.tR\u0017c£ŠŒI‚!\u0005f\u0019”\u0007\u0019uWw¶YYT»°\u0000I ·®\u001cD=M5ß®“ÆhÙðí=M¨þ­¹§«ùïËԅtëY̜ìnÉ\u0003‚Ô~eó”ó\u0012Ì\níef\u001d»1öýÆì\u0006ôu)Àê±tõ¸pŸ\f\u000bK\u000b*\u001d›ÄÕ;ñßé;\u001b•{OtÑü;å\u001apñރSØo¬\u0005\u00169<{\u0013Ž\u0006\tÛS¼\u001cSúë!Ä,(s³U™Ê­Õ£õ5ɵ-û©^ܝëã¶SÃC%(–%^}†3ùIã4}\u0011ý¼|\n^눺šhÜ*ßÓ{ðÕ¥r\u0007í¬Øz´cTd!\\¼á0%ãôw\u001f¡\u000fAGi\u001e´à/X®¤ƒk¯þ\u0016K\u0004²\u0013ρ\u0004:ÛÑý€P\u0010Hõ\u0007·_™Šrʾ²îrÈO¸û8u=}\u000fð\u000f衸8—ÐÑØQˆR‚5y)P/¿\u001b!5ÇZ’#lõ;4°0­œÅ\u0005ɱR\u000fµòòÁ†ˆ{±«W¯üý²\u0010!™¥ú\u0014\u0019\u000f¯•×\u0001U1¼{\u0016”gÏ\fTïìÑîu´&…i\u0017FÀ7z\u0013ÅÐ÷HÁ†ª–˜T÷°s©ãÞC\u000bu€½™\u000bPðìô“»Y$í\u0018Ì?ËŽÜ*=Mq¤àþ“?ðN\\ë݌§Ñ‡dñ+´ä°iyß̓zp´(õ¦Lvçš\u000e»P~áÆí\u0006nĊÇ:Ñ\u0016= Ž˜×k—\u000b¤\u0015\u0001\u000f\u0006Oæ\u0004~ٶώ¦?¨¾Uh,a[SäÅP,æu«Nè\u000bÆÝýI<€Ç}\u0003:«3;·Õ\u0000= ·@kj;@#G:ÓWÚ\u001f\u0018µ\u0006!­[>Y\u0006\u0007ÂyXגvF?êÀædø!¿ñ’\u0007°×\u0010_o3¥\u001f)fŽÇ(LÝÙª±~O÷M\u0013{^=M…uØ]§6áÊc$ŏT@„\f{õ†I=M{÷¼d\tÛ\u0006³=}8—>³LlÊUÕ\u0018\bŒˆ\u001dmí(kx\u001f¾ý;çZÇâùŒÀ+·\u001c\u0005@Xª™¥Š’\u001b¡ò ‡Fš@¨¾\th¤Øf\u001eüЉ¬\u0010v;­R\u001cÐíM\u0010j\u0011\\Èìë¦\fæz-K’{|xÐJt’<‚aóñ/·}µ½þæF®|´h\u0011_Å ÂQ†ƒ%<‹Ê\u0010Ù\u000eg2(e3ß/¡òm6Y/‘= s72ƒ‚õr7\u0000x\u0011¡Iuh\u0019zY\u0003_1nf>\u0001©Uc|†zõ\u0017\u0010‘¥g¸¢™}ÛOÕ‚Uéñ!%@Âíç\u0005\u000e¥ßm¹v9ôÈÚ+›QÒ\u001ccÏ?\u001c'À4c£%%àAÛ'.¯«¸Q¸¶0dܒSŠ³î\u000b†C\u000e\u0005£÷Ý%$ô\u0002¼pÄ\u000b:¹(hLd¯<#hö1X3˜\u0006\u0001\u001f›•\u0007³¢ÏÅØèÐø委²Íú¡Œ.¨Kqϸeÿ’¾H\u001d¯æîÎÜ\u00047³\u0018u= †q/<ý\\ió\u0018Lñ$w£Gѹzÿôí©¶¦EØزH€Y“7RöŽ\u001cÇNœ„“ðBA\u0017˜Æ§8ÿ\b&.\u0003\u0012ði?\u0000\u0005°†v°¶ìcøø¤ähá= D\u001aW×m†clÜê<ô|­p7<#lïsV\u001e\u0016Ê°ä3*Œ\u00015ÞH‰ñ]Þ\u001aû5šGòqw,\u001cuhõÁuJ¸vJ?HËL*Ç,w\u0016ðB5Œ6Tœ=}\u0002ó’íB×WîyM\nÒÂ̱\u0002[¿mœ)Ži°­M\n¡Íãe§(‡¤7Ž\u00108m}ô= Þw^\u000b›\u0019kF#™].âÂ'à\u0002œ6\"7Ÿ”ª¢Ã*¾\u0013\u001b\t¾\u0006à·Uó…Ý71\\gÒ«k\u0002\u0013®ÿun\u0014\fÑH[[˜1Î3.'5à·Ëƒßu™CLB\u0006\u000eԚ\u0010g\u0010î­ïÖa\u0018äèûV3š_×Ï扎vOqaçU\u0013Z<•-KsZù~©\\\u0005!ˆ¼¾^͕ô2^?\u0019Ÿ*…\\šÓRG…\u0001+\u0014lÑ)\u0013ÀØËDÝ\u0002f|]\\ŠxÂ\u001aŒŒ\u0019ý$4ðÛþ\u0016œw¸„\u00069G\u000f\u001d˜Ð ý\u000eA·¶¶\u0012vpZºüX@@™ø\u001bp\t4z‰\u001e&‘•²Âj3\u001eÉ·=Må\u001e¯Š= ’’v¾–g\u0018U\u0010R¨Wdª­/x\u0006\u0006·+–,ae*1ù¦v\u0002Îl\n^\u0017\u0015mºò\u000b¦Ó”\"@×¥sŽô#ù  ;\u0001Êr[B\u0005¢êµ‹-œ [a\u0017|>\u0002…]ê6¢JHX΀Ò\u0017@:{\u0011\u0019=}qá!Í̳K¡ \"A=Mä\u0005‘= °\u0016z…ÞÆç*1z^5ºbπÈ*mŒZUíí \u0013ÅÐᴔ\u0000çÏã)Ž{\u0004ÜĽ\n8‰ApG\u001e× ¬·F¼EÌ1å9Úb—n”X&>\u0002\f÷ÿ\u001bÉ\u0011~1$5@қa,\u0010”à‡¢'¹„Ðÿy2ûL•¯×Vã\u0016ñ\u0011éÊ^sY8éí\u0016Í,Š\u0015FŠìQ•Ö§ )[Ç9)Æ,3өμ= ¸k@‹ÄʐÖH7¨Å9ywІ¢W\u0010BĨ)*\u0005Ó\u001a/Û#:÷¤†%ÛK\u0005u3f\u0016@¿\u0011Z(M=M°/ \u0007}‹à‚PC¡OCÿîòE\u000b?¥Æ±G(´\u0014MùcpÁ0¶YE$›$IH®ô¼ÚXr§pþkÞå%€\u0013…\u0011ˆ>֙\u0005Ún  ºó\u0019Ø@ˆýµÐú-\u0006\u0016²ø\u0003\\ø?L©}˜]Nõql€ÅiÑ3χƒ³ì¥Ú½\u0006vëýô3?r+¬Áõ¥â4Û¥\u0000\b)H¤ë}‹ºŠ…æ\u0017Q´*\u0003Ã8¡x\u001c(ð\u0006ª=M\b=}¶wªf4¯ŸŽ\u000fF†R!\"µö\u0013\u0013·\\˜VêT)jâßm€8¨Û\u001dM¬”¥úãc‘F\u0006ÁÏr\u0005HŠ•\u0004•Ö¢8\u000b[á¦c\u0017@¡JÍûv\n\u000b\f\u0004T\u0012b!r€~{%u·Û\u001fû3pC0¦wnP/{³¹™½ \u001f\fÞs•³¡‘å5!\u001eÜ\u0014\u001af\u001d\u001a^¦³Ó\"ì¼QÌ\u001eƒ\u001a¦kš™\u001fú5µ-ðøD\u0002¿h6õ\u001d„È þ©ªV‚àÍà©\u0016×ãG\b߬H#þhïd\u001fiÊàÕ\\“-´°”3Tê¼Eû¤ .[fL\u000e¡€JüŒ,ÉKîë\u0015B”F³.Z”€*\u001dÌE¨V^„\n¯ªf#º“uºY)êÜ£\bPñf×Z\u000e\tIº\u0002æ2\u0007ÞÆÔU\u0019Ǟx4\"BU®¯R”€Ðú\u001c֌:\fô·\feAAlD,[O€ò0bÁ¡)\u0005{Ãuánò\\ a?Ála\u001cÇPæÌ+’ê°\u0000?„yw\u0019\u0006íÑî.Ùã›\u0013•‡ë3;\u001d+@ü\u000bŸ>Õ= î}1‚™võQ%n<_¸FÆï!šZµ‰Ñã}¡Ÿ\"ÉS°É'íÔ\u0005¶¶)\u0017Þ\u0005\u0013•Òü;?ž\u0003í÷LäIá¨\u0014H0Ô#ÁB§#†J½¢=}\u0011\u0016\"\u001aÉØ\\?rÚÃp®2\u0007‚q(=MYƒ¯—hµ ¥x\u00024ôË_·—\u00052ögÉXP\u001c/_ÇF|˾ÿfêÛ*Ó2Ž\u0000\u0013q¸Ó†®»“•\fc\u001eþšë™ÝSÛ\u001d¹\nr„Š\bÞ¤®žQb.Ÿ‚‘©6®\u00038W\n³‚\u0011Ågz¦\u0005Û*‹*\u0016ºYb\u001e’Y,—ÒZð\u0002$æ\u000e͸oíÁ˜hóÃdrö #°ñŒ0ŽÌ^k؂â\\̐ºå\u0000u\u001bm™›„ó‚nÏxÂA5Ákm…W,™iÖ\u0005L4aavwŸ¹”Ç°=M3ªë09WTÓ­¤Éný€ö§\u000b:Î\u0002â-\u0014™ž* bÀi­%‚º²Ü֙Š±žbÝÏ\tÏna\u001d«èŒ\nêÕw®ç§ƒ…·Áœz\u0000\u000e„\u0002~\tûµ/<4ǬÕf¢†P{½}Ù\u000b®Ï—I ä1’Áœb= Ðg\u0014çM$7G\f=}”sd¹Pš\u001e»ì2U©ŸB¿\u0004eM–&%T\u001e\n•5´iâgeú\u0013eù'†ú\u0017¾\"Ie$ðW‘´K*\u0014¼”ÚE\u0004‘=M\u0000T\t\f\u0000\u0015àýoC½7Äf*±²ýÔ\u000fLBÞûGW\u0001 ‰ô õ¥s\u0001Ï\u0002Ä\u0002ûnüvšw\u001c¢]Š×›0LþQiÅK¿\u000f¬ÇŒÀ¤¬/ˆ´õ\t4tµ…b—\u0002U,¢‹2\u001f¬\u0001 Ätp‡påkJ\u001cÌ\u000fD·É7æýD\u000b8ªüM—ÀL—bÝå?‡;¤$€‚Â1½\\iJfÙèŽôœA»—ýMÝC…‚u\u001f\u001aü)˜ÏUx}\u0002ê\u0019ßj¡4x¢âê䈯±%§^\u0003¸©\u0019ïÂõ\u0014¡´ÃÌã\u000bq\u000e§‰è&\u001f¾Þ\u0015\u0002°®\u000e÷\u0003á]9•´F\u0014ñ ‰Ý3+c¾ë60\\¹”þ\u00177ú=MÑyŽÿ-)F¿ˆÑF¤2Ù­ÂgÍ=}2ÈH麟?é.š½\u0003=MORèàl;U¸/wØs¯”£à±›:7p“©\f\u0006:®¡˜ZLá*wE‡#vSh\u001bd\u0016\u0018䪥JNóq¯BîÅó¡J™VA\u0005•v\u0014e7¿Á,´¦@\b0\u001dPôRC5aÚç\u0002\u0014¸\\·ˆ}x¡r6Ïpoÿ÷Á›Õ«„G•_…Ü7Šd\u0001q–\u0015šé³wJϯ3\u0014\u0013Ë |FKcȊ¡Š´ˆ›‘+/͎N4Jðø\u0000VnÛ·ø= ¸\u001b«A,¬˜*=}óo@ڀ¿ö»–b\u001f=MAö\u0012\u001e\u0019f_ú³ï¢ÓѢЉÌJt\u0005S\u001eò²ŽLI>Ix—'\u001eáκ…°»\u0002â=MC¼\u0010Vé\u001d^>Ý\u0006’¹V9§ãÉ-Ð|\u001b£CÖËÜ­ùC\u0005t[\nFg7WÚlÂ\u001d³\u0003ä¯Õsü÷±,d›%¤\u0019Ê\u0015Òzjª\bGI®®&)AeQÞÈÇ.\u001aúƒ\b:V\u0010Ž$—Éí\u0006ø\u001dß󦲰Po{±\u001d]Êv,N\u001cXå¸P8Ý_#12·\f\u000e›u\",†\u0006Æ\u0003\f4bà\"¡\u001f\u001e&Úª‘\fGÊz§§\\üݽgò6Ñ&{àc‹iÓɯf»5‚[ \u000e=}#ÿ¼\\\u0004ëe}²¾~ªi~™ÆœÓa§\u0018N‡@væ\u00194L’’\u0006­l…ì=}Y°EQÆÈ©™Ž8÷_d*8\u001cM×ÿÐÉ\u0014‚øa=M­\u001b³«5nm'±Šö\u0006q\\±/+â!4g\u001b‚,TN»ø P©0}[•zñ”–\u001aZ†ÿèr–)\u0004¦EÏ;N¡ß$= ¢a‘ÛÁÔdº\u000e®Ñ;Xò\\tIþ…}ƒT\u0005¾grGu<ï rB‰œ¯‘Õ}—P•\u0015ÞîãB=}iÓ5\u0006ÀÁ)•Y‚.½‹Ãqó ÓS«N¡\u000fµaܙT,BžÊõd'’~²h\f%t“üõÀíÖzô\u0006\u0016\u0001{D\u0017W\u0000\u0013Àþ=M\u0010\u0000\f«.v·õžâñÉe‚6eR¾”fšµh¾ñ¼“¶zõñè\u001a”LLRY˙\"&Åãz{èý4LÄ.\u001aH¬41~È\fdPîÏ\u0002À¼ð\u0000lröø\u0006*¿\u000epÇÃiz.aá^¹î/’\u0012u ?a£e±lzZÚ>\\¦\u0010ê= ²Hõs‘\u0013ßÔ1/ô= F¨e´B{¸ŒÛ­ºÇû\u0016f©U8grÉ\u00194â\t²À\u0000¾Ï\b+Â\u001a€§¹ò˜@Yƪ´+\u001d\u0002‚±õ1½Ê'·³ó¯¼ô{\t…\u0007€1ç£Ü½~ííÍñ\u0004Fû”{M\u001b\\Îî\u0007Ö5h¼\u0005L+ˆ;Âf4Rs³++ôp¥\\±(KR{0ãÏýñÍ;&e¤\u0019»ïí\u001d\u00169ø\u0003l€-Eî†\u0011¦§â•\u0002z{´ÈDÔ¬\u001cÌ@ìCÖt\u0000Hv¹\u0004é\u0007³ûé#= 1\u001eH/10€ûÍX¬!‹L\u0017&Ì[(Ì£¸©äh´|®g”û4Œ×½Y~#¹øÿ'÷J\b×dF4¸T…†\u001a÷ ¥£b\u0017‹ÏŒç܌\u0004þMªúSOÅú\u0014r0\u0003p‹ÛG\u0004¯µ]LU³Í—ÝH<äO³Åúª\"\u0014Nðå\b+/±\u0018#Ѹ£¼Ä/ž\u0003]»ÀÎ0¾ôË́DͽIæÇÀöàHÂ=Mæk\u0015é+ê\u0018évË|à”Å.UK\nôF˜1c§\u0010Ô+Έ\u0001܈‚¤¦•\u0012$\u0005îP7ä¼ÕJ\u0016>ëC¸¬KX»N\u001d8\u001bü\u0011Ð\u0019À­\u000fG2¥g>ž}‚r°ùÊ\u0017™æ.¨ä¸Š´&ÈW‡„ûŽ…q‡\n™6\u0013š¹ïÿ\u0002âî¨Ïº%Ú!܋MÞÀU•\u0018=}ð™\"ÛZ­Ãj\u0018Ç=}ŸâY<Ÿ\u001fúÍì\b…\u0018uõ÷p¿pÕ6âq‘äÔfÔÜá;ÀÛ\t)\u0005Û)%\u0006\t\t\t‰^e\u0006\tI!=MüíˆY‹¡‚€\u0019•\u0007NÈî€Rþ@/·°ÍmOÀÇ(’óŸuˆWu!¸õVgƽó5\f\u0017hí²\b¾8,ÚAÌr4Aö䓌fg\u001deÕ\"˜Zz\ni‚,òk¬SÎ%>6û¼u\nªùâ{€rþJªÆ0³îêqvHÕS8•\u001dí´öh\u001c\fm±hÜè¿ô<Ïj\u001cÛ\u0002\nËä\\\u0014rçÓ'\u0002ñmúÉgðB;9\u0012i¨\bÜÌ{î\u000f–\u000fRx‘ø+\u0010Tz\u000f®\u0006\nåÞ\u0015ë¥vì[JþæZmË\u000e[µ÷ª4}…\u0013qRÒÜ4\u0014Ýf~„ |1¬\u0017 ˆ9¹›5lK/=M0J”ÓN•uÏMü暭Þû\u0010¸Y4\u0000\f#x‘|™= >ÍƗZ\u0003¯:nR{ª$* \u001e¶¶\u000e2\u0001èÌ>%ˆ™m ÿQd±P-™\nÁoJä\u0011\u000bcNôK)÷‰è\u001d63\u0014W’†ˆ+¨¥nÆ¡A§\u001cáƏ§ßWqsÝ#ºF\n6]’ä\u0006\u000bc&›õîáʃæˆ:=}\u001aÂ|?ÕAëé\u000bX\u001fjÖb›&ù\u0000¡…6â\u001d–˜yڅ€Ñ\u0004Ìú\u001dxô¬¼H\u0018'ƒ¬+5pPˆ*þüGz\u0007ñèš\u00187A)-˜\tÊ0BDmHÐ Þ+ª0®G±˜\u0014u\u0014RMGm/ŠY<‘¥g\u001bo³”—§\bÂ4Hð\u0010=}óç6À-\téàs—ó9\b\u0015\u0001uÉ\u001c+,â¥Ò.Ø\u0001öÑü0k5­Ñš¦‚.\u001c&ëüýpz|\u0011\bÚ¦Zdh\u0002æ\u0016À–ùè\u0001í”ü<\u0006\u000e= •é!gaô·îصÈ\u001eIC;­|°Ëo~ˆ˜)ñ{„P\u0003ö‚<\u0002FÑ\u0013{D¸ðÓe9?\u001eh›Bê\b…À-\n²×öÞ1ûWD\u001b\u0001\u001aP“›zö¡j‚÷ߖøˆÆZ\naDM¹}éO›7\u001d\u000b\u0014˜\u00110‘ȝÓÔ\u00172?‘”AŒ,ƨ\u001ed«O‘“ãÚ÷\u001eY\u0007TKmæ:–¸ÆœÜ€Æhà‹èd\u000eUo·æ}ƒ\u001cŠ\u0011Æm\u000eßwMå¾!UìxøCGHFG\u001bfn؍k:\fe\u0013\u0016±Æ)—ùTÂʬ•o¥ü·HpיÛ\u001acI#º|™&ûß4qY’êæ“wA¼íE£0Ôx\u0019²'Õ'=}æ»DÄêóÈâ6\u0011jÅ^p·~œPa\u0004ïw\u0017\nƒ¸°N¼\u001bí\u0011\f‰7­×\u0019„~j:ÎG\u0000H\u0011\u0000\u0011smâmá«7\u0003-°í =}•m‚Ùi'pë\b*K2¡Þ\u001a\fâV\u0010\u0005^É\u000e%gg~lç½Ò\u0004œ\n°oã)k\u0011Ë*Žc¦ÿJø_µ\u0000³Üéß\u0019Ò\u000eïÔ=M°I°j,KCÌ}}P¥Øs._ÆõZ¬´äˆê\u0017N\u0016ˆ­\u000e»ö²¸Ã#ÊG?­UÙ­Je\u0005jzûË(Ž˜}®¨g\u0017ñ¬Ïº<õ6ë8e\u0010K\u0005>”\u0016$Öæ\u001d3ù³²sæ+žŒ¿…á]#[:‘ÜJ6ì@¡÷!U£ i{ê= =}iU,m0ܱ—\u000bôú°ÿ×\u0013µƒßc\u001c¦\u001a¥ß¯“S$V£N£Î®^7#Áv#I/\u0004ÙGu;ä\u001f©0xNð\u0014qßÜJd-“\u001b‡cÅ;¿±n“\t\u001d\u0011Ì\u0012„Ç—Õ\"à\u0013ÖQRs½BÜ|ƒÇI‘\u0000}¶à'ÛCʳ\u0006@æ/\u0017¤Ôw\u0006+aA嗗©çI2ä\u0017˜Ä+1á±TOòãǝÇçOòäό–³zŒ®³Ð ´ß£V\u0013TIn¸èÕ²º\b=}ga;v8Œ•\\GTÑwax¨\fh{Ôdqª_j±¬\u0019Í\u0003Jß\u0019Êdñ©Gjy¨Þ´S¶ÁÞË{”#Àš»¬\u0019Ë\u0003*ß\u0019ãS\u0006¤Þ‰T4\u0003¾¤~\u0013‰©n\u000fvZmo\tåt]ÒPJD˜wâ̶\u000f¿STjÝ%¸¤Îß9«9ªÏš{5\u00036#ðßyµ\u000f»SDv\u001f¨aŠÅ°w1¨jÉ[§\u00132¿8¸´ÌÝÐx\u001e8Ü\u0000Eý‚ÜKv»Ž\u0019|Uœ¼\u0014\u0006•€ø\u0011h\u0001Ìeñë(Ã£U\u0014\u0001‡Y\u0016çúçDSLîˆù_Œõú…Çÿ(\u0013‚4¿º¤Ot=}w|é8HÛ\u0006í\u0010s\u000ef\u0004mc\u000f[DÒoêûtPW‰½\u0012]=}ǍsK\u000f\bê\f¼LV²6kòfˆÄx(&«ÁA\u000ezq1Q+j\u0013'ÕA\\BZd\u0000;W¼Ñèü*Å[À×\u0016$ì|µ•±uûÈe«&G{ž¬öoa³F°ô\u0007\u0016=}C\"|pˆzJ8ÀD,eO\u001b\u00192f:š\u0006·®¨À¯8\u0002“OÏ۔È\u001aœ\u00145—\\Ž\u001fTöFsP¼+\u0012½#5[k0E¼ù{!œ ¢W=MšéØ\u0015=Mx¢\u000b+áGê,?‘\tæåh\u0016¯tgÁw´•%u€u¦Å…n„\u0014ë„åÐ/Þ\u0016ê%Åï=}P\u0015JKqÝ\u0006CG=}¹ØæSƒ·\u001cí£\u00007{\u0007ï¿\u001aŽ8ïã¶\u000f<·<‰ûk\u0000œe&\u0018f\u00130„½Ñ&\u001dÞ´=}ċéNš¢Ÿ”ØhaÄá\u0005T\u0012ü%5í\u0016ÀžÛìl\u0013¿dU|ïp\u0000ž\u0003\u0007\u0003&4Š\u000e^Æv2{h–÷\u0000\u0010Å7›+x®\u001eî߸Hd\u0010j\u0018\bô@m«hÑß,Ìf9øâP^„ú¦\u0019\"e¥wkWx\bWÞ6¦¾?Ži²‡þéC»TNô&\u0012¾p\u0019Hß´Â5=M:d´R, N»¸½\u0011:‚\u000bzÃÊú4\bËB¡Öþ\u001cZ@†‚  Ã2€iÒtÅ/© F’›ÆÉXÕÓO³¾\u0006Ûs0\u0013æ\u000b³(”é»R\bÅ¢:…zuwçÕ?½†d”\u000f÷8¿òÃ\\\u0001¡\u0014\u0015°Q/‹Ý¿¡\u000b\u00119˜/p_2WÚ\fGy3f8øIëV9I.\\êÿŽöG =M9Uý+ ÷Ü}J\u0017~@»o¨›\u001dq§_>Ëd1\u0012—ÕüI\fÃ=}=}†µ¶I\u0007^pãÕñó+k#…càñõ­‘´ö¥t(ÛCž³\u0006= ­Ôuà+DÁ嗘½çòòÃÕ= ±tx§tt>³nÝ*ë\u0017¤´ŽTÇPJ³zŒ°+9á‰ÉĹ\"ïÊ\u0007¢§2?]°¼&\u001cKiÖN\u001crï/À¶\u000f½SLj±¬Ù±{{\u0006\u001aµO«û„T\u0018d•#ˆÁÞË{\tcÙàé%ôck\u0006ª§þ²{]jé%ð¥Ù\u0014äÊ61ïë*åfa×ÿ®°zŸæÕd)¤¾\u001dOÆûÒ\u0003à2È%P©\u000fx\u0006î%˜¦yšûîS\u0011c]ñŒ\u001cuD»\u0017G¦:$\u0017“\u001b3\u0014ß\b&”m¿=}JÀ*ƒ¥¹\u000b* ñ\u000b*1Œ·Môþy61ÇoÕ*\u001bø\u001c±\u0005úx£”~ì\u0012d\fScäçZj.=MeäM\u0013L\\òc‡>@\u0010ґf†7ý~‹¬ñ¥ãÜ{ \nYåQ\u0014dÙ°šï0·u\u0016ØÛ&q\u0015a¡Êœ¦\u0018Wg\n\u001e1.\u0011µ{]1\u000ennÃeþ;Ö\u0007šˆDÉYR¦\u000bYjòæv§é²µ\u0007-õ\u001ea\u000bRÛÈ\u0005\u0005\\²ò¤¥Ê茦ð=MV¬Š‚×MAƒNdYËÑúœa“¶mà\u0017+‚ÂßgH»hŸI.‰Ú@ÚbLÚbŒ%œðPœðPœðºo\u0012ýÄlIs\u001b,w/—曀\u000e”…òÙ*Ø%\u001c~@n4ν–nŠN\"-Š3ŸÕ5Ÿ6t\nœ›FtCܛ5¿½Ÿ= ™x¡\u0013K‘±\u0011û\tp=MÌìóŠÁ‡èÞ÷(\u000b\u001a+~Èð“ð=M˜\\¹\u001cÐÑ\u001d»É:(ù5X\u0006àV=MÏ\u0012\u000f¬á²Ü u\u0013SÓ%$ikìojó”’y-¢Mù¯»w8,‡Ë1B¹™³Š&\u0012…¢­Õ¢‡!'!}•uå\u0005³\b17¬\u0014\u0017HMŽm+Óí…\u0003é\tɦ]Ý·oÿQÕp§/_Èî\u0017k\u0019Ñ!ô½OŽÐ˜R·‚iXž]\u0013GF\u0015²\u0011‰\tì™âhØbo\t\"\u000b\u001a_›‘Ÿ\u001e\tÏ\u0015'²ëç\f9ÊMê\u0007,ÎZÈ¥*‡IO³I¸&+ì1aã¶vл]8uÁ9ëÛÑ˙1â\u000eFc=MÆ\\#PüŒóCÄj\f™&Y7\u0004ŸT´Eø‚\u001cè:v&¬5I}ÑÄ\u0004Ì©Ý\u0006)‡S/cë“tÁv\u0017y×.iu8\u0017¯Iúˆ°ü\t>4¿vyÆ%â—KiÝV…Å@ñ1¶—¶\u0019‘ ñÚX3\fª£w\u0014؄ŠÃÀÞ,\u0016E\bÜ\n\u0019~ðF¼ÜÃj\u0013\u0013Wˆ²C«¸GüPcA,\"s(\\«[1²\u001cI\u0017¥8@\u0013n\u000f°øBK\t«Ùt“j5š·eÕÖ¥t~ÿú;ïd=M,\u0016ë¿ðǃü—Š?˜JuùJîÏó\u0004(¹”\u0010\u0003è'>i7åkõ:Ø8ŠÅg4HłUHIá†\u0006h\u001aœÛ)ïH<ՕOûAJßJ!\u000bÌ}mԄ\u0007ëö‰W=MÒ\nøzxåß=M‰†/\n\u0006N+v©‰·-ÖýI.'Ü_Hýò\u0004h\u001d©rÖ©r¨×ù&Š%ˆü§ß\u0000Ôë\"uƒ\u001cI%\u0005T%OÊ°Á\u0000\u0011v\u0007†ïÿæGÞm”F7Æ%2‘c=M\u0004 ;\u001fƒöæx/äۘ#\u0010Ígã/\u0004}óTáI²ŸWÄÑú\u001bt\fB(\u0019# \u0017\u0011éIÁñ#Z3l*\u000bÆ:™æP\\J‹\u00052–M°…\u001cýÕ¾æ\\ø Ý½\b“jGŽø= ÊÛ/q˜Y\fß\u0013ÇTÉꈅ~¡³FqnÄéÐDRnd‹\u0000±n,ÐÕEÑÛÌÐò˜?9Þ+ßg)Ɠ{\u001bP• :OmÑÜcђ¼–|cSPÕ{ÀvD0Ŧa\u000fAÅÒÍ\u001aB\u0005A= \u00153¬V\u0006á,‚ö-×·„埗sB\u0004—/×¼à؉6W éLº\\I›ŸÄ´£hªWB0¨zdž*á\u001e£/‘8\u0005ÏVuä[fØlûIG0ã=MFhÔmˆÌfB5²†ñlE—ÜÁÝÏÀPŸ·ÍrÛÁsA\"‹Ð‚¼1ªn…Ð8ó‚Ãxô3–·Ýî\u0015\u0003«'À7æ-g&\u00155F\u0016õ9ð‹¿\t‹\u0013»N[ñ&¡WLÉ\u0013{Ó=}n\u0015=}fWI\u0006$1^ü¾ì1z\u001cü†FØôÂÒ%ƒ²Cd\b1\n(“æ¿J屌ƒì\u0004»B¿~«okÄá+Î]7ß²ã<ß\u0010æ<2\u0010\u000böÜ\f;Ú¯\u0016,\u0016|§Ry=}Cy<ÔSg¤k×ôA®j,ËR\u0015¾]¬èƒ7Y¹ù\u0007A7ühŸ»\u0010ÀÍ\u0016?÷ƒ3Õ(\u0004әñsÅvÈ°pZ¼WÝeÓWíŸR¼¡Ì—êÁÉG¸‘ò* úÀš\n\u0017!ÙNÏ\u001b¾æ\u0019)¦SMk˜§8‘AoôµUëàD\n¬®U­^â€\u0006?ÕAþfF,¤NÖ{¬Ü\bè\u0010+\u000fIÝL\u0012ªkþ§=}\u0006„±\u0016­Ð|\u0011\u0002Ìþ™~ƒ\u001b£T§ÃßÛ;VÉ6‰iu\u0005=}UG”ƒÁ¾“a‰á\u0010=Mh3šÌ\tӉ~žc.”}ÏUÂ\u001d7Z«\u001cÊ0Æö‡@4f/,\u001aȜٱ\\gƂÙu+ø²óíØ©ãzÄÐ#㌟ËïW»£æ´Úá¼:x\u001c«¶úHt\u0002L®³²w”NÓñÒeG\u0004ž\u0005\u000e&ðõwüÖ0¢A\tý‰ÚNh™ég[™ŒJ†K(Ô\u0004 ¿„¬˜ûñÚM/o·=}\u0013¬Há>{øN-pƯÁLúÂÓЖ«æG¶~ã»\u0003†¥\u0013%S|\b¬\u0001ûä&\b48\b¾Ï~3'\btG90x\u001e¯Â«DÇj˜ð0-‚\u00066'\"Jb¿SBœn¤Œ%Âwf®¤\u0005¢Œ\u0002éÞ\u0005#i§&= ‰þõ\u001a\u0007¦‹¢wÚ\u001f€œ¬C—2êt'!ã@m…'qa$äUjK˜Ç¡k¶‹D2áò\u0015\u0000Yç$nNӃl㠚búB´\u0017šôï¶2èé:P\u0012bìb!Â÷Êæ4!\u0003\u0005ÝΎê0\u0014Pi[O4*\u000eK¶1)‹Ek=MgÓ\bâ”h,~’p_¾ y\u0003\u0018Én\u0004‚à³Tr¿‹ÆÀ_ºŸÕ\u0013\t†0Züoì&a‹ÄÈ©%{g\"+ñŽ \u0011j¦\u0018ý’òÕ̘j\u001bvwÁ]Š\u001b\u001cÍrdG\u0013‹\u0001ÕÆq\u0007nxp<^L\u0005\u0003*΀\u0000OãÈá1LjK= ßÎ\">g'è‡ø:‹¬S>·\u001dBq\u0006\bA¢sDý•§ÐÖÆãÚs~K²æ\u0001³Z\u001e\\âIÿÔ´{¹$êþ¿È\u0005S6K¾e\u001b\u0017Šó\u0000\u0003±am+T„Ï„f‰co҂‹~Œ\u0002§×¡øڕ–n\u000f¹Î\u0013™Ÿ_?zyúGÃYÿîÄ\u0013NõK]̔¹¶\u0012\u0003ì§gÀŠÆ\u0018vH¶¢ç‰ªb)'Å5Idj>µç¢W¾í¥­:øiµe=}Æk¸ÖJ…¥=}(+‘%\u000b°9g¯?d(xÄo\u00187¨¯\u0002s&K\f±øÇÒl\u001c¾ä\u001d˜‡\"zÉ\u0007ÜøYÜíÀ\u0018Ú\u000fk\u0007v±#m\u0001\u000eO‰*s\u001cüÂG•çìR@\u001e¼3'Mý\u00183\u0018\b.BB]Ï= a~S\u0016À‘QŽ\fŸ—9\u000e,xìÄ\u000fê\u0004ð˜!Ç\u0010@¶Ú\u0018u50*!\u0000y\b–˜!p°ûó¿VäW™\u000fvËLý\u001f4rI\u0012—P2΋†\u001c6“jè\u0010ßë!o\u0004-ÿ<ØoÉuἤÉ@¤;|Y1H\\êÏtž3î‰÷âÿÍç«8n¬~\u0014;\u001b:q\u0019B\u0011@uJ>ð²\u0019ÚlʼnQ˜ñø5\u0000\n*j\u0015Š$^örÁ\u001f\\€Ì \\\\˜Ml˜@1ˆkë+Ì°¯îšŽŠÐ÷ó2\u0010(Þgã+Y:ÉXÚ\u00075‹Î“%j\u0015ԃˆi^u†ŒŽßò|\u0000Q¬Ñ¤bO\u0005¹È^[)t+J\n÷%j­fÜM@\u0003\u0014\u001dV\u00102ñ\u0004¹MŠ\u0017îx9V‰¨\u0013“ø­Ú8­N\u0017a)ÝÁ›ð‰à\u0012¹\u00024Ý\u0018Ê·øf#çTÆps!—K \u000bþžôP Ê¥Sü¦ôM\u0011»Wï\u0012æq¯\u001b¨5#ÀAJ'gdk®zÉaÕ)IÓK×6ò¯×þ\u000e\u0011í'MÚ¨j†\u0002\u001b=M…ë]Ëٛàô\u0014û]µ|ÞCë*hô‘óÀ&قõaX\u000f_[jz|#\u0015(…BŽä£NÁ \\}ÓBa&¬þ\u0010WnGÕ$GEÏC=}¶ÀG9$p1øA.\\‘ƒöj=MV' \u001a©Náõsò5‡—è¨\u000eùު·¶ÿ\u0011ÅÞåDꦖ\u0010h{ª\u001f+’2„®¿\u000e-'«ËºU,‚sØK-“*uÓ\u001cYœ“(XXXn†Úó\u0013¶Õ\u0000y\bF/EîO\u001cmõ­ýEÇÖè@\u0005“vð¿×éÿqR̀\u0016(û“‡QLW;\\\u001e˽\u000ebnl=M\u0004<Ç\u0006©a°„Þ·½ñ”\u000b¡MçUÓ\u0017VɌŸU?\u0005ä{2âÆÔ\u001aö^Ü>°˜þđʼn•Se[cŸãqØP\u0019\u0007*‘_ÏkaUpvÇÙ|fN^Øý:7.6†x7\\ûñ<Üß$\u0014s=M‚š\f;ۈ­ãêtçڛ@힗d¦\u001dû‡<ìç·ÿæRz[¯ØlŸß%–Ëûm½/HpyˆS;;\f\u0003g\"…ŸÚŸs;‘= d ŽÇ2ý\u0006®Ý—Ò\fÞ\u0001î¥S\u0001TåiÃc\u0010Q.½þb·Íá/“3ð´\u0017i3“oÇ\fž8uCj]$“§\u001eÃßÉ鍢‰¼–»xèŽO¼\u001eǵ×h\u001eÙ›ë£\u0019.s~·Š\u0001xŶ\u0012Uw—3ÔÂZí×IFÔBs;ë\u0006ý½–ì\f÷!eÆ-dòìej\u0000¸L\"ðµá‘\u000eӔRîejj×{“\u0012ëejêj•\u0014íÎW›Ìäyz§¼\u0001ºçb䔙¬ðž§uáiW2Õ0õ2U‘6=}™ìGĽe3\f>놫_M\fR¥ò¨^Á”´ljs\u0004-gž‹\"Ýë\u000blbŽ]ԉŒD_Mάa õ趂ádZ\fa ?\u0012\u0010¹%›\u0004ÄñÀJSy\u001c'“÷tUDd\u0001ӗMù\u000bì\u0000/Wï/\u000fßã‘\u0010æ9›¬|¯,9ÎäQ\u0018‡íHfÿŽ9Ž†UÁ\u0015ü™GoA)\\ïú|ð±ìZWôBÔ4\u0015i)VÀçíþÆ\u0004U”\u0007\u0014•\u0013JÓ\fn÷Ìï{¿‚ÛC\u000fQ…¿\u0001Íp{è\\•3´\n†Î´WŒÊôJ1\u001e¹\u0015\"\\\u000b€K\"5„l…iýI³„õ†ÜÏ\u0000Å\u0007b\u000b¹ÅD¹\\FÒ\u0012‹)¾Ä_×»jÒùk)à\"~\u001a\u0006çp\f\u00193̲€]¤ö\u00165À¹(°n5k½\u0004¥çY%½z™aTìd= ]­V\u001dµ,XAG?’\b\u0016\nÔ/ùÌ$\u0007äÑìdX-ØIÙq.‚i‘Ö•9²ýÿhÄx;sÄa÷eú¤Ùδt\u0001lã÷W궵üs+}]å\u0019¾g.¯Ðm-(-d\u001aäþJڃ±\u001dké¼I%i¼-Äj¨ƒü<3= ÕsðKߨÙäDB*\u0001x\bgՑ\u0016I&¡·òÖATfÕ+k\u000eŸÁ\u000e6¦Ñ\u0017\u001fs×Ò^÷^H!ÜÆx\u001cՏ@¯m²ãRÊ0ýþY\u001aÄÌk©˜Êí¥4°Q9îÅ6\u0006}¸v„\u0002ŸO\u0012”Üê(ÞGô~q\u0002Wrd½S«½1‹Þ\u001a]\u000bžþÒ('+µÀ§\bøKÔ<ÿ·;É-!ݏÅ5Fo@Šä²øe+'.ߍԀdë.ô+Ç£¥lPr–ÆÑnë\u0011Õì\u00137kЧ*E(\u0006fë*\u0007sÍIHLꨨy}µ\u0014Jµ\u001c4Di.}®P{ÊBÀ±™0ã§ë ]î&[ëêå6<ù˜à߄\u001c\u0019Ùx\u0004ÂxÕØÎrEÕ\u0005a\u0007Ó¤µøÊ=Må¬¢§ƒbŸKÐ\u0007‚N|®ºÔvЙ+~ÃÔ»Ú\\ÿ™¯‰'K>^\u0010á­\t0ÿKDõæùžVæQ\u0003J,Qü\u0016'ˆý\u001f¦‘‚\u0019^xâøöà,YÌhu\u001fÈU\u0014=M\"\u0001RÄ÷ÞÞië@= \fY8u\u0015L DÊEì¡\u0002è¡y\u000bnV¹˜´ã”\t(\u001b\u001eu¥ÈêMDpªÈ®hKÑS~\u0015™‰GœšúÞe\u001b§ÖłЎ4Ùpê¬rðÖ#„V.¾¦³bIç×}CΚ)Kú6VO¾*i“@ád7QƒH材³¿AgL¨®¦ÒšœþïŠôˆ¼-Ǔöb½4I\u000bó“H´Ì‹@Zo=}—àyK?Ý«GáE:uÿ²D&&\u0018™¨Ð¸[hž¥¡w:zž\u0006|êÖ>Gm‰zÂëž\u001eŸ\u0000^ä4°Áè\u0003]XFª\u0006\tÞÎÎèyW¬L Y¶¸Üùþü ³Ô63ÖÈtÃ\u001e@-(¦¼²µ\\*Ãä\u0018Òvœ¿’\u001aIH«y%—ÏŠÓB±=}kˆÅÌ÷GÍ=M[–\u0012íN\u000bî™9r—Æ.ލÊÍá\u000b= 6ï2-\u0000N(¤ÁYŽÀÕnj²\u0001…d›\b¹äšã?%B›=MÌëãÆ\u0007à(°#>ïOí]9¤ûٍƥÍ߄¾=}J„i1‰\u0006z6.~C\u0001¯õ‡¾Ò°=}3Åà—C)÷!j‡Sn‡S\\©u\u0004Ñxù\u001a<\u0011ÝÒ= ]ï›\u0018Qf*›÷²\u000ex´ýÅ\u0000ý&LŽJÎc2¿Yf÷E7#øÑ\u001eµ?„•§:É\u0007ŸÏhÞ­^.å.\u0005Ýȶ£\u0017=M\\\u0004/@ ¹ØõóYêbÊ\u0013\\ïu¦²\u0010a´7vÒfŸ\u0018 ‹op´ˆšbÈ_&¹rzl¡jÔ¿öß$YÜN\u0013\u0010a\u0015fä™.p,¿Ž±&1I¿Y= }·ŽÏx{Òì¿]%z\u0019\u001bÀTÚ6CæµÆ1l÷ùPõ\u0014ò’Ö\u0011Z\u0017[•1ìû\u0000+€WzÁzÁ—Np!\u0018n!\u0004bK Y= \u0002€´Ñe+‚wçœ\u0011v怰\\Jª>÷¢0?cc6­ÚA_d‘\u0015´\u001e­Ÿ«\u0007vr¹Þ\u001dN2¤ˆk<6ㅇ7™z\u001f,\tµžYô¶¶\u001a¨×åþÍ­HxDôxZ\u0001½WäøÀ>>Ր(æ8ÿ),Ü/>2¤üÿ’µ:G\u000bËj*&\"fDÑ\u0018ø…T\u0002È\u001e\u00015Î\u0018õ0é¡üóiV%:Š”õs88\u0012^V_|§Põ³~)ÕÛZ\nÐҔ‰Õhþ\u000fÿø¯\u0012žKBœàÆÂÖ9ûcþžÉµ€¥\u0015Ð/ôÈíZ\u000f¡g&= »ìŽJ\"øÒhL\u0001eL—Kï0û™©nõ —¥mý~öÿýÒâ%àY D6Û[s…n¬o\u0005|¼Üd“½eÐqŒ„¹W%\bÚaĜ±š™ÕnÅtx¡+Ü~\u000bј@ã¿'\b¸x•ÎÃ÷ï0^™ªw)WS®o\u0015i’Fq»ŸÄ\b© ´<ÑD\u0012öÛNŽO\f™%9\u0005÷“Sr¼Í›o÷!U6ÝØç¦^ä\u0018w»\u0016ð^ñ=}57= iæÌÞȜÍù\u0015î§ÕŒfd\u001fµé:òÓA¥“Š×‰Ó\u0006wpƒ‘¾ ¾kÜhf/axr—®\u000e·º]àßãþ¸«\u001as¥âòFä½\u001fWžÁ\u000bCê號c¹}h~¤ÉÑν1÷†jly\u001a\u000bú\t€iO\u00011ý­\u000fSZáўP¹oV\u0015#¡Ž²ú ʾ֊‘ýqo¤;j3wÁ}\u0015ê4wéLj\u0015gfêO„…­0n-? —gi¾þ÷§“@ϲHP-iUÕ7 ¢Kù_<‡UòÎnÈH¶L5)•[gÅ\u0018æRâ´.ߊ\u0013\u001cÉ^sIþ¾Ÿ7\\}\u000e~J1p\u0010aõÏ\u000bËQ‹,wJªÁ™\býÞSÓ.¸áäˆÃ”À·t\u001c/ÅÝ$ÅÃÛbµègÙ\u001e¤9üÆ*[’›A­\u0001u\u0013’jr$µcñ£\u0017ñ€¸wÄo·UÏã{ù«à-¾ûZ‚çn<ßÞ77£“š\u0019\u0002‰\u000bnÒäy\u000bZîr>ç\u001fM®jµß&aæË°€\u0002©íñ˜Òj3\u0002ê÷¢Èh¤\u0019'(åó\u000b¿ì]ø†\u000f\u001du½ñ÷ÂÏøÞ?ÜåJîMl«ûìêkh]¿h\u0004m˜Vï\u0004\u0006¶zg[‘\u0012]UÒ/Š¿Py0\u00014\u001aÛ5Ù;þ:\u0011-6\u0005ce0CÆÔH=MT\u0017²aÃê*;Öã\u001cë6;ï\bmÂm7dŽ,—Wrû„!'CçfEÊÐÓ¯UÖ6±¹Õ$\u001a¸šºÛ€Ž?Òy^\u0016\t+\u0011=MÈ<…7¯>9eXe\"\u000f\u0015i¥|‹–±£~š±\u0017úi\f\nù£Â= (­´Ç—zuRh|\u0013ã½L\nâ÷\u0007‚êÍ\u000efcar\u0005æ@âóÍÙPNÒ\u0002æŠl\u0018›õ\u0010ÃÀ½…Ô\u000f@\u001d0¦Ï–lÿíTùV.\u0014ӟ\u0003PÜ;²e3 Oò\u001bT\u0007]w—<\u0011\u001b‹Qõÿ06lÂN­Ý¬5f‰Ý|}Ià\u001bælN™Éû¬KLₕŽ¼P6ä0®gÂ\u001a5®&t¹Ê\u001aåLáK9\u0006\u0014D塳ÂŸ· Ÿõ¬@ÞV¨Ëí\u0014³ëçÔG³üö»€~%cv‹¬é\n…‡­ûå GDK\u0007fêá¦\u0007„–s€•ö«Ù\u0000å/C‘X\u001aóùI\u0007í ؃À@ˆ\u0001Ó= 0ʖÝ\u001c!K<ô>WÓȀ\u0005-è4\u0006\u0007\t\u000eG{„)öL8«?„BP»«·lrõn·ÉyŸ¼\u0007a8_jˆÌƒ¾Gy./“\u0018êÝ¥öA݆û¯Î;Ý\u000bû@‘‰F~‰ÏR\u0006Š½\\gÑö‚= ÐÞV‡\u00040“ö׬:î\u0019»\u001dhëFæù‹ãí\u001d=M]¼Ùûü\u000f£\u001a{3 ¤™ùp<\u001bût?\u0000‰ÅJÆ(2X}}äèqÉïëXå\u0002ew}56Ãæv«ÄúºÃv™n\t\u0002çv\u0012ø±úÎ_n²©t\u0003íO-t~‚Ö‰d†(Ô6!õZhÞ\u000fr/\u0010í³â'Žu=}m³çRÍ\u0002ìUæÔ+\u0003¥9\u001fr\u0019 NŠtD\u0006þ¡\u0013\\Gb0Á‚é]ut˜\bÆ\u001eZkꑉœë?ý<Ð>ùL‹\u0018ëé\u0002{R˜ôãhr®d\u0012g½º\u0011Òî\u0002\u0001\u0003_Á'gfƒ«Ÿ\bUÉS\u0019 ë1Æj›úSJšÊQ$“×=M_ÑT_³íD+˜¬®'J\u001cÁ¸ÆæŸ8\u0002“‹î6¯•ò֌\u0016Ÿ¢ÐAÕ²~‰³¡\u001c)BeêéÕv>0´ïƒOÆj¶%™N“‡Šô¡ÑVh\u0013\bd\u00054Q+ˆõBÙüÚßU\"þ\u0011X ÀB´a.'}_AÜ£¶ã¾\u0010‡1¯\u00057\u001cH’ñD†ò²ˆ\bíJvwS—£¹ñ2%ɔM×3qC2°\t\u00029\u0003…=}Ç\u0012] gs\u0000sl{\u0000½_ʊK[®e«\u0016ØäƒÜ$ xï\u0001S\fcBˆÛzÃ,C\u00156\f!ž…r]?;¥f\u0004&\t^Ža¿\u0004…?‡]²0B_b™1oÁäïŸî–XhŽ&…ý\"GísÚ³‹ÿúR\u000f‡…\nH\u0000QÏú\u0017¶}i»”7™\u0019¢\u0016æatæ\u0016 ÖÉÔîe\u0000o°\u0015= ¡8®À‰\tg(N \u0018Z\\\"‡\u001eíò\u000eéÇË7lÎëÕ\u001dÜKŠ\u0017orÐvíGõ7aÕ\u0005÷*ê&¸›‹®<\u0015GÖá4ûö…4\fkDŒÿ\u0002˜FØ.?6þ‚4â/¦Í\u000f{\u0003rÍzL0sæ\u001cŠìðÏZþáëÏóJ…Â\u0005„Në\u001e-6-\u0002‹ž†½_\u0017pr\u0003´/\u0006[F÷ƒ]·Ï‰Ë(˜è™LJ†Ú|®5(´èæÒ²¬\u000f°0êˆ×Økց= Æ\u000eý\u001a›ñ/h]\u00070h–?ØÆø¼=M\u001c\u0018€\nSHn];9\f„ÐXTêðpßq=}g\u0004sK9XÔ\u0007íÍÊ\u001b§+\b¹ânߪ÷@…ì5)Š'q•@ ¤/\u0010\u001e#ž(aÞÇVUo:ÈÑå°r\u0010\u0012tÌm+iŒ\u000f»t\u0013 DþOü'±¬\u0001\u001dGJ\u00139ê\u0015lô‚üŒŒ\u0018¼Rùœ.›3ƒ×\u0001š‹\u0013\u00143= Þ.:oÐE>K<…ˆ?Ï£ˆÖÈmš·ÿ1q=M\fäÌUû×U\u0012Ô\u000eÏØ8\u00060ë«Þ\u0018K¤x Xª\u0006QÕ3ÓªÃ\u0001:ÈI›°Iü3\f8°Îð\u0005gNÛV1\u000fãh›Q= Q†\u0018fß²4-ÇÒ8X¬¸£,¤wà\fm5蜘*í\u0015T8\u001e£*$cm\u0014Chý\u000eSMrݶöp‡”ŪpŒ\u000e]\u0000U€3\u0016Þè1lܶ܈;ós·€ïŠ)è,Œ\f‘YW\u0018\u0015£È•~åð>¼Ghc\u0011π̼\u0005¸\u0012ÿþh…\u0007\bk\f…)\u001b\u001ed—´QÞGb%è¼MlKì€jý·\u0013=}ˆk:#–Ì\b\u0010ÏðH3\fÜÌú‡\u001c\\\u000bN>Ì= ¾„\u0000ÒÚí¨\tüU\u0010:.cÜá9šë„FS¬ƒ=}r×½\\¶ûN­1k.\u0019\"T½¹\u0013W¿\u001c\u0011‹™|\u0015;ZšˆäÐ\u001aú€üߙ\u0002\u0018V]:0\u0017Ó|\u0000Cþ;\\Yëæ\u001e”žßّ ÁB\u0019ö̝¶~ ۟#ð\u00131†b\u000fBŽ|jèj\u0010¤#þ_ñ\u0010\u0015\u000e5\u0016Ä\u0000ÍnZ\u0010û\u001dse²¡$£D¨_ºxxi¹£Õ±S¾€»€T®œ\u0000ÙØ4€„íA½\u0001kTÄ\u001e=M\u001a—\u0011f××íŠRë\u001dG²™3\\NQŸÇ€ô\u001f½FÙN¶ ý}§\u0017“\u001d?¶Ôìœvâ\u0003X±>’boÎgV \u0010•¾÷³žÙøl2NæäÑÞdžª”—ýÇ9Á¬\u0001ò\u0019o§/gK~Xh#¼|ã\b\u0016~𪉏¦–\u0007+Cät~Ikbi3g\u0007K(5D¹ÎV¥î\u001cÿtÑ÷W“ˆo­¹Xƒ]\u0017m|FÖë+.\u001d\\Oÿs¿\u0004ëwéR]ÜÈ6¡\u001a³\u001f\tº\u00003ž\u0015Á_õ\f\u0003¯\fú›@bX\u0019T\u001b;xUqŽ=Mq&\u001fOŸ¼¡\u0000’&¶©\u0015üÉlÖ(e&‰­äJ¦ú/\u001béü\n=}Z\u0005\u0017¶µ\u0005R÷T\u0003–ÎO\u001djÉYÄ4ýÏìšë\u001f@âÒU{Ο\\h'\n‡æhÄ!„ð\u0016LyOgæyM0mØ|Îtk­\u0011ýL2÷ˆU~…Q¹Ä¿o‘y´T\u001c$°õ¢]¹\u0019Kùá\u0015Ñ騳¦±\\i‘³£ÉÓ)(Qþe8O\u0007»v\u0017”°\u0005ñàý\\\bGKͯÚ)ڈI-6ÛÛª\u001eq×ÎE]¡Sç\u0003‰5tقÃø91^…\u0015\u0000žÅíM@»~d\u001e\u000bs½=M_3 uu\u0016n¼\\-=}\f–“X:i÷}Š”}‰†\u0013Ct:Yäå¸ÐU\u0016À70jäl©ô\u001cã҄\u001e\u0019#\u0004nØOý%È6æNz1\bÅ\u001cÔ³A(AžRO ¨;Àê5\t\b¹a:˜N!0¹çx\f\u001c\u001b*lÑ\u001cêÎ\u001eðj\u001fZ \u000eœIj59ÏX)<‡™Ô›\u001b\u001bß\u0016o\u0004\t\t\u0001\tØÿŸ´üø ý\u001d9‘á®\u0001\bøééé\u0015\u0007\u0007ç\u0007šy\u0003ÑW¾1‹´Êý\u001fם¢jš+)õ*p”¹+&\u000bæ\u001e¦é®9·Œ8M­x\u0012øDM­H‘ÐÂ\u0002BÐ6|äù¶ñ”•«—°TÔ\u0017/FR-öÿ«•ºçȑHi=}VtÙ\u0011½I‡Çq\u0012Xaå\u0011ÔwB?lÞàoSې)Kùˆÿ\u001d&ö\u0016†à\u0007ïޟ\u0006KÊ¿.qÐÌÎTœ²=Mÿ\bîý:4Bê‡p= ñ¯ü揟\u001d˜´­\u0012Nõ¦ýs\u0005ôˆ\u0004¬Ù¶²t\u001aVMŠ²\u0018ó\"aÂ\u0010%\u001c—*ú¼W¥qïí\u0018\u001döh¡oÏOÂ3ζn;f·FK-«lg&ÙJE+vÜ·= QË(á6ÿ°’òOÆÈ+ˆXTÝj\u000fëì8·pÀ¥\u0007_C\u0001;7‹¯ÈûîÑî/†Ò„,üõÏ|pÉ8&ÅQZ»„*\u001e.X”YÜÎ\u001a(\u0016.7±ÄM•ÙØá™Ë8Þ\u0014ˆ×Äà̖õ²\u0005òª¬Êíæ|éZ}²C´\u0007\u0004Z\u0005Ôv\u000bÒ«ËÐC;õÕTK#»ìCwƒ\u000e¿­Â\u001e/e¼ør\u000eB4³³¯¨ƒ’\u000foÕ±ˆ3©^ÃÕ¨Ð!͏Ëô ï€ï²x?¬.ó\u0006\u000b€K@¾÷Å·ã½ÜȺ³§Mt¼úíF2Ÿ\u0012/T=MY1-aÀÁF›€×ù= ç\u0005_o\u0005—\u001b%\u0000A\u0017Ñրç\u0012æó\u0006ÿ\b\u0003_\u0011\t¾ðuxÖ¨O“4ªÐãˆ8ò%ç@ò\u0016\u000fz$0k-ҚŽH¢bt)tüV\u0010’‡Ñ2mæü\u001f/x€_\u0000;<þ\u0002ÓûAsvü¤’\u0011kx\u001a7¬N5ŽaÛ\u001d¢ØÞ¢FÓH\u0002z6^]ò“Ê(‡lœ\t¼ùŸ_MÐݍÁ˜½Õ\u0005/#¡çŽy4ä\u0018Ä<\u0001¡žBN‡¸\béœ\"Quú‹€)K˜>èZ~\u0013í|¤šè8ëÍzÙý‡Û\u000eÍùÿšL¹èE\u0005Èڐjmr= \u0005èÀ®ýB×æus~\u0007\u0007”òå‹à¥£\u0000F­dcæz\u0014]¨äüC)q©yŠ[ŽVÖü\u0012o€x\u0007à÷6\u001bќW-4íüš0ªßªƒ«$D\u001bo„t;V†À€¶\u000e= $ü3dCç2eióW[\u0013)°ÂªÄaðŽï\u0004Ë_wÉá‡\u0017ĕ§/Z,Ú@ð_L<,[P-wÉá=M\u0010…ð\n¶\u0012f'\u001b.›iɁ3ô>›»Ù”IT,ª¨=M¶\u0012_ð_4…#'¯D ٔT}gFßË1t5îÄWˆogD×+39c\u001c,^€»Q\u0016\u0001=M„:Dçã\n0£è®ZñxR¬ò1w1\u0004.¢.Â= Ý~5eâ±Ô)R³ivÊK›\u001cÿ\u0005Bal!š§%%ö£\u0015‘|\u000f~?\u0006ŒuèÎ\u0001\u0007DýŽx­{\u0013N!ðiÒh”°Ø¬CSx\u0013KVv¿Q’ÀïMÁ\"3Œœ\u000e©®\u0011-†üŒL¿\u0004èg#5\u000f-b,ìÀMÂ\u0002à{¤å\u0011\fØS\u0006âJI¯Ü£’o\u001f¬^„³z‘7RùÚ³\t\u0015E͖\u001aô\u0015wàû¯HüHN¤4“4¬¶D 4¬÷MÛٗqp÷Ü­Â\u0012&\u0016jéÒÜ\t‘ß\t\u0001•’= \b^= HæO\u000bNó]º(­å”\u0015ý\u0015:ì &µÔh½Š’\u000e/„\u00167µÌ£<Íõþ…I\u001fâ-…¤‰þ)Ä!õÌPœ[Ã侫È\u00026~°ÒÐ\u0005ÝögGÎ\u0001\u001dh…¤ŒfùßIݨ\u0000„\u0015ÖR\u001fq\u0002ˆ-Òâý)\u001b\u0006ýN¼&±G\u0007x!š5­NGÄ(ÖÛ\u000e’žµ—WÜԞ'¶³,‡ó&U¶Ã$ò³œ=}\u0013ù\fæÀ›5ó{Õ®Áðw#dJ̼\u001f÷Røwüš\u0003é=}mç}^¦\nÂ= ¶Èª”\u0004溨§eüƦ»¿BtþÞÍÏ\u001cK\u001c\u0014ý•b§zu†\u0007©rþÙÛ\u001d\u001b-Äû\"\u001bMF\u000e¥m6v…t0©ÉÒsMUcä4\u001ef\u001eðÆá²÷éT*…Ý•f®‘6ÞMW\u00043ñô\u0017\fY=MöÎ)Íø¿¸«hèIŽ…WÞ\u0007;\u0002gÈt·Í\u0019úèk£ Öi˜\u0002ÖüìÐî\tkkm/\u0001ß\u0019#1Ù%\u0006­÷¨†çdFì”\u000b\u0000\u0001Xt—ýC\tÞ|ùȕVA€4ÿ'9Շ%ÜËèþ\tm€Ü¶\u0011&9Ì}縫ÏU„\u0011ÞþÍÉàâ\u0005‚V¼\u0017ql…¯i:Ïwßô«Çª\u000bSâ\\\u001eaؔYífF¯­–¯\\ÃaU\u0018\u001fU-S\u000b'õ-\u0002§\nƳ\u0002¤§ê̟Z þ׶:rg¸KÕ\u0012»2ô<\u0012¶\u0016.–}3hêõÝC7.ä\"žôv?â¾PûU2ÙK\f\u0001ë\u001a,FÏ9\u0005ÎúŸŸƒÉü\\¥䷣©±K÷醺«ô¹\u0000\tŸçöÄ\u0002ç0‘.D¼\u0005ÒEÿÓq°µß-Õù:Émî7àßÅà4ùÌùÏ¿\u0006Fç*^^Àèoï#Ošß¤\t«Ã®ä3øˆ_¶§|ԅ\u0002¢!vg'Så¯hΎ÷-€úP™y² ç5‘²‚Y€Iæ»Q‰ÊxK‘œá#P4\u0017êK”Ù\u0012èyˆË–w \u0005só*C‡@d*\u0012†\u0002™ªä¦#SåG\u000fÖðàïKÀø®Ç“\u0012\u001f~\\¹Á\u0004HMzõ¨‰øL5ó\u001aÞÛ0Sô-÷\u0018\u000fã愛L#UB¶N\u001a3àÌt®žET‹p•¶\u0004Vt\b­!Cf”FJ!\"õ\u0018\u00117$ô\u0016\u0002üT ›Oًë~\u0011þ\u0014ŒñŠ\u0010\u0017S†w&Æ|=M_¤´\tÏúL̪\\§ˆ½\u0017&=MD|\u0012\b…\u0002Å>\u0005wkȁJŽ\nz\u001aµJ(Z‚Ä¢A·øF¥J¿\u0005·l-'g\u0002›\u0014ÖálÈ¡˜jAEúN¦‚<ÌÍ-ütµæù±J=Mæ³ãÏ[ä±Éº3‡ß‡\u0002«*÷\f\u0005¯zî\b±n#‹ý´›8΅\t]\u001cþqP?CÚ”ˆ\u0003þnn=M0åus\u0000x¤Û2þaóÑv½P\u0001ƒÛ\u001b\u001d^c«= Më‡ÊŽ|¯—¤1œW¼«õ9\n\u0002-åƒ÷?¬\u001de±¿Ü­¤ÖƒGüƒ–-)\u0013ČüdãnRP{õ!J…[zí¤M8®z y(^mbpî%\u000f7\u000b¸\u0002úÜ\u0010Ÿj\u0002\u001dɓ’\u0013[\u001f~ÆRä;&âx^š¼•œ‘^+tŸÀñk\f9¨¿w\u0016?#Æoä¨\u0002\u0004\u0013ä\"¤b¢jŠ‡\bs\u001a\\Ž\u0001ŸÊx\u0014€f\u0000\u001bøXŸ\u0015'\u0011œ~S \u001bÀÍí‘q\u0014ó\u001ei‰X[P¿„‘ýTagŗȭçS™U‹íÏõÔNÎôKÐe«•…†¦\u0006ZXœh\u0010\u001d¸ãø3Éw\u001b„\f\u0011¡™X½“ª[²¶*åm\u000bƒä‘\t!¯(M+©ŸÅú¨Zú¨\u0011l\u0001çed\f½ƒ}±“¯¶±÷¦!\"xB”9ºBo§\u000epJÒ©¶\"¢:d­U‚Õö©Hä®å\u001fø¬É*ÞK{Hh\u001d“S„ÎAUîô@Õ7<‘Ùt/—gÃȎ²¦*öy…«•wô£îjÆ\nW\u0005Óbà:ŠÚΊbߧòñ[=}wÖ:¿\u0002©Eh㤗ºÉQ·9¶˜‰‡W6z׋v\u0006uX/¹ŸR›Ù®D\u0016¹SÙçØÃÉ\u0005-rà©È!Z¯ù¿\u0005K„ÌCb= WÃîÝæ!þ\fÌR®U¼¹s¼å¯ùÝf¥(V@Äz¼Ã\u0007«<ÂõöÄHô@('>ã(„ì[Z™Í#\u0000\u0004)0Í\u0015í\u0011z¥\u000b|Ì\bFØ\u0000ˎ“G\u0011®\u001e{+ÝÉÜ7eñ\t®=}\u0012ƒ\u001eúó!ò.ô\u0016kg>X<¾ã}ãÄÜWõjœ\u0010%Gó@G|ð1ôEeî,¥*ü¾\u0007°É$x0ƒË\u0013g±¼ò,“Å·tÀ\u001bčÔ$\u000f\u0012\u0016à—4s¦;G\fL¥È³.@®};FˆéÛÑ*\u001d=}oè/j\u0004“lŸð£Ì‡ú¯Ëø=MÑy[ژ@'n?¬íH\u0006ðQ9O(ŽnÄk%ò‡9O„\u0001U)žk½%Oÿ¸,åH°\u0007(\u0005¶D“×Ú38Ù9}r¿\u001dåb±SOãÓ\u0018ô¿gdU\u0019³‹{Sà<0\u001ež²\u0010ƒ\u0010é\\oÈë·c–0d´·r3ÈW¿—Ò\u001c\b¿µXz\u0004= £i_9ë\u0002\u0007ŒmwvGàöýŒÔ\b{ËÈ(Hèòn\u001f~æ\u000f*Ú4^|ùç*ëÏØ+ô´ÀµK+ѧË\u0001¾´À\u0001\tè\u0017ùÿì\u0019ÅÝ\u00155\n\u0010.wìh“µ/”\u000bnã'›\u001f;¥Å¥\u0010˜\n‘ÀYË\u0012³\u0018nc\u0001õÚK4ß\u0017uß}rtèó:-/šÕ»Øˆsn½K¼E´iÇ\tÑÞ4¹0ԙ³5I¨†´¹*?³EV*˜p+p\u0005ŠÌNíx„H]µŠ˜Vênão\u0017×\u0002T\u0001M8¡­Ð’”óxЙ<úŒ¶ˆê­\u001bù­ÔÎü€\bªÝܨ‹˜\u000bn|ll•µI- ¼{“¹\u0000«\u0017Dê:Ç\u001aÌ]—5\\\u0011¹ÀI\u001c3(Š\u0014Ï\u001e¦®0\u0001\"i\u00064µ‹Õ\u0011̋\u0019ÌßU/藙ÓZžÄœºc¥¹E”ÓËÇ:KüXÆUû¶„׫\u000e\u0005ÓVÉE•Q\u0015°®ý³­Ÿ½©’4^·z&*²\u0006’•ŽEÍ|=M¢ÙƒA:›ÄÚ\u0011»\bS°(ÍçLªóª©ž˜iKoØjÁñ’ò%/YÑè\u001fFu{ç\u001cŒ³2Xl2Ã$\u0019\u0011Ã÷¢R³/ïË\tP¯¿X\u000fÞo\u0019\u001d‰´áª\u0011ֆÝfˆ?ôàõdñy«\u0019Ûö›S\u0018ã¬\u0005¦3n\u0005×ñ8¦(Q5ÿ½š‘{‰\n¶\u0000\u0016\u0005\u0004m¡¹WÍ~óã‹Ó\u001b‹°Íœk”©\u0004'>҇\u001b\u0010ýÁCؑµ\u0005øq\u0012󲅪òÐ_HˆÕ¢•ö‡óÇ|Ì®ñ•P™°Ž–z}ZÔñÿSÄ\u0006À9á±y¡ÉA\u000e?4Èμ\bOIOÅð›ÍioBÅ&WlÁÌ:Ëx¯‡\u0010<‚ayaP3D°rá:\u000bo&p®½\u0014= \u001c¼còù–¥þš!KQÎĈK\u0005éü°’e‰¬\u001fïäæ\u001b9²ä\u0015ŽfÊ\t!\u001b¤´1©¿¿Æ;fj؞eÙ¯<¬\u0007hqNÕýˆY†×ƒC´p‚Å¡¹œ\u0012Ρþ#'åc(y\u001cCÿG?l\u0019{F8q’«è)&!^\u001f\u0006¡ðQZYÔPA*†f'C\b~×Ð\u0014YvíòÞÛ\u0019ø„íÎ3ø'\u001dړ\u0016tøúwyÀ\u001d\u0005úNãxy\u001aQ¸Ì%¤p\\Ãw—íG]\u0005mHQñ†´o:Ö9Õ\u0015\u0017̉\u000bðÜøE†‘XÙ|1qM¦@aÒ\u00044+È[Ûà\u001f“Þ\u0002\u001f7\u001bˌõà d×rXu\u0010X\u001d·mË0}¹é\\ù5E˜ÑÓ3\u0011_7£·Ùç×ï£0[cf\u0002\u001b¨˜’Q\u001d\u0015Î¹°Ô›´\u0017\u000e™\tÎVJxÝn!\\ÿu–l¡N\u001d€\u001a-âŠ\u000bJÊmV\u0017g\u001d3¸7D#\\FÁxHµ÷€ƒ’áî=MnT\u0018~FV·L*E«Á-\u0015ɟáàÀ\u0019·…n#Ât¬”±\b½¦zÍQ\u0016Ül(ŽE¥2K¿†´7\u000eý&.·+%òMRîûyj-áùè:\u001b‹(X“ò\u0017#µß±’«‰=M@µß±l\u000e÷\u0010ó%j%š´ 3Gíù\u001c{\u0004Ç\u00139ª+äz,¤{e£†®à´Ze\u0014®+þèÿ$[ÔYT+þ‰[ø1f\n˜Ý2@˜5gЄiøÌÌÁÔÐ7\u000e\u0017;î\u001fK¿Úái©Ê_t8¶Êïȉèÿ\u0005MçÑ\u0017ç%e¨Ä¬—Ï«¤k äUæ\u00010²\u0010ßµ—”÷ßà8¬¹–àËößyý7NÐmEèÜù7åÇFôo±FòHéì.\u0011ϋßU\u0014Îi»¦Ð3\u0014Kó\u0007ƒŽ9÷VTrŠ¾¶ý\u0011\u0001Õ!ü\f\u0001\u0015!ü\u000fWIMÁ×v\u0018\u001b—ýH­¿åDÎ8]\u0013(IºÅ\t_¸òCY籆êG\u0000å\b\u0014$$\nØËÏJE…µ‰~ ½9\u0003¿µ-©#d弍pïÛR˜ñ_\bŒ˜jE]¥.\u000b]˜bÁð\u0007\u001asPbYü\"Ðy\u0002Ê5Hmído·êØ\u0019¼’äÀÙKx¢\u001e*½\u001e1ë“ÍŸtuÔS<\u0019‘RTeÆ´wŽh|\u0005P;´\u00013íÓÁ\u0018¢e}‡Ï6Âlhœh6O=MjŽ¬,AW¼x^\u000eyÑíÑÃyŽtØ5\u001b\u0018.Õ³š;MæGdﲤ§ð8ÎEi¤·Y\u0006”\u0018BR›$À\u0000¼4¤\bÞ+U~ûr”A•ÞÀo°Ã{§2ÞÃTA\u0016ˆ3gئ\u000f6ÜÑ$Á1ö\tmBˆ†é¤\u000bg}<\u0005‡ð‹Q®\u001b«‚c;|þ×\u001a\"kÅ níá\u0002ÔM¹wŒG¡\\Pm›Ê7ÎÏm1ø2 s#sƒ=}#¼û”õ\u0001'SëaŠúð°Nh\u001d>ìªÑ­ã_\u0018¸rvupC¡)Ɨ]ã'[,³\t?ž= bÎ\\F\u0006\u0015ÃfìÔ,‰ày%‘àwS«_¦à\u000f+È岘\u0014\u001b1VüVx[EÚA6÷ûF5\u0001¡R\n‘{ùd»Îڕ·-¸R¸û ;&ݔ±2š,Nݯ3Ð\u0002\u001d\u000f2)°Q\u001b\u000fT ے{Á”¹”:¿~êVj™dÈj™ýœËÜåž1Æ’mAsՑʈÛÁ&æéj=}²bi߬_Ԟ÷õz›áÂL¦´‰»¯ú\u001b/´ù]±Ó¹(F¡\u0001߇u(ƒ±\u000f4&\u0005| ÔØ\u0011>j¢«Ï*9*±ê ÊÒ­é\u0011&&1ü䈳m\u001cc±”a´FCU\"ü„\u0018£òº¨±¢–\u0004»©iݳùþ\u0004\u0000©óÁ*”\u0016©Èþ?\t\tƒÎ\u001f'ó+ðÀÏ:<õk\u0010#ÏP’ÖZ\u000bî\u0000â+»ÑêÉ»ö…ïã\u00115xÖd/\u0015ɏ)äÉñ‡Å+?¬\u0011ó\u000e¾~ŽªLÅÁwz\u000fø‘üŸ\u0013\bœêcä©;9©¾\u000fXroÄ3\n$âQºhÛ\nÇ;=}c\u0010ՙ¤æ ˜Ô‡ÓÂO™Ée?šÃÎÍÜõ‰\u001aÉ\bk–ÃÂFÝPŠotƒÅªŸ\bT1Lå¬ôN{[ݳTc’ ˜:RÑ\u0018mÄ\bkº±V ´/R>¯hí=MN‚ˆK\u0001’'»54¦üw+wð2»çv(Òêа{\u0018\u0001\f½\u001a¡),÷EÓT”eÖÓ\u001c‰s\u001buf;åÕ\b)ûó=Mûå¤ê¥>[\u0010Ç8%¯\u0005H\u0002ßÑ«˜ÌKÊWU9Ó\u0014ÅR÷ç\u0001c§/E¶ÀÄÆvǤ¹J\bYý\u0001Nˆˆ%½Ð\u0016{9:~®Øêù2öÖÕõ\u0001oë\u001dËÈ6ù]ìŸÔD÷w¶ô4\u001c…“I—Ù\u0001œãR˜¸\u001a_†.Wɛsß\u0019\u001dø\bBTFÖn\u001c¼]“@ÆQ“= Ò\u0011’îBRê#L\"úÛLµêÔù»ÿ\u0014­T*NÞÊìiB÷$\u001fఙ¹–,{9ˆ?%n)ç·\u0005äJ%:\nûÝ\u0016\u0011ƚ‚0,Š?ìjV‘·Nç÷Û\u0019\u0014Å«IÁ\u0005²\u001cMÃ¥\u001a\u0006J\u001e±Jx%‚õ\u001fˆ¶\u000eÃÚãÁ‘9KocƲ\t3*ž4^\u001eOìÄÈ.\u0017\u0018òò\u0003\u0014ø\"cÄplh(SžZ\u0015+ovß±h”¹ó²d¬e´jÇv™¸\u000f\u0014y= \tŸ}’\u0001žŸ=}Ž\u000e’ìñ¯\u0005ë\u0004¯¹%+Å\u000fÓ\b@cK%%ë+bO°ö”=}\u000eJZø“–\u0016íqN‡Ç81Ì|ç2Ý¸?çø”AQXl„%Ž'öE>ēj¯ïùc‚÷1û \\Ú \u0016Ü9öàHû]Ñ7\u0000>ð³\u0002>óGf0Iõ8ïÎï73\u0007ÓD\u001d¡\u001aª˜ìû]°ñmr'æþ[h7Ød\u000b\u0017QϏÜ.àh´T5 Ö\"Ý\tAòhԖ…ÞNå=}ÄÞÎ2\n¢°˜ºõs›h5„.šh¢H¤gNhÖøP\u0010Â\fs4§\f‹œÀ\fÿÒKÕÄp%ÛÈ°'X\\\u0003X\u001f\u001bsùYÌAè±ËE^G¯))=}<ÚT»\u001b¬\u0018À+\u0001D”.•¬\u000b\u0014ƒðܸê.jSžÂàb¿,´ïª\u0019HA–¬Jc°Ú~öt|˜rè#H£‹ÝÏa¢Ù\u001d\u0003“ŸVj‹h×å”Hz­ñ—>Ú?^+\u000e*\u0007±=MŸ‚üÿFRÍ·ÛTTÊ\u001c[Œ¤ôFfæ´9Õë÷Cäs~w\u0018É?̵AãJMTÔßÐ\u0011äR4\n\u0019𢿘1jô”<Ù\u0014\u0015ì\u00051‚Ûh\u0010&g©,ôRM©2V«ãlÙz pÁ\u0005èï­\u0013Æ\u001f(} JÈÍ®>¦tk›JÈ\"~ÌÊÿÈÒ\u000b\u00113* ª\"\u001cÁP_ö#\u000e¢Ž7Ê<²4OêßÔT¦2·Ô³\u001cr[­¸\u000bUj\bf¥êÒCû:TÉã1\u000b4‡×Û\n\u001f›*•DÝgBMfo ¦|žie—¡Ñð;ÆÙÎú^ƒÚ]ƒº\u001f³î †ÊÅ\t Ý/‚\u0013ìè\\m²™m^I­ŽŽŸ9l0¸øûíÉÞ\u0006O×浕¢Œ[½Dâ–-N<+ˆ©}¨yL*ö?$=}GÜ\"x&ó‚pê\bB\u001b•ý—Ê\u0016T?a\u0019Χ?\u0017,S\tåù^\u001ap'®èy(h\\5Q¾«\u0018Ž)­¹\u0017»,\u001aô»7N\u0012ô«àè)J%\u001aKèƒíJ%\bóWiD¡ç\u0001\u0015= >æ=MÀ\n\u001b»Ä2jr6ò†šÔ›\u001cŒ¶0ǤŠ;¢i¦\u0006‘\u000b‚\u001d«bC·&i°÷„èõRÒEÕuYL\u0005_¢>\u0014 Þ\"½¹8[ÉÇ¢LÝ#¨2:+\"Ax¢Í¶ÀÂ[vkwN¶­·,\u001a-%Ô /Ɉ䩜j<\u001fý\n=}È^äC|,p[?›g=Miz]÷>YÚdŒˆÐsBÎ$G¡“¤-\u001aTÓ\u0014‹i0p\u001d\u001bI“jèY9„c+±·2¨«D½w'Ð7Zd¼ÍÙèöùº?å½³+­D\b¦\\@z]Ýå\u0006âù»ÌåÂE=MLñ¾Á$ƒ\u001d!ýˆý\u000f4Ùz’ò=}­nJïl\u0006\u000738øi&b\u0000ç\\…\u0013Äìg®x\u0010xóùs¯Î\u000b\u0017U\u0015^;݈-Êm\u0017}½\u0018Î\u000bç\u0011r­\u0007¨0Û9\u0004³›†±_\u0017³>£¤\u0012NÈ~7)3ɗrcÀFoO¡õu&;f)\u0000\u0014²óíÂõä[Ü2JÈ\u0012œ­º(ËZ\u0017\b\u0017gãÒ˜\u001c'\u0000ø8ž\u0011dF\u0011U\u000f\u0011Ä\u0006¢oƒ¦\u0017Ä(AÂÍnRâ_¯\u0012u3 b._—rmµŽ:…ÿŠkUŠ\nÿ™UE¼´º£î´ÍùÀŝ¦hç¸rÍúj>3jW?Výß\u0007¶\u0010tÂø鹈—–äGùD3_\\€]blÔ2Ùâ–×ƭނ\n!÷[ãçÙm <“L§µ\u001b›é\b]ïî!;Ï\u001aнA{¥‰¿Ey£Y:c¹wBő0E•ÿ\"‹–³ï\u0014ƒÆ\"µÿ⣺™„â„’Z’Ššô¼mû—™*;q\tkræJøÉ\u001c\u0014“\u0016×ä!CÜ}he¦\u0005\n\u000eVï\u0015^2Ý\u0001\u0006\"œæ\u0014\u0010sä\u00044 ž‘¸ËŒ\u0002å,ö!/¯Ú^•\u0002m Ìâ'Æ#:»G”P› ÙÎCïµË~ñ\b^æóvz^ÐÙì­õþèöi®á7¯œÝIã±Q\u0005‡È#\bUúKoœ\u0005öÖ'ã¼8ÈÙ)ì\u0014÷å\u0003;Ï-JÊ\u000eDÅ;¹ê–àCò\u001dësʈY¦ •æ%἟-£íxo&v\u001d–YKawd÷ƒ¥Âš_g{\u0010= .Ô´\u0001žÆn¶ôš°Bx¼\u0005y‚½Ff-šºöbþ¯Ô=MÞlˆ˜ •-V¿V(àA/ì\\ÃW­˜ \bt'SMÀÒõ—.2åÅÃS»øºh\u000eŸFɛkäÇ֘\u0012®\u0005U_”?[J©šÑڞÃï\u0011It\u0019?W{3íž4¥A“ ŒbÕÜõ8\u0012ý)DëÄÀ²ù)Â\u0001©æÌ<ÍL,o{°Ë6øß±c\u001d»K= {m\f¸Rµ­;§Íµþ\n\u0015ô•ã\u0012r›\u0006Ìc÷¸±>zݶ¼\u0014捧‡lÔ93’–éI°œÂˆ\u001bÐ\u001b\u0017ÿ1\tâË\u001b…Ý\u0015õ= øŸëÑì¸C=MXJ酯·Žx:i½×˜à2´­\u0014ÕJíÍ\u0014 ¤ÃI›t‰\u000e_¾‘ðÎk=}äLg÷ë\u0017\u0001µô/\u0000ÜZŠIq©©Âá×9Kƒtÿ\u0019ìlŒ+B\u0002¾\u0006õå0¦\u0006\u0006\u0010»\u0007šÔ\u001fO‚á=Mbë<]=}h\u0014€G¡2=}—´dj9dS ™«À\u0012\u0002Ži\u0000Ži˜jÜäÇ٘/ À}º¤ÎXõ­üdè\u00197«]áÄÇ\u001f\u0000#W= \u0014àGžfa\u0014»¦š»yæjó\u000en=}:™.26)8NµEv·”\u0019>E¶6‰ÑzGÁ–4p\u0006\u0014ÚÏ­$ö/[\u0014ˆ|w;í= Ê˜e\u0014ø\u0004–­Û\u000frù¢ÎdQ4\u001dàý\u0002‡‹¦ÛüCAñÿ\u001b\\=  øÐIž\u000bêª!$~þ„ž°\n4×8-¦JOôÕG{\u000eëÊ}¡¬DŸ\u0002\u001e5{N\u0001\u001fEJ§þ‹\u0007Zí¼éôCæ£×\u0010ã’\u001cå®=}¥×*’\u0003—½ÑS¬Cì3Ú¬qâað3ö/ÇUŽ|¹Kô¦˜Ø\u0002º<Ûñ(4ôï¼ñлv\u00118¬pŽ\u001dt¡Ç\u0011m“¬f–¦\u000eð%Eõ-÷Ë(õ9Ì\b̳oõ)ßH-õ\u0007̨¥\u0018¼mSâNwöªð^—\fãíQFq\u00001]§w°ô“J<¿\\×·å•-Wu6\u001dë]R-äú%I¦ø\u0011\u0012غý»3‹\t®¦µn¯wÄ,·Ç¨w!M\u001daÃ\u0006« A\t­\u0007tØ\u001d*á= W©Ûx-¹\"¬SË­½XZJUz]\u0011s>H²ÜNU­Õ\u0011\f\u00001igv[Ñ8ªGCUŠÎÞ¦•nõ\u001aûLÞË\u0016<­‚‡TI2åÂüF•z/ϸAŒ£q_ N=Mðõ/ي2¶@šõ=}æAw\u001bsˆ\u0004GÎùÂ\u0014\bb„‡\u001e¡Í\u0003à\u001e÷†åaŒcp£7+R\fYÊ(5#>¼—±›ˆÑÆ;K\u0016·n\u0004ê'(§YM͔ø÷\b͊®\u0007Ž(öó‘PDwž\u0007Éè1¶5yê4É,<óÓ^êYçLÑ\\\bæ\b_æ\b'TqìÄæ\u0001‚×èëk!Ë\u0018pô3“)ÿ¦ûº½yøî)ˆ1™ÌÀŒjûRi¼“ïnòššævŠ\u001cZ-ÔÞ,zmÀ,˜´kØHW›¡ 9C\u000bÃDØ\u0013\u0018ãö™4ƒØY\u0017ÝL­*¶„â\u0012\\v…K\u000blHÿ²øM•Wþ¾€\u0015xÜY8P”T¿éEݎC…\u0007–r’>g\u0002¦-‡ß°„«„ëf¬e¬Ö³ÿGÌS_\u0011£Ïà~¦‚zSèÛzSƒ¿\u0015}„¸Yõ©í£é\u0017\\MOô®®\u00143ÁÙp»†3²§\"B°G!+漍o=MâÐPyQË<\u00069=Mõ»ìT)è\u0000õ³˜[\u0000¡lEüã^\u0007Èÿž\u0019d\u0016jùŒ\u0007ù“¯£ÿÆ\\Ç».[¿£“\u0018YmÃ\u0000¼žéýó|\u0017zçp­Ýóå½\u0006m·J5ïÉÁM -÷Æ8-\u0017ñ\u0011S\u0018µ¾¦Rl%¨½\u001bMEa²5\\÷—\u001b­«ºÄ˜Gw®„ÅõÀs%~ÃH¿\u0002¸l\u001b&k“÷¥ÿÞºÃõ#Jr¨ë·ƒl\u0016¤Õ¨\u001bŸÿ#a¥ß\tÑãQ£2;®Ó÷#’@®ƒN\u000b8Íã\u001dœ!@õM ½Dî\u0018/!Àž!\u0010ÿچªúA”¢yøð›\"‰žb\u0017\u0018v PúÚ~‚\u001b\u0018V ,N>\"‹\tž\u000eR\u0011Y\"xp™òa]|¡”ú?Æ.laƒé¸pá6\u001cÿ›\u0005Ÿ\u0015c¤ÏŠßn€r\u0004q«=}{½[›â\u0013ØÔíºñŽ\u0016OlÇ!1\u001dèõ(ó«\"¯l&N{h\u001a•Ü7faç\u0017z—4Σï¾âºï-ÔñaÎ žqcÞæ°\u0014U“]ŽËgŽ¢_Qáξ.¿\u0002\tï]÷ð‹\u0011˜r:\u001dz÷ÀÃc‚Òa.\u001eœ ”'¬-3Ë/yçBw¿ºò0j‘™í¿'áޅã9ßÕK¸\u0013Í|6 v\u0002ùâ2wä4PFa‰y»™¨ô¼ŠDy½·;=}ý®>ý\u0006E¨E±œ\u0004\u0000Pzö#èå<‡¿,Ω\u0010ªÔ@yçù‚–´!„ô ] ð\u001bޟ¡íˆß\u0000Â2cµˆËt \u0019q¾¶AHû™ýM&¹\u001dPeã\u0010ª¬1ÃÌã»Ä\u0018!\u0015„XOu^\u0004\u0016åŸãJ8è2¥K8KŒe]ëžFšw}ü\u001a\u001e\u001a.Z\u0003]µ–?Sù\u0002\u0003‹à¬\u0011>ùyÎþñsºƒëí¿ùÓ[ûí>ÐUh\u001anÔB\u0001äpR*\u000ež@hÓÒ@7À…\u0010ƒc¦)\u0011\b-ªI«8\u0015‹™Ów|íà&M¢ì\u0018·Mú7N”F„úۆ$7Óǜ\u001d€2Ážú&®ÿ´\u001d¸§ÑÒ³Ô\u0010–à\u000ea.‘1\u001bên\u00193œ\u0001B6Kå= \u000eâ\u0006k4NèD÷Ÿ¸Ò\u0003[AgØÉ\u0007^\\M¿«DÍ_8ýÂMf\u0018T>¸bŽÓÃ'ê[ԃõ\u0018ŸLu^[–3©N]\u001bvòý(7™UHe3¤˜Ö\u0007Ž(sQf+™\u0012s÷\u0011²Å”R׃ßÝïë\\Rµiµ²Ú¯Ýñ\u0006rípuÜCë&c‚tJ+=}.H)\u001b¾\u000e¡â\bï\u0012þXTGíä\u0018¿wc´M̞K\u001d\u0001;ˆÎ‡\u0016ÍFÂ+YHÏQÁ˜\u0007¢²ø¿Q\u000bR¶JNøäÆX;Œ¬\fsq\u0007•K\u001b^ ø>\u001dãcy\u0000-(Ds‹bÜx:ÊÚ($E˜\u0015ê\u0011Å3\u0018Vz0¾õQYÁwj:^\u0006vf\u00059:î5\u0016\\Kà\u001cã\\û[\u0014”\u001e\u0005¬È¼ÚÎÿ!÷P~_Þ~\füw©ó®KÀÿþÙG´¥æàªsä6³eÃnÌçn(\fQÛ+\u0006Ñû {6ËÖj1.[‡mtp@ÿ=}\u000f—'D”2Le¿G\u0006_×w¹°cw°KC\u0001T‡hB͵8×Ü\b#u_UnIô€\u0016ð†Ò¦â±çj\u0004±Æñôõ\f›÷\f½ZI3K‚4Åçtµý7:<Õ\u001d¼RøŒ\u000b\\’·»Z'ÐFÓúÉoØEqWĶXóÉ:Pû\u001f¾¬aGP‚­˜Z[Bá3fCÍd÷=}\u0017™8\\úà›-\u0011–IÀòÌ\u000eW-÷\u0007aJh\t\u000e¡=M®[gf1XÄÞ3¹D\u0010©!;÷ï¾-ÃՃ\u001aÓ½DµOx}{¡Žð™Û\u00157úŒcùH;–|ç¤Lz£ÿ™Þi•Ë 8¶ã4ó€%¹‚ª,ØL}.\u001d9é\u0011…'Ë\u0004ë= \tò¸©#¼d \tŒkêDØΆpm\u0006\u0005U>N\u000fƒÑï\t榁à¹c/\u000eÈ\u00047è„a¹Tß>µÛè¢\bþ·ÈÚ\u0010ïi8æsžÂp\tÄñ†½Š\u000e›kçßú;Jó°‚\u0017A¨ˆŸùf“\u0003-ÜoÛË=}¾û£K2¶ñ€$eƒd¹“*÷‚¬\u0018\u0012\u001f>yIœeՉúûTôî.E¥^,¤~ß\u001cè«q†¢$ÇçGdÆøžb·ï@Q³¼\u001d\u0013I\n¬ó)Œ\u000fêç\"º\f\u0007rþÓÙA\u001fèÒû§àüZm‡??(£ÓæIá¸Ú\u0006KÚ\u001a^\u0007ÌË\t\u000bJñKõÌ\u0005)å: ˆ,\u0017Ô'LÿúÜHhÊ\u0004ˆ”8R\u001a»kXä?W%\u0002x|šë ²±w†ëEaé)\"óPõx@\bƒáÝYn\u0013zÃþӏ= \u0015˜Ô\\—Š¥›\u0002LuM\"·*Ä x\u0017\u0007)Üõ\u0001\u0002Ș éP]Á&Fu\nyô\u0006Ž\u001d¬©kw믋Á‡™Ž\u001b_%ÂÔ+\u001e'€‰ãOúù綡ãÑú?¿ã{*ßXÞÜ+ò‡\u001b@©k7ÌØ\u000bl7°À4\nùÂÛ¬š\u0001)¯\"\u0004x}W±~°~EuûÑîVQ\u000bB*é‘\u0019L=}Æ¿_V/3\u0016÷Üà2e€\u0013égÝ<&—\u001dÛÌ\u0002i&Òª\u000e©òµi‹\u0012Ä\bËÁÒ ó¿iÜÝvüªŸkÊhFM«FÃW~óSRZ$ªq¾tò>0ã)¦k\u0013\u000e»|ÃÓ$N„ÍìsÒcÙÓã_\u0004Æò\u001bÆ*fœ>äڊÝÍ+5ð\u0004$²\u000fu+Ž„)°Ó«æ\u0002Ñæߐè±.¤÷fÖ¹Ó+¬[\f›ÂˆÎ/uk÷©\u000e8m¤ºoÖcàA{“v\u0003)4c\u0017†±^´?Úûâ×gC&\u0017®7Ù= ³}Rƒƒh;«Y¬To–\u0003^Ôr6›=}ó3͙VÞb\u0010\u0016s,„\u001f\f3ªJ[·ò—ó\u001bµh\u0016\u001f³t5UøXÿÏ\u0002ÏצÅ\u0013$–\u0014.ð?\u001f¯Šõ\u0011\u001fì\\áÂ͒Sl~W›pÁŸƒ Ô¯\u0016\u001bP袽d]ï*Oƒڛ8Ç©\u000eÖö\u0006S†‰§Òérï<ÿî)ÃC7â\u0004§BjD^C¥HÆJîêÍ*?{¢Æ\u0005>Eû{FëŸ\fWÁZ\u0004Ö?¥±º\\K+¯0â\u0018HdzÿØr§#*À¥YžùàˆÑöD\u001e)¥eE'ÚÇ¿u®ïM¸|\u0015~¨\u0002×_Œ%\u0010Ó¥Ô¦;ÐØd÷öëÍ×þJ€\u001dŠ\u0019‹£÷w4¯Z(\u0010ýÉۖ’z€\u001d†š…ƒ±ÄÁô,é|É=M&À|“Ù\u0019\u0000\u0005³£”‡Rª›Ž¤cä\u0006\u0018è\u0000hMb\u001cÿ.)¶\u0004£Ýý|.¬+…©¤Jª²\u0014ã|j\u0018+¤o\u0001¤D\u0018KËF¸8ÌÂî¬>póUØ´I÷µ\u001f\u0016\u0004àW§´HÀœ%ßåÁ´£wßR$íѪHÈ=MYv[\u0017±×ÿ¬\u001c\u0011ó\u001ffÓÓ¡ø5öñ‘Rj{O¥bt³\u0000ó«\nø•&®%M«« ðãv\u0011MU@¿¶m1\u0013ò³Y¬ÆǯŸAË;ð»\u0018¬¨\u001f¥BòÓÚÂ÷¢2\u000bd€ã\u0012\u0001ÌùÌËù€ØÉiñD\u0016DÄ©ˆ¢4¦ƒ\u0015x:é¶ùܺNW.s\u0006-êOޚBá\u0005aÊKB>\\ÂÁ\b\f‡•s±\u0014u¾=}C:'ô?¼>¡z\u0016¢›Š¢”r¢—ò¢z\u0016â\u001bê\u0003%㡆”C\u001csá\u0003«’ŠÒ¿‡:“$Ӄ\bm }ûÁϯe´­ s&yÃÝ£;\u0005fbª°Æ\u001fc\u0012fž’®’.Eâ.¢—r5â셏2}\u000f¼iæÆ\"3cìÏÊ\u000bŒåc£m%ͳ\t¯Â\u001b#\fæ§ëh‚“¤¡¹èšjš‚::g\"9 ŒB ìÒ¬eÃ\b[!\u00036\u0014â2¥n«\u001eô½¨\u0004AIO»\u001aº-¢nåÜ#ÚU褛/Ei\u0019!\u000ew\u000e~Y\u0010~Y\u0010~Y\u0010ÎM¸ñuÇš\b‚z¢}ÛëݖŒ|¾÷ºÇÓ£˜fgd¦³B\u001fN–Úg%Ás¼\u0000ª¸o\b‘MbYÍäât\u0003Û%•ôöO¼f„h\tf¢Ï\u001c5˜OÑo(hË©=M\u0004³\u000b-ú2\fw+4e\u001b·$Pã\u001e»@\u001béÍ÷Ó·ºßHôßGf\u001e\u0017µð(N“Ë\u000b°3·LK¾ \u0012ßڞ”æú‹¾ˆC¨­o‹¶\u0005óà‹±s Û‹Æ=M*ú\txƒà„æ¨YÑwÆ¥?K»Ü³±½+°ÈÞ])ÙD\u0016K½g\u0003\u0006“r§*]í䨾ê¯\u001cˤá\u0013åBêFå\u0007äIóñã­¯'Fƒ%Ï\u000f¹\u0019­\u001e%ä¨Zƒ\u000b\u0003»á\u0007mNj*¢ˆïO¤bƒËà\u0014×&Ç\u001bDÖ\n“þç†Î*\u001d@èn+ì\bO±^sî\u0005!|ƒÉ>s¶\u0005(àá\u0006¾=}î—\u0016AQ\u0017«ôg¾\u001a’K\u000e\u000b£ar^øœÁÀf™œÒ)äçÓ?±Ò¯¢½!âŸ\u000b›u“¡„Œ„_“Ri= i¡iˆòfýæ æL!Vá\u0000¢øÚ\u0001jvwÉ\fÒ=MuØÚx<nMíM= íT\u0015YÅ\u0002ý!ùÉ909á8»È¶h2èítã„\f$2\u0002:bӏÌ2j\u000eq\u0000q\u001coi||OLw\u001cU3+Å]†ŽTŠ£ó®0±Á±Ÿ\t7ïŽbn&a\u0017‚\u0007’\b=}™G\u001d\t]’]ÛQ™q@1å\u001e] \b¨9ÁîYÈ\u0001]–‰²}ã‡^\tzLNr½°P= 9\u0011.bóÿ|o‹}r°,mËQŸ0\n\u0003Y\u0017žt?•2¥ :œ…\u0000Ê\u0015Áazظp¬}8?þ”N1T0\u001ekaV\u001cˆðɶ\nQ| ׎‘>‚¨©6_úÛ9\u0000õ\n\u000b‘Õ\u0016ð{,Î\bØ©Æ@_:\u0010à9øK\u0006\u0011Š^\tŠ,_•2}iEŒî\u001aÁr\u001cC\u000e=MŽT=MŠì+Dâu\u0011y1[–hr=}\u0017é\u001bª)Þ6þù\u0006Ûu\u0010dq7Ÿ:p鉑NÙçIº_\u0010yٗ\u0000ZØÝP‹ü@\\xW|ÎYH\u0002NŸ\u0000r{\u0004paGnځŸ\u0011Õ}\fìû‡œŽrý\u0018/Ê]©\u000fá\u001d\\—F4OC{–Úm\"œ\u0007ß\u0004i] lèòÞéýñ–\u0002TÞ= ƒ\u0018VT ƒ9'Wžøb>ïý» ٞ\u0011h’F\u000f€¹©*\bÿ\u001e¡jß-‡\u0003Å]«5Öã‹$‡î\f6îÜQÓ}å¯vì…Ùê«×\u000f®µ\u000bè?†—εn{ÑB[ã÷&\u0000©Êº\u0017î*¬GÃsÉÖÕ=M±‹* „Ûxgþ}.iôAÍ\tA§•Ã³\u00020:òïÈJ5\u001b¹A\u0010ë'sú\fúñátn,õç­ª\u001e5\\k\u00076Ê,=M+É¥N®'àąƒ‹„ks\u0006m£œÊQ°Ú-v«µ1Þ£\u0014³\u0014.ñHö춍»û²³¦Óá*\u001bç¢é:5à‡Ôcøðß(´\u001eeía$ø=Mƺv|ƒz'\u001d¦¸ü­–\u0005,\u001azòê\u0011ûÀÓ\"qO\fö?@É}}û1¾Þý\u000b\u0011­ªÍl\tĜZ‘™Y‰=}-*è(\"Þ6S\">\u0007|ßBL6OÏé\u000b®W\u000bí°€ëÝ\u001fݜï=M•ˆÀvŠòü‘Î\u0001U¿\\ú¼õPÏá%YqæË׺=}æþƒÈ?\u0007a慐Œüǔ—×\u001a²“ÿË\u0014Ljó\u0011o= Þµ\u0006\u001d\u0016G*%È\u0005òrŽXõ\f\u0011š*\u001eš\u0015^’€Nî­íbÆð\u0014ÞàÈÄI‰q@o=}_—æ€â4‰\t!\u000bOð\u001d\"!\u0010ñš4'—?G]æ<\u0018Òálj4Á}ÄP6É,h\u0014\u0005,\\JJ{ÖJEDيíýåS\u001a\tò\u0001…Dg—}]æ•DdñÑþ¨Õ¿½KX»¹MIKÍ'AÕµ®¦ZŠ¶­„î”õðÏ\u001f\u0012mþ\u0006E-\u0010}–ú0u\u0003d¶\u0015§xlkˆ•\u000b˜¶\u0015}ú“ùÎ'U¨©á°û[‡\n‘\u0014¬ZªŸO?–ä\u001ba‚j\u0019\u0015·«|>Ÿ?\u0000%‚mˆ \u001e€Ààh\u001c\u0015G\u000f +0w$ÔL͞í¹å\t+ç}†hÏþ±åþë'\u0007×åY¯å\u0016$\bc\u0011ÿ'1¦\u000e‹0\u0019“­³’+á\u0018Œ\u001d\fø\u0006º\u0006Óqt\u000ed}Ъ2An^úô‚q&V\u0015}ˆÄªµõQëÎ>\bG1ó‡Ý\nxI¦êqˆâK\u000f‹swÁ\bÚ\b™5s= \u0014\n֒÷ÙlëA<€—\u001cNZçÁàB¢ƒ\b ÞDÖmq q}Pª5u\u0016\u00117_LH\u001c‰1QV¦Ú'èBaÅPK\u000eŠ®o'ñ\u00169\u0010«îën^žUa&½\u0004Ø\u001ci5˜^…r\t¸:¢•JÝ\"‡›LÖ:*‘ðo›ô— ÖÈÓT\u0019©&€”Ì⁠ôž<¹»2\u001a™üρ¸\u0016ݎyv²\u0010=}\u001d¹†@\tв|¾ª\u001b\u0002!ƒ=M}{^qÿµ]àÉܒ¡N©¼*\u0012ßyl\n\u0014ó\u001b\u0005ý&m2À\u001f$sy|â\u0013 ûo|ÎuºXWIT&r_8dªµq\u0007\u001dsd¾Ôd\bq=}4êv\u0016-nM½Þ¬Q,0n8>²Á^óû•]Tîv\u0007En?ˆD„ÔÊѹß\u001fü¢(γ}ï–\u0002Y\u0004\u001aõ}ø“‚ì\u000e<}ï˜\u0002¹]ÚÌВn)\u0019évwm\u001eäsY‹Ö3\" *IQ(ˆ‡|Îِâ7A\u001e¢ø6/ƒ<.IÒûZàÇOj>IÑ)âqf\u0012tMp´,\n҂!xŸJIdKìQÖ:îe\u00061\u0002Ï\u001f—Qø\u0003Ýt $\u001b\nLb¸\u001eù Ž¢\f<ñ•ÿ¿W–ãu%°ye\u001b»\u001biaT= ;‡å …\fÿXÓ+2àÕ×1àï}G½òiÖ\t‘Ö]\u0013,7dÿ´°\u001d㺫Ü;ãié}É%÷ý0Z8üærF¥;= ¯aõYå±C(]ԟí\u0011Àw\u0017Fµ\u0002¾\u000b#*´#è°wb8M\u0004Qu[¡´3lß[MÓ\u0004·öl=M!؂½QV\u001bK?ÐfI|sn\u0013\u001f+5°¡\b3\u0010²aCE–\u0003™\u000fC†ó輁Î\u0003JJ\fl&{Ã\u0004ù\u0007PŸ½ÁpEgãüãÕkÛoiÖÖ·W´_i•œ@W#d˜™ø{\u0004ÿ»À³ëÕKÂQa\u0015êË!Í\u0018#MAws=Mwÿæ\u0012\b“ÍpFáå¯/·¶Qd\u0004uAB²¸•†\t6˜Çé)\u0006\u0006²{¥\u001e«ŠZÓH‡â4¢ÖmÓŪ\u0010\näØ´o÷\u00156¼¤\u0006¥\u001eÑ<<°Øo#Î_·™¢\u0001‰ªQ«AÆi¯\u0000»¨¡¸¨VÄåÞÿ~ü³T’Î%\u001a•\u0013°$ÃÎsèóq\u0003,t8ôdï°\u0006/ú­zùüb­S;ª‚#¾\u0007ös$¹\u000e7늕±•mË¿¢Û\u0000ª7o…\u0011(êüÏßlWl¬\u0007–nŠ\u001a\u0011ºAòî0²‚a\u0018vi\u0018\u000eúp”?ÇUXTÕÖØuÅ|끢ˆ2\u001arn\u0012\u0000la??W\u0012ö“u|¡\u0001qىÝ7]=};¸Aaû\u0017àbÖýäœPÊÈZß\u0000ßI‘¯û½93\u001f—…t\u0017‡!~5Íô\u0004,È\u0013:®pú\n)A:¹î²ì߃QêÏVMæêÁHëv&úŠ¨\nîÇ5»¹%iŠF\\¾\n*í²¨ ó˜‘kDŸw= äåG\u000bÏ~„oÖ!\u0012\u001b\u001b3zýrC\u0000\u0004\u0004µBX\u0014¬Š‘íà·ú8– ‰&\u0006^æpÉ=}&\"ð8Z\u0002±8ÉQ2þ¾Â\u001fî\u001fÞÒñŒ„\u0004Á9Д·eÐÀª= \\\\êo^A–*åæ¦È…] \u001eµf%\u0005YhÊQr®´<\naâ\u0015ï=}_ÞKg\u001fÛ!xi¼š…\u001dÒÇíÙH(¨¡³¡¦õäåD*Jhï,û+÷é\u0001ìÍ3+ºMK+æ\u001a(®ÂŽÆ\u001bÞ\u0017vmZæv‹\u0004D¢0VM勡lîė\"]VóæÔÅ^^+N³]QÒÖô¦„žRzg¥»$bØF\u0011V‡\u0015\u001c)=M=}¿Z\u0002È_ˆ­D\u001d$a\u0012Þ¹q2\u0017 ² f€VO¿HÃ\u001fî—T=}\u0015«NEàçÁD\b“+{„’\u000bb\u0002ÑêmÉé\u000f×¹»6½…¥4+¥<ã¿G¤ ÕhÞ%2ÇF–ûøÿ'M›c}«”\u0018³UhO.ó§\u0013¸Ó\u0011ðþO\u001cÛjD15»\u0012àøÇÂ\u000bìBéLÛ2~÷ÚN’~Š­Â4ˆ\u000b.4IiÆ/¯°—˜\u0017\u0018ƒ\u0010KlŠ\u0014¼=}ÅÜ'©\u000fËß\u0000|9b\u001b›„ù\u0006ýîiÂ^}š\u0017b¿;g1Fµ§\u0005¦,”¯Ö2Ô<™= \"˜\u001fŽ¡Ÿ™h–\n2®‰ò\u0014\u0015\u0017»R.€\u000bÃÚ÷\u0014¹ •ö™¡ð–´Wßà'­#\u001aD«Ú—Œß,¡ã\u0002¾í\u0011å™Õ\u0007©âÎJÅþ\u00079º#íã\u0002<ÉTæx\u001c´¤ùKL‡\u0005g=MÚS»nz\u0003¦Mda‘Y\u001aZqé’}WÙc\u001agT\t©¥Áæ ¶™~Mú¸òî\u0012Š¿°AÔ\f74Ù:÷úhL~õ\u0002ü0r\u0012\u0002ìì}Z\u001c…܁ÑñŎԹIéÝý\u001fÑðµ-lš.u6ezïZÕÇôù›\f¶Ïc¤ê¸\u0010\u0018è[ZÖw… þ0AOZt š4îÞ¹ïTÕvªæ±/Tøóz= Àö铢xI’šž”.ï§¯ìËê\u001db÷îÖÅ%¹\u001b{þ1×wt\u0007ë×wžˆø\t{O”é\u001fõ\u0006{éá{~ø¢ËÆßc\u001c7Á²\n¨Æ àÀ0¸Úõ™P@ŒÛyû**ڝ\u0002˜:åIþ1sEÜÛÈkÿç\f¡œ“\u001dïƒ/\u0014ÿwû\u001d‘\u0013+–»ÐŸ\"ÛL\u0007ù§\u001d\u0012,aç‹C‘Þa·¡áeõ¦ \u0012q@\u000eC)~B¿\u0013s\u0005FaqBÒoZƒLDay-?+h™©\u000bC–&——©BTýM\u000b“\u000e–v+HqI¯¾°˜W= ^ =MFBXÁ¬s\u00070òãÖ\u001cÇ\u0002ÀCš\u001aZa= \u001c\u0015vo”©W½q‡\u001e\næ\u001c\tg•L¹ý§þ4|¢ \u0001ø\u001f\u00156bP´ºÒ՟šøãº,\u0001.ó\u001eGٝɘÈô\u0012\u0018GHݍ\u000eœÔs븘Z8è\\\u000bNEa™zºzðs\u0007Æ\\O‰ù—_\u0014·®ís™Ÿå‹×\u0010ÿTYú\\´.ç\u001d½Ãš\u0018yà= d\u001e/¹i֓Xˆ¼C\u0016Õ\u0004÷”zZyÚ۝§¦íø$QFQ\u0015g­:ô¥¨]DaâþÍR@{ßjq'J±\u0011„\"¯ÎsøÛCr4\u001d‹~Àⵘ µÜñ°°\u001fm\u0002Gré&U\n4ñ߸×{\u00006\\\u0015×lå&‚ýÁg›»\f#wvý\u0014\u0004= 6Á©” î˜0{#¬¥Ø¿†\u000eæ|(@F\u000b¸Ÿ” \u0016¸ þ\u0000åè´\u0001ù¢ƒï‹\u0017Ä\u0002 ›ƒŽ\u0016c‘\u000boK°B\u000bàBN\u0014€P\u0017ìø/Qg¤sèD\n6ô\u000e7ÄOOâ0\u001d‚êüL\u0006\u0017$»€B¸tñÿ¸ûR)ÎÎЫ¹\u000fXòHô‘\u001d»é\"zr:y|“÷T›X”\u0011—/4·þôCâ\u0001?\u0002’ORc֛z:šÚ\u0005¹ý®×7‹½nÒ\u000f”µ•)t°åÐ.µùÛ½ô„’$Q)U–Þ ÐX÷|»\u0000.Æhöô†\u0013X0ÏOÀ\nа±2*ˆ\u0019EÁV)ÉñBØ\"h]Ê79aLséá\u0006\u0019ƒmƒÍQ1Š|^œ\u001dýÃJ(Õ\u0002\u0007\u0011ßRT~:{LH™\u0011<@ÿ\u0011òú{|8O•ž=M¢þ†}ýšç[ÚuÖôA0™±$\u0007i\u001c\n_\u001aÊÛÆtüìqï\u0014\u0019M½uw5QIïX\bLÔþP\\=Mqö\u001eaÁ'\u001c\u001f4A-˜ùMjÕ= ù‹\\õ’xÕK4è@ï\bvËFÉüXkOð\u0019Õ7\b:ï\u001e\u0007~ʆ!ü²m\u001fû™F\tS1üO\nɾ;pé\tW,ü\u0010=M\t>>€9\t\u000b+@~=}Œ™\t^F¼’\u000fy^}v€Aš  \u0012\"z±\u0017rd‘àwÖ*\u001e™ë’Û}^1˜q†= žÇ\n?…Ov?\u001c)Vrõf\\=MÜ\u0002ðºM\u0005Ø\u0001IyÎw\u001f8}Rxf˜\u001d\\ìòZ‹ÙàLz^˜\u001fBÂ3dfU\u001b÷Éòk‰Ì¼àÎNŠ\b™5\u00018„ŽU\u001fîI’m™ ¼\"ǎò\b¡\\bUž$¼•ÄÞ*¡Y&H\u0019’ã\u001eZ{A Üt‚öÿZêâ~@àŠ]‚\u0011ïÿ‰]\\‚\fq\u0004EŽŒArš\u001a\\]½ßҖh•€\u0016Ö\"’‡]\u001f!9fBŠ[\u0002\u0002¶’\u0016 ¨Š  b^áʯ\u0019™DЙäϐ®&¦Z®&hê(dB:œžtbûW­SÙUé\u001e‘ç\u0012¥´ßã\u0013¾H'ðJ\u0011[ޟ\u0018šõ=M\u0017Y\bLÎõò\bH‘\u0017‘‘A]!\u0012^ø\u0001͊oÿ\u001aÚ¥–Ö%2í©øD¯›¯©U„¯\u0017\u0018¯½2ÓÒ»;˜Å÷\u0019·D\u0014'«eݴɂ¹ä\nÎéø\u001eÔ§\u0001¯–ÑÔá!SF\u0006ÇÃfÇ3\u0010:ãšè¥\u0006®Ì›\fõ;ÒíôŒÌ&\u0014#¯?Ãf\u0007ÞÜ\u0017= ‡\u000bµ‡ƒÿÌofÌá\u0001DKíó#\u0002M#ïO'QRµ0ú8Ã\u0010P\u0003\t(mÃ\u000e×Ùûæ\u0013ù\u0004•ß¸\u00179pÿxßXèR$\\ä&2äý×\u0010z%WZ$I°\u0017&\u000f\u0004÷}$\u0002\u0010ª\u0016¾\u001e÷áX*T}¤ÿ_ÆÉâ\u0017'\u00111¶=}}‹c xd_x¼Âª^CÍ}¸Ÿ\"Q3væڀ°0œ‘ÃdÁÓ¶ò÷“ç†\u0019Ò«91Û\u001c/²\u0017€ ô8ŒªDHâo\u0014¤›»iEÌËs…á«U“\u0003‹…æ\u0003\u000f¸­áί‰Á„K‡Æ\u0003O0§z»\b,â½ÝøÏ=}µ†c˜.*\u001cè¥á\f)Í\u001a¦›qì3P¢°]2é×\u0019ƒã½ýcŸ\\ÈÍ®þFTT°'#\u00199ŸZ*1\u0019çx{ñ³aÇfßݸÂèŒ\u000b=}<¤…A¨|‰\u000f‹õ\u0015\u0004\u001f<ªaI£‰\tè9Ÿºf[W·ÿñ\\HŸÞæ\u001aX®=}^$Ž‚¦‰¹= “tH²Mᘨꣶ¦ó¬Ãk¤ñ¨óªc‡¤«D£„£Ù²Cæ¤!$ˆâ£s²£¾ðãé´«\n«ï„¯\u000bà¦q\u0000§„Ò´\u000bI»É(§ø¬›àõS^\bC:ˆÃy­3qísŽù\u0003*Kcê\fcÜ~c·\u000bª}€¤eÜÊ\u0013 \u0000ã°\u0011Óؚ'Ó}ª‡\u0002\"SŽ&ã:*$b¸¨aÇÁ7ð¥~_¨kY³m5\u0004½3\f¬ÖÂÿ ¼'f€ävžfwE¥ÿ\u0000¸›\u0001öcQL¤Ðý¯Õ\u0010È돂C\u0000\u0019$\u0018ݥእے^Ó0\u001e¬ýœ¼%åäÛ&1ó¾9;¡ëÃe‘±'ÏÑÅ\u000f\u001b\"åœ\u0014'BØ2“àz´M·«Þ­Äž\u0002´„A7Ԁ\u0018\n‹d§)Nl\u0005'‡¤¯\u0010=}d;yQ\b[?\u0006¯Ò\u001emSªL+q­µ4-·´L¿ÇEX–è.àÅaŠÆ´ŠMµ>·”\u0005=}{üÏ\u000fM¹\u0016ƚ+Œ%º\u00056éÒ´AJëë›Û¬ž\u0013N'M\u0002í›\u0010áõ¡\u0004T7Ñ\u0000Ã\bBÿ75öÙÕÄÆæ\t½ÞþéîÑn[\u001aq\u0015Dø\\?¹>‡I¹’ˆz‚Ëâ\n©\bØÚÌÀÁEújÍë“\b¨@µE\u0007‚ïõ• ‘ÎÜì\u0016Îv¡ÝÎ]$û®Ê^ý\u0016$ÊPŒŒ\u000b8\f\u0002@íóûNl9ô=M™‹ÎØð‘O„Þ\u0000z“\nÕX—q¼ÐÞÄh)¿à\u0006Æ\u000fmWØH\u0000ZH\u000eÝ~\u0014ª\u0001~¬Ži{v½ª6\u0005H¦Újƒk\u000eRÛUÖ)Ûô8= 1×\u000fz4wõ\nè\u0000ûBPÑ\u001f\fÚú‘Yñ\u0012ý\u001eùòrï\u0016¶U~\\\u0016Lª€\u001fmf÷âzös8\u001e4c\u0013\u0012™É†æ¶Rœ“Œ>\u001f\nî$yÍ㐭\u000bF#eÿc\u001dÉó\u0014®ëëɋŸ;\u0003‘É©‘%«A\u001d¬y\u00004…¹æÄ~GgT\u0012ÍçØ|ƒt¼ê'øŽ´ô…&r\bd{SÚ©–¾=}ÆâѼE\"­´vU²/!øƒ‰päj®ŽÔ}–ËŸ2àiöªíÑ·)4,ҖìM‚÷5\u0018²üOã5JjÕ~}2\u0005͚¿\b9:]-Ñ üÄÍ°^Ä͒€ùŸŸ€\u0011TakÃ\f~•S'\u0019Ï7±\u0019 Å˜\u00115˜bzüáS\u0000Óð϶Ì\u0001a\"M[\u0015ŒQ\u0015„@ÊùЂÔMD¢)LN\u0011±s“î±\u000eJjé}‘|[|Q^\nM¦^;\u0014Uˆq±¼\u0019[÷’~NR4€\u001ab4†˜ž\"6\u001fáWù’û]4 s\u0006ïS= –#S]3L4°,;C}['\u0005‚V)l@ŠØ\u0012Ò>t=MvT0]™Ví¡ŽcE—\"98‰/\u001f\u0000÷»U\u0013ñ<†Å\u001cZ\u000eÂ\u0019™Á\"\u0003fcÐ]ª¸0\u0001h\u0006—cc\u0007C\t¬“x2CN¸&J¸ÅÏÿÉäo\bÜå©û†æþ\u001bÁ\u0013hn\u0010¤»ÝÎÁœ5d!±‚¢IŌk\tGžàfâYd‡yœô\u0007…^~‡ûéÙVƋ¤\u0006\u0012Úæ7Ïrµ®¦0µÑ×ö\u001d=M¡¿|¼7É÷\u000fúWr\u0000\u0006ÈÜ!úø\u000f~B\u000f\u001a\u0011†\u000fjà!ÿù‘¾\u0011=}¾ƒ\u0016\u0010ì\u0002™¢\u0019\u0007'˜àÛI\u0004øåõÜúw\u001dæ\u0000üm9úœ\u001c]<è@\u001e]1Œ¢\u000bŸHôð\u001e£U)C]Z«\u0012\u000eHÓ\u001dþäëUê˜ù\u0012_ 5#I—å3òvDÁ\u001d±¦¾Æ,\u0014t\u0019ŏnKr7-©qO¸Ú0ï55P<•È\u0002·\u0012n–÷ixÖ\u000f§‚æ1x\u0000F€•\u0019!ðBú*4Èpµx¢–=Mâ\u0013ua\u001f†W\u0014 (_ª¶+í/½ò­\u0010SÐ[úaƒõ~EIˆû\u000bâ¥\fÖ;3ü¨/9\u000fºxg9\u0013xNˆ?—W8\u0019†\u0005>½˜Å\n…ßo:\u00175èzw‰YxÑ\u0000\u0002iPM„= vÀ\u0013kÕ:ۑ‹0(¢\u0001è’L˜gƒÚi@GìßRŒ\f÷B\u0013˜H\bÎ?ù\u001a:žV\u0002ê¾é\u0011ÔºÎ—ö¢M²ÜY\u0004‰ëï OƬ–í;Ç*N…Ð@΋= #fýòôWjs\u0019†…ꊉ9ع¡h“ú HÂÉ7ûâ YdH=M–û!~FÁ1EÈ%\u0003xGí‹ØtîšMIÆâßKٍÁp=}ÞÀ+þ£×P§gþ#‘*#yú£„|rºC\u0006\u001a¤f¤{¢T˂+»\u000eŸ¡b,£ç£‡›Œñ¬cƵsç¤pТû|ò\u001e2».aÊÓCº³s¾ËV‹J³. Ýó9¤_lgҳӳ䯬G3䱨OC%©\u0019\u0013%Î_³#\u0013»3%уYß'•ßÌëŽ{}»Â´ƒHZVôƒº\u0018Ìkí\fnØ.­”š\u0013YV\fÛO\u0002š…?W1\u0010[g;S£\u001aêX»£i÷¯‹ô=}B¦ã@\u0000»#\nþ\u001cÙVŽlY\u0010\u000eچ…/übÜ~Y\u0010~/V0’{‰®éqŽ)r€\u0001ï»wÂþêØéH\f4Þ\u0016«\nŽésûÖ)ßh§«>%i\u000b¦=}‘½–rï\u0016¯þ\u0016G}9eº±«\u0016ºi\u0007]\u0016Yw.)õ\u0002\u0001\b§ó\u000e½ï=MîË1Å%rBEk°0\b€?\u001b±¿ð‡ˆ\u0007Áòˆ…Ÿ\u0017UE֔ŒÓ8Z\u0018Õ½~ˆSÊÕ:Ä®•{\u001aÉBƒj¨O\u0012ˇR.èßýøï\u0011ñ¬\u0006ik\fÝÌ\nñ7¥Fê­¡²øUŠC5uÄ͑m÷O}I…þ¸Fj¬í¦¨\u001eî§\"¡ÆÛ= ôӃ;ãž=}\u0003iÆd@J%P\u0012§8¨jb«Q!¶\u0017¡ÄûŌ\tì\"6WWØ[ÒPgU•Ñ¹âÇtTð/WÐ)í¾F.WäÝëõ£?\u00118Û銪ëþËçe\u001dëA¶IâG_X5ñžÑ›N÷‘\nL1šõÀR¨]rÈ^ü•â7e\u0012î”:¨ŒJ¨\u0018*G\u0019­™O¶¿þÏsœêSbýS\u0001«A\t®­…¨‘¤%Ϫd\u0000¦dbf¨.«á\"öÔJøèpø¸J±K«ýP\u0005•B͟(-FlÍí= øŸ\u0011O…(Y-b~LK\u000eõ\u0015Œ75G\u0018í?!ø5:J‡øC5€iíQ¯õ\u0005œ\u0001dŽn­\u0012÷ƒýRƒì)%þÑ­WéÍû”\u0000ñ|\u0018Ü>ÚktP7–Øù1=}•SknfgÓ2UÚ\\ï;n\u000büѨ6\u0015t\u000fp\u0004cu¿µ\u0005\u0016‹I@æjN|§z\bviÈ>Ââ\u0007§\u00116tÑîéJ4Յ\u0011ï\b\u0003÷)}ð\by^ÏûA(\"û¹ž^\nô]Þ6ȼ<‹\u000b\n•…\u0007©ýh¼Ï»@dWµŒ›ïëj‰=M½xvusÂB)tH÷!6J…ÜÅ8'6Ìÿ:HS\u001fó­ú\u0019ȶ¶6/î*\u00079È\u0004ƒ9'”vç¡MìÇ\u001b\u0015Å(\n¶\u001b:\u0004ñW\\‡k\"\u00111Oáƒ#aL¦öy}V\u0013'àØ\"~”E*ÀjJ|Eœy))Ǿi#©Ús}\u0010pŒ,y\u001f›‚-ÜàO{ÎZÇEx%Ÿ³®]ÀØêjc?ؖo{x€¯Šåö\u001fÂ=}\u0013vf'êþ0ìÂ=Mï\u0001(´‚\u0001¼uÜo3‚±»Ó\"O¤]\u0018{= v†\u001d;ÁR™ŒõÞõ:\u0018ˆö«\u001fÝ<Œ6t‚Û,w¤6»öÓ4—\u000e¶ÓÔ@ãx‚†ì¡Û1vd†{\\\u0018ϝ¦j\u00053Þ) Šê\u0016\u0018u\u000b-ÎêTO\u0014ÇT\u0019ÆüÔ\n§m2f\\ŠÚ?\u0016N*„|\f»„tæœ[\u0010«F¯„\u0004•\u0003\u0017šŒs\n3±vÖW<\u0018ó®ð\u0018ЏÖØ\f\u0016ó¦‚ä½»JLV\u00042½ªK4¿â+èþ©õs\u001cò婓\u001bè\"gŠ!\u000f\u0015ŽjW\"žuwu*\tváo͎pQÎ= KÀt.’UA\u0017~~&ð€\u001d“ÜKޚ¹\u0019Æ¡\u001cúíp]…ÝN®Nr\u0019\t@\u001d\n¥…Ý”‚M1o\u001f~$ùÀS=}€A\n}ôÝCÀâ¬%ª£ÄC£#\u0005|Y\u0010~¢\b~Y\u0010~QV\u0010~Y\u0010~YX\fA‘_¡EùJ˜¢Æ~tâ~i#e¹_Áچz}k{’°\u001b±Ojìa9Á¶\u000eÓsPå\u0010\u0011ÈȹˆëÑÒæeT'%\u0018hË\\º\u0005[T#„\u001cG\u0012qH:òÙ5>V\u001b†8äc)\u0017\u0001[H•\n\u0010­à¿5kþ=}k¥–\u001bu\njtKÀf~”t6.Ç\u0007㧕‚e+=M°„6\u0003·.¥<\u001cÄ#üT!K’—ˆ:NÚÈ._“v™\u0003—«\u001a•a^ÕbtñÏì\u0015C\u0015Jà®À\u0010Ì>\ffåÜÎM]ýUD܀uïÜYn'(\u0019éëïهx mŽ\u0017ÌbCf>ÃЇ:=MUäè@ú€w{\u0015ê¨p\u000bÈÇzËÕåöAèàˆk_ÆfË̝Q7‡^•\"w}¢\u0015“•ÂWŸ!ÄܞÊ6¡\u001fŠã|úI¿›%_ˆÊÏ)\u001fÇВÀ)R”a¡%(ÖBõ9ž3\u0011ݚ\u001b\u001f”َɃõu¸­\u0007Òµ!ƒ¿\u0006AÉgŠÛ\u001c\u00122\u0013\u001ehäq9h\u0000\u001aºõ\nY6×\u0007®•¤¾«\u001eΛS\u0007°\t\u001cÎÛNW7b\u001eºTLv\u001fýp\tv8¼ë±Bmàb,Çâ¾êu/t0¾1ezÄ?\u0001Ù³JOa{«€4̑ïhEùt†ú@\u001b;øÑ9QÌ·žÈVç\u001b!US¸À§d¦ãÉ䣩sV\u0010~Ù¢Ü~Y0\u000f~Y\u0010~\u001f|\u0011V\u0010~˜\u0001á<\f;ìE¾6ërh»\u0005H¾ä…=M¥¬z\f\u0012\u0005Lå\u0001¹~µ~¦‰çéu#¯G\f5(>7,=MD·\\ÈeîáQé­Ÿ\u00023“êZlUy–G\u0001ˆ³=œU\u0006ÎÜç:6#zVë\u0013\u0010ފný9Æ\u0015Ò/Vó}=}\u0016eú$Öµ–;ÖT\u000e¦Šcu7.‰QºÒÁ4Ñ«r= hŒüô¾ŒEX:4‚¢4L¡Iq{À\u0016\u0005}id§I¹ÖøÉ o\u0014¢\\w\u0013p=MMÈ\\&QOÝíZÃw|˜ÁX\u0001“)ñ\u0013 Gk·CÐ\u000eˆ‹i\u0007¸}ÑMðâØE‚®Ï‹[5à€\u0016u0¹úœsˆÝdט¥æʽ\u0005L*ä­ðÉ|—èö¤= \nóñ@Ñyt2\u0018Ð÷ãN>9B¿E¹È¶—ü—¯/P;&~⊆ç‹Åçoþ)•ZÎ\u0004‰T©ÐƎ4 \u0012Ö\u0011þ\u000ffF‰@Ká^ºv÷±c(à¯\u0019~\u0014Ë\u0015Bå\u0013›üŸ? ´)òф%ˆø_Nb$QÆ\u001aÓÏ\u001dÂåt2“\u0014Ö§á!¬ä6ÚSÍ\u001e2¦Þá\u0006†’\u0012ƒ™Ÿ,P@\"\u0013‹§º/'\u001b”Å磢©(dA¸*YK·ïå\u0007ÄÏÄ2>Ž¸´ÁM':ÍóŽøèXAÝí±\u000e%Òø®ñb\u0017Ã×æ²8yKÞ\n«\u001cy«ÄÉ3B\u000e)½Þ\u0016·AZgŠÿÎ+¢Vdq¼\u0019›\u0007\u00112àj¿Ä@‹'ÒÂÿ3|-ç¸\u001a‹,Êa\u0001K]‰&¡\u001f\u0002‹¡”*šë£Á=M¨$\n\u0016«9œ'…{H\u0013\u0007\bçCˆ¦¦(ù­Æ”Ë\u000f@¾&@éTS€¹² R§¯@ð¥¾>/À²öôö3)8\u0002Õ³7,§a\u000fÿ¾md\u0004ü¹-V–\u0014\u0000V£n-Ó\f÷/„\u0018H\u001b\u000eø)pþÎ\u0013naµ1=MgÛy\u0003|QÝcTÁŒÞ½\u0014qa¬vYY\u0003:øοyXæeK¦Aî^\u0013õF¾Î\t˜…9\u0017ÂUž„dà+…]Ä_\u001câ% ÜF;Å«Á£Žã³£­iY\u0010~Y\u0010~Y–<}Yz}\u001dØqú~YP<‡Gr\u001eZŸUÚgû)\u0000¢6„y×üÙil„›ô1“ð•_\föÂñ4Ÿ–-_AFçë5Õ9B7œ\u0004&­ê>÷<\fQiV¢M”\u0015%Ý®%؛¢¦°¡ýH,æ1¹Ä\u0015}~G0\u0002F±Éé]ÏÜEnÄà@—ü\u001eýB\u001c¶°s—Úg]Äj\t¾Dµ\u0004oˆ\u001eiGÏÕÄÈy7î2ïôû=MiaÛ\u0016WÂ>–\u000fT¨˜Ô9WZ‡nßοfO\\\u0017€½ž\fÙ\u001f“YH/Ð\u001cÅÞñ|}\u0016–+àu\u0019ª!x\u0019G\u00056ÆN-?\u000b\u001c’§Î?œÑu¨˜NÑ\u001f8]ÅY\u0014\u0006eáÚ\u0017\u000e\u0014¡qDøÁ®š\u0007¡\u001cò±±\u001cÔM’p‰\u0018—JžS1²u\u0014aŸv2\bþŸ\u001b3ˆrA^¡‹0¨\u0013rÛ3‹\u0018$»È¨t\u0018Ì+ga\u0003ùÍ*s^Õ'fáDÏá·m@…ÓÙ᫆6Ë?¦ý´k\"ºd!Bëá.‡’?ËÑ\u00010\u0005åú×â\"-É\t\u001d¯œiTÿžÔ9þ\u0014w-ÆâÌA= ¢.\n\u0018ü¥\u0012\u0011É\u0013CÆ´hz,¹È\u0014òá<\fv6üH6%†…·\u000foö<= É8\u0011ž×™¢5i\u0007z\u0017\u0019¢<ñ= \n©%X¼k\u001c\n•\u0004\u0010É\u0018\u0001ü'¡@(gྡྷ‚VÌ\u0017m„q²ÜUmÈ\n\u001cÑÑ)\u001c\u0017qlfíØB“”œ¿Ÿ3rYa¥/Á·\u0013XI³= V(OrË\u0005~¡Å?&-4œF;ÛnµÁp̄.\u000fÌÆ H7Íˆ*%Õ\u0015²8t‡\u0002q0’nÜK\u0000$=}[%\u0010šÎÛùûìw¡íïßMË\u0001ÿhžRø\u001f\u0010LIˆ¢x›*yóš\u0000°Ò8=M\\€ôî{,ýA¨xDUE1TÒ\u00187yyÖ¢\u0003àÁ1°Ûñ\u0011ã\u0015J$ƒGéU!\u0011‡S\u001f¶n\u000e>›šÉMo>l¿\u0011\tœ,\tµßþëBue}\u000eÐ\u0017*YÕ\u0006\u0001ݚþÜ€)…Ù¹á\u000fæ»vq‘(7\u000eÊÞ_&’\t\u00183!X&\u000fBñ¡ÁŽG”\"@¯ý\u001a\u0014XV.’\u001a\u0018TîH¾Re\u0011 z0œF\u0011¹¨˜sßyf†à\u000bŽ˜\u0015JWº ’\u001eü\u0015Z:\u0001ráaŽŽf\fþÂUž“.\nžû⮲—\u0016ë!#w'¤É±3\u0016\u0013#¶U&Ÿ¹àk¬tÃÜÞ©T àëEr³\u001e});v³bÿÁek\u000b;–qå3Ú®Û2(#\u0014Ïo!Ò©À·æk\u0019Ô÷i+Ä\u0014$»OéçƒôÌ%\u0000>èC‘Ð%½ø´7Ú­„€©Ä[|­„Ž\u0002¤w@¸c*³¤{/´ãžøáÿ²„ævËá;·ºã= ð¤ÿ‘m*ºŸ\u001f\u0013øpªL5ß3ÕnžŠÖº\u0001ž‰ef1¿›¸>¦ÜÂVdÙܾ\u0005\u001eUƒü\u001f¹¿’q'^¤<\u0003ù:¤•3¤®rJæ|7\u0017ÛUÕ°\u0001šGe\u001dr÷{!ܨéLIãþ=MÕK÷Èd0üìó8V¯?Ͷd\u000fõŏ2ð#W.”óÊ±'DZ\u0011¹iå}€»Ë9+$Ã.\u000bËm,¥zV4S\\Î¥¥øƃ_øÛ·H)$‡ó3^¶¥ê©æ&\u001fӏԫ%¤jã»-¬#f\u0005\"\u001bV6ª0J Ã=}–(F\u0018áS”\\ڋa–%?\u0012Aó“~¦¹±]f<\u0004ڋ¿\u0019(yäº{›j¼i—Ü$šªê+\u0013£*É\u001e»[\u0006ªÎÒ}e>¦ÙÓ\u000e0Ø;JüdåâîóÖ¦\u001bÕ(c}!®s\u001cU·Q\u0001Ô*h>oƒå/Ì\u000b=}Ò$-.ä]\u0016Ä«rÒ#b%œSe\u0004Áïù<®\u001aB;£\u001ek»\u001bôéƒK\u0010«äR˜\u0004ŽÔà‹¬v(/lÝÓ^ü¾‡z\f$¹t'?üÃ\u0018\u001fÉ×\u001er#zµv$ÜÚ¸] Jã.g\u0007;\u001f\u0015Åÿ\u0018>£J\u001ex\u0004\u000b^½ÿ\u0001K­XÐmƒÑ5@\nq4\u0006¢Þð½¥î+QìÔ\\Ï\u00147·×ÀÇN1Æ@Ì^l¹VÀ‡+\u0007´<õ^,ë\u0012\u0002ò5¥y³W8GQ\u0006Ü\\±¥E/|G\u000f\fÍL]¹ò/ÆìƒTÃÕE‘î_ù\\4‹’™gá5Ëù<4\\®ky\u0000éÇV\"Ùü´Õ6×:òÅ\\öø¬>RãéXí4ŒÄ&ïI…úéb_>,î\u000b\bøλ=œuþop“VoílfoY¶è/O íéXÝ(„îžÓèg7Ìq3ópŠÁ\u0016š7‚\u0013,4 ÿ(´qüÇæ¶×·\f¢à؝Ü\t­Ø4uC\n2õÂi'Íâ\u0001ë>ö:uxõy\u0017•ÁêýC’ä\u001a—Fß^³\u001daÄ-Q–òG2\u0001Gtˆ„\\×böë rºueA8w÷\u001aÐp/ãXš\u0010I\u0019ðèWñ\tÊ= \u0005a*!ìòV²ÁEïô=MœZ;\t\fBG°\u0011\nKöq\u001c\u000f‚È=}òRuL\u0000Ú\u000bŒëÌ\u0018<ñ\f(ŒÀÝ~žá°ñOC4…=MÝZK19Â\u0010Gµºþ\u000b\u0012|Æ]‰dö’\u00040¹Ù N¸þ\u0001uöÐ\u0012\u000b\"†\u001emx—s2šasŸþ= ×…²]’c\u0012Ý\u0010 âoÁEÌɵË\u001c\u0017·½Ní…~åÌםÉ0 ÄU‹ýÌ*։2d‡ ­Û\"7ÅÉj0f,xí\u000b\u000fG%\nÚM…yÁØ\u000f\u0016¿2\\h¶Ó\u0006\u001bŁ‰ðiK\u0016ös\u000e—×ÿ’ÚÀˆî\t\u0003pR<û\u000eN$•è=}Ë\u001fQ(}}V\u0014\u000b<±1aK.\u0016bŽ„m(©{B\b+þѼÄ\u001fÙéü€Ü›Í\u000fÑّ;*x8–Ta\"¤áÖû'’¦¹†’8î\u0013—¨ö7 \u000f)5æ‰{Þn¥¾O¼ºès\u0006܃* 9;\u0013p­Âyý†K:Ù۔JÐím{† \u0018ª‡\fۅ\u0018æʏ\u0001ƒ/P\tÑ[,\u0014è\u001c\u0013æþ…1oõ²ŸYk¶&ï_Sã~¾@ʜ\u0003X_Ò¡¡†.˜\u0012ŸsP4*ŒÚ \u0014lD£ßó»+êE%3û¨\u0006q—³WÀ%jæ\u0014j”Ó÷r°êðž«Ïø.gJÀ4k9ç„L7\u000b—@º&…a»w\\·.ñÌ\u0014›éÊÁ¢Wj†•\u0010¬ËSðgš‚¶”4\bÛyȬ\u0012šÈ\u0004j‘\u0007/Ôòär\nÌ\u001bÇÒ¸ ÷vӑ\u0017½á(\u0017ßx?1\u0010ô¼»ŸÐ¦p¨<;Ä<(æ\u000eVSæľøÙ\t†Ñœ¿ïý<&þ©\u0016óÅÖº\\z\\›sڲʀpfnéœ[ êá9 pê= 3¥\u001fýù#\u00186›ÛÝ.2¨x\u001f?Öö#}¼¥¯[ÐcMTåoˆ¬ÔŸC³ú\u0017®Tîö'\u001c4Å\u0017ÛËå2êÅßù/õ9\u0005_;Ñi\u0010*g\u001bMí/â\u001eh;Ö4è \u0016¹8&û×o\u0006Ôb+hâÊüßpT[H$h¶ÀÏ!¡k\u0005²¹ø©¡„fÏ!¿\u0004„p¹¡\u001en%\u0014¸®eÆϏï\tDc;¨Fú\u0005[W쯭i\u0005#Þœ\u0019¹$\u0006H³—9­„šÔ¤\u0013Æ\u001fû‘hªjà¨ÓF؇H–äpÓ²\u0016„ÏÒªæUdwâ®\u0015ÀÕäpÛ¦IlHfDÊL\u0013…ó­û©È&ûĬ5ÑÊe\u00072§{xÀª ,Tãêf)3˛›Ó¥õ\u0017fäê¿­\u001dØdS=Mÿ³›Û©c”\u001fÁ\u000fۏ®VÛ\u0012k\u0010•'†Ò$Ž\u0013(Š2@äPu´'ºd\u0007VÐûhûæ ß.œ::9%\u0018%¼?ö\u0002¥mZ¹e=MbœC¢\u0014±/rÖ){ä¦ûgz&F‚\tff\u0013Ð[\u0000Ô®qp#öÎIå\u000e~Ç\u0013y?£©¬=MS= ç¼-^·äCI£\t9\u0015Ó·Ê°’y/©\u0006ž´µ?”:ÑñWîá¶^n’+h8\u0011…\u001dǛ€éM§°'•MëJà5úñ\u0011ÿ\\ñ©5Ò5e¼JlYm†ÇΌÃì9€ðÁ¿{íͯz6þú¢êÍu›çÆÌ(K'ç³ ¾ÂÕ×nAo\bí\u0017‘¼5…XÖ+T&­”Â4ÇLtB<^ÿ֖\u000fðIf¢ÃÖS\u001a¨ö!y&,@Ù(|ÞImeC\u0007Lh@ŸêHiY¼ˆ¡2\u00028^¹\u0015Þ7å\\”qŽ[Ã<\u0005ÑH/\u0015=}¬òÜ\u001a(ÂÎÒüÝ\n2Ý  û&AóAæ¢VUCÔn?K~\u001dÁPÞµðàrHö^®ÅM‹V-ÁMã¸ðZôxF\u001e\u000b?‡\u0004-\u0004ʋ6n\n\u000b…kÈ=M\u000b\u001e6áüñLdXž—\u001cúØàÄ|çIâIÜiW\u001adÎ=}ޚ¦= Pœ8\u0011½–6‘\"zòþåÇswõµBò:d âˆÓKå¤\"\u0012¾*a¤Í‹ÜôÀŽ½Éƒ|el{\u000b×°J×pc7÷°ßÆH0ÚYŽ\u0003™÷ O{\u0012+~xðS\u000fxÿwœÝÂ\u0012\u001bÑåbvî“x#¼Ý~ü\u0003=M%îsµÚ\u001fXéB,\u0019;V{¤B\\Ý\u0004õ3®Í*^„8òÇ\u0011\u0001[\u0012T²\u0001<ƒ*›…yt¸Æ^\u00123Ë\u001d‰°¿_ñL¸S¡ÝX!ÿz”Ž‡dx®Rv»É™\u0000_i\u000b8b“½V |¹¥Ðã¬KmmmEE¯Ú}‚ºC¦÷\"\"\"þþ\u001c£¶Ù¤MçØÙÙ9:Š\u001bԟ\u0014£˜F\u001d\u001d\u001d½¾îŸ:\fg¶¹&|e\"\u0017–U€[ï\u0001J¼\u0012\u0005\u001d\u0016&åqU³V›;}‘WÙÞì\u000f\u0012\u0012»c\u0003Áóeè9\u0003´\u0002v{&ى䱙$<»p®Í[u­O‡\ný\u001euy?Ç6F \u0004Ñɶæ°Úý&0Ÿð\nÒ{<®‡\u0015UÔÉJâ\u001aˉß.Ô2rL’\u0001ŽV:‡™š1Œ»q¶m[wÕψ\u001e=}\u001ew‰¿È@f \u0005Ùi–)ÍQX­\u000eœ@™AXà\nl‰\u001b‚;2ŒÇ³…ùæ{m¢\u0017š-€\\åáJ>Ãç'_Js=}¥˜/\u0005{\u000f~YÐ†X\u0010ŽZ\u0010pY\u0010>‚Œ<\u0010~Yšaw\u00105å(­ÜV¢lÿ[Ññ»–o$ÕMn%Œ7¦òñÚ\u0005À:ÞsÊÐ1\u0010sÛó˜= 2 Ž‘ã>°®ü8ú\u0019\u0017p€f!pWFûxnï‹\u0010*\tjþ¹\u001ei)8Î.v,羙_LåpRü4uL´ˆ*ý”ìwA\t\u0011Zƒf?áçxÏ{\"kB‘Š>\u0014\u0014¯8\u000b%ž\u001aɘ\u001e\bç\u000bܨ\u001c¾½ÔZE8Až¼“}†ÈæYÁ¦a2IÁÝÀ\u0017…ìwlMèkh¼GÕ=M\u0003‘ÜB--x{Ô\bÌ /óä\u001b]=}e~ÎÔKjÉ=MŸê1eyÀGâÏfb(ä\fÁÌMbÜãò]î\u0013^‘\u0014=M\u0013þ'\u0006ÛîøO¨;?\u0017<Ñùojªlðuqmh=Mp ÍÿÞªÍxö½Úá®È\u0016\u0002öN’¼\u000b¼™4ÁÊJ\u0006\u0005^’\u0017\b›”-èõóš\u0004´asÒ¬) hœ\u001fú¥árÑhŽ\u0012,&äù9\u001aa´&Ž= Î“Ú‚E¡|ú‰u-4ÛqN\u0015ùÚ¿Xï؛z©DÛxYْùÞ»jRwˆÆn§…@X¤Ò–d²pÙ‰Šq²(‚‰bõ¢ È\u0013[rì\u0010¢‡­ªžjJי’XVVú˜t©\u0019\u0014PÂÂx€RWluAte\u0003¢'\u001b\u0016žwèéžâV;¥»C²¥#$»)$o\u0005‹E9Ž‘²²p@’¼nOl}|6= F´Pt/™\u001bg\u000e߆à¼5\bÕÈ~\u0007ïyl?vÄ\u0000Iö]ðj\u0017@qŒá¯e\u0005;'pÓ­N\u0004¹\u0019fÓϲvSà/fÓ²ž\n;±«££$Ã'¸–RÝxÿ©i×ë.\f5ÙvËPIü}ðfW?I\fÞ0v\u001d=}J »+(Ô´¾\u0006Çùiï/Dû½öTØi\u0005\u0010oh»/hÔ¼>\u0006×ùj\u000f1„ûÁvTài\u0006 oj¡ß3º‰,_Ô2‡8–ïÜ²ˆH–÷Ý2ˆX–ÿÞ²‰h–\u0007\u001fÁpNrV -Œ&S¥Ë'¤Ã\u0005³#ô×\u00040ÿ\u001a¢\u001b&‡=MYfš{˜â^A\nzŽ|˜!\u0019PjQ˜|XÂ^™\nz\u001c{\u0018á\u0019@:\u0000Š\nz {\u0018â\u0019€:\u0000š\nzß{ØÂ\u0019p.\u0000–\u0006zß|Ø\u0002\u0019p>\u0000–\núÁm*\u0000\u001cTÎâ\u0019ˆlQ\u001f|8Ú^•\núÂ{x²\u0019˜(\u0000 \u0004úB{xÒ\u0019˜0\u0000 \u0006úÂ|xò\u0019˜8\u0000 \búB|x\u0012\u0019˜@\u0000 \n:ª\u0019œ\u0003:º\u0019œ\u0004:Ê\u0019œ\u0005:Ú\u0019œ\u0006:ê\u0019œ\u0007:ú\u0019 ž~\u0006A–½R˜Á’X)XO\f\u0010\u001e{nA™\u0019©\n\u0014É\n\u0016é\n\u0018\t\n\u001aª\u001a\u0014Ê\u001a\u0016ê\u001a\u0018\n\u001aÚ¦VÓ¶VÔÆVÕÖVÖæV×öVØ\u0006VÙ\u0016V:$Ï\u0007ž¼lí\tU6DÏ\bÍþ¼ný‰Uz¤\u0000s¬€s´\u0000t¼€tÄ\u0000ùuÔ\u0000v܀vä\u0000wì€wô\u0000xü€x\u0004\u0000y\f€y\u0014\u0000z\u001c€\n#¨É{\u0003'¸\t{\u0004+ÈI{\u0005/؉{\u00063èÉ|\u00077ø\t\u0006Ú)BèÝY¥³)$»Ý¤¾œWÐ\u001eIœÈ²ë\u000f삒œ_â‚r¢\u0016?âšp Öro:\u001cÖ\"™l!|ڞ*ê›'ú›(\n›)\u001a›jêŸgúŸh\nŸi\u001aŸJ*—4\u0001uò\u001dí\u0002ŒÐ à¹Ž#©£³©\u0005ÃqÍ¥0\u001bäyU‡ßRnà‰á\u0016R\\‚\u0016‘ÞšAžrÁU2ÈžlAURÐžnÁVrØžpAV’àž2ª”Ä\u0001g2\u001bµ\u0002…ðŸ,ê”Ì\u0001hR\u001b¹‚…\u0000Ÿ.*”Ô\u0001ir\u001b½\u0002†\u0010Ÿ0j”Ü\u0001j’\u001bÁ‚† Ÿò²u*—Å ëòu:—É ì2uJ—Í íruZ—Ñ î²vj—Õ ïòvz—Y–’~Âý2vŠ—Ý ñrvš—á Â9ŽC££³«%óÔ\u0012J\"ÎâW#\u001bÃá+º…*\u001bÅa+څ2\u001bÇá,ú…:\u001bÉa,\u001a…B\u001bËá-:…J\u001bÍa-Z…R\u001bÏá.z…Z\u001bÑa.š…b\u001bÓá/º†j\u001bÕa/چr\u001b×á0ú†z\u001bÙa0\u001a†‚\u001bÛá1:†Š\u001bÝa1Z†’\u001bßá2z†š\u001báa2š†¢\u001fÃâkº•*\u001fÅbkڕ2\u001f\u0007!Õ\u0002bpŠ‰\u001a–= œ‚\u001f\u0013!Û\u0002?âqʊ:–p–r–t–v–x–z–|–~Š^’¶§²«$£££c\u0019Y\u0010~Y\u0010~Y\u0010~Y\u0010~Y\u0010\u0007š'Ùm\u000eP^uM\u000eO= mNP\\qÎD-©}‹D/½=}‹C2­\u000bD.¥Èøxóþà8øööÀ˜øô\u0000Ð\u0018øK7=M½\fJ:\u0015=M\fI6!ÍLJ8\u0011-·òÜ O\u0016òݘ/VrޜWÖrÜ¢ÇõlÃ>ß5ìÆ6¿•ìÄ@Ï\u0015ì3\u0007M¼\t>\nU\f\t=}\u0006aÌI>\bQ¬6íÐF•íÑPo\u0015mÒH—UmÐô…ÎRb˜‘îRa”™\u001eÒb™‰Þ’bg;\u000fVjÕ\u000e\u000fUfáÎOVhÑ®9ÿ\u0018f\u0010šÿ\u0019pð\u001a\u001ah\u0018Z\u0018„õN\u0010W€\u0001nPX|ñžPWù^Ðý¥¸¯Sd¦¼×Ód¤Â·sd¥º§ëE-ÄY\u001bÅ.ÉIۅ.Å]û…-³ÌwÓe±Ò‡se¯ÊŸóå²Î³Ä0Ýi{†0ß};†/âm‹\u00060Þ\u0005gÅ1\f\u001eëûÓ­cË\u001f’\u0012~Y\u0010~Y\u0010¾fÓlÞ\u000b¸ÇQEè\u0017\u00156/’àr›W}\u0004l ÏytÛj§2¢[\u0010Õܑ…\"Ÿê\u0010:l]K¥t$ˆ¨Y¸‹\u0011ƒ>$Œ§MÂÅ©lÁÏ\u0012SPä\u001aª‚¿ï\n󠄚­Ô\u0000çØ´läÏÂT\u0010皳‚û×\u001d”[hJ¹D\u0000/\u0015\u0014<艺8Åÿ93ìå\u0006«2Ê\u001f=}³ÝeËñ7„U)ï½½\u0006\u001b_„v)s¼ét÷ŒInXëI‹ÓðB\fïˆ\u0006ÝjöHBњ\u0017MJwáP•ŒÖòD\"‚,æPÙ\u0004ÇmúJãçêÁ1ÕÞLF\u001f—zT“gÇö›ï°(\u0005Kõå:ÁáBæL¹ýì9¸UP6\u0002m\u0007\u0010Æ\u001e¶|ûlmä!Ø00\u0018O/\u0006ü¼~{=}j}ٙé.\u0017ùwVÆA\u000eҊžü6rA\u0019¹0›°êE ú<ÅE&ú‹\u0013ìò¼š£\u0006j¶©£\u001fš\u001f²\n~Y\\ÝàbV\u0010~Y¢K\u0010~\tó~ùû^0MœY\u0011ʜÈB©T*þ^\\? „Z\u00189eS†k\u0011\u0007ÐU·<.Ÿ2ïŖ4Ìn7\nmuˆ0q°ñ˜ñ&É&ÉöW:“Ù\u0016Y\u00130Y\u001c0ª/§¯²ª°¨±©±)zêŠ-õhLÌE×ÉÆEÓWuJxL€árø‰6Ãî/î¸Ê.õ\u0005u(üEÏô8ö= \u00006ð6p\"}ö\u0017IÑˆPƒ\u000føàC\u0015ó\u0010.]„y#©U;l2ͳHh\u0007«Ö\u0007\flT<ï¹ø¿ýµù½y‡z„Ù\u0011Þ\u0007<ŠÃ\u0018²òr­Î\u0016L\u0013Q\u0019\u0012\u0017K\u0016K\u0018‹×¼×Àx@w>JTë\u000eDqý¡¹qáXfÍ>wº\u0014—Z)ùjÇ.6µ¶Õ;÷\u0004-Ãö?ÒË®L«\u000b“N²O°–À\u0017=}\fà\fA\u0012Î\u0018\u0014\fn\bÍ\u0000\u000e?=}ÝOýýO\u001eO*\u0010ɗJ¼qyþ\u000bßz\u0007H¡©P€Ÿ€?<Ÿ¬ð&P\u0007= ËáÔÄÖa'k¸‡é·¬Î§\u0018$p!\u0000!p!ð$Ɓ\u00061®OI;Šüî@ÓO;gÓ¬…#\u0003ÇÙÿäE’TìO™£$@:³“ä(>Ûzí0RHN\u0012\u000b\u0007\u0005=M\t\u0011\u0004\f\b\b\u0010\u0006\u0006\u000e\n\n\u0012Rœ–>XþÛz‹†\u001e Ûªöt\\ï£+|½ »XP÷\u0016QVÈû³Jº‘Æ+Y÷9Z}\u001d¥@\u0015¾ŠÝ= ÿˆcA\u0005ܗ'£³æpóCè\u0001A^5£Ë)öt[zçHÍÞQá!+£³æp\u001eq\u0006\u0005E\u0015'¨”Zá\u0015ªŠ™…‰2{ürÞn¬£ÔwYßÛä\u001b\\7TÃa\"“\u0002yR\u0016SIbâmiÖZñµƒ\u001e=M•\u001d\u0005ž\u000b£”\u0002œ2\u001c]šÑqøG}“Ò`});\n\nvar HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, wasmMemory;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n HEAP8 = new Int8Array(b);\n HEAP16 = new Int16Array(b);\n HEAPU8 = new Uint8Array(b);\n HEAPU16 = new Uint16Array(b);\n HEAP32 = new Int32Array(b);\n HEAPU32 = new Uint32Array(b);\n HEAPF32 = new Float32Array(b);\n HEAPF64 = new Float64Array(b);\n}\n\nfunction JS_cos(x) {\n return Math.cos(x);\n}\n\nfunction JS_exp(x) {\n return Math.exp(x);\n}\n\nvar _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);\n\nvar abortOnCannotGrowMemory = requestedSize => {\n abort(\"OOM\");\n};\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n abortOnCannotGrowMemory(requestedSize);\n};\n\nvar wasmImports = {\n /** @export */ b: JS_cos,\n /** @export */ a: JS_exp,\n /** @export */ c: _emscripten_memcpy_js,\n /** @export */ d: _emscripten_resize_heap\n};\n\nfunction initRuntime(wasmExports) {\n wasmExports[\"f\"]();\n}\n\nvar imports = {\n \"a\": wasmImports\n};\n\nvar _opus_frame_decoder_create, _malloc, _opus_frame_decode_float_deinterleaved, _opus_frame_decoder_destroy, _free;\n\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {\n const wasmExports = instance.exports;\n _opus_frame_decoder_create = wasmExports[\"g\"];\n _malloc = wasmExports[\"h\"];\n _opus_frame_decode_float_deinterleaved = wasmExports[\"i\"];\n _opus_frame_decoder_destroy = wasmExports[\"j\"];\n _free = wasmExports[\"k\"];\n wasmMemory = wasmExports[\"e\"];\n updateMemoryViews();\n initRuntime(wasmExports);\n ready();\n});\n\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.opus_frame_decoder_create = _opus_frame_decoder_create;\n this.opus_frame_decode_float_deinterleaved = _opus_frame_decode_float_deinterleaved;\n this.opus_frame_decoder_destroy = _opus_frame_decoder_destroy;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport default function OpusDecoder(options = {}) {\n // static properties\n if (!OpusDecoder.errors) {\n // prettier-ignore\n Object.defineProperties(OpusDecoder, {\n errors: {\n value: new Map([\n [-1, \"OPUS_BAD_ARG: One or more invalid/out of range arguments\"],\n [-2, \"OPUS_BUFFER_TOO_SMALL: Not enough bytes allocated in the buffer\"],\n [-3, \"OPUS_INTERNAL_ERROR: An internal error was detected\"],\n [-4, \"OPUS_INVALID_PACKET: The compressed data passed is corrupted\"],\n [-5, \"OPUS_UNIMPLEMENTED: Invalid/unsupported request number\"],\n [-6, \"OPUS_INVALID_STATE: An encoder or decoder structure is invalid or already freed\"],\n [-7, \"OPUS_ALLOC_FAIL: Memory allocation has failed\"],\n ]),\n },\n });\n }\n\n // injects dependencies when running as a web worker\n // async\n this._init = () =>\n new this._WASMAudioDecoderCommon(this)\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._inputBytes = 0;\n this._outputSamples = 0;\n this._frameNumber = 0;\n\n this._input = this._common.allocateTypedArray(\n this._inputSize,\n Uint8Array,\n );\n\n this._output = this._common.allocateTypedArray(\n this._outputChannels * this._outputChannelSize,\n Float32Array,\n );\n\n const mapping = this._common.allocateTypedArray(\n this._channels,\n Uint8Array,\n );\n\n mapping.buf.set(this._channelMappingTable);\n\n this._decoder = this._common.wasm.opus_frame_decoder_create(\n this._sampleRate,\n this._channels,\n this._streamCount,\n this._coupledStreamCount,\n mapping.ptr,\n this._preSkip,\n this._forceStereo,\n );\n });\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.free();\n this._common.wasm.opus_frame_decoder_destroy(this._decoder);\n this._common.wasm.free(this._decoder);\n };\n\n this._decode = (opusFrame) => {\n if (!(opusFrame instanceof Uint8Array))\n throw Error(\n \"Data to decode must be Uint8Array. Instead got \" + typeof opusFrame,\n );\n\n this._input.buf.set(opusFrame);\n\n let samplesDecoded =\n this._common.wasm.opus_frame_decode_float_deinterleaved(\n this._decoder,\n this._input.ptr,\n opusFrame.length,\n this._output.ptr,\n );\n\n let error;\n\n if (samplesDecoded < 0) {\n error =\n \"libopus \" +\n samplesDecoded +\n \" \" +\n (OpusDecoder.errors.get(samplesDecoded) || \"Unknown Error\");\n\n console.error(error);\n samplesDecoded = 0;\n }\n\n return {\n outputBuffer: this._common.getOutputChannels(\n this._output.buf,\n this._outputChannels,\n samplesDecoded,\n ),\n samplesDecoded: samplesDecoded,\n error: error,\n };\n };\n\n this.decodeFrame = (opusFrame) => {\n let errors = [];\n\n const decoded = this._decode(opusFrame);\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n opusFrame.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._frameNumber++;\n this._inputBytes += opusFrame.length;\n this._outputSamples += decoded.samplesDecoded;\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n [decoded.outputBuffer],\n this._outputChannels,\n decoded.samplesDecoded,\n this._sampleRate,\n );\n };\n\n this.decodeFrames = (opusFrames) => {\n let outputBuffers = [],\n errors = [],\n samplesDecoded = 0,\n i = 0;\n\n while (i < opusFrames.length) {\n const opusFrame = opusFrames[i++];\n const decoded = this._decode(opusFrame);\n\n outputBuffers.push(decoded.outputBuffer);\n samplesDecoded += decoded.samplesDecoded;\n\n if (decoded.error)\n this._common.addError(\n errors,\n decoded.error,\n opusFrame.length,\n this._frameNumber,\n this._inputBytes,\n this._outputSamples,\n );\n\n this._frameNumber++;\n this._inputBytes += opusFrame.length;\n this._outputSamples += decoded.samplesDecoded;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n outputBuffers,\n this._outputChannels,\n samplesDecoded,\n this._sampleRate,\n );\n };\n\n // injects dependencies when running as a web worker\n this._isWebWorker = OpusDecoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n OpusDecoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = OpusDecoder.EmscriptenWASM || EmscriptenWASM;\n this._module = OpusDecoder.module;\n\n const MAX_FORCE_STEREO_CHANNELS = 8;\n const isNumber = (param) => typeof param === \"number\";\n\n const sampleRate = options.sampleRate;\n const channels = options.channels;\n const streamCount = options.streamCount;\n const coupledStreamCount = options.coupledStreamCount;\n const channelMappingTable = options.channelMappingTable;\n const preSkip = options.preSkip;\n const forceStereo = options.forceStereo ? 1 : 0;\n\n // channel mapping family >= 1\n if (\n channels > 2 &&\n (!isNumber(streamCount) ||\n !isNumber(coupledStreamCount) ||\n !Array.isArray(channelMappingTable))\n ) {\n throw new Error(\"Invalid Opus Decoder Options for multichannel decoding.\");\n }\n\n // libopus sample rate\n this._sampleRate = [8e3, 12e3, 16e3, 24e3, 48e3].includes(sampleRate)\n ? sampleRate\n : 48000;\n\n // channel mapping family 0\n this._channels = isNumber(channels) ? channels : 2;\n this._streamCount = isNumber(streamCount) ? streamCount : 1;\n this._coupledStreamCount = isNumber(coupledStreamCount)\n ? coupledStreamCount\n : this._channels - 1;\n this._channelMappingTable =\n channelMappingTable || (this._channels === 2 ? [0, 1] : [0]);\n this._preSkip = preSkip || 0;\n\n this._forceStereo =\n channels <= MAX_FORCE_STEREO_CHANNELS && channels != 2 ? forceStereo : 0;\n\n this._inputSize = 32000 * 0.12 * this._channels; // 256kbs per channel\n this._outputChannelSize = 120 * 48;\n this._outputChannels = this._forceStereo ? 2 : this._channels;\n\n this._ready = this._init();\n\n return this;\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport OpusDecoder from \"./OpusDecoder.js\";\n\nexport default class OpusDecoderWebWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"opus-decoder\", OpusDecoder, EmscriptenWASM);\n }\n\n async decodeFrame(data) {\n return this.postToDecoder(\"decodeFrame\", data);\n }\n\n async decodeFrames(data) {\n return this.postToDecoder(\"decodeFrames\", data);\n }\n}\n","import OpusDecoder from \"./src/OpusDecoder.js\";\nimport OpusDecoderWebWorker from \"./src/OpusDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(OpusDecoder, \"OpusDecoder\");\nassignNames(OpusDecoderWebWorker, \"OpusDecoderWebWorker\");\n\nexport { OpusDecoder, OpusDecoderWebWorker };\n","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\nimport { OpusDecoder } from \"opus-decoder\";\nimport CodecParser, {\n codecFrames,\n header,\n channels,\n streamCount,\n coupledStreamCount,\n channelMappingTable,\n preSkip,\n isLastPage,\n absoluteGranulePosition,\n data,\n totalSamples,\n} from \"codec-parser\";\n\nexport default class OggOpusDecoder {\n constructor(options = {}) {\n this._sampleRate = options.sampleRate || 48000;\n this._forceStereo =\n options.forceStereo !== undefined ? options.forceStereo : false;\n\n this._onCodec = (codec) => {\n if (codec !== \"opus\")\n throw new Error(\n \"ogg-opus-decoder does not support this codec \" + codec,\n );\n };\n\n // instantiate to create static properties\n new WASMAudioDecoderCommon();\n this._decoderClass = OpusDecoder;\n\n this._init();\n }\n\n _init() {\n if (this._decoder) this._decoder.free();\n this._decoder = null;\n this._ready = Promise.resolve();\n\n this._codecParser = new CodecParser(\"application/ogg\", {\n onCodec: this._onCodec,\n enableFrameCRC32: false,\n });\n }\n\n async _instantiateDecoder(header) {\n this._totalSamplesDecoded = 0;\n this._preSkip = header[preSkip];\n this._channels = this._forceStereo ? 2 : header[channels];\n\n this._decoder = new this._decoderClass({\n channels: header[channels],\n streamCount: header[streamCount],\n coupledStreamCount: header[coupledStreamCount],\n channelMappingTable: header[channelMappingTable],\n preSkip: Math.round((this._preSkip / 48000) * this._sampleRate),\n sampleRate: this._sampleRate,\n forceStereo: this._forceStereo,\n });\n await this._decoder.ready;\n }\n\n get ready() {\n return this._ready;\n }\n\n async reset() {\n this._init();\n }\n\n free() {\n this._init();\n }\n\n async _decode(oggPages) {\n let allErrors = [],\n allChannelData = [],\n samplesThisDecode = 0;\n\n for await (const oggPage of oggPages) {\n // only decode Ogg pages that have codec frames\n const frames = oggPage[codecFrames].map((f) => f[data]);\n\n if (frames.length) {\n // wait until there is an Opus header before instantiating\n if (!this._decoder)\n await this._instantiateDecoder(oggPage[codecFrames][0][header]);\n\n const { channelData, samplesDecoded, errors } =\n await this._decoder.decodeFrames(frames);\n\n this._totalSamplesDecoded += samplesDecoded;\n\n if (oggPage[isLastPage]) {\n // in cases where BigInt isn't supported, don't do any absoluteGranulePosition logic (i.e. old iOS versions)\n if (oggPage[absoluteGranulePosition] !== undefined) {\n const totalDecodedSamples_48000 =\n (this._totalSamplesDecoded / this._sampleRate) * 48000;\n\n // trim any extra samples that are decoded beyond the absoluteGranulePosition, relative to where we started in the stream\n const samplesToTrim = Math.round(\n ((totalDecodedSamples_48000 - oggPage[totalSamples]) / 48000) *\n this._sampleRate,\n );\n\n if (samplesToTrim > 0) {\n for (let i = 0; i < channelData.length; i++) {\n channelData[i] = channelData[i].subarray(\n 0,\n samplesDecoded - samplesToTrim,\n );\n }\n }\n\n samplesThisDecode -= samplesToTrim;\n }\n // reached the end of an ogg stream, reset the decoder\n this._init();\n }\n\n allErrors.push(...errors);\n allChannelData.push(channelData);\n samplesThisDecode += samplesDecoded;\n }\n }\n\n return [\n allErrors,\n allChannelData,\n this._channels,\n samplesThisDecode,\n this._sampleRate,\n 16,\n ];\n }\n\n _parse(oggOpusData) {\n return [...this._codecParser.parseChunk(oggOpusData)];\n }\n\n _flush() {\n return [...this._codecParser.flush()];\n }\n\n async decode(oggOpusData) {\n const decoded = await this._decode(this._parse(oggOpusData));\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n\n async decodeFile(oggOpusData) {\n const decoded = await this._decode([\n ...this._parse(oggOpusData),\n ...this._flush(),\n ]);\n this._init();\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n\n async flush() {\n const decoded = await this._decode(this._flush());\n this._init();\n\n return WASMAudioDecoderCommon.getDecodedAudioMultiChannel(...decoded);\n }\n}\n","import { OpusDecoderWebWorker } from \"opus-decoder\";\nimport OggOpusDecoder from \"./OggOpusDecoder.js\";\n\nexport default class OggOpusDecoderWebWorker extends OggOpusDecoder {\n constructor(options) {\n super(options);\n\n this._decoderClass = OpusDecoderWebWorker;\n }\n\n async free() {\n super.free();\n }\n}\n","import OggOpusDecoder from \"./src/OggOpusDecoder.js\";\nimport OggOpusDecoderWebWorker from \"./src/OggOpusDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(OggOpusDecoder, \"OggOpusDecoder\");\nassignNames(OggOpusDecoderWebWorker, \"OggOpusDecoderWebWorker\");\n\nexport { OggOpusDecoder, OggOpusDecoderWebWorker };\n"],"names":["EmscriptenWASM","WASMAudioDecoderCommon","ready","base64ReverseLookup","Uint8Array","i","HEAPU8","wasmMemory","wasm","Object","defineProperty","get","String","raw","_opus_frame_decoder_create","_malloc","_opus_frame_decode_float_deinterleaved","_opus_frame_decoder_destroy","_free","imports","a","b","x","Math","cos","exp","c","dest","src","num","copyWithin","d","requestedSize","abort","this","setModule","data","getModule","instantiate","then","WebAssembly","instance","wasmExports","exports","buffer","initRuntime","Promise","resolve","HEAP","malloc","free","opus_frame_decoder_create","opus_frame_decode_float_deinterleaved","opus_frame_decoder_destroy","OpusDecoder","options","errors","defineProperties","value","Map","_init","_WASMAudioDecoderCommon","_EmscriptenWASM","_module","common","_common","_inputBytes","_outputSamples","_frameNumber","_input","allocateTypedArray","_inputSize","_output","_outputChannels","_outputChannelSize","Float32Array","mapping","_channels","buf","set","_channelMappingTable","_decoder","_sampleRate","_streamCount","_coupledStreamCount","ptr","_preSkip","_forceStereo","enumerable","_ready","reset","_decode","opusFrame","Error","error","samplesDecoded","length","console","outputBuffer","getOutputChannels","decodeFrame","decoded","addError","getDecodedAudioMultiChannel","decodeFrames","opusFrames","outputBuffers","push","_isWebWorker","isWebWorker","module","isNumber","param","sampleRate","channels","streamCount","coupledStreamCount","channelMappingTable","preSkip","forceStereo","Array","isArray","includes","OpusDecoderWebWorker","WASMAudioDecoderWorker","constructor","super","postToDecoder","assignNames","OggOpusDecoder","undefined","_onCodec","codec","_decoderClass","_codecParser","CodecParser","onCodec","enableFrameCRC32","_instantiateDecoder","header","_totalSamplesDecoded","round","oggPages","allErrors","allChannelData","samplesThisDecode","oggPage","frames","codecFrames","map","f","channelData","isLastPage","absoluteGranulePosition","samplesToTrim","totalSamples","subarray","_parse","oggOpusData","parseChunk","_flush","flush","decode","decodeFile","OggOpusDecoderWebWorker"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-95487546.js b/dist/index-95487546.js new file mode 100644 index 00000000..720af121 --- /dev/null +++ b/dist/index-95487546.js @@ -0,0 +1,2 @@ +const e=Symbol,t=(()=>{const e="left",t="center",s="right";return["","front ","side ","rear "].map(i=>[[e,s],[e,s,t],[e,t,s],[t,e,s],[t]].flatMap(e=>e.map(e=>i+e).join(", ")))})(),s="LFE",i="monophonic (mono)",r="stereo",n="surround",a=(e,...t)=>`${[i,r,`linear ${n}`,"quadraphonic",`5.0 ${n}`,`5.1 ${n}`,`6.1 ${n}`,`7.1 ${n}`][e-1]} (${t.join(", ")})`,o=[i,a(2,t[0][0]),a(3,t[0][2]),a(4,t[1][0],t[3][0]),a(5,t[1][2],t[3][0]),a(6,t[1][2],t[3][0],s),a(7,t[1][2],t[2][0],t[3][4],s),a(8,t[1][2],t[2][0],t[3][0],s)],h=48e3,c=44100,l=32e3,u=24e3,d=22050,_=16e3,p=8e3,f="absoluteGranulePosition",g="bandwidth",m="bitDepth",C="bitrate",b=C+"Maximum",y=C+"Minimum",S=C+"Nominal",w="buffer",P=w+"Fullness",k="codec",v=k+"Frames",x="coupledStreamCount",F="crc",H=F+"16",I=F+"32",U="data",M="description",$="duration",O="emphasis",A="hasOpusPadding",N="header",R="isContinuedPacket",B="isCopyrighted",L="isFirstPage",D="isHome",E="isLastPage",T="isOriginal",G="isPrivate",q="isVbr",z="layer",V="length",j="mode",W=j+"Extension",J="mpeg",K=J+"Version",Q="numberAACFrames",X="outputGain",Y="preSkip",Z="profile",ee=e(),te="protection",se="segments",ie="subarray",re="version",ne="vorbis",ae=ne+"Comments",oe=ne+"Setup",he="block",ce=he+"ingStrategy",le=e(),ue=he+"Size",de=he+"size0",_e=he+"size1",pe=e(),fe="channel",ge=fe+"MappingFamily",me=fe+"MappingTable",Ce=fe+"Mode",be=e(),ye=fe+"s",Se="copyright",we=Se+"Id",Pe=Se+"IdStart",ke="frame",ve=ke+"Count",xe=ke+"Length",Fe="Number",He=ke+Fe,Ie=ke+"Padding",Ue=ke+"Size",Me="Rate",$e="inputSample"+Me,Oe="page",Ae=Oe+"Checksum",Ne=e(),Re=Oe+"SegmentTable",Be=Oe+"Sequence"+Fe,Le="sample",De=Le+Fe,Ee=Le+Me,Te=e(),Ge=Le+"s",qe="stream",ze=qe+"Count",Ve=qe+"Info",je=qe+"Serial"+Fe,We=qe+"StructureVersion",Je="total",Ke=Je+"BytesOut",Qe=Je+"Duration",Xe=Je+"Samples",Ye=e(),Ze=e(),et=e(),tt=e(),st=e(),it=e(),rt=e(),nt=e(),at=e(),ot=e(),ht=e(),ct=e(),lt=e(),ut=e(),dt=e(),_t=e(),pt=e(),ft=e(),gt=Uint8Array,mt=DataView,Ct="reserved",bt="bad",yt="free",St="none",wt="16bit CRC",Pt=(e,t,s)=>{for(let i=0;i0;e--)r=s(r);e[i]=r}return e},kt=Pt(new gt(256),e=>e,e=>128&e?7^e<<1:e<<1),vt=[Pt(new Uint16Array(256),e=>e<<8,e=>e<<1^(32768&e?32773:0))],xt=[Pt(new Uint32Array(256),e=>e,e=>e>>>1^3988292384*(1&e))];for(let e=0;e<15;e++){vt.push(new Uint16Array(256)),xt.push(new Uint32Array(256));for(let t=0;t<=255;t++)vt[e+1][t]=vt[0][vt[e][t]>>>8]^vt[e][t]<<8,xt[e+1][t]=xt[e][t]>>>8^xt[0][255&xt[e][t]]}const Ft=e=>{const t=e[V],s=t-16;let i=0,r=0;for(;r<=s;)i=xt[15][255&(e[r++]^i)]^xt[14][255&(e[r++]^i>>>8)]^xt[13][255&(e[r++]^i>>>16)]^xt[12][e[r++]^i>>>24]^xt[11][e[r++]]^xt[10][e[r++]]^xt[9][e[r++]]^xt[8][e[r++]]^xt[7][e[r++]]^xt[6][e[r++]]^xt[5][e[r++]]^xt[4][e[r++]]^xt[3][e[r++]]^xt[2][e[r++]]^xt[1][e[r++]]^xt[0][e[r++]];for(;r!==t;)i=xt[0][255&(i^e[r++])]^i>>>8;return~i},Ht=(...e)=>{const t=new gt(e.reduce((e,t)=>e+t[V],0));return e.reduce((e,s)=>(t.set(s,e),e+s[V]),0),t},It=e=>String.fromCharCode(...e),Ut=[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15],Mt=e=>Ut[15&e]<<4|Ut[e>>4];class $t{constructor(e){this._data=e,this._pos=8*e[V]}set position(e){this._pos=e}get position(){return this._pos}read(e){const t=Math.floor(this._pos/8),s=this._pos%8;return this._pos-=e,(Mt(this._data[t-1])<<8)+Mt(this._data[t])>>7-s&255}}class Ot{constructor(e,t){this._onCodecHeader=e,this._onCodecUpdate=t,this[dt]()}[_t](){this._isEnabled=!0}[dt](){this._headerCache=new Map,this._codecUpdateData=new WeakMap,this._codecHeaderSent=!1,this._codecShouldUpdate=!1,this._bitrate=null,this._isEnabled=!1}[ut](e,t){if(this._onCodecUpdate){this._bitrate!==e&&(this._bitrate=e,this._codecShouldUpdate=!0);const s=this._codecUpdateData.get(this._headerCache.get(this._currentHeader));this._codecShouldUpdate&&s&&this._onCodecUpdate({bitrate:e,...s},t),this._codecShouldUpdate=!1}}[at](e){const t=this._headerCache.get(e);return t&&this._updateCurrentHeader(e),t}[ot](e,t,s){this._isEnabled&&(this._codecHeaderSent||(this._onCodecHeader({...t}),this._codecHeaderSent=!0),this._updateCurrentHeader(e),this._headerCache.set(e,t),this._codecUpdateData.set(t,s))}_updateCurrentHeader(e){this._onCodecUpdate&&e!==this._currentHeader&&(this._codecShouldUpdate=!0,this._currentHeader=e)}}const At=new WeakMap,Nt=new WeakMap;class Rt{constructor(e,t){this._codecParser=e,this._headerCache=t}*[rt](){let e;for(;;){if(e=yield*this.Frame[ht](this._codecParser,this._headerCache,0),e)return e;this._codecParser[Ze](1)}}*[nt](e){let t=yield*this[rt]();const s=Nt.get(t)[V];if(e||this._codecParser._flushing||(yield*this.Header[at](this._codecParser,this._headerCache,s)))return this._headerCache[_t](),this._codecParser[Ze](s),this._codecParser[tt](t),t;this._codecParser[st](`Missing ${ke} at ${s} bytes from current position.`,`Dropping current ${ke} and trying again.`),this._headerCache[dt](),this._codecParser[Ze](1)}}class Bt{constructor(e,t){Nt.set(this,{[N]:e}),this[U]=t}}class Lt extends Bt{static*[ht](e,t,s,i,r){const n=yield*e[at](s,i,r);if(n){const e=At.get(n)[xe],i=At.get(n)[Ge];return new t(n,(yield*s[Ye](e,r))[ie](0,e),i)}return null}constructor(e,t,s){super(e,t),this[N]=e,this[Ge]=s,this[$]=s/e[Ee]*1e3,this[He]=null,this[Ke]=null,this[Xe]=null,this[Qe]=null,Nt.get(this)[V]=t[V]}}const Dt="unsynchronizationFlag",Et="extendedHeaderFlag",Tt="experimentalFlag",Gt="footerPresent";class qt{static*getID3v2Header(e,t,s){const i={};let r=yield*e[Ye](3,s);return 73!==r[0]||68!==r[1]||51!==r[2]?null:(r=yield*e[Ye](10,s),i[re]=`id3v2.${r[3]}.${r[4]}`,15&r[5]?null:(i[Dt]=!!(128&r[5]),i[Et]=!!(64&r[5]),i[Tt]=!!(32&r[5]),i[Gt]=!!(16&r[5]),128&r[6]||128&r[7]||128&r[8]||128&r[9]?null:(i[V]=10+(r[6]<<21|r[7]<<14|r[8]<<7|r[9]),new qt(i))))}constructor(e){this[re]=e[re],this[Dt]=e[Dt],this[Et]=e[Et],this[Tt]=e[Tt],this[Gt]=e[Gt],this[V]=e[V]}}class zt{constructor(e){At.set(this,e),this[m]=e[m],this[C]=null,this[ye]=e[ye],this[Ce]=e[Ce],this[Ee]=e[Ee]}}const Vt={0:[yt,yt,yt,yt,yt],16:[32,32,32,32,8],240:[bt,bt,bt,bt,bt]},jt=(e,t,s)=>8*((e+s)%t+t)*(1<<(e+s)/t)-8*t*(t/8|0);for(let e=2;e<15;e++)Vt[e<<4]=[32*e,jt(e,4,0),jt(e,4,-1),jt(e,8,4),jt(e,8,0)];const Wt="bands ",Jt=" to 31",Kt={0:Wt+4+Jt,16:Wt+8+Jt,32:Wt+12+Jt,48:Wt+16+Jt},Qt="bitrateIndex",Xt="v2",Yt="v1",Zt="Intensity stereo ",es=", MS stereo ",ts="on",ss="off",is={0:Zt+ss+es+ss,16:Zt+ts+es+ss,32:Zt+ss+es+ts,48:Zt+ts+es+ts},rs={0:{[M]:Ct},2:{[M]:"Layer III",[Ie]:1,[W]:is,[Yt]:{[Qt]:2,[Ge]:1152},[Xt]:{[Qt]:4,[Ge]:576}},4:{[M]:"Layer II",[Ie]:1,[W]:Kt,[Ge]:1152,[Yt]:{[Qt]:1},[Xt]:{[Qt]:4}},6:{[M]:"Layer I",[Ie]:4,[W]:Kt,[Ge]:384,[Yt]:{[Qt]:0},[Xt]:{[Qt]:3}}},ns="MPEG Version ",as="ISO/IEC ",os={0:{[M]:`${ns}2.5 (later extension of MPEG 2)`,[z]:Xt,[Ee]:{0:11025,4:12e3,8:p,12:Ct}},8:{[M]:Ct},16:{[M]:`${ns}2 (${as}13818-3)`,[z]:Xt,[Ee]:{0:d,4:u,8:_,12:Ct}},24:{[M]:`${ns}1 (${as}11172-3)`,[z]:Yt,[Ee]:{0:c,4:h,8:l,12:Ct}},length:V},hs={0:wt,1:St},cs={0:St,1:"50/15 ms",2:Ct,3:"CCIT J.17"},ls={0:{[ye]:2,[M]:r},64:{[ye]:2,[M]:"joint "+r},128:{[ye]:2,[M]:"dual channel"},192:{[ye]:1,[M]:i}};class us extends zt{static*[at](e,t,s){const i={},r=yield*qt.getID3v2Header(e,t,s);r&&(yield*e[Ye](r[V],s),e[Ze](r[V]));const n=yield*e[Ye](4,s),a=It(n[ie](0,4)),o=t[at](a);if(o)return new us(o);if(255!==n[0]||n[1]<224)return null;const h=os[24&n[1]];if(h[M]===Ct)return null;const c=6&n[1];if(rs[c][M]===Ct)return null;const l={...rs[c],...rs[c][h[z]]};if(i[K]=h[M],i[z]=l[M],i[Ge]=l[Ge],i[te]=hs[1&n[1]],i[V]=4,i[C]=Vt[240&n[2]][l[Qt]],i[C]===bt)return null;if(i[Ee]=h[Ee][12&n[2]],i[Ee]===Ct)return null;if(i[Ie]=2&n[2]&&l[Ie],i[G]=!!(1&n[2]),i[xe]=Math.floor(125*i[C]*i[Ge]/i[Ee]+i[Ie]),!i[xe])return null;const u=192&n[3];if(i[Ce]=ls[u][M],i[ye]=ls[u][ye],i[W]=l[W][48&n[3]],i[B]=!!(8&n[3]),i[T]=!!(4&n[3]),i[O]=cs[3&n[3]],i[O]===Ct)return null;i[m]=16;{const{length:e,frameLength:s,samples:r,...n}=i;t[ot](a,i,n)}return new us(i)}constructor(e){super(e),this[C]=e[C],this[O]=e[O],this[Ie]=e[Ie],this[B]=e[B],this[T]=e[T],this[G]=e[G],this[z]=e[z],this[W]=e[W],this[K]=e[K],this[te]=e[te]}}class ds extends Lt{static*[ht](e,t,s){return yield*super[ht](us,ds,e,t,s)}constructor(e,t,s){super(e,t,s)}}class _s extends Rt{constructor(e,t,s){super(e,t),this.Frame=ds,this.Header=us,s(this[k])}get[k](){return J}*[ct](){return yield*this[nt]()}}const ps={0:"MPEG-4",8:"MPEG-2"},fs={0:"valid",2:bt,4:bt,6:bt},gs={0:wt,1:St},ms={0:"AAC Main",64:"AAC LC (Low Complexity)",128:"AAC SSR (Scalable Sample Rate)",192:"AAC LTP (Long Term Prediction)"},Cs={0:96e3,4:88200,8:64e3,12:h,16:c,20:l,24:u,28:d,32:_,36:12e3,40:11025,44:p,48:7350,52:Ct,56:Ct,60:"frequency is written explicitly"},bs={0:{[ye]:0,[M]:"Defined in AOT Specific Config"},64:{[ye]:1,[M]:i},128:{[ye]:2,[M]:a(2,t[0][0])},192:{[ye]:3,[M]:a(3,t[1][3])},256:{[ye]:4,[M]:a(4,t[1][3],t[3][4])},320:{[ye]:5,[M]:a(5,t[1][3],t[3][0])},384:{[ye]:6,[M]:a(6,t[1][3],t[3][0],s)},448:{[ye]:8,[M]:a(8,t[1][3],t[2][0],t[3][0],s)}};class ys extends zt{static*[at](e,t,s){const i={},r=yield*e[Ye](7,s),n=It([r[0],r[1],r[2],252&r[3]|3&r[6]]),a=t[at](n);if(a)Object.assign(i,a);else{if(255!==r[0]||r[1]<240)return null;if(i[K]=ps[8&r[1]],i[z]=fs[6&r[1]],i[z]===bt)return null;const e=1&r[1];i[te]=gs[e],i[V]=e?7:9,i[ee]=192&r[2],i[Te]=60&r[2];const s=2&r[2];if(i[Z]=ms[i[ee]],i[Ee]=Cs[i[Te]],i[Ee]===Ct)return null;i[G]=!!s,i[be]=448&(r[2]<<8|r[3]),i[Ce]=bs[i[be]][M],i[ye]=bs[i[be]][ye],i[T]=!!(32&r[3]),i[D]=!!(8&r[3]),i[we]=!!(8&r[3]),i[Pe]=!!(4&r[3]),i[m]=16,i[Ge]=1024,i[Q]=3&r[6];{const{length:e,channelModeBits:s,profileBits:r,sampleRateBits:a,frameLength:o,samples:h,numberAACFrames:c,...l}=i;t[ot](n,i,l)}}if(i[xe]=8191&(r[3]<<11|r[4]<<3|r[5]>>5),!i[xe])return null;const o=2047&(r[5]<<6|r[6]>>2);return i[P]=2047===o?"VBR":o,new ys(i)}constructor(e){super(e),this[we]=e[we],this[Pe]=e[Pe],this[P]=e[P],this[D]=e[D],this[T]=e[T],this[G]=e[G],this[z]=e[z],this[V]=e[V],this[K]=e[K],this[Q]=e[Q],this[Z]=e[Z],this[te]=e[te]}get audioSpecificConfig(){const e=At.get(this),t=e[ee]+64<<5|e[Te]<<5|e[be]>>3,s=new gt(2);return new mt(s[w]).setUint16(0,t,!1),s}}class Ss extends Lt{static*[ht](e,t,s){return yield*super[ht](ys,Ss,e,t,s)}constructor(e,t,s){super(e,t,s)}}class ws extends Rt{constructor(e,t,s){super(e,t),this.Frame=Ss,this.Header=ys,s(this[k])}get[k](){return"aac"}*[ct](){return yield*this[nt]()}}class Ps extends Lt{static _getFrameFooterCrc16(e){return(e[e[V]-2]<<8)+e[e[V]-1]}static[ft](e){const t=Ps._getFrameFooterCrc16(e),s=(e=>{const t=e[V],s=t-16;let i=0,r=0;for(;r<=s;)i^=e[r++]<<8|e[r++],i=vt[15][i>>8]^vt[14][255&i]^vt[13][e[r++]]^vt[12][e[r++]]^vt[11][e[r++]]^vt[10][e[r++]]^vt[9][e[r++]]^vt[8][e[r++]]^vt[7][e[r++]]^vt[6][e[r++]]^vt[5][e[r++]]^vt[4][e[r++]]^vt[3][e[r++]]^vt[2][e[r++]]^vt[1][e[r++]]^vt[0][e[r++]];for(;r!==t;)i=(255&i)<<8^vt[0][i>>8^e[r++]];return i})(e[ie](0,-2));return t===s}constructor(e,t,s){t[Ve]=s,t[H]=Ps._getFrameFooterCrc16(e),super(t,e,At.get(t)[Ge])}}const ks="get from STREAMINFO metadata block",vs={0:"Fixed",1:"Variable"},xs={0:Ct,16:192};for(let e=2;e<16;e++)xs[e<<4]=e<6?576*2**(e-2):2**e;const Fs={0:ks,1:88200,2:176400,3:192e3,4:p,5:_,6:d,7:u,8:l,9:c,10:h,11:96e3,15:bt},Hs={0:{[ye]:1,[M]:i},16:{[ye]:2,[M]:a(2,t[0][0])},32:{[ye]:3,[M]:a(3,t[0][1])},48:{[ye]:4,[M]:a(4,t[1][0],t[3][0])},64:{[ye]:5,[M]:a(5,t[1][1],t[3][0])},80:{[ye]:6,[M]:a(6,t[1][1],s,t[3][0])},96:{[ye]:7,[M]:a(7,t[1][1],s,t[3][4],t[2][0])},112:{[ye]:8,[M]:a(8,t[1][1],s,t[3][0],t[2][0])},128:{[ye]:2,[M]:`${r} (left, diff)`},144:{[ye]:2,[M]:`${r} (diff, right)`},160:{[ye]:2,[M]:`${r} (avg, diff)`},176:Ct,192:Ct,208:Ct,224:Ct,240:Ct},Is={0:ks,2:8,4:12,6:Ct,8:16,10:20,12:24,14:Ct};class Us extends zt{static _decodeUTF8Int(e){if(e[0]>254)return null;if(e[0]<128)return{value:e[0],length:1};let t=1;for(let s=64;s&e[0];s>>=1)t++;let s=t-1,i=0,r=0;for(;s>0;r+=6,s--){if(128!=(192&e[s]))return null;i|=(63&e[s])<>t)<{let t=0;const s=e[V];for(let i=0;i!==s;i++)t=kt[t^e[i]];return t})(i[ie](0,r[V]-1)))return null;if(!a){const{blockingStrategyBits:e,frameNumber:s,sampleNumber:i,samples:a,sampleRateBits:o,blockSizeBits:h,crc:c,length:l,...u}=r;t[ot](n,r,u)}return new Us(r)}constructor(e){super(e),this[H]=null,this[ce]=e[ce],this[ue]=e[ue],this[He]=e[He],this[De]=e[De],this[Ve]=null}}class Ms extends Rt{constructor(e,t,s){super(e,t),this.Frame=Ps,this.Header=Us,s(this[k])}get[k](){return"flac"}*_getNextFrameSyncOffset(e){const t=yield*this._codecParser[Ye](2,0),s=t[V]-2;for(;e{const t=Us[pt](e,this._headerCache);if(t)return new Ps(e,t,this._streamInfo);this._codecParser[st]("Failed to parse Ogg FLAC frame","Skipping invalid FLAC frame")}).filter(e=>!!e)),e}}class $s{static*[at](e,t,s){const i={};let r=yield*e[Ye](28,s);if(79!==r[0]||103!==r[1]||103!==r[2]||83!==r[3])return null;if(i[We]=r[4],248&r[5])return null;i[E]=!!(4&r[5]),i[L]=!!(2&r[5]),i[R]=!!(1&r[5]);const n=new mt(gt.from(r[ie](0,28))[w]);i[f]=(e=>{try{return e.getBigInt64(6,!0)}catch{const t=128&e.getUint8(13)?-1:1;let s=e.getUint32(6,!0),i=e.getUint32(10,!0);return-1===t&&(s=1+~s,i=1+~i),i>1048575&&console.warn("This platform does not support BigInt"),t*(s+i*2**32)}})(n),i[je]=n.getInt32(14,!0),i[Be]=n.getInt32(18,!0),i[Ae]=n.getInt32(22,!0);const a=r[26];i[V]=a+27,r=yield*e[Ye](i[V],s),i[xe]=0,i[Re]=[],i[Ne]=gt.from(r[ie](27,i[V]));for(let e=0,t=0;e{const t=Vs[pt](this._identificationHeader,e,this._headerCache);if(t){null===this._preSkipRemaining&&(this._preSkipRemaining=t[Y]);let s=t[Ue]*t[ve]/1e3*t[Ee];return this._preSkipRemaining>0&&(this._preSkipRemaining-=s,s=this._preSkipRemaining<0?-this._preSkipRemaining:0),new As(e,t,s)}this._codecParser[it]("Failed to parse Ogg Opus Header","Not a valid Ogg Opus file")})),e}}class Ws extends Lt{constructor(e,t,s){super(t,e,s)}}const Js={};for(let e=0;e<8;e++)Js[e+6]=2**(6+e);class Ks extends zt{static[pt](e,t,s,i){if(e[V]<30)throw new Error("Out of data while inside an Ogg Page");const r=It(e[ie](0,30)),n=t[at](r);if(n)return new Ks(n);const a={[V]:30};if("vorbis"!==r.substr(0,7))return null;a[U]=gt.from(e[ie](0,30));const h=new mt(a[U][w]);if(a[re]=h.getUint32(7,!0),0!==a[re])return null;if(a[ye]=e[11],a[Ce]=o[a[ye]-1]||"application defined",a[Ee]=h.getUint32(12,!0),a[b]=h.getInt32(16,!0),a[S]=h.getInt32(20,!0),a[y]=h.getInt32(24,!0),a[_e]=Js[(240&e[28])>>4],a[de]=Js[15&e[28]],a[de]>a[_e])return null;if(1!==e[29])return null;a[m]=32,a[oe]=i,a[ae]=s;{const{length:e,data:s,version:i,vorbisSetup:n,vorbisComments:o,...h}=a;t[ot](r,a,h)}return new Ks(a)}constructor(e){super(e),this[b]=e[b],this[y]=e[y],this[S]=e[S],this[de]=e[de],this[_e]=e[_e],this[U]=e[U],this[ae]=e[ae],this[oe]=e[oe]}}class Qs extends Rt{constructor(e,t,s){super(e,t),this.Frame=Ws,s(this[k]),this._identificationHeader=null,this._setupComplete=!1,this._prevBlockSize=null}get[k](){return ne}[lt](e){e[v]=[];for(const t of Nt.get(e)[se])if(1===t[0])this._headerCache[_t](),this._identificationHeader=e[U],this._setupComplete=!1;else if(3===t[0])this._vorbisComments=t;else if(5===t[0])this._vorbisSetup=t,this._mode=this._parseSetupHeader(t),this._setupComplete=!0;else if(this._setupComplete){const s=Ks[pt](this._identificationHeader,this._headerCache,this._vorbisComments,this._vorbisSetup);s?e[v].push(new Ws(t,s,this._getSamples(t,s))):this._codecParser[logError]("Failed to parse Ogg Vorbis Header","Not a valid Ogg Vorbis file")}return e}_getSamples(e,t){const s=this._mode.blockFlags[e[0]>>1&this._mode.mask]?t[_e]:t[de],i=null===this._prevBlockSize?0:(this._prevBlockSize+s)/4;return this._prevBlockSize=s,i}_parseSetupHeader(e){const t=new $t(e),s={count:0,blockFlags:[]};for(;1&~t.read(1););let i;for(;s.count<64&&t.position>0;){Mt(t.read(8));let e=0;for(;0===t.read(8)&&e++<3;);if(4!==e){1+((126&Mt(i))>>1)!==s.count&&this._codecParser[st]("vorbis derived mode count did not match actual mode count");break}i=t.read(7),s.blockFlags.unshift(1&i),t.position+=6,s.count++}return s.mask=(1<1&&e[Be]>1&&this._codecParser[st]("Unexpected gap in Ogg Page Sequence Number.",`Expected: ${this._pageSequenceNumber+1}, Got: ${e[Be]}`),this._pageSequenceNumber=e[Be]}_parsePage(e){null===this._isSupported&&(this._pageSequenceNumber=e[Be],this._isSupported=this._checkCodecSupport(e)),this._checkPageSequenceNumber(e);const t=Nt.get(e),s=At.get(t[N]);let i=0;if(t[se]=s[Re].map(t=>e[U][ie](i,i+=t)),this._continuedPacket[V]&&(t[se][0]=Ht(this._continuedPacket,t[se][0]),this._continuedPacket=new gt),255===s[Ne][s[Ne][V]-1]&&(this._continuedPacket=Ht(this._continuedPacket,t[se].pop())),null!==this._previousAbsoluteGranulePosition&&(e[Ge]=Number(e[f]-this._previousAbsoluteGranulePosition)),this._previousAbsoluteGranulePosition=e[f],this._isSupported){const t=this._parser[lt](e);return this._codecParser[tt](t),t}return e}}class Ys extends Rt{constructor(e,t,s){super(e,t),this._onCodec=s,this.Frame=Os,this.Header=$s,this._streams=new Map,this._currentSerialNumber=null}get[k](){const e=this._streams.get(this._currentSerialNumber);return e?e.codec:""}*[ct](){const e=yield*this[nt](!0);this._currentSerialNumber=e[je];let t=this._streams.get(this._currentSerialNumber);return t||(t=new Xs(this._codecParser,this._headerCache,this._onCodec),this._streams.set(this._currentSerialNumber,t)),e[E]&&this._streams.delete(this._currentSerialNumber),t._parsePage(e)}}const Zs=()=>{};class ei{constructor(e,{onCodec:t,onCodecHeader:s,onCodecUpdate:i,enableLogging:r=!1,enableFrameCRC32:n=!0}={}){this._inputMimeType=e,this._onCodec=t||Zs,this._onCodecHeader=s||Zs,this._onCodecUpdate=i,this._enableLogging=r,this._crc32=n?Ft:Zs,this[dt]()}get[k](){return this._parser?this._parser[k]:""}[dt](){this._headerCache=new Ot(this._onCodecHeader,this._onCodecUpdate),this._generator=this._getGenerator(),this._generator.next()}*flush(){this._flushing=!0;for(let e=this._generator.next();e.value;e=this._generator.next())yield e.value;this._flushing=!1,this[dt]()}*parseChunk(e){for(let t=this._generator.next(e);t.value;t=this._generator.next())yield t.value}parseAll(e){return[...this.parseChunk(e),...this.flush()]}*_getGenerator(){if(this._inputMimeType.match(/aac/))this._parser=new ws(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/mpeg/))this._parser=new _s(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/flac/))this._parser=new Ms(this,this._headerCache,this._onCodec);else{if(!this._inputMimeType.match(/ogg/))throw new Error(`Unsupported Codec ${mimeType}`);this._parser=new Ys(this,this._headerCache,this._onCodec)}for(this._frameNumber=0,this._currentReadPosition=0,this._totalBytesIn=0,this._totalBytesOut=0,this._totalSamples=0,this._sampleRate=void 0,this._rawData=new Uint8Array(0);;){const e=yield*this._parser[ct]();e&&(yield e)}}*[Ye](e=0,t=0){let s;for(;this._rawData[V]<=e+t;){if(s=yield,this._flushing)return this._rawData[ie](t);s&&(this._totalBytesIn+=s[V],this._rawData=Ht(this._rawData,s))}return this._rawData[ie](t)}[Ze](e){this._currentReadPosition+=e,this._rawData=this._rawData[ie](e)}[et](e){this._sampleRate=e[N][Ee],e[N][C]=e[$]>0?8*Math.round(e[U][V]/e[$]):0,e[He]=this._frameNumber++,e[Ke]=this._totalBytesOut,e[Xe]=this._totalSamples,e[Qe]=this._totalSamples/this._sampleRate*1e3,e[I]=this._crc32(e[U]),this._headerCache[ut](e[N][C],e[Qe]),this._totalBytesOut+=e[U][V],this._totalSamples+=e[Ge]}[tt](e){if(e[v]){if(e[E]){let t=e[Ge];e[v].forEach(e=>{const s=e[Ge];t0?t:0,e[$]=e[Ge]/e[N][Ee]*1e3),t-=s,this[et](e)})}else e[Ge]=0,e[v].forEach(t=>{e[Ge]+=t[Ge],this[et](t)});e[$]=e[Ge]/this._sampleRate*1e3||0,e[Xe]=this._totalSamples,e[Qe]=this._totalSamples/this._sampleRate*1e3||0,e[Ke]=this._totalBytesOut}else this[et](e)}_log(e,t){if(this._enableLogging){const s=[`${k}: ${this[k]}`,`inputMimeType: ${this._inputMimeType}`,`readPosition: ${this._currentReadPosition}`,`totalBytesIn: ${this._totalBytesIn}`,`${Ke}: ${this._totalBytesOut}`],i=Math.max(...s.map(e=>e[V]));t.push(`--stats--${"-".repeat(i-9)}`,...s,"-".repeat(i)),e("codec-parser",t.reduce((e,t)=>e+"\n "+t,""))}}[st](...e){this._log(console.warn,e)}[it](...e){this._log(console.error,e)}}const ti=f,si=v,ii=x,ri=U,ni=N,ai=E,oi=Y,hi=ae,ci=oe,li=me,ui=ye,di=ze,_i=Xe;export{ei as C,ci as a,ui as b,si as c,ri as d,ii as e,li as f,ti as g,ni as h,ai as i,oi as p,di as s,_i as t,hi as v}; +//# sourceMappingURL=index-95487546.js.map diff --git a/dist/index-95487546.js.map b/dist/index-95487546.js.map new file mode 100644 index 00000000..251785fb --- /dev/null +++ b/dist/index-95487546.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-95487546.js","sources":["../node_modules/codec-parser/src/constants.js","../node_modules/codec-parser/src/utilities.js","../node_modules/codec-parser/src/codecs/HeaderCache.js","../node_modules/codec-parser/src/globals.js","../node_modules/codec-parser/src/codecs/Parser.js","../node_modules/codec-parser/src/containers/Frame.js","../node_modules/codec-parser/src/codecs/CodecFrame.js","../node_modules/codec-parser/src/metadata/ID3v2.js","../node_modules/codec-parser/src/codecs/CodecHeader.js","../node_modules/codec-parser/src/codecs/mpeg/MPEGHeader.js","../node_modules/codec-parser/src/codecs/mpeg/MPEGFrame.js","../node_modules/codec-parser/src/codecs/mpeg/MPEGParser.js","../node_modules/codec-parser/src/codecs/aac/AACHeader.js","../node_modules/codec-parser/src/codecs/aac/AACFrame.js","../node_modules/codec-parser/src/codecs/aac/AACParser.js","../node_modules/codec-parser/src/codecs/flac/FLACFrame.js","../node_modules/codec-parser/src/codecs/flac/FLACHeader.js","../node_modules/codec-parser/src/codecs/flac/FLACParser.js","../node_modules/codec-parser/src/containers/ogg/OggPageHeader.js","../node_modules/codec-parser/src/containers/ogg/OggPage.js","../node_modules/codec-parser/src/codecs/opus/OpusFrame.js","../node_modules/codec-parser/src/codecs/opus/OpusHeader.js","../node_modules/codec-parser/src/codecs/opus/OpusParser.js","../node_modules/codec-parser/src/codecs/vorbis/VorbisFrame.js","../node_modules/codec-parser/src/codecs/vorbis/VorbisHeader.js","../node_modules/codec-parser/src/codecs/vorbis/VorbisParser.js","../node_modules/codec-parser/src/containers/ogg/OggParser.js","../node_modules/codec-parser/src/CodecParser.js","../node_modules/codec-parser/index.js"],"sourcesContent":["const symbol = Symbol;\n\n// prettier-ignore\n/*\n[\n [\n \"left, right\",\n \"left, right, center\",\n \"left, center, right\",\n \"center, left, right\",\n \"center\"\n ],\n [\n \"front left, front right\",\n \"front left, front right, front center\",\n \"front left, front center, front right\",\n \"front center, front left, front right\",\n \"front center\"\n ],\n [\n \"side left, side right\",\n \"side left, side right, side center\",\n \"side left, side center, side right\",\n \"side center, side left, side right\",\n \"side center\"\n ],\n [\n \"rear left, rear right\",\n \"rear left, rear right, rear center\",\n \"rear left, rear center, rear right\",\n \"rear center, rear left, rear right\",\n \"rear center\"\n ]\n]\n*/\n\nconst mappingJoin = \", \";\n\nexport const channelMappings = (() => {\n const front = \"front\";\n const side = \"side\";\n const rear = \"rear\";\n const left = \"left\";\n const center = \"center\";\n const right = \"right\";\n\n return [\"\", front + \" \", side + \" \", rear + \" \"].map((x) =>\n [\n [left, right],\n [left, right, center],\n [left, center, right],\n [center, left, right],\n [center],\n ].flatMap((y) => y.map((z) => x + z).join(mappingJoin)),\n );\n})();\n\nexport const lfe = \"LFE\";\nexport const monophonic = \"monophonic (mono)\";\nexport const stereo = \"stereo\";\nconst surround = \"surround\";\n\nexport const getChannelMapping = (channelCount, ...mappings) =>\n `${\n [\n monophonic,\n stereo,\n `linear ${surround}`,\n \"quadraphonic\",\n `5.0 ${surround}`,\n `5.1 ${surround}`,\n `6.1 ${surround}`,\n `7.1 ${surround}`,\n ][channelCount - 1]\n } (${mappings.join(mappingJoin)})`;\n\n// prettier-ignore\nexport const vorbisOpusChannelMapping = [\n monophonic,\n getChannelMapping(2,channelMappings[0][0]),\n getChannelMapping(3,channelMappings[0][2]),\n getChannelMapping(4,channelMappings[1][0],channelMappings[3][0]),\n getChannelMapping(5,channelMappings[1][2],channelMappings[3][0]),\n getChannelMapping(6,channelMappings[1][2],channelMappings[3][0],lfe),\n getChannelMapping(7,channelMappings[1][2],channelMappings[2][0],channelMappings[3][4],lfe),\n getChannelMapping(8,channelMappings[1][2],channelMappings[2][0],channelMappings[3][0],lfe),\n]\n\n// sampleRates\nexport const rate192000 = 192000;\nexport const rate176400 = 176400;\nexport const rate96000 = 96000;\nexport const rate88200 = 88200;\nexport const rate64000 = 64000;\nexport const rate48000 = 48000;\nexport const rate44100 = 44100;\nexport const rate32000 = 32000;\nexport const rate24000 = 24000;\nexport const rate22050 = 22050;\nexport const rate16000 = 16000;\nexport const rate12000 = 12000;\nexport const rate11025 = 11025;\nexport const rate8000 = 8000;\nexport const rate7350 = 7350;\n\n// header key constants\nexport const absoluteGranulePosition = \"absoluteGranulePosition\";\nexport const bandwidth = \"bandwidth\";\nexport const bitDepth = \"bitDepth\";\nexport const bitrate = \"bitrate\";\nexport const bitrateMaximum = bitrate + \"Maximum\";\nexport const bitrateMinimum = bitrate + \"Minimum\";\nexport const bitrateNominal = bitrate + \"Nominal\";\nexport const buffer = \"buffer\";\nexport const bufferFullness = buffer + \"Fullness\";\nexport const codec = \"codec\";\nexport const codecFrames = codec + \"Frames\";\nexport const coupledStreamCount = \"coupledStreamCount\";\nexport const crc = \"crc\";\nexport const crc16 = crc + \"16\";\nexport const crc32 = crc + \"32\";\nexport const data = \"data\";\nexport const description = \"description\";\nexport const duration = \"duration\";\nexport const emphasis = \"emphasis\";\nexport const hasOpusPadding = \"hasOpusPadding\";\nexport const header = \"header\";\nexport const isContinuedPacket = \"isContinuedPacket\";\nexport const isCopyrighted = \"isCopyrighted\";\nexport const isFirstPage = \"isFirstPage\";\nexport const isHome = \"isHome\";\nexport const isLastPage = \"isLastPage\";\nexport const isOriginal = \"isOriginal\";\nexport const isPrivate = \"isPrivate\";\nexport const isVbr = \"isVbr\";\nexport const layer = \"layer\";\nexport const length = \"length\";\nexport const mode = \"mode\";\nexport const modeExtension = mode + \"Extension\";\nexport const mpeg = \"mpeg\";\nexport const mpegVersion = mpeg + \"Version\";\nexport const numberAACFrames = \"numberAAC\" + \"Frames\";\nexport const outputGain = \"outputGain\";\nexport const preSkip = \"preSkip\";\nexport const profile = \"profile\";\nexport const profileBits = symbol();\nexport const protection = \"protection\";\nexport const rawData = \"rawData\";\nexport const segments = \"segments\";\nexport const subarray = \"subarray\";\nexport const version = \"version\";\nexport const vorbis = \"vorbis\";\nexport const vorbisComments = vorbis + \"Comments\";\nexport const vorbisSetup = vorbis + \"Setup\";\n\nconst block = \"block\";\nexport const blockingStrategy = block + \"ingStrategy\";\nexport const blockingStrategyBits = symbol();\nexport const blockSize = block + \"Size\";\nexport const blocksize0 = block + \"size0\";\nexport const blocksize1 = block + \"size1\";\nexport const blockSizeBits = symbol();\n\nconst channel = \"channel\";\nexport const channelMappingFamily = channel + \"MappingFamily\";\nexport const channelMappingTable = channel + \"MappingTable\";\nexport const channelMode = channel + \"Mode\";\nexport const channelModeBits = symbol();\nexport const channels = channel + \"s\";\n\nconst copyright = \"copyright\";\nexport const copyrightId = copyright + \"Id\";\nexport const copyrightIdStart = copyright + \"IdStart\";\n\nexport const frame = \"frame\";\nexport const frameCount = frame + \"Count\";\nexport const frameLength = frame + \"Length\";\n\nconst Number = \"Number\";\nexport const frameNumber = frame + Number;\nexport const framePadding = frame + \"Padding\";\nexport const frameSize = frame + \"Size\";\n\nconst Rate = \"Rate\";\nexport const inputSampleRate = \"inputSample\" + Rate;\n\nconst page = \"page\";\nexport const pageChecksum = page + \"Checksum\";\nexport const pageSegmentBytes = symbol();\nexport const pageSegmentTable = page + \"SegmentTable\";\nexport const pageSequenceNumber = page + \"Sequence\" + Number;\n\nconst sample = \"sample\";\nexport const sampleNumber = sample + Number;\nexport const sampleRate = sample + Rate;\nexport const sampleRateBits = symbol();\nexport const samples = sample + \"s\";\n\nconst stream = \"stream\";\nexport const streamCount = stream + \"Count\";\nexport const streamInfo = stream + \"Info\";\nexport const streamSerialNumber = stream + \"Serial\" + Number;\nexport const streamStructureVersion = stream + \"StructureVersion\";\n\nconst total = \"total\";\nexport const totalBytesOut = total + \"BytesOut\";\nexport const totalDuration = total + \"Duration\";\nexport const totalSamples = total + \"Samples\";\n\n// private methods\nexport const readRawData = symbol();\nexport const incrementRawData = symbol();\nexport const mapCodecFrameStats = symbol();\nexport const mapFrameStats = symbol();\nexport const logWarning = symbol();\nexport const logError = symbol();\nexport const syncFrame = symbol();\nexport const fixedLengthFrameSync = symbol();\nexport const getHeader = symbol();\nexport const setHeader = symbol();\nexport const getFrame = symbol();\nexport const parseFrame = symbol();\nexport const parseOggPage = symbol();\nexport const checkCodecUpdate = symbol();\nexport const reset = symbol();\nexport const enable = symbol();\nexport const getHeaderFromUint8Array = symbol();\nexport const checkFrameFooterCrc16 = symbol();\n\nexport const uint8Array = Uint8Array;\nexport const dataView = DataView;\n\nexport const reserved = \"reserved\";\nexport const bad = \"bad\";\nexport const free = \"free\";\nexport const none = \"none\";\nexport const sixteenBitCRC = \"16bit CRC\";\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { length, uint8Array } from \"./constants.js\";\n\nconst getCrcTable = (crcTable, crcInitialValueFunction, crcFunction) => {\n for (let byte = 0; byte < crcTable[length]; byte++) {\n let crc = crcInitialValueFunction(byte);\n\n for (let bit = 8; bit > 0; bit--) crc = crcFunction(crc);\n\n crcTable[byte] = crc;\n }\n return crcTable;\n};\n\nconst crc8Table = getCrcTable(\n new uint8Array(256),\n (b) => b,\n (crc) => (crc & 0x80 ? 0x07 ^ (crc << 1) : crc << 1),\n);\n\nconst flacCrc16Table = [\n getCrcTable(\n new Uint16Array(256),\n (b) => b << 8,\n (crc) => (crc << 1) ^ (crc & (1 << 15) ? 0x8005 : 0),\n ),\n];\n\nconst crc32Table = [\n getCrcTable(\n new Uint32Array(256),\n (b) => b,\n (crc) => (crc >>> 1) ^ ((crc & 1) * 0xedb88320),\n ),\n];\n\n// build crc tables\nfor (let i = 0; i < 15; i++) {\n flacCrc16Table.push(new Uint16Array(256));\n crc32Table.push(new Uint32Array(256));\n\n for (let j = 0; j <= 0xff; j++) {\n flacCrc16Table[i + 1][j] =\n flacCrc16Table[0][flacCrc16Table[i][j] >>> 8] ^\n (flacCrc16Table[i][j] << 8);\n\n crc32Table[i + 1][j] =\n (crc32Table[i][j] >>> 8) ^ crc32Table[0][crc32Table[i][j] & 0xff];\n }\n}\n\nconst crc8 = (data) => {\n let crc = 0;\n const dataLength = data[length];\n\n for (let i = 0; i !== dataLength; i++) crc = crc8Table[crc ^ data[i]];\n\n return crc;\n};\n\nconst flacCrc16 = (data) => {\n const dataLength = data[length];\n const crcChunkSize = dataLength - 16;\n let crc = 0;\n let i = 0;\n\n while (i <= crcChunkSize) {\n crc ^= (data[i++] << 8) | data[i++];\n crc =\n flacCrc16Table[15][crc >> 8] ^\n flacCrc16Table[14][crc & 0xff] ^\n flacCrc16Table[13][data[i++]] ^\n flacCrc16Table[12][data[i++]] ^\n flacCrc16Table[11][data[i++]] ^\n flacCrc16Table[10][data[i++]] ^\n flacCrc16Table[9][data[i++]] ^\n flacCrc16Table[8][data[i++]] ^\n flacCrc16Table[7][data[i++]] ^\n flacCrc16Table[6][data[i++]] ^\n flacCrc16Table[5][data[i++]] ^\n flacCrc16Table[4][data[i++]] ^\n flacCrc16Table[3][data[i++]] ^\n flacCrc16Table[2][data[i++]] ^\n flacCrc16Table[1][data[i++]] ^\n flacCrc16Table[0][data[i++]];\n }\n\n while (i !== dataLength)\n crc = ((crc & 0xff) << 8) ^ flacCrc16Table[0][(crc >> 8) ^ data[i++]];\n\n return crc;\n};\n\nconst crc32Function = (data) => {\n const dataLength = data[length];\n const crcChunkSize = dataLength - 16;\n let crc = 0;\n let i = 0;\n\n while (i <= crcChunkSize)\n crc =\n crc32Table[15][(data[i++] ^ crc) & 0xff] ^\n crc32Table[14][(data[i++] ^ (crc >>> 8)) & 0xff] ^\n crc32Table[13][(data[i++] ^ (crc >>> 16)) & 0xff] ^\n crc32Table[12][data[i++] ^ (crc >>> 24)] ^\n crc32Table[11][data[i++]] ^\n crc32Table[10][data[i++]] ^\n crc32Table[9][data[i++]] ^\n crc32Table[8][data[i++]] ^\n crc32Table[7][data[i++]] ^\n crc32Table[6][data[i++]] ^\n crc32Table[5][data[i++]] ^\n crc32Table[4][data[i++]] ^\n crc32Table[3][data[i++]] ^\n crc32Table[2][data[i++]] ^\n crc32Table[1][data[i++]] ^\n crc32Table[0][data[i++]];\n\n while (i !== dataLength)\n crc = crc32Table[0][(crc ^ data[i++]) & 0xff] ^ (crc >>> 8);\n\n return crc ^ -1;\n};\n\nconst concatBuffers = (...buffers) => {\n const buffer = new uint8Array(\n buffers.reduce((acc, buf) => acc + buf[length], 0),\n );\n\n buffers.reduce((offset, buf) => {\n buffer.set(buf, offset);\n return offset + buf[length];\n }, 0);\n\n return buffer;\n};\n\nconst bytesToString = (bytes) => String.fromCharCode(...bytes);\n\n// prettier-ignore\nconst reverseTable = [0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf];\nconst reverse = (val) =>\n (reverseTable[val & 0b1111] << 4) | reverseTable[val >> 4];\n\nclass BitReader {\n constructor(data) {\n this._data = data;\n this._pos = data[length] * 8;\n }\n\n set position(position) {\n this._pos = position;\n }\n\n get position() {\n return this._pos;\n }\n\n read(bits) {\n const byte = Math.floor(this._pos / 8);\n const bit = this._pos % 8;\n this._pos -= bits;\n\n const window =\n (reverse(this._data[byte - 1]) << 8) + reverse(this._data[byte]);\n\n return (window >> (7 - bit)) & 0xff;\n }\n}\n\n/**\n * @todo Old versions of Safari do not support BigInt\n */\nconst readInt64le = (view, offset) => {\n try {\n return view.getBigInt64(offset, true);\n } catch {\n const sign = view.getUint8(offset + 7) & 0x80 ? -1 : 1;\n let firstPart = view.getUint32(offset, true);\n let secondPart = view.getUint32(offset + 4, true);\n\n if (sign === -1) {\n firstPart = ~firstPart + 1;\n secondPart = ~secondPart + 1;\n }\n\n if (secondPart > 0x000fffff) {\n console.warn(\"This platform does not support BigInt\");\n }\n\n return sign * (firstPart + secondPart * 2 ** 32);\n }\n};\n\nexport {\n crc8,\n flacCrc16,\n crc32Function,\n reverse,\n concatBuffers,\n bytesToString,\n readInt64le,\n BitReader,\n};\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport {\n getHeader,\n setHeader,\n checkCodecUpdate,\n reset,\n enable,\n} from \"../constants.js\";\n\nexport default class HeaderCache {\n constructor(onCodecHeader, onCodecUpdate) {\n this._onCodecHeader = onCodecHeader;\n this._onCodecUpdate = onCodecUpdate;\n this[reset]();\n }\n\n [enable]() {\n this._isEnabled = true;\n }\n\n [reset]() {\n this._headerCache = new Map();\n this._codecUpdateData = new WeakMap();\n this._codecHeaderSent = false;\n this._codecShouldUpdate = false;\n this._bitrate = null;\n this._isEnabled = false;\n }\n\n [checkCodecUpdate](bitrate, totalDuration) {\n if (this._onCodecUpdate) {\n if (this._bitrate !== bitrate) {\n this._bitrate = bitrate;\n this._codecShouldUpdate = true;\n }\n\n // only update if codec data is available\n const codecData = this._codecUpdateData.get(\n this._headerCache.get(this._currentHeader),\n );\n\n if (this._codecShouldUpdate && codecData) {\n this._onCodecUpdate(\n {\n bitrate,\n ...codecData,\n },\n totalDuration,\n );\n }\n\n this._codecShouldUpdate = false;\n }\n }\n\n [getHeader](key) {\n const header = this._headerCache.get(key);\n\n if (header) {\n this._updateCurrentHeader(key);\n }\n\n return header;\n }\n\n [setHeader](key, header, codecUpdateFields) {\n if (this._isEnabled) {\n if (!this._codecHeaderSent) {\n this._onCodecHeader({ ...header });\n this._codecHeaderSent = true;\n }\n this._updateCurrentHeader(key);\n\n this._headerCache.set(key, header);\n this._codecUpdateData.set(header, codecUpdateFields);\n }\n }\n\n _updateCurrentHeader(key) {\n if (this._onCodecUpdate && key !== this._currentHeader) {\n this._codecShouldUpdate = true;\n this._currentHeader = key;\n }\n }\n}\n","export const headerStore = new WeakMap();\nexport const frameStore = new WeakMap();\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { frameStore } from \"../globals.js\";\nimport {\n frame,\n length,\n incrementRawData,\n mapFrameStats,\n logWarning,\n syncFrame,\n fixedLengthFrameSync,\n getFrame,\n getHeader,\n reset,\n enable,\n} from \"../constants.js\";\n\n/**\n * @abstract\n * @description Abstract class containing methods for parsing codec frames\n */\nexport default class Parser {\n constructor(codecParser, headerCache) {\n this._codecParser = codecParser;\n this._headerCache = headerCache;\n }\n\n *[syncFrame]() {\n let frameData;\n\n do {\n frameData = yield* this.Frame[getFrame](\n this._codecParser,\n this._headerCache,\n 0,\n );\n if (frameData) return frameData;\n this._codecParser[incrementRawData](1); // increment to continue syncing\n } while (true);\n }\n\n /**\n * @description Searches for Frames within bytes containing a sequence of known codec frames.\n * @param {boolean} ignoreNextFrame Set to true to return frames even if the next frame may not exist at the expected location\n * @returns {Frame}\n */\n *[fixedLengthFrameSync](ignoreNextFrame) {\n let frameData = yield* this[syncFrame]();\n const frameLength = frameStore.get(frameData)[length];\n\n if (\n ignoreNextFrame ||\n this._codecParser._flushing ||\n // check if there is a frame right after this one\n (yield* this.Header[getHeader](\n this._codecParser,\n this._headerCache,\n frameLength,\n ))\n ) {\n this._headerCache[enable](); // start caching when synced\n\n this._codecParser[incrementRawData](frameLength); // increment to the next frame\n this._codecParser[mapFrameStats](frameData);\n return frameData;\n }\n\n this._codecParser[logWarning](\n `Missing ${frame} at ${frameLength} bytes from current position.`,\n `Dropping current ${frame} and trying again.`,\n );\n this._headerCache[reset](); // frame is invalid and must re-sync and clear cache\n this._codecParser[incrementRawData](1); // increment to invalidate the current frame\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { frameStore } from \"../globals.js\";\nimport { data, header } from \"../constants.js\";\n\n/**\n * @abstract\n */\nexport default class Frame {\n constructor(headerValue, dataValue) {\n frameStore.set(this, { [header]: headerValue });\n\n this[data] = dataValue;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { frameStore, headerStore } from \"../globals.js\";\nimport {\n sampleRate,\n length,\n frameNumber,\n header,\n samples,\n duration,\n totalBytesOut,\n totalSamples,\n totalDuration,\n frameLength,\n subarray,\n readRawData,\n getFrame,\n getHeader,\n} from \"../constants.js\";\nimport Frame from \"../containers/Frame.js\";\n\nexport default class CodecFrame extends Frame {\n static *[getFrame](Header, Frame, codecParser, headerCache, readOffset) {\n const headerValue = yield* Header[getHeader](\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (headerValue) {\n const frameLengthValue = headerStore.get(headerValue)[frameLength];\n const samplesValue = headerStore.get(headerValue)[samples];\n\n const frame = (yield* codecParser[readRawData](\n frameLengthValue,\n readOffset,\n ))[subarray](0, frameLengthValue);\n\n return new Frame(headerValue, frame, samplesValue);\n } else {\n return null;\n }\n }\n\n constructor(headerValue, dataValue, samplesValue) {\n super(headerValue, dataValue);\n\n this[header] = headerValue;\n this[samples] = samplesValue;\n this[duration] = (samplesValue / headerValue[sampleRate]) * 1000;\n this[frameNumber] = null;\n this[totalBytesOut] = null;\n this[totalSamples] = null;\n this[totalDuration] = null;\n\n frameStore.get(this)[length] = dataValue[length];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\n// https://id3.org/Developer%20Information\n\nimport { length, version, readRawData } from \"../constants.js\";\n\nconst unsynchronizationFlag = \"unsynchronizationFlag\";\nconst extendedHeaderFlag = \"extendedHeaderFlag\";\nconst experimentalFlag = \"experimentalFlag\";\nconst footerPresent = \"footerPresent\";\n\nexport default class ID3v2 {\n static *getID3v2Header(codecParser, headerCache, readOffset) {\n const headerLength = 10;\n const header = {};\n\n let data = yield* codecParser[readRawData](3, readOffset);\n // Byte (0-2 of 9)\n // ID3\n if (data[0] !== 0x49 || data[1] !== 0x44 || data[2] !== 0x33) return null;\n\n data = yield* codecParser[readRawData](headerLength, readOffset);\n\n // Byte (3-4 of 9)\n // * `BBBBBBBB|........`: Major version\n // * `........|BBBBBBBB`: Minor version\n header[version] = `id3v2.${data[3]}.${data[4]}`;\n\n // Byte (5 of 9)\n // * `....0000.: Zeros (flags not implemented yet)\n if (data[5] & 0b00001111) return null;\n\n // Byte (5 of 9)\n // * `CDEF0000`: Flags\n // * `C.......`: Unsynchronisation (indicates whether or not unsynchronisation is used)\n // * `.D......`: Extended header (indicates whether or not the header is followed by an extended header)\n // * `..E.....`: Experimental indicator (indicates whether or not the tag is in an experimental stage)\n // * `...F....`: Footer present (indicates that a footer is present at the very end of the tag)\n header[unsynchronizationFlag] = !!(data[5] & 0b10000000);\n header[extendedHeaderFlag] = !!(data[5] & 0b01000000);\n header[experimentalFlag] = !!(data[5] & 0b00100000);\n header[footerPresent] = !!(data[5] & 0b00010000);\n\n // Byte (6-9 of 9)\n // * `0.......|0.......|0.......|0.......`: Zeros\n if (\n data[6] & 0b10000000 ||\n data[7] & 0b10000000 ||\n data[8] & 0b10000000 ||\n data[9] & 0b10000000\n )\n return null;\n\n // Byte (6-9 of 9)\n // * `.FFFFFFF|.FFFFFFF|.FFFFFFF|.FFFFFFF`: Tag Length\n // The ID3v2 tag size is encoded with four bytes where the most significant bit (bit 7)\n // is set to zero in every byte, making a total of 28 bits. The zeroed bits are ignored,\n // so a 257 bytes long tag is represented as $00 00 02 01.\n const dataLength =\n (data[6] << 21) | (data[7] << 14) | (data[8] << 7) | data[9];\n\n header[length] = headerLength + dataLength;\n\n return new ID3v2(header);\n }\n\n constructor(header) {\n this[version] = header[version];\n this[unsynchronizationFlag] = header[unsynchronizationFlag];\n this[extendedHeaderFlag] = header[extendedHeaderFlag];\n this[experimentalFlag] = header[experimentalFlag];\n this[footerPresent] = header[footerPresent];\n this[length] = header[length];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { headerStore } from \"../globals.js\";\nimport {\n bitDepth,\n channelMode,\n sampleRate,\n bitrate,\n channels,\n} from \"../constants.js\";\n\nexport default class CodecHeader {\n /**\n * @private\n */\n constructor(header) {\n headerStore.set(this, header);\n\n this[bitDepth] = header[bitDepth];\n this[bitrate] = null; // set during frame mapping\n this[channels] = header[channels];\n this[channelMode] = header[channelMode];\n this[sampleRate] = header[sampleRate];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport {\n reserved,\n bad,\n free,\n none,\n sixteenBitCRC,\n rate44100,\n rate48000,\n rate32000,\n rate22050,\n rate24000,\n rate16000,\n rate11025,\n rate12000,\n rate8000,\n monophonic,\n stereo,\n bitDepth,\n channelMode,\n sampleRate,\n bitrate,\n channels,\n isOriginal,\n isPrivate,\n layer,\n length,\n mpegVersion,\n frameLength,\n protection,\n emphasis,\n framePadding,\n isCopyrighted,\n modeExtension,\n description,\n samples,\n subarray,\n readRawData,\n incrementRawData,\n getHeader,\n setHeader,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport ID3v2 from \"../../metadata/ID3v2.js\";\nimport CodecHeader from \"../CodecHeader.js\";\n\n// http://www.mp3-tech.org/programmer/frame_header.html\n\nconst bitrateMatrix = {\n // bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 & L3\n 0b00000000: [free, free, free, free, free],\n 0b00010000: [32, 32, 32, 32, 8],\n // 0b00100000: [64, 48, 40, 48, 16,],\n // 0b00110000: [96, 56, 48, 56, 24,],\n // 0b01000000: [128, 64, 56, 64, 32,],\n // 0b01010000: [160, 80, 64, 80, 40,],\n // 0b01100000: [192, 96, 80, 96, 48,],\n // 0b01110000: [224, 112, 96, 112, 56,],\n // 0b10000000: [256, 128, 112, 128, 64,],\n // 0b10010000: [288, 160, 128, 144, 80,],\n // 0b10100000: [320, 192, 160, 160, 96,],\n // 0b10110000: [352, 224, 192, 176, 112,],\n // 0b11000000: [384, 256, 224, 192, 128,],\n // 0b11010000: [416, 320, 256, 224, 144,],\n // 0b11100000: [448, 384, 320, 256, 160,],\n 0b11110000: [bad, bad, bad, bad, bad],\n};\n\nconst calcBitrate = (idx, interval, intervalOffset) =>\n 8 *\n (((idx + intervalOffset) % interval) + interval) *\n (1 << ((idx + intervalOffset) / interval)) -\n 8 * interval * ((interval / 8) | 0);\n\n// generate bitrate matrix\nfor (let i = 2; i < 15; i++)\n bitrateMatrix[i << 4] = [\n i * 32, // V1,L1\n calcBitrate(i, 4, 0), // V1,L2\n calcBitrate(i, 4, -1), // V1,L3\n calcBitrate(i, 8, 4), // V2,L1\n calcBitrate(i, 8, 0), // V2,L2 & L3\n ];\n\nconst v1Layer1 = 0;\nconst v1Layer2 = 1;\nconst v1Layer3 = 2;\nconst v2Layer1 = 3;\nconst v2Layer23 = 4;\n\nconst bands = \"bands \";\nconst to31 = \" to 31\";\nconst layer12ModeExtensions = {\n 0b00000000: bands + 4 + to31,\n 0b00010000: bands + 8 + to31,\n 0b00100000: bands + 12 + to31,\n 0b00110000: bands + 16 + to31,\n};\n\nconst bitrateIndex = \"bitrateIndex\";\nconst v2 = \"v2\";\nconst v1 = \"v1\";\n\nconst intensityStereo = \"Intensity stereo \";\nconst msStereo = \", MS stereo \";\nconst on = \"on\";\nconst off = \"off\";\nconst layer3ModeExtensions = {\n 0b00000000: intensityStereo + off + msStereo + off,\n 0b00010000: intensityStereo + on + msStereo + off,\n 0b00100000: intensityStereo + off + msStereo + on,\n 0b00110000: intensityStereo + on + msStereo + on,\n};\n\nconst layersValues = {\n 0b00000000: { [description]: reserved },\n 0b00000010: {\n [description]: \"Layer III\",\n [framePadding]: 1,\n [modeExtension]: layer3ModeExtensions,\n [v1]: {\n [bitrateIndex]: v1Layer3,\n [samples]: 1152,\n },\n [v2]: {\n [bitrateIndex]: v2Layer23,\n [samples]: 576,\n },\n },\n 0b00000100: {\n [description]: \"Layer II\",\n [framePadding]: 1,\n [modeExtension]: layer12ModeExtensions,\n [samples]: 1152,\n [v1]: {\n [bitrateIndex]: v1Layer2,\n },\n [v2]: {\n [bitrateIndex]: v2Layer23,\n },\n },\n 0b00000110: {\n [description]: \"Layer I\",\n [framePadding]: 4,\n [modeExtension]: layer12ModeExtensions,\n [samples]: 384,\n [v1]: {\n [bitrateIndex]: v1Layer1,\n },\n [v2]: {\n [bitrateIndex]: v2Layer1,\n },\n },\n};\n\nconst mpegVersionDescription = \"MPEG Version \";\nconst isoIec = \"ISO/IEC \";\nconst mpegVersions = {\n 0b00000000: {\n [description]: `${mpegVersionDescription}2.5 (later extension of MPEG 2)`,\n [layer]: v2,\n [sampleRate]: {\n 0b00000000: rate11025,\n 0b00000100: rate12000,\n 0b00001000: rate8000,\n 0b00001100: reserved,\n },\n },\n 0b00001000: { [description]: reserved },\n 0b00010000: {\n [description]: `${mpegVersionDescription}2 (${isoIec}13818-3)`,\n [layer]: v2,\n [sampleRate]: {\n 0b00000000: rate22050,\n 0b00000100: rate24000,\n 0b00001000: rate16000,\n 0b00001100: reserved,\n },\n },\n 0b00011000: {\n [description]: `${mpegVersionDescription}1 (${isoIec}11172-3)`,\n [layer]: v1,\n [sampleRate]: {\n 0b00000000: rate44100,\n 0b00000100: rate48000,\n 0b00001000: rate32000,\n 0b00001100: reserved,\n },\n },\n length,\n};\n\nconst protectionValues = {\n 0b00000000: sixteenBitCRC,\n 0b00000001: none,\n};\n\nconst emphasisValues = {\n 0b00000000: none,\n 0b00000001: \"50/15 ms\",\n 0b00000010: reserved,\n 0b00000011: \"CCIT J.17\",\n};\n\nconst channelModes = {\n 0b00000000: { [channels]: 2, [description]: stereo },\n 0b01000000: { [channels]: 2, [description]: \"joint \" + stereo },\n 0b10000000: { [channels]: 2, [description]: \"dual channel\" },\n 0b11000000: { [channels]: 1, [description]: monophonic },\n};\n\nexport default class MPEGHeader extends CodecHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // check for id3 header\n const id3v2Header = yield* ID3v2.getID3v2Header(\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (id3v2Header) {\n // throw away the data. id3 parsing is not implemented yet.\n yield* codecParser[readRawData](id3v2Header[length], readOffset);\n codecParser[incrementRawData](id3v2Header[length]);\n }\n\n // Must be at least four bytes.\n const data = yield* codecParser[readRawData](4, readOffset);\n\n // Check header cache\n const key = bytesToString(data[subarray](0, 4));\n const cachedHeader = headerCache[getHeader](key);\n if (cachedHeader) return new MPEGHeader(cachedHeader);\n\n // Frame sync (all bits must be set): `11111111|111`:\n if (data[0] !== 0xff || data[1] < 0xe0) return null;\n\n // Byte (2 of 4)\n // * `111BBCCD`\n // * `...BB...`: MPEG Audio version ID\n // * `.....CC.`: Layer description\n // * `.......D`: Protection bit (0 - Protected by CRC (16bit CRC follows header), 1 = Not protected)\n\n // Mpeg version (1, 2, 2.5)\n const mpegVersionValues = mpegVersions[data[1] & 0b00011000];\n if (mpegVersionValues[description] === reserved) return null;\n\n // Layer (I, II, III)\n const layerBits = data[1] & 0b00000110;\n if (layersValues[layerBits][description] === reserved) return null;\n const layerValues = {\n ...layersValues[layerBits],\n ...layersValues[layerBits][mpegVersionValues[layer]],\n };\n\n header[mpegVersion] = mpegVersionValues[description];\n header[layer] = layerValues[description];\n header[samples] = layerValues[samples];\n header[protection] = protectionValues[data[1] & 0b00000001];\n\n header[length] = 4;\n\n // Byte (3 of 4)\n // * `EEEEFFGH`\n // * `EEEE....`: Bitrate index. 1111 is invalid, everything else is accepted\n // * `....FF..`: Sample rate\n // * `......G.`: Padding bit, 0=frame not padded, 1=frame padded\n // * `.......H`: Private bit.\n header[bitrate] =\n bitrateMatrix[data[2] & 0b11110000][layerValues[bitrateIndex]];\n if (header[bitrate] === bad) return null;\n\n header[sampleRate] = mpegVersionValues[sampleRate][data[2] & 0b00001100];\n if (header[sampleRate] === reserved) return null;\n\n header[framePadding] = data[2] & 0b00000010 && layerValues[framePadding];\n header[isPrivate] = !!(data[2] & 0b00000001);\n\n header[frameLength] = Math.floor(\n (125 * header[bitrate] * header[samples]) / header[sampleRate] +\n header[framePadding],\n );\n if (!header[frameLength]) return null;\n\n // Byte (4 of 4)\n // * `IIJJKLMM`\n // * `II......`: Channel mode\n // * `..JJ....`: Mode extension (only if joint stereo)\n // * `....K...`: Copyright\n // * `.....L..`: Original\n // * `......MM`: Emphasis\n const channelModeBits = data[3] & 0b11000000;\n header[channelMode] = channelModes[channelModeBits][description];\n header[channels] = channelModes[channelModeBits][channels];\n\n header[modeExtension] = layerValues[modeExtension][data[3] & 0b00110000];\n header[isCopyrighted] = !!(data[3] & 0b00001000);\n header[isOriginal] = !!(data[3] & 0b00000100);\n\n header[emphasis] = emphasisValues[data[3] & 0b00000011];\n if (header[emphasis] === reserved) return null;\n\n header[bitDepth] = 16;\n\n // set header cache\n {\n const { length, frameLength, samples, ...codecUpdateFields } = header;\n\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n return new MPEGHeader(header);\n }\n\n /**\n * @private\n * Call MPEGHeader.getHeader(Array) to get instance\n */\n constructor(header) {\n super(header);\n\n this[bitrate] = header[bitrate];\n this[emphasis] = header[emphasis];\n this[framePadding] = header[framePadding];\n this[isCopyrighted] = header[isCopyrighted];\n this[isOriginal] = header[isOriginal];\n this[isPrivate] = header[isPrivate];\n this[layer] = header[layer];\n this[modeExtension] = header[modeExtension];\n this[mpegVersion] = header[mpegVersion];\n this[protection] = header[protection];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { getFrame } from \"../../constants.js\";\n\nimport CodecFrame from \"../CodecFrame.js\";\nimport MPEGHeader from \"./MPEGHeader.js\";\n\nexport default class MPEGFrame extends CodecFrame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n return yield* super[getFrame](\n MPEGHeader,\n MPEGFrame,\n codecParser,\n headerCache,\n readOffset,\n );\n }\n\n constructor(header, frame, samples) {\n super(header, frame, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport {\n codec,\n mpeg,\n fixedLengthFrameSync,\n parseFrame,\n} from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport MPEGFrame from \"./MPEGFrame.js\";\nimport MPEGHeader from \"./MPEGHeader.js\";\n\nexport default class MPEGParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = MPEGFrame;\n this.Header = MPEGHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return mpeg;\n }\n\n *[parseFrame]() {\n return yield* this[fixedLengthFrameSync]();\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\n/*\nhttps://wiki.multimedia.cx/index.php/ADTS\n\nAAAAAAAA AAAABCCD EEFFFFGH HHIJKLMM MMMMMMMM MMMOOOOO OOOOOOPP (QQQQQQQQ QQQQQQQQ)\n\nAACHeader consists of 7 or 9 bytes (without or with CRC).\nLetter Length (bits) Description\nA 12 syncword 0xFFF, all bits must be 1\nB 1 MPEG Version: 0 for MPEG-4, 1 for MPEG-2\nC 2 Layer: always 0\nD 1 protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC\nE 2 profile, the MPEG-4 Audio Object Type minus 1\nF 4 MPEG-4 Sampling Frequency Index (15 is forbidden)\nG 1 private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding\nH 3 MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)\nI 1 originality, set to 0 when encoding, ignore when decoding\nJ 1 home, set to 0 when encoding, ignore when decoding\nK 1 copyrighted id bit, the next bit of a centrally registered copyright identifier, set to 0 when encoding, ignore when decoding\nL 1 copyright id start, signals that this frame's copyright id bit is the first bit of the copyright id, set to 0 when encoding, ignore when decoding\nM 13 frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)\nO 11 Buffer fullness // 0x7FF for VBR\nP 2 Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame\nQ 16 CRC if protection absent is 0 \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport { bytesToString } from \"../../utilities.js\";\nimport {\n reserved,\n bad,\n none,\n sixteenBitCRC,\n rate96000,\n rate88200,\n rate64000,\n rate48000,\n rate44100,\n rate32000,\n rate24000,\n rate22050,\n rate16000,\n rate12000,\n rate11025,\n rate8000,\n rate7350,\n channelMappings,\n getChannelMapping,\n monophonic,\n lfe,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n copyrightId,\n copyrightIdStart,\n bufferFullness,\n isHome,\n isOriginal,\n isPrivate,\n layer,\n length,\n mpegVersion,\n numberAACFrames,\n profile,\n protection,\n frameLength,\n description,\n samples,\n sampleRateBits,\n profileBits,\n channelModeBits,\n buffer,\n readRawData,\n getHeader,\n setHeader,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst mpegVersionValues = {\n 0b00000000: \"MPEG-4\",\n 0b00001000: \"MPEG-2\",\n};\n\nconst layerValues = {\n 0b00000000: \"valid\",\n 0b00000010: bad,\n 0b00000100: bad,\n 0b00000110: bad,\n};\n\nconst protectionValues = {\n 0b00000000: sixteenBitCRC,\n 0b00000001: none,\n};\n\nconst profileValues = {\n 0b00000000: \"AAC Main\",\n 0b01000000: \"AAC LC (Low Complexity)\",\n 0b10000000: \"AAC SSR (Scalable Sample Rate)\",\n 0b11000000: \"AAC LTP (Long Term Prediction)\",\n};\n\nconst sampleRates = {\n 0b00000000: rate96000,\n 0b00000100: rate88200,\n 0b00001000: rate64000,\n 0b00001100: rate48000,\n 0b00010000: rate44100,\n 0b00010100: rate32000,\n 0b00011000: rate24000,\n 0b00011100: rate22050,\n 0b00100000: rate16000,\n 0b00100100: rate12000,\n 0b00101000: rate11025,\n 0b00101100: rate8000,\n 0b00110000: rate7350,\n 0b00110100: reserved,\n 0b00111000: reserved,\n 0b00111100: \"frequency is written explicitly\",\n};\n\n// prettier-ignore\nconst channelModeValues = {\n 0b000000000: { [channels]: 0, [description]: \"Defined in AOT Specific Config\" },\n /*\n 'monophonic (mono)'\n 'stereo (left, right)'\n 'linear surround (front center, front left, front right)'\n 'quadraphonic (front center, front left, front right, rear center)'\n '5.0 surround (front center, front left, front right, rear left, rear right)'\n '5.1 surround (front center, front left, front right, rear left, rear right, LFE)'\n '7.1 surround (front center, front left, front right, side left, side right, rear left, rear right, LFE)'\n */\n 0b001000000: { [channels]: 1, [description]: monophonic },\n 0b010000000: { [channels]: 2, [description]: getChannelMapping(2,channelMappings[0][0]) },\n 0b011000000: { [channels]: 3, [description]: getChannelMapping(3,channelMappings[1][3]), },\n 0b100000000: { [channels]: 4, [description]: getChannelMapping(4,channelMappings[1][3],channelMappings[3][4]), },\n 0b101000000: { [channels]: 5, [description]: getChannelMapping(5,channelMappings[1][3],channelMappings[3][0]), },\n 0b110000000: { [channels]: 6, [description]: getChannelMapping(6,channelMappings[1][3],channelMappings[3][0],lfe), },\n 0b111000000: { [channels]: 8, [description]: getChannelMapping(8,channelMappings[1][3],channelMappings[2][0],channelMappings[3][0],lfe), },\n};\n\nexport default class AACHeader extends CodecHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // Must be at least seven bytes. Out of data\n const data = yield* codecParser[readRawData](7, readOffset);\n\n // Check header cache\n const key = bytesToString([\n data[0],\n data[1],\n data[2],\n (data[3] & 0b11111100) | (data[6] & 0b00000011), // frame length, buffer fullness varies so don't cache it\n ]);\n const cachedHeader = headerCache[getHeader](key);\n\n if (!cachedHeader) {\n // Frame sync (all bits must be set): `11111111|1111`:\n if (data[0] !== 0xff || data[1] < 0xf0) return null;\n\n // Byte (2 of 7)\n // * `1111BCCD`\n // * `....B...`: MPEG Version: 0 for MPEG-4, 1 for MPEG-2\n // * `.....CC.`: Layer: always 0\n // * `.......D`: protection absent, Warning, set to 1 if there is no CRC and 0 if there is CRC\n header[mpegVersion] = mpegVersionValues[data[1] & 0b00001000];\n\n header[layer] = layerValues[data[1] & 0b00000110];\n if (header[layer] === bad) return null;\n\n const protectionBit = data[1] & 0b00000001;\n header[protection] = protectionValues[protectionBit];\n header[length] = protectionBit ? 7 : 9;\n\n // Byte (3 of 7)\n // * `EEFFFFGH`\n // * `EE......`: profile, the MPEG-4 Audio Object Type minus 1\n // * `..FFFF..`: MPEG-4 Sampling Frequency Index (15 is forbidden)\n // * `......G.`: private bit, guaranteed never to be used by MPEG, set to 0 when encoding, ignore when decoding\n header[profileBits] = data[2] & 0b11000000;\n header[sampleRateBits] = data[2] & 0b00111100;\n const privateBit = data[2] & 0b00000010;\n\n header[profile] = profileValues[header[profileBits]];\n\n header[sampleRate] = sampleRates[header[sampleRateBits]];\n if (header[sampleRate] === reserved) return null;\n\n header[isPrivate] = !!privateBit;\n\n // Byte (3,4 of 7)\n // * `.......H|HH......`: MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)\n header[channelModeBits] = ((data[2] << 8) | data[3]) & 0b111000000;\n header[channelMode] =\n channelModeValues[header[channelModeBits]][description];\n header[channels] = channelModeValues[header[channelModeBits]][channels];\n\n // Byte (4 of 7)\n // * `HHIJKLMM`\n // * `..I.....`: originality, set to 0 when encoding, ignore when decoding\n // * `...J....`: home, set to 0 when encoding, ignore when decoding\n // * `....K...`: copyrighted id bit, the next bit of a centrally registered copyright identifier, set to 0 when encoding, ignore when decoding\n // * `.....L..`: copyright id start, signals that this frame's copyright id bit is the first bit of the copyright id, set to 0 when encoding, ignore when decoding\n header[isOriginal] = !!(data[3] & 0b00100000);\n header[isHome] = !!(data[3] & 0b00001000);\n header[copyrightId] = !!(data[3] & 0b00001000);\n header[copyrightIdStart] = !!(data[3] & 0b00000100);\n header[bitDepth] = 16;\n header[samples] = 1024;\n\n // Byte (7 of 7)\n // * `......PP` Number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame\n header[numberAACFrames] = data[6] & 0b00000011;\n\n {\n const {\n length,\n channelModeBits,\n profileBits,\n sampleRateBits,\n frameLength,\n samples,\n numberAACFrames,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n } else {\n Object.assign(header, cachedHeader);\n }\n\n // Byte (4,5,6 of 7)\n // * `.......MM|MMMMMMMM|MMM.....`: frame length, this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)\n header[frameLength] =\n ((data[3] << 11) | (data[4] << 3) | (data[5] >> 5)) & 0x1fff;\n if (!header[frameLength]) return null;\n\n // Byte (6,7 of 7)\n // * `...OOOOO|OOOOOO..`: Buffer fullness\n const bufferFullnessBits = ((data[5] << 6) | (data[6] >> 2)) & 0x7ff;\n header[bufferFullness] =\n bufferFullnessBits === 0x7ff ? \"VBR\" : bufferFullnessBits;\n\n return new AACHeader(header);\n }\n\n /**\n * @private\n * Call AACHeader.getHeader(Array) to get instance\n */\n constructor(header) {\n super(header);\n\n this[copyrightId] = header[copyrightId];\n this[copyrightIdStart] = header[copyrightIdStart];\n this[bufferFullness] = header[bufferFullness];\n this[isHome] = header[isHome];\n this[isOriginal] = header[isOriginal];\n this[isPrivate] = header[isPrivate];\n this[layer] = header[layer];\n this[length] = header[length];\n this[mpegVersion] = header[mpegVersion];\n this[numberAACFrames] = header[numberAACFrames];\n this[profile] = header[profile];\n this[protection] = header[protection];\n }\n\n get audioSpecificConfig() {\n // Audio Specific Configuration\n // * `000EEFFF|F0HHH000`:\n // * `000EE...|........`: Object Type (profileBit + 1)\n // * `.....FFF|F.......`: Sample Rate\n // * `........|.0HHH...`: Channel Configuration\n // * `........|.....0..`: Frame Length (1024)\n // * `........|......0.`: does not depend on core coder\n // * `........|.......0`: Not Extension\n const header = headerStore.get(this);\n\n const audioSpecificConfig =\n ((header[profileBits] + 0x40) << 5) |\n (header[sampleRateBits] << 5) |\n (header[channelModeBits] >> 3);\n\n const bytes = new uint8Array(2);\n new dataView(bytes[buffer]).setUint16(0, audioSpecificConfig, false);\n return bytes;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { getFrame } from \"../../constants.js\";\n\nimport CodecFrame from \"../CodecFrame.js\";\nimport AACHeader from \"./AACHeader.js\";\n\nexport default class AACFrame extends CodecFrame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n return yield* super[getFrame](\n AACHeader,\n AACFrame,\n codecParser,\n headerCache,\n readOffset,\n );\n }\n\n constructor(header, frame, samples) {\n super(header, frame, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { codec, fixedLengthFrameSync, parseFrame } from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport AACFrame from \"./AACFrame.js\";\nimport AACHeader from \"./AACHeader.js\";\n\nexport default class AACParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = AACFrame;\n this.Header = AACHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return \"aac\";\n }\n\n *[parseFrame]() {\n return yield* this[fixedLengthFrameSync]();\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport { flacCrc16 } from \"../../utilities.js\";\nimport {\n length,\n streamInfo,\n crc16,\n samples,\n subarray,\n checkFrameFooterCrc16,\n} from \"../../constants.js\";\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class FLACFrame extends CodecFrame {\n static _getFrameFooterCrc16(data) {\n return (data[data[length] - 2] << 8) + data[data[length] - 1];\n }\n\n // check frame footer crc\n // https://xiph.org/flac/format.html#frame_footer\n static [checkFrameFooterCrc16](data) {\n const expectedCrc16 = FLACFrame._getFrameFooterCrc16(data);\n const actualCrc16 = flacCrc16(data[subarray](0, -2));\n\n return expectedCrc16 === actualCrc16;\n }\n\n constructor(data, header, streamInfoValue) {\n header[streamInfo] = streamInfoValue;\n header[crc16] = FLACFrame._getFrameFooterCrc16(data);\n\n super(header, data, headerStore.get(header)[samples]);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\n/*\nhttps://xiph.org/flac/format.html\n\nAAAAAAAA AAAAAABC DDDDEEEE FFFFGGGH \n(IIIIIIII...)\n(JJJJJJJJ|JJJJJJJJ)\n(KKKKKKKK|KKKKKKKK)\nLLLLLLLLL\n\nFLAC Frame Header\nLetter Length (bits) Description\nA 13 11111111|11111\nB 1 Reserved 0 - mandatory, 1 - reserved\nC 1 Blocking strategy, 0 - fixed, 1 - variable\nD 4 Block size in inter-channel samples\nE 4 Sample rate\nF 4 Channel assignment\nG 3 Sample size in bits\nH 1 Reserved 0 - mandatory, 1 - reserved\nI ? if(variable blocksize)\n <8-56>:\"UTF-8\" coded sample number (decoded number is 36 bits) [4]\n else\n <8-48>:\"UTF-8\" coded frame number (decoded number is 31 bits) [4]\nJ ? if(blocksize bits == 011x)\n 8/16 bit (blocksize-1)\nK ? if(sample rate bits == 11xx)\n 8/16 bit sample rate\nL 8 CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) of everything before the crc, including the sync code\n \n*/\n\nimport {\n reserved,\n bad,\n rate88200,\n rate176400,\n rate192000,\n rate8000,\n rate16000,\n rate22050,\n rate24000,\n rate32000,\n rate44100,\n rate48000,\n rate96000,\n channelMappings,\n getChannelMapping,\n monophonic,\n stereo,\n lfe,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n crc16,\n blockingStrategy,\n blockSize,\n frameNumber,\n sampleNumber,\n streamInfo,\n description,\n samples,\n sampleRateBits,\n blockingStrategyBits,\n blockSizeBits,\n crc,\n subarray,\n readRawData,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\nimport { bytesToString, crc8 } from \"../../utilities.js\";\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst getFromStreamInfo = \"get from STREAMINFO metadata block\";\n\nconst blockingStrategyValues = {\n 0b00000000: \"Fixed\",\n 0b00000001: \"Variable\",\n};\n\nconst blockSizeValues = {\n 0b00000000: reserved,\n 0b00010000: 192,\n // 0b00100000: 576,\n // 0b00110000: 1152,\n // 0b01000000: 2304,\n // 0b01010000: 4608,\n // 0b01100000: \"8-bit (blocksize-1) from end of header\",\n // 0b01110000: \"16-bit (blocksize-1) from end of header\",\n // 0b10000000: 256,\n // 0b10010000: 512,\n // 0b10100000: 1024,\n // 0b10110000: 2048,\n // 0b11000000: 4096,\n // 0b11010000: 8192,\n // 0b11100000: 16384,\n // 0b11110000: 32768,\n};\nfor (let i = 2; i < 16; i++)\n blockSizeValues[i << 4] = i < 6 ? 576 * 2 ** (i - 2) : 2 ** i;\n\nconst sampleRateValues = {\n 0b00000000: getFromStreamInfo,\n 0b00000001: rate88200,\n 0b00000010: rate176400,\n 0b00000011: rate192000,\n 0b00000100: rate8000,\n 0b00000101: rate16000,\n 0b00000110: rate22050,\n 0b00000111: rate24000,\n 0b00001000: rate32000,\n 0b00001001: rate44100,\n 0b00001010: rate48000,\n 0b00001011: rate96000,\n // 0b00001100: \"8-bit sample rate (in kHz) from end of header\",\n // 0b00001101: \"16-bit sample rate (in Hz) from end of header\",\n // 0b00001110: \"16-bit sample rate (in tens of Hz) from end of header\",\n 0b00001111: bad,\n};\n\n/* prettier-ignore */\nconst channelAssignments = {\n /*'\n 'monophonic (mono)'\n 'stereo (left, right)'\n 'linear surround (left, right, center)'\n 'quadraphonic (front left, front right, rear left, rear right)'\n '5.0 surround (front left, front right, front center, rear left, rear right)'\n '5.1 surround (front left, front right, front center, LFE, rear left, rear right)'\n '6.1 surround (front left, front right, front center, LFE, rear center, side left, side right)'\n '7.1 surround (front left, front right, front center, LFE, rear left, rear right, side left, side right)'\n */\n 0b00000000: {[channels]: 1, [description]: monophonic},\n 0b00010000: {[channels]: 2, [description]: getChannelMapping(2,channelMappings[0][0])},\n 0b00100000: {[channels]: 3, [description]: getChannelMapping(3,channelMappings[0][1])},\n 0b00110000: {[channels]: 4, [description]: getChannelMapping(4,channelMappings[1][0],channelMappings[3][0])},\n 0b01000000: {[channels]: 5, [description]: getChannelMapping(5,channelMappings[1][1],channelMappings[3][0])},\n 0b01010000: {[channels]: 6, [description]: getChannelMapping(6,channelMappings[1][1],lfe,channelMappings[3][0])},\n 0b01100000: {[channels]: 7, [description]: getChannelMapping(7,channelMappings[1][1],lfe,channelMappings[3][4],channelMappings[2][0])},\n 0b01110000: {[channels]: 8, [description]: getChannelMapping(8,channelMappings[1][1],lfe,channelMappings[3][0],channelMappings[2][0])},\n 0b10000000: {[channels]: 2, [description]: `${stereo} (left, diff)`},\n 0b10010000: {[channels]: 2, [description]: `${stereo} (diff, right)`},\n 0b10100000: {[channels]: 2, [description]: `${stereo} (avg, diff)`},\n 0b10110000: reserved,\n 0b11000000: reserved,\n 0b11010000: reserved,\n 0b11100000: reserved,\n 0b11110000: reserved,\n}\n\nconst bitDepthValues = {\n 0b00000000: getFromStreamInfo,\n 0b00000010: 8,\n 0b00000100: 12,\n 0b00000110: reserved,\n 0b00001000: 16,\n 0b00001010: 20,\n 0b00001100: 24,\n 0b00001110: reserved,\n};\n\nexport default class FLACHeader extends CodecHeader {\n // https://datatracker.ietf.org/doc/html/rfc3629#section-3\n // Char. number range | UTF-8 octet sequence\n // (hexadecimal) | (binary)\n // --------------------+---------------------------------------------\n // 0000 0000-0000 007F | 0xxxxxxx\n // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx\n // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx\n // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n static _decodeUTF8Int(data) {\n if (data[0] > 0xfe) {\n return null; // length byte must have at least one zero as the lsb\n }\n\n if (data[0] < 0x80) return { value: data[0], length: 1 };\n\n // get length by counting the number of msb that are set to 1\n let length = 1;\n for (let zeroMask = 0x40; zeroMask & data[0]; zeroMask >>= 1) length++;\n\n let idx = length - 1,\n value = 0,\n shift = 0;\n\n // sum together the encoded bits in bytes 2 to length\n // 1110xxxx 10[cccccc] 10[bbbbbb] 10[aaaaaa]\n //\n // value = [cccccc] | [bbbbbb] | [aaaaaa]\n for (; idx > 0; shift += 6, idx--) {\n if ((data[idx] & 0xc0) !== 0x80) {\n return null; // each byte should have leading 10xxxxxx\n }\n value |= (data[idx] & 0x3f) << shift; // add the encoded bits\n }\n\n // read the final encoded bits in byte 1\n // 1110[dddd] 10[cccccc] 10[bbbbbb] 10[aaaaaa]\n //\n // value = [dddd] | [cccccc] | [bbbbbb] | [aaaaaa]\n value |= (data[idx] & (0x7f >> length)) << shift;\n\n return { value, length };\n }\n\n static [getHeaderFromUint8Array](data, headerCache) {\n const codecParserStub = {\n [readRawData]: function* () {\n return data;\n },\n };\n\n return FLACHeader[getHeader](codecParserStub, headerCache, 0).next().value;\n }\n\n static *[getHeader](codecParser, headerCache, readOffset) {\n // Must be at least 6 bytes.\n let data = yield* codecParser[readRawData](6, readOffset);\n\n // Bytes (1-2 of 6)\n // * `11111111|111110..`: Frame sync\n // * `........|......0.`: Reserved 0 - mandatory, 1 - reserved\n if (data[0] !== 0xff || !(data[1] === 0xf8 || data[1] === 0xf9)) {\n return null;\n }\n\n const header = {};\n\n // Check header cache\n const key = bytesToString(data[subarray](0, 4));\n const cachedHeader = headerCache[getHeader](key);\n\n if (!cachedHeader) {\n // Byte (2 of 6)\n // * `.......C`: Blocking strategy, 0 - fixed, 1 - variable\n header[blockingStrategyBits] = data[1] & 0b00000001;\n header[blockingStrategy] =\n blockingStrategyValues[header[blockingStrategyBits]];\n\n // Byte (3 of 6)\n // * `DDDD....`: Block size in inter-channel samples\n // * `....EEEE`: Sample rate\n header[blockSizeBits] = data[2] & 0b11110000;\n header[sampleRateBits] = data[2] & 0b00001111;\n\n header[blockSize] = blockSizeValues[header[blockSizeBits]];\n if (header[blockSize] === reserved) {\n return null;\n }\n\n header[sampleRate] = sampleRateValues[header[sampleRateBits]];\n if (header[sampleRate] === bad) {\n return null;\n }\n\n // Byte (4 of 6)\n // * `FFFF....`: Channel assignment\n // * `....GGG.`: Sample size in bits\n // * `.......H`: Reserved 0 - mandatory, 1 - reserved\n if (data[3] & 0b00000001) {\n return null;\n }\n\n const channelAssignment = channelAssignments[data[3] & 0b11110000];\n if (channelAssignment === reserved) {\n return null;\n }\n\n header[channels] = channelAssignment[channels];\n header[channelMode] = channelAssignment[description];\n\n header[bitDepth] = bitDepthValues[data[3] & 0b00001110];\n if (header[bitDepth] === reserved) {\n return null;\n }\n } else {\n Object.assign(header, cachedHeader);\n }\n\n // Byte (5...)\n // * `IIIIIIII|...`: VBR block size ? sample number : frame number\n header[length] = 5;\n\n // check if there is enough data to parse UTF8\n data = yield* codecParser[readRawData](header[length] + 8, readOffset);\n\n const decodedUtf8 = FLACHeader._decodeUTF8Int(data[subarray](4));\n if (!decodedUtf8) {\n return null;\n }\n\n if (header[blockingStrategyBits]) {\n header[sampleNumber] = decodedUtf8.value;\n } else {\n header[frameNumber] = decodedUtf8.value;\n }\n\n header[length] += decodedUtf8[length];\n\n // Byte (...)\n // * `JJJJJJJJ|(JJJJJJJJ)`: Blocksize (8/16bit custom value)\n if (header[blockSizeBits] === 0b01100000) {\n // 8 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[blockSize] = data[header[length] - 1] + 1;\n header[length] += 1;\n } else if (header[blockSizeBits] === 0b01110000) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[blockSize] =\n (data[header[length] - 1] << 8) + data[header[length]] + 1;\n header[length] += 2;\n }\n\n header[samples] = header[blockSize];\n\n // Byte (...)\n // * `KKKKKKKK|(KKKKKKKK)`: Sample rate (8/16bit custom value)\n if (header[sampleRateBits] === 0b00001100) {\n // 8 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] = data[header[length] - 1] * 1000;\n header[length] += 1;\n } else if (header[sampleRateBits] === 0b00001101) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] =\n (data[header[length] - 1] << 8) + data[header[length]];\n header[length] += 2;\n } else if (header[sampleRateBits] === 0b00001110) {\n // 16 bit\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[sampleRate] =\n ((data[header[length] - 1] << 8) + data[header[length]]) * 10;\n header[length] += 2;\n }\n\n // Byte (...)\n // * `LLLLLLLL`: CRC-8\n if (data[length] < header[length])\n data = yield* codecParser[readRawData](header[length], readOffset);\n\n header[crc] = data[header[length] - 1];\n if (header[crc] !== crc8(data[subarray](0, header[length] - 1))) {\n return null;\n }\n\n {\n if (!cachedHeader) {\n const {\n blockingStrategyBits,\n frameNumber,\n sampleNumber,\n samples,\n sampleRateBits,\n blockSizeBits,\n crc,\n length,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n }\n return new FLACHeader(header);\n }\n\n /**\n * @private\n * Call FLACHeader.getHeader(Array) to get instance\n */\n constructor(header) {\n super(header);\n\n this[crc16] = null; // set in FLACFrame\n this[blockingStrategy] = header[blockingStrategy];\n this[blockSize] = header[blockSize];\n this[frameNumber] = header[frameNumber];\n this[sampleNumber] = header[sampleNumber];\n this[streamInfo] = null; // set during ogg parsing\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { frameStore, headerStore } from \"../../globals.js\";\nimport {\n length,\n pageSequenceNumber,\n data,\n codec,\n codecFrames,\n segments,\n subarray,\n readRawData,\n incrementRawData,\n mapFrameStats,\n logWarning,\n parseFrame,\n parseOggPage,\n getHeader,\n enable,\n checkFrameFooterCrc16,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\nimport Parser from \"../Parser.js\";\nimport FLACFrame from \"./FLACFrame.js\";\nimport FLACHeader from \"./FLACHeader.js\";\n\nconst MIN_FLAC_FRAME_SIZE = 2;\nconst MAX_FLAC_FRAME_SIZE = 512 * 1024;\n\nexport default class FLACParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = FLACFrame;\n this.Header = FLACHeader;\n\n onCodec(this[codec]);\n }\n\n get [codec]() {\n return \"flac\";\n }\n\n *_getNextFrameSyncOffset(offset) {\n const data = yield* this._codecParser[readRawData](2, 0);\n const dataLength = data[length] - 2;\n\n while (offset < dataLength) {\n // * `11111111|111110..`: Frame sync\n // * `........|......0.`: Reserved 0 - mandatory, 1 - reserved\n const firstByte = data[offset];\n if (firstByte === 0xff) {\n const secondByte = data[offset + 1];\n if (secondByte === 0xf8 || secondByte === 0xf9) break;\n if (secondByte !== 0xff) offset++; // might as well check for the next sync byte\n }\n offset++;\n }\n\n return offset;\n }\n\n *[parseFrame]() {\n // find the first valid frame header\n do {\n const header = yield* FLACHeader[getHeader](\n this._codecParser,\n this._headerCache,\n 0,\n );\n\n if (header) {\n // found a valid frame header\n // find the next valid frame header\n let nextHeaderOffset =\n headerStore.get(header)[length] + MIN_FLAC_FRAME_SIZE;\n\n while (nextHeaderOffset <= MAX_FLAC_FRAME_SIZE) {\n if (\n this._codecParser._flushing ||\n (yield* FLACHeader[getHeader](\n this._codecParser,\n this._headerCache,\n nextHeaderOffset,\n ))\n ) {\n // found a valid next frame header\n let frameData =\n yield* this._codecParser[readRawData](nextHeaderOffset);\n\n if (!this._codecParser._flushing)\n frameData = frameData[subarray](0, nextHeaderOffset);\n\n // check that this is actually the next header by validating the frame footer crc16\n if (FLACFrame[checkFrameFooterCrc16](frameData)) {\n // both frame headers, and frame footer crc16 are valid, we are synced (odds are pretty low of a false positive)\n const frame = new FLACFrame(frameData, header);\n\n this._headerCache[enable](); // start caching when synced\n this._codecParser[incrementRawData](nextHeaderOffset); // increment to the next frame\n this._codecParser[mapFrameStats](frame);\n\n return frame;\n }\n }\n\n nextHeaderOffset = yield* this._getNextFrameSyncOffset(\n nextHeaderOffset + 1,\n );\n }\n\n this._codecParser[logWarning](\n `Unable to sync FLAC frame after searching ${nextHeaderOffset} bytes.`,\n );\n this._codecParser[incrementRawData](nextHeaderOffset);\n } else {\n // not synced, increment data to continue syncing\n this._codecParser[incrementRawData](\n yield* this._getNextFrameSyncOffset(1),\n );\n }\n } while (true);\n }\n\n [parseOggPage](oggPage) {\n if (oggPage[pageSequenceNumber] === 0) {\n // Identification header\n\n this._headerCache[enable]();\n this._streamInfo = oggPage[data][subarray](13);\n } else if (oggPage[pageSequenceNumber] === 1) {\n // Vorbis comments\n } else {\n oggPage[codecFrames] = frameStore\n .get(oggPage)\n [segments].map((segment) => {\n const header = FLACHeader[getHeaderFromUint8Array](\n segment,\n this._headerCache,\n );\n\n if (header) {\n return new FLACFrame(segment, header, this._streamInfo);\n } else {\n this._codecParser[logWarning](\n \"Failed to parse Ogg FLAC frame\",\n \"Skipping invalid FLAC frame\",\n );\n }\n })\n .filter((frame) => !!frame);\n }\n\n return oggPage;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\n/*\nhttps://xiph.org/ogg/doc/framing.html\n\nAAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA BBBBBBBB 00000CDE\n\n(LSB) (MSB)\nFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF\nGGGGGGGG GGGGGGGG GGGGGGGG GGGGGGGG\nHHHHHHHH HHHHHHHH HHHHHHHH HHHHHHHH\nIIIIIIII IIIIIIII IIIIIIII IIIIIIII\n\nJJJJJJJJ\nLLLLLLLL...\n\nOgg Page Header\nLetter Length (bits) Description\nA 32 0x4f676753, \"OggS\"\nB 8 stream_structure_version\nC 1 (0 no, 1 yes) last page of logical bitstream (eos)\nD 1 (0 no, 1 yes) first page of logical bitstream (bos)\nE 1 (0 no, 1 yes) continued packet\n\nF 64 absolute granule position\nG 32 stream serial number\nH 32 page sequence no\nI 32 page checksum\nJ 8 Number of page segments in the segment table\nL n Segment table (n=page_segments+26).\n Segment table values sum to the total length of the packet.\n Last value is always < 0xFF. Last lacing value will be 0x00 if evenly divisible by 0xFF.\n \n*/\n\nimport { headerStore } from \"../../globals.js\";\nimport {\n absoluteGranulePosition,\n isContinuedPacket,\n isFirstPage,\n isLastPage,\n pageSequenceNumber,\n streamSerialNumber,\n length,\n pageChecksum,\n frameLength,\n streamStructureVersion,\n pageSegmentTable,\n pageSegmentBytes,\n buffer,\n subarray,\n readRawData,\n getHeader,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { readInt64le } from \"../../utilities.js\";\n\nexport default class OggPageHeader {\n static *[getHeader](codecParser, headerCache, readOffset) {\n const header = {};\n\n // Must be at least 28 bytes.\n let data = yield* codecParser[readRawData](28, readOffset);\n\n // Bytes (1-4 of 28)\n // Frame sync (must equal OggS): `AAAAAAAA|AAAAAAAA|AAAAAAAA|AAAAAAAA`:\n if (\n data[0] !== 0x4f || // O\n data[1] !== 0x67 || // g\n data[2] !== 0x67 || // g\n data[3] !== 0x53 // S\n ) {\n return null;\n }\n\n // Byte (5 of 28)\n // * `BBBBBBBB`: stream_structure_version\n header[streamStructureVersion] = data[4];\n\n // Byte (6 of 28)\n // * `00000CDE`\n // * `00000...`: All zeros\n // * `.....C..`: (0 no, 1 yes) last page of logical bitstream (eos)\n // * `......D.`: (0 no, 1 yes) first page of logical bitstream (bos)\n // * `.......E`: (0 no, 1 yes) continued packet\n const zeros = data[5] & 0b11111000;\n if (zeros) return null;\n\n header[isLastPage] = !!(data[5] & 0b00000100);\n header[isFirstPage] = !!(data[5] & 0b00000010);\n header[isContinuedPacket] = !!(data[5] & 0b00000001);\n\n const view = new dataView(uint8Array.from(data[subarray](0, 28))[buffer]);\n\n // Byte (7-14 of 28)\n // * `FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF`\n // * Absolute Granule Position\n header[absoluteGranulePosition] = readInt64le(view, 6);\n\n // Byte (15-18 of 28)\n // * `GGGGGGGG|GGGGGGGG|GGGGGGGG|GGGGGGGG`\n // * Stream Serial Number\n header[streamSerialNumber] = view.getInt32(14, true);\n\n // Byte (19-22 of 28)\n // * `HHHHHHHH|HHHHHHHH|HHHHHHHH|HHHHHHHH`\n // * Page Sequence Number\n header[pageSequenceNumber] = view.getInt32(18, true);\n\n // Byte (23-26 of 28)\n // * `IIIIIIII|IIIIIIII|IIIIIIII|IIIIIIII`\n // * Page Checksum\n header[pageChecksum] = view.getInt32(22, true);\n\n // Byte (27 of 28)\n // * `JJJJJJJJ`: Number of page segments in the segment table\n const pageSegmentTableLength = data[26];\n header[length] = pageSegmentTableLength + 27;\n\n data = yield* codecParser[readRawData](header[length], readOffset); // read in the page segment table\n\n header[frameLength] = 0;\n header[pageSegmentTable] = [];\n header[pageSegmentBytes] = uint8Array.from(\n data[subarray](27, header[length]),\n );\n\n for (let i = 0, segmentLength = 0; i < pageSegmentTableLength; i++) {\n const segmentByte = header[pageSegmentBytes][i];\n\n header[frameLength] += segmentByte;\n segmentLength += segmentByte;\n\n if (segmentByte !== 0xff || i === pageSegmentTableLength - 1) {\n header[pageSegmentTable].push(segmentLength);\n segmentLength = 0;\n }\n }\n\n return new OggPageHeader(header);\n }\n\n /**\n * @private\n * Call OggPageHeader.getHeader(Array) to get instance\n */\n constructor(header) {\n headerStore.set(this, header);\n\n this[absoluteGranulePosition] = header[absoluteGranulePosition];\n this[isContinuedPacket] = header[isContinuedPacket];\n this[isFirstPage] = header[isFirstPage];\n this[isLastPage] = header[isLastPage];\n this[pageSegmentTable] = header[pageSegmentTable];\n this[pageSequenceNumber] = header[pageSequenceNumber];\n this[pageChecksum] = header[pageChecksum];\n this[streamSerialNumber] = header[streamSerialNumber];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { headerStore, frameStore } from \"../../globals.js\";\nimport {\n codecFrames,\n rawData,\n absoluteGranulePosition,\n crc32,\n duration,\n isContinuedPacket,\n isFirstPage,\n isLastPage,\n pageSequenceNumber,\n samples,\n streamSerialNumber,\n length,\n pageChecksum,\n frameLength,\n subarray,\n readRawData,\n getFrame,\n getHeader,\n} from \"../../constants.js\";\n\nimport Frame from \"../Frame.js\";\nimport OggPageHeader from \"./OggPageHeader.js\";\n\nexport default class OggPage extends Frame {\n static *[getFrame](codecParser, headerCache, readOffset) {\n const header = yield* OggPageHeader[getHeader](\n codecParser,\n headerCache,\n readOffset,\n );\n\n if (header) {\n const frameLengthValue = headerStore.get(header)[frameLength];\n const headerLength = headerStore.get(header)[length];\n const totalLength = headerLength + frameLengthValue;\n\n const rawDataValue = (yield* codecParser[readRawData](totalLength, 0))[\n subarray\n ](0, totalLength);\n\n const frame = rawDataValue[subarray](headerLength, totalLength);\n\n return new OggPage(header, frame, rawDataValue);\n } else {\n return null;\n }\n }\n\n constructor(header, frame, rawDataValue) {\n super(header, frame);\n\n frameStore.get(this)[length] = rawDataValue[length];\n\n this[codecFrames] = [];\n this[rawData] = rawDataValue;\n this[absoluteGranulePosition] = header[absoluteGranulePosition];\n this[crc32] = header[pageChecksum];\n this[duration] = 0;\n this[isContinuedPacket] = header[isContinuedPacket];\n this[isFirstPage] = header[isFirstPage];\n this[isLastPage] = header[isLastPage];\n this[pageSequenceNumber] = header[pageSequenceNumber];\n this[samples] = 0;\n this[streamSerialNumber] = header[streamSerialNumber];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class OpusFrame extends CodecFrame {\n constructor(data, header, samples) {\n super(header, data, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\n/*\nhttps://tools.ietf.org/html/rfc7845.html\n 0 1 2 3\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| 'O' | 'p' | 'u' | 's' |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| 'H' | 'e' | 'a' | 'd' |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Version = 1 | Channel Count | Pre-skip |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Input Sample Rate (Hz) |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n| Output Gain (Q7.8 in dB) | Mapping Family| |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :\n| |\n: Optional Channel Mapping Table... :\n| |\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\nLetter Length (bits) Description\nA 64 Magic Signature - OpusHead\nB 8 Version number - 00000001\nC 8 Output channel count (unsigned)\nD 16 Pre-skip (unsigned, little endian)\nE 32 Sample rate (unsigned, little endian)\nF 16 Output Gain (signed, little endian)\nG 8 Channel Mapping family (unsigned)\n\n// if(channel mapping !== 0)\nH 8 Stream count (unsigned)\nI 8 Coupled Stream Count (unsigned)\nJ 8*C Channel Mapping\n*/\n\nimport {\n rate48000,\n vorbisOpusChannelMapping,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n bandwidth,\n channelMappingFamily,\n channelMappingTable,\n coupledStreamCount,\n frameCount,\n frameSize,\n hasOpusPadding,\n inputSampleRate,\n isVbr,\n mode,\n outputGain,\n preSkip,\n streamCount,\n data,\n buffer,\n subarray,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\n/* prettier-ignore */\nconst channelMappingFamilies = {\n 0b00000000: vorbisOpusChannelMapping.slice(0,2),\n /*\n 0: \"monophonic (mono)\"\n 1: \"stereo (left, right)\"\n */\n 0b00000001: vorbisOpusChannelMapping\n /*\n 0: \"monophonic (mono)\"\n 1: \"stereo (left, right)\"\n 2: \"linear surround (left, center, right)\"\n 3: \"quadraphonic (front left, front right, rear left, rear right)\"\n 4: \"5.0 surround (front left, front center, front right, rear left, rear right)\"\n 5: \"5.1 surround (front left, front center, front right, rear left, rear right, LFE)\"\n 6: \"6.1 surround (front left, front center, front right, side left, side right, rear center, LFE)\"\n 7: \"7.1 surround (front left, front center, front right, side left, side right, rear left, rear right, LFE)\"\n */\n // additional channel mappings are user defined\n};\n\nconst silkOnly = \"SILK-only\";\nconst celtOnly = \"CELT-only\";\nconst hybrid = \"Hybrid\";\n\nconst narrowBand = \"narrowband\";\nconst mediumBand = \"medium-band\";\nconst wideBand = \"wideband\";\nconst superWideBand = \"super-wideband\";\nconst fullBand = \"fullband\";\n\n// 0 1 2 3 4 5 6 7\n// +-+-+-+-+-+-+-+-+\n// | config |s| c |\n// +-+-+-+-+-+-+-+-+\n// prettier-ignore\nconst configTable = {\n 0b00000000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 10 },\n 0b00001000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 20 },\n 0b00010000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 40 },\n 0b00011000: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 60 },\n 0b00100000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 10 },\n 0b00101000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 20 },\n 0b00110000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 40 },\n 0b00111000: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 60 },\n 0b01000000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 10 },\n 0b01001000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 20 },\n 0b01010000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 40 },\n 0b01011000: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 60 },\n 0b01100000: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 10 },\n 0b01101000: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 20 },\n 0b01110000: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 10 },\n 0b01111000: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 20 },\n 0b10000000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 2.5 },\n 0b10001000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 5 },\n 0b10010000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 10 },\n 0b10011000: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 20 },\n 0b10100000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 2.5 },\n 0b10101000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 5 },\n 0b10110000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 10 },\n 0b10111000: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 20 },\n 0b11000000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 2.5 },\n 0b11001000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 5 },\n 0b11010000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 10 },\n 0b11011000: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 20 },\n 0b11100000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 2.5 },\n 0b11101000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 5 },\n 0b11110000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 10 },\n 0b11111000: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 20 },\n};\n\nexport default class OpusHeader extends CodecHeader {\n static [getHeaderFromUint8Array](dataValue, packetData, headerCache) {\n const header = {};\n\n // get length of header\n // Byte (10 of 19)\n // * `CCCCCCCC`: Channel Count\n header[channels] = dataValue[9];\n // Byte (19 of 19)\n // * `GGGGGGGG`: Channel Mapping Family\n header[channelMappingFamily] = dataValue[18];\n\n header[length] =\n header[channelMappingFamily] !== 0 ? 21 + header[channels] : 19;\n\n if (dataValue[length] < header[length])\n throw new Error(\"Out of data while inside an Ogg Page\");\n\n // Page Segment Bytes (1-2)\n // * `AAAAA...`: Packet config\n // * `.....B..`:\n // * `......CC`: Packet code\n const packetMode = packetData[0] & 0b00000011;\n const packetLength = packetMode === 3 ? 2 : 1;\n\n // Check header cache\n const key =\n bytesToString(dataValue[subarray](0, header[length])) +\n bytesToString(packetData[subarray](0, packetLength));\n const cachedHeader = headerCache[getHeader](key);\n\n if (cachedHeader) return new OpusHeader(cachedHeader);\n\n // Bytes (1-8 of 19): OpusHead - Magic Signature\n if (key.substr(0, 8) !== \"OpusHead\") {\n return null;\n }\n\n // Byte (9 of 19)\n // * `00000001`: Version number\n if (dataValue[8] !== 1) return null;\n\n header[data] = uint8Array.from(dataValue[subarray](0, header[length]));\n\n const view = new dataView(header[data][buffer]);\n\n header[bitDepth] = 16;\n\n // Byte (10 of 19)\n // * `CCCCCCCC`: Channel Count\n // set earlier to determine length\n\n // Byte (11-12 of 19)\n // * `DDDDDDDD|DDDDDDDD`: Pre skip\n header[preSkip] = view.getUint16(10, true);\n\n // Byte (13-16 of 19)\n // * `EEEEEEEE|EEEEEEEE|EEEEEEEE|EEEEEEEE`: Sample Rate\n header[inputSampleRate] = view.getUint32(12, true);\n // Opus is always decoded at 48kHz\n header[sampleRate] = rate48000;\n\n // Byte (17-18 of 19)\n // * `FFFFFFFF|FFFFFFFF`: Output Gain\n header[outputGain] = view.getInt16(16, true);\n\n // Byte (19 of 19)\n // * `GGGGGGGG`: Channel Mapping Family\n // set earlier to determine length\n if (header[channelMappingFamily] in channelMappingFamilies) {\n header[channelMode] =\n channelMappingFamilies[header[channelMappingFamily]][\n header[channels] - 1\n ];\n if (!header[channelMode]) return null;\n }\n\n if (header[channelMappingFamily] !== 0) {\n // * `HHHHHHHH`: Stream count\n header[streamCount] = dataValue[19];\n\n // * `IIIIIIII`: Coupled Stream count\n header[coupledStreamCount] = dataValue[20];\n\n // * `JJJJJJJJ|...` Channel Mapping table\n header[channelMappingTable] = [\n ...dataValue[subarray](21, header[channels] + 21),\n ];\n }\n\n const packetConfig = configTable[0b11111000 & packetData[0]];\n header[mode] = packetConfig[mode];\n header[bandwidth] = packetConfig[bandwidth];\n header[frameSize] = packetConfig[frameSize];\n\n // https://tools.ietf.org/html/rfc6716#appendix-B\n switch (packetMode) {\n case 0:\n // 0: 1 frame in the packet\n header[frameCount] = 1;\n break;\n case 1:\n // 1: 2 frames in the packet, each with equal compressed size\n case 2:\n // 2: 2 frames in the packet, with different compressed sizes\n header[frameCount] = 2;\n break;\n case 3:\n // 3: an arbitrary number of frames in the packet\n header[isVbr] = !!(0b10000000 & packetData[1]);\n header[hasOpusPadding] = !!(0b01000000 & packetData[1]);\n header[frameCount] = 0b00111111 & packetData[1];\n break;\n default:\n return null;\n }\n\n // set header cache\n {\n const {\n length,\n data: headerData,\n channelMappingFamily,\n ...codecUpdateFields\n } = header;\n\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n\n return new OpusHeader(header);\n }\n\n /**\n * @private\n * Call OpusHeader.getHeader(Array) to get instance\n */\n constructor(header) {\n super(header);\n\n this[data] = header[data];\n this[bandwidth] = header[bandwidth];\n this[channelMappingFamily] = header[channelMappingFamily];\n this[channelMappingTable] = header[channelMappingTable];\n this[coupledStreamCount] = header[coupledStreamCount];\n this[frameCount] = header[frameCount];\n this[frameSize] = header[frameSize];\n this[hasOpusPadding] = header[hasOpusPadding];\n this[inputSampleRate] = header[inputSampleRate];\n this[isVbr] = header[isVbr];\n this[mode] = header[mode];\n this[outputGain] = header[outputGain];\n this[preSkip] = header[preSkip];\n this[streamCount] = header[streamCount];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { frameStore } from \"../../globals.js\";\nimport {\n codecFrames,\n data,\n pageSequenceNumber,\n codec,\n segments,\n logError,\n parseOggPage,\n enable,\n getHeaderFromUint8Array,\n preSkip,\n frameSize,\n frameCount,\n sampleRate,\n} from \"../../constants.js\";\nimport Parser from \"../Parser.js\";\nimport OpusFrame from \"./OpusFrame.js\";\nimport OpusHeader from \"./OpusHeader.js\";\n\nexport default class OpusParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = OpusFrame;\n this.Header = OpusHeader;\n\n onCodec(this[codec]);\n this._identificationHeader = null;\n this._preSkipRemaining = null;\n }\n\n get [codec]() {\n return \"opus\";\n }\n\n /**\n * @todo implement continued page support\n */\n [parseOggPage](oggPage) {\n if (oggPage[pageSequenceNumber] === 0) {\n // Identification header\n\n this._headerCache[enable]();\n this._identificationHeader = oggPage[data];\n } else if (oggPage[pageSequenceNumber] === 1) {\n // OpusTags\n } else {\n oggPage[codecFrames] = frameStore\n .get(oggPage)\n [segments].map((segment) => {\n const header = OpusHeader[getHeaderFromUint8Array](\n this._identificationHeader,\n segment,\n this._headerCache,\n );\n\n if (header) {\n if (this._preSkipRemaining === null)\n this._preSkipRemaining = header[preSkip];\n\n let samples =\n ((header[frameSize] * header[frameCount]) / 1000) *\n header[sampleRate];\n\n if (this._preSkipRemaining > 0) {\n this._preSkipRemaining -= samples;\n samples =\n this._preSkipRemaining < 0 ? -this._preSkipRemaining : 0;\n }\n\n return new OpusFrame(segment, header, samples);\n }\n\n this._codecParser[logError](\n \"Failed to parse Ogg Opus Header\",\n \"Not a valid Ogg Opus file\",\n );\n });\n }\n\n return oggPage;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport CodecFrame from \"../CodecFrame.js\";\n\nexport default class VorbisFrame extends CodecFrame {\n constructor(data, header, samples) {\n super(header, data, samples);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\n/*\n\n1 1) [packet_type] : 8 bit value\n2 2) 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73: the characters ’v’,’o’,’r’,’b’,’i’,’s’ as six octets\n\nLetter bits Description\nA 8 Packet type\nB 48 Magic signature (vorbis)\nC 32 Version number\nD 8 Channels\nE 32 Sample rate\nF 32 Bitrate Maximum (signed)\nG 32 Bitrate Nominal (signed)\nH 32 Bitrate Minimum (signed)\nI 4 blocksize 1\nJ 4 blocksize 0\nK 1 Framing flag\n*/\n\nimport {\n vorbisOpusChannelMapping,\n bitDepth,\n channelMode,\n sampleRate,\n channels,\n length,\n bitrateMaximum,\n bitrateMinimum,\n bitrateNominal,\n blocksize0,\n blocksize1,\n data,\n vorbisComments,\n vorbisSetup,\n version,\n buffer,\n subarray,\n getHeader,\n setHeader,\n getHeaderFromUint8Array,\n uint8Array,\n dataView,\n} from \"../../constants.js\";\nimport { bytesToString } from \"../../utilities.js\";\n\nimport CodecHeader from \"../CodecHeader.js\";\n\nconst blockSizes = {\n // 0b0110: 64,\n // 0b0111: 128,\n // 0b1000: 256,\n // 0b1001: 512,\n // 0b1010: 1024,\n // 0b1011: 2048,\n // 0b1100: 4096,\n // 0b1101: 8192\n};\nfor (let i = 0; i < 8; i++) blockSizes[i + 6] = 2 ** (6 + i);\n\nexport default class VorbisHeader extends CodecHeader {\n static [getHeaderFromUint8Array](\n dataValue,\n headerCache,\n vorbisCommentsData,\n vorbisSetupData,\n ) {\n // Must be at least 30 bytes.\n if (dataValue[length] < 30)\n throw new Error(\"Out of data while inside an Ogg Page\");\n\n // Check header cache\n const key = bytesToString(dataValue[subarray](0, 30));\n const cachedHeader = headerCache[getHeader](key);\n if (cachedHeader) return new VorbisHeader(cachedHeader);\n\n const header = { [length]: 30 };\n\n // Bytes (1-7 of 30): /01vorbis - Magic Signature\n if (key.substr(0, 7) !== \"\\x01vorbis\") {\n return null;\n }\n\n header[data] = uint8Array.from(dataValue[subarray](0, 30));\n const view = new dataView(header[data][buffer]);\n\n // Byte (8-11 of 30)\n // * `CCCCCCCC|CCCCCCCC|CCCCCCCC|CCCCCCCC`: Version number\n header[version] = view.getUint32(7, true);\n if (header[version] !== 0) return null;\n\n // Byte (12 of 30)\n // * `DDDDDDDD`: Channel Count\n header[channels] = dataValue[11];\n header[channelMode] =\n vorbisOpusChannelMapping[header[channels] - 1] || \"application defined\";\n\n // Byte (13-16 of 30)\n // * `EEEEEEEE|EEEEEEEE|EEEEEEEE|EEEEEEEE`: Sample Rate\n header[sampleRate] = view.getUint32(12, true);\n\n // Byte (17-20 of 30)\n // * `FFFFFFFF|FFFFFFFF|FFFFFFFF|FFFFFFFF`: Bitrate Maximum\n header[bitrateMaximum] = view.getInt32(16, true);\n\n // Byte (21-24 of 30)\n // * `GGGGGGGG|GGGGGGGG|GGGGGGGG|GGGGGGGG`: Bitrate Nominal\n header[bitrateNominal] = view.getInt32(20, true);\n\n // Byte (25-28 of 30)\n // * `HHHHHHHH|HHHHHHHH|HHHHHHHH|HHHHHHHH`: Bitrate Minimum\n header[bitrateMinimum] = view.getInt32(24, true);\n\n // Byte (29 of 30)\n // * `IIII....` Blocksize 1\n // * `....JJJJ` Blocksize 0\n header[blocksize1] = blockSizes[(dataValue[28] & 0b11110000) >> 4];\n header[blocksize0] = blockSizes[dataValue[28] & 0b00001111];\n if (header[blocksize0] > header[blocksize1]) return null;\n\n // Byte (29 of 30)\n // * `00000001` Framing bit\n if (dataValue[29] !== 0x01) return null;\n\n header[bitDepth] = 32;\n header[vorbisSetup] = vorbisSetupData;\n header[vorbisComments] = vorbisCommentsData;\n\n {\n // set header cache\n const {\n length,\n data,\n version,\n vorbisSetup,\n vorbisComments,\n ...codecUpdateFields\n } = header;\n headerCache[setHeader](key, header, codecUpdateFields);\n }\n\n return new VorbisHeader(header);\n }\n\n /**\n * @private\n * Call VorbisHeader.getHeader(Array) to get instance\n */\n constructor(header) {\n super(header);\n\n this[bitrateMaximum] = header[bitrateMaximum];\n this[bitrateMinimum] = header[bitrateMinimum];\n this[bitrateNominal] = header[bitrateNominal];\n this[blocksize0] = header[blocksize0];\n this[blocksize1] = header[blocksize1];\n this[data] = header[data];\n this[vorbisComments] = header[vorbisComments];\n this[vorbisSetup] = header[vorbisSetup];\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { frameStore } from \"../../globals.js\";\nimport { BitReader, reverse } from \"../../utilities.js\";\nimport {\n data,\n codec,\n blocksize0,\n blocksize1,\n codecFrames,\n segments,\n vorbis,\n logWarning,\n parseOggPage,\n enable,\n getHeaderFromUint8Array,\n} from \"../../constants.js\";\n\nimport Parser from \"../Parser.js\";\nimport VorbisFrame from \"./VorbisFrame.js\";\nimport VorbisHeader from \"./VorbisHeader.js\";\n\nexport default class VorbisParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n this.Frame = VorbisFrame;\n\n onCodec(this[codec]);\n\n this._identificationHeader = null;\n this._setupComplete = false;\n\n this._prevBlockSize = null;\n }\n\n get [codec]() {\n return vorbis;\n }\n\n [parseOggPage](oggPage) {\n oggPage[codecFrames] = [];\n\n for (const oggPageSegment of frameStore.get(oggPage)[segments]) {\n if (oggPageSegment[0] === 1) {\n // Identification header\n\n this._headerCache[enable]();\n this._identificationHeader = oggPage[data];\n this._setupComplete = false;\n } else if (oggPageSegment[0] === 3) {\n // comment header\n\n this._vorbisComments = oggPageSegment;\n } else if (oggPageSegment[0] === 5) {\n // setup header\n\n this._vorbisSetup = oggPageSegment;\n this._mode = this._parseSetupHeader(oggPageSegment);\n this._setupComplete = true;\n } else if (this._setupComplete) {\n const header = VorbisHeader[getHeaderFromUint8Array](\n this._identificationHeader,\n this._headerCache,\n this._vorbisComments,\n this._vorbisSetup,\n );\n\n if (header) {\n oggPage[codecFrames].push(\n new VorbisFrame(\n oggPageSegment,\n header,\n this._getSamples(oggPageSegment, header),\n ),\n );\n } else {\n this._codecParser[logError](\n \"Failed to parse Ogg Vorbis Header\",\n \"Not a valid Ogg Vorbis file\",\n );\n }\n }\n }\n\n return oggPage;\n }\n\n _getSamples(segment, header) {\n const blockFlag =\n this._mode.blockFlags[(segment[0] >> 1) & this._mode.mask];\n\n const currentBlockSize = blockFlag\n ? header[blocksize1]\n : header[blocksize0];\n\n // data is not returned on the first frame, but is used to prime the decoder\n // https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-590004\n const samplesValue =\n this._prevBlockSize === null\n ? 0\n : (this._prevBlockSize + currentBlockSize) / 4;\n\n this._prevBlockSize = currentBlockSize;\n\n return samplesValue;\n }\n\n // https://gitlab.xiph.org/xiph/liboggz/-/blob/master/src/liboggz/oggz_auto.c#L911\n // https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/vorbis_parser.c\n /*\n * This is the format of the mode data at the end of the packet for all\n * Vorbis Version 1 :\n *\n * [ 6:number_of_modes ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]\n * [ 1:framing(1) ]\n *\n * e.g.:\n *\n * MsB LsB\n * <-\n * 0 0 0 0 0 1 0 0\n * 0 0 1 0 0 0 0 0\n * 0 0 1 0 0 0 0 0\n * 0 0 1|0 0 0 0 0\n * 0 0 0 0|0|0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0 0 0|0 0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0 0 0|0 0 0 0\n * 0 0 0|1|0 0 0 0 |\n * 0 0 0 0 0 0 0 0 V\n * 0 0 0|0 0 0 0 0\n * 0 0 0 0 0 0 0 0\n * 0 0|1 0 0 0 0 0\n *\n * The simplest way to approach this is to start at the end\n * and read backwards to determine the mode configuration.\n *\n * liboggz and ffmpeg both use this method.\n */\n _parseSetupHeader(setup) {\n const bitReader = new BitReader(setup);\n const mode = {\n count: 0,\n blockFlags: [],\n };\n\n // sync with the framing bit\n while ((bitReader.read(1) & 0x01) !== 1) {}\n\n let modeBits;\n // search in reverse to parse out the mode entries\n // limit mode count to 63 so previous block flag will be in first packet byte\n while (mode.count < 64 && bitReader.position > 0) {\n reverse(bitReader.read(8)); // read mapping\n\n // 16 bits transform type, 16 bits window type, all values must be zero\n let currentByte = 0;\n while (bitReader.read(8) === 0x00 && currentByte++ < 3) {} // a non-zero value may indicate the end of the mode entries, or invalid data\n\n if (currentByte === 4) {\n // transform type and window type were all zeros\n modeBits = bitReader.read(7); // modeBits may need to be used in the next iteration if this is the last mode entry\n mode.blockFlags.unshift(modeBits & 0x01); // read and store mode number -> block flag\n bitReader.position += 6; // go back 6 bits so next iteration starts right after the block flag\n mode.count++;\n } else {\n // transform type and window type were not all zeros\n // check for mode count using previous iteration modeBits\n if (((reverse(modeBits) & 0b01111110) >> 1) + 1 !== mode.count) {\n this._codecParser[logWarning](\n \"vorbis derived mode count did not match actual mode count\",\n );\n }\n\n break;\n }\n }\n\n // xxxxxxxa packet type\n // xxxxxxbx mode count (number of mode count bits)\n // xxxxxcxx previous window flag\n // xxxxdxxx next window flag\n mode.mask = (1 << Math.log2(mode.count)) - 1;\n\n return mode;\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { headerStore, frameStore } from \"../../globals.js\";\nimport { bytesToString, concatBuffers } from \"../../utilities.js\";\nimport {\n header,\n pageSequenceNumber,\n pageSegmentBytes,\n pageSegmentTable,\n codec,\n data,\n length,\n samples,\n segments,\n subarray,\n vorbis,\n mapFrameStats,\n logWarning,\n fixedLengthFrameSync,\n parseFrame,\n parseOggPage,\n reset,\n uint8Array,\n isLastPage,\n streamSerialNumber,\n absoluteGranulePosition,\n} from \"../../constants.js\";\n\nimport Parser from \"../../codecs/Parser.js\";\nimport OggPage from \"./OggPage.js\";\nimport OggPageHeader from \"./OggPageHeader.js\";\n\nimport FLACParser from \"../../codecs/flac/FLACParser.js\";\nimport OpusParser from \"../../codecs/opus/OpusParser.js\";\nimport VorbisParser from \"../../codecs/vorbis/VorbisParser.js\";\n\nclass OggStream {\n constructor(codecParser, headerCache, onCodec) {\n this._codecParser = codecParser;\n this._headerCache = headerCache;\n this._onCodec = onCodec;\n\n this._continuedPacket = new uint8Array();\n this._codec = null;\n this._isSupported = null;\n this._previousAbsoluteGranulePosition = null;\n }\n\n get [codec]() {\n return this._codec || \"\";\n }\n\n _updateCodec(codec, Parser) {\n if (this._codec !== codec) {\n this._headerCache[reset]();\n this._parser = new Parser(\n this._codecParser,\n this._headerCache,\n this._onCodec,\n );\n this._codec = codec;\n }\n }\n\n _checkCodecSupport({ data }) {\n const idString = bytesToString(data[subarray](0, 8));\n\n switch (idString) {\n case \"fishead\\0\":\n return false; // ignore ogg skeleton packets\n case \"OpusHead\":\n this._updateCodec(\"opus\", OpusParser);\n return true;\n case /^\\x7fFLAC/.test(idString) && idString:\n this._updateCodec(\"flac\", FLACParser);\n return true;\n case /^\\x01vorbis/.test(idString) && idString:\n this._updateCodec(vorbis, VorbisParser);\n return true;\n default:\n return false;\n }\n }\n\n _checkPageSequenceNumber(oggPage) {\n if (\n oggPage[pageSequenceNumber] !== this._pageSequenceNumber + 1 &&\n this._pageSequenceNumber > 1 &&\n oggPage[pageSequenceNumber] > 1\n ) {\n this._codecParser[logWarning](\n \"Unexpected gap in Ogg Page Sequence Number.\",\n `Expected: ${this._pageSequenceNumber + 1}, Got: ${\n oggPage[pageSequenceNumber]\n }`,\n );\n }\n\n this._pageSequenceNumber = oggPage[pageSequenceNumber];\n }\n\n _parsePage(oggPage) {\n if (this._isSupported === null) {\n this._pageSequenceNumber = oggPage[pageSequenceNumber];\n this._isSupported = this._checkCodecSupport(oggPage);\n }\n\n this._checkPageSequenceNumber(oggPage);\n\n const oggPageStore = frameStore.get(oggPage);\n const headerData = headerStore.get(oggPageStore[header]);\n\n let offset = 0;\n oggPageStore[segments] = headerData[pageSegmentTable].map((segmentLength) =>\n oggPage[data][subarray](offset, (offset += segmentLength)),\n );\n\n // prepend any existing continued packet data\n if (this._continuedPacket[length]) {\n oggPageStore[segments][0] = concatBuffers(\n this._continuedPacket,\n oggPageStore[segments][0],\n );\n\n this._continuedPacket = new uint8Array();\n }\n\n // save any new continued packet data\n if (\n headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] ===\n 0xff\n ) {\n this._continuedPacket = concatBuffers(\n this._continuedPacket,\n oggPageStore[segments].pop(),\n );\n }\n\n // set total samples in this ogg page\n if (this._previousAbsoluteGranulePosition !== null) {\n oggPage[samples] = Number(\n oggPage[absoluteGranulePosition] -\n this._previousAbsoluteGranulePosition,\n );\n }\n\n this._previousAbsoluteGranulePosition = oggPage[absoluteGranulePosition];\n\n if (this._isSupported) {\n const frame = this._parser[parseOggPage](oggPage);\n this._codecParser[mapFrameStats](frame);\n\n return frame;\n } else {\n return oggPage;\n }\n }\n}\n\nexport default class OggParser extends Parser {\n constructor(codecParser, headerCache, onCodec) {\n super(codecParser, headerCache);\n\n this._onCodec = onCodec;\n this.Frame = OggPage;\n this.Header = OggPageHeader;\n\n this._streams = new Map();\n this._currentSerialNumber = null;\n }\n\n get [codec]() {\n const oggStream = this._streams.get(this._currentSerialNumber);\n\n return oggStream ? oggStream.codec : \"\";\n }\n\n *[parseFrame]() {\n const oggPage = yield* this[fixedLengthFrameSync](true);\n this._currentSerialNumber = oggPage[streamSerialNumber];\n\n let oggStream = this._streams.get(this._currentSerialNumber);\n if (!oggStream) {\n oggStream = new OggStream(\n this._codecParser,\n this._headerCache,\n this._onCodec,\n );\n this._streams.set(this._currentSerialNumber, oggStream);\n }\n\n if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);\n\n return oggStream._parsePage(oggPage);\n }\n}\n","/* Copyright 2020-2023 Ethan Halsall\n \n This file is part of codec-parser.\n \n codec-parser is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n codec-parser is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see \n*/\n\nimport { crc32Function, concatBuffers } from \"./utilities.js\";\nimport {\n header,\n sampleRate,\n bitrate,\n length,\n frameNumber,\n data,\n samples,\n codec,\n codecFrames,\n totalBytesOut,\n totalSamples,\n totalDuration,\n crc32,\n duration,\n subarray,\n readRawData,\n incrementRawData,\n mapCodecFrameStats,\n mapFrameStats,\n logWarning,\n logError,\n parseFrame,\n checkCodecUpdate,\n reset,\n isLastPage,\n} from \"./constants.js\";\nimport HeaderCache from \"./codecs/HeaderCache.js\";\nimport MPEGParser from \"./codecs/mpeg/MPEGParser.js\";\nimport AACParser from \"./codecs/aac/AACParser.js\";\nimport FLACParser from \"./codecs/flac/FLACParser.js\";\nimport OggParser from \"./containers/ogg/OggParser.js\";\n\nconst noOp = () => {};\n\nexport default class CodecParser {\n constructor(\n mimeType,\n {\n onCodec,\n onCodecHeader,\n onCodecUpdate,\n enableLogging = false,\n enableFrameCRC32 = true,\n } = {},\n ) {\n this._inputMimeType = mimeType;\n this._onCodec = onCodec || noOp;\n this._onCodecHeader = onCodecHeader || noOp;\n this._onCodecUpdate = onCodecUpdate;\n this._enableLogging = enableLogging;\n this._crc32 = enableFrameCRC32 ? crc32Function : noOp;\n\n this[reset]();\n }\n\n /**\n * @public\n * @returns The detected codec\n */\n get [codec]() {\n return this._parser ? this._parser[codec] : \"\";\n }\n\n [reset]() {\n this._headerCache = new HeaderCache(\n this._onCodecHeader,\n this._onCodecUpdate,\n );\n\n this._generator = this._getGenerator();\n this._generator.next();\n }\n\n /**\n * @public\n * @description Generator function that yields any buffered CodecFrames and resets the CodecParser\n * @returns {Iterable} Iterator that operates over the codec data.\n * @yields {CodecFrame|OggPage} Parsed codec or ogg page data\n */\n *flush() {\n this._flushing = true;\n\n for (let i = this._generator.next(); i.value; i = this._generator.next()) {\n yield i.value;\n }\n\n this._flushing = false;\n\n this[reset]();\n }\n\n /**\n * @public\n * @description Generator function takes in a Uint8Array of data and returns a CodecFrame from the data for each iteration\n * @param {Uint8Array} chunk Next chunk of codec data to read\n * @returns {Iterable} Iterator that operates over the codec data.\n * @yields {CodecFrame|OggPage} Parsed codec or ogg page data\n */\n *parseChunk(chunk) {\n for (\n let i = this._generator.next(chunk);\n i.value;\n i = this._generator.next()\n ) {\n yield i.value;\n }\n }\n\n /**\n * @public\n * @description Parses an entire file and returns all of the contained frames.\n * @param {Uint8Array} fileData Coded data to read\n * @returns {Array} CodecFrames\n */\n parseAll(fileData) {\n return [...this.parseChunk(fileData), ...this.flush()];\n }\n\n /**\n * @private\n */\n *_getGenerator() {\n if (this._inputMimeType.match(/aac/)) {\n this._parser = new AACParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/mpeg/)) {\n this._parser = new MPEGParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/flac/)) {\n this._parser = new FLACParser(this, this._headerCache, this._onCodec);\n } else if (this._inputMimeType.match(/ogg/)) {\n this._parser = new OggParser(this, this._headerCache, this._onCodec);\n } else {\n throw new Error(`Unsupported Codec ${mimeType}`);\n }\n\n this._frameNumber = 0;\n this._currentReadPosition = 0;\n this._totalBytesIn = 0;\n this._totalBytesOut = 0;\n this._totalSamples = 0;\n this._sampleRate = undefined;\n\n this._rawData = new Uint8Array(0);\n\n // start parsing out frames\n while (true) {\n const frame = yield* this._parser[parseFrame]();\n if (frame) yield frame;\n }\n }\n\n /**\n * @protected\n * @param {number} minSize Minimum bytes to have present in buffer\n * @returns {Uint8Array} rawData\n */\n *[readRawData](minSize = 0, readOffset = 0) {\n let rawData;\n\n while (this._rawData[length] <= minSize + readOffset) {\n rawData = yield;\n\n if (this._flushing) return this._rawData[subarray](readOffset);\n\n if (rawData) {\n this._totalBytesIn += rawData[length];\n this._rawData = concatBuffers(this._rawData, rawData);\n }\n }\n\n return this._rawData[subarray](readOffset);\n }\n\n /**\n * @protected\n * @param {number} increment Bytes to increment codec data\n */\n [incrementRawData](increment) {\n this._currentReadPosition += increment;\n this._rawData = this._rawData[subarray](increment);\n }\n\n /**\n * @protected\n */\n [mapCodecFrameStats](frame) {\n this._sampleRate = frame[header][sampleRate];\n\n frame[header][bitrate] =\n frame[duration] > 0\n ? Math.round(frame[data][length] / frame[duration]) * 8\n : 0;\n frame[frameNumber] = this._frameNumber++;\n frame[totalBytesOut] = this._totalBytesOut;\n frame[totalSamples] = this._totalSamples;\n frame[totalDuration] = (this._totalSamples / this._sampleRate) * 1000;\n frame[crc32] = this._crc32(frame[data]);\n\n this._headerCache[checkCodecUpdate](\n frame[header][bitrate],\n frame[totalDuration],\n );\n\n this._totalBytesOut += frame[data][length];\n this._totalSamples += frame[samples];\n }\n\n /**\n * @protected\n */\n [mapFrameStats](frame) {\n if (frame[codecFrames]) {\n // Ogg container\n if (frame[isLastPage]) {\n // cut any excess samples that fall outside of the absolute granule position\n // some streams put invalid data in absolute granule position, so only do this\n // for the end of the stream\n let absoluteGranulePositionSamples = frame[samples];\n\n frame[codecFrames].forEach((codecFrame) => {\n const untrimmedCodecSamples = codecFrame[samples];\n\n if (absoluteGranulePositionSamples < untrimmedCodecSamples) {\n codecFrame[samples] =\n absoluteGranulePositionSamples > 0\n ? absoluteGranulePositionSamples\n : 0;\n codecFrame[duration] =\n (codecFrame[samples] / codecFrame[header][sampleRate]) * 1000;\n }\n\n absoluteGranulePositionSamples -= untrimmedCodecSamples;\n\n this[mapCodecFrameStats](codecFrame);\n });\n } else {\n frame[samples] = 0;\n frame[codecFrames].forEach((codecFrame) => {\n frame[samples] += codecFrame[samples];\n this[mapCodecFrameStats](codecFrame);\n });\n }\n\n frame[duration] = (frame[samples] / this._sampleRate) * 1000 || 0;\n frame[totalSamples] = this._totalSamples;\n frame[totalDuration] =\n (this._totalSamples / this._sampleRate) * 1000 || 0;\n frame[totalBytesOut] = this._totalBytesOut;\n } else {\n this[mapCodecFrameStats](frame);\n }\n }\n\n /**\n * @private\n */\n _log(logger, messages) {\n if (this._enableLogging) {\n const stats = [\n `${codec}: ${this[codec]}`,\n `inputMimeType: ${this._inputMimeType}`,\n `readPosition: ${this._currentReadPosition}`,\n `totalBytesIn: ${this._totalBytesIn}`,\n `${totalBytesOut}: ${this._totalBytesOut}`,\n ];\n\n const width = Math.max(...stats.map((s) => s[length]));\n\n messages.push(\n `--stats--${\"-\".repeat(width - 9)}`,\n ...stats,\n \"-\".repeat(width),\n );\n\n logger(\n \"codec-parser\",\n messages.reduce((acc, message) => acc + \"\\n \" + message, \"\"),\n );\n }\n }\n\n /**\n * @protected\n */\n [logWarning](...messages) {\n this._log(console.warn, messages);\n }\n\n /**\n * @protected\n */\n [logError](...messages) {\n this._log(console.error, messages);\n }\n}\n","import CodecParser from \"./src/CodecParser.js\";\nimport * as constants from \"./src/constants.js\";\n\nexport default CodecParser;\n\nexport const absoluteGranulePosition = constants.absoluteGranulePosition;\nexport const bandwidth = constants.bandwidth;\nexport const bitDepth = constants.bitDepth;\nexport const bitrate = constants.bitrate;\nexport const bitrateMaximum = constants.bitrateMaximum;\nexport const bitrateMinimum = constants.bitrateMinimum;\nexport const bitrateNominal = constants.bitrateNominal;\nexport const buffer = constants.buffer;\nexport const bufferFullness = constants.bufferFullness;\nexport const codec = constants.codec;\nexport const codecFrames = constants.codecFrames;\nexport const coupledStreamCount = constants.coupledStreamCount;\nexport const crc = constants.crc;\nexport const crc16 = constants.crc16;\nexport const crc32 = constants.crc32;\nexport const data = constants.data;\nexport const description = constants.description;\nexport const duration = constants.duration;\nexport const emphasis = constants.emphasis;\nexport const hasOpusPadding = constants.hasOpusPadding;\nexport const header = constants.header;\nexport const isContinuedPacket = constants.isContinuedPacket;\nexport const isCopyrighted = constants.isCopyrighted;\nexport const isFirstPage = constants.isFirstPage;\nexport const isHome = constants.isHome;\nexport const isLastPage = constants.isLastPage;\nexport const isOriginal = constants.isOriginal;\nexport const isPrivate = constants.isPrivate;\nexport const isVbr = constants.isVbr;\nexport const layer = constants.layer;\nexport const length = constants.length;\nexport const mode = constants.mode;\nexport const modeExtension = constants.modeExtension;\nexport const mpeg = constants.mpeg;\nexport const mpegVersion = constants.mpegVersion;\nexport const numberAACFrames = constants.numberAACFrames;\nexport const outputGain = constants.outputGain;\nexport const preSkip = constants.preSkip;\nexport const profile = constants.profile;\nexport const protection = constants.protection;\nexport const rawData = constants.rawData;\nexport const segments = constants.segments;\nexport const subarray = constants.subarray;\nexport const version = constants.version;\nexport const vorbis = constants.vorbis;\nexport const vorbisComments = constants.vorbisComments;\nexport const vorbisSetup = constants.vorbisSetup;\nexport const blockingStrategy = constants.blockingStrategy;\nexport const blockSize = constants.blockSize;\nexport const blocksize0 = constants.blocksize0;\nexport const blocksize1 = constants.blocksize1;\nexport const channelMappingFamily = constants.channelMappingFamily;\nexport const channelMappingTable = constants.channelMappingTable;\nexport const channelMode = constants.channelMode;\nexport const channels = constants.channels;\nexport const copyrightId = constants.copyrightId;\nexport const copyrightIdStart = constants.copyrightIdStart;\nexport const frame = constants.frame;\nexport const frameCount = constants.frameCount;\nexport const frameLength = constants.frameLength;\nexport const frameNumber = constants.frameNumber;\nexport const framePadding = constants.framePadding;\nexport const frameSize = constants.frameSize;\nexport const inputSampleRate = constants.inputSampleRate;\nexport const pageChecksum = constants.pageChecksum;\nexport const pageSegmentTable = constants.pageSegmentTable;\nexport const pageSequenceNumber = constants.pageSequenceNumber;\nexport const sampleNumber = constants.sampleNumber;\nexport const sampleRate = constants.sampleRate;\nexport const samples = constants.samples;\nexport const streamCount = constants.streamCount;\nexport const streamInfo = constants.streamInfo;\nexport const streamSerialNumber = constants.streamSerialNumber;\nexport const streamStructureVersion = constants.streamStructureVersion;\nexport const totalBytesOut = constants.totalBytesOut;\nexport const totalDuration = constants.totalDuration;\nexport const totalSamples = constants.totalSamples;\n"],"names":["symbol","Symbol","channelMappings","left","center","right","front","side","rear","map","x","flatMap","y","z","join","lfe","monophonic","stereo","surround","getChannelMapping","channelCount","mappings","vorbisOpusChannelMapping","rate48000","rate44100","rate32000","rate24000","rate22050","rate16000","rate8000","absoluteGranulePosition","bandwidth","bitDepth","bitrate","bitrateMaximum","bitrateMinimum","bitrateNominal","buffer","bufferFullness","codec","codecFrames","coupledStreamCount","crc","crc16","crc32","data","description","duration","emphasis","hasOpusPadding","header","isContinuedPacket","isCopyrighted","isFirstPage","isHome","isLastPage","isOriginal","isPrivate","isVbr","layer","length","mode","modeExtension","mpeg","mpegVersion","numberAACFrames","outputGain","preSkip","profile","profileBits","protection","segments","subarray","version","vorbis","vorbisComments","vorbisSetup","block","blockingStrategy","blockingStrategyBits","blockSize","blocksize0","blocksize1","blockSizeBits","channel","channelMappingFamily","channelMappingTable","channelMode","channelModeBits","channels","copyright","copyrightId","copyrightIdStart","frame","frameCount","frameLength","Number","frameNumber","framePadding","frameSize","Rate","inputSampleRate","page","pageChecksum","pageSegmentBytes","pageSegmentTable","pageSequenceNumber","sample","sampleNumber","sampleRate","sampleRateBits","samples","stream","streamCount","streamInfo","streamSerialNumber","streamStructureVersion","total","totalBytesOut","totalDuration","totalSamples","readRawData","incrementRawData","mapCodecFrameStats","mapFrameStats","logWarning","logError","syncFrame","fixedLengthFrameSync","getHeader","setHeader","getFrame","parseFrame","parseOggPage","checkCodecUpdate","reset","enable","getHeaderFromUint8Array","checkFrameFooterCrc16","uint8Array","Uint8Array","dataView","DataView","reserved","bad","free","none","sixteenBitCRC","getCrcTable","crcTable","crcInitialValueFunction","crcFunction","byte","bit","crc8Table","b","flacCrc16Table","Uint16Array","crc32Table","Uint32Array","i","push","j","crc32Function","dataLength","crcChunkSize","concatBuffers","buffers","reduce","acc","buf","offset","set","bytesToString","bytes","String","fromCharCode","reverseTable","reverse","val","BitReader","constructor","this","_data","_pos","position","read","bits","Math","floor","HeaderCache","onCodecHeader","onCodecUpdate","_onCodecHeader","_onCodecUpdate","_isEnabled","_headerCache","Map","_codecUpdateData","WeakMap","_codecHeaderSent","_codecShouldUpdate","_bitrate","codecData","get","_currentHeader","key","_updateCurrentHeader","codecUpdateFields","headerStore","frameStore","Parser","codecParser","headerCache","_codecParser","frameData","Frame","ignoreNextFrame","_flushing","Header","headerValue","dataValue","header$1","CodecFrame","readOffset","frameLengthValue","samplesValue","super","unsynchronizationFlag","extendedHeaderFlag","experimentalFlag","footerPresent","ID3v2","getID3v2Header","CodecHeader","bitrateMatrix","calcBitrate","idx","interval","intervalOffset","bands","to31","layer12ModeExtensions","bitrateIndex","v2","v1","intensityStereo","msStereo","on","off","layer3ModeExtensions","layersValues","mpegVersionDescription","isoIec","mpegVersions","protectionValues","emphasisValues","channelModes","channels$1","MPEGHeader","id3v2Header","cachedHeader","mpegVersionValues","layerBits","layerValues","MPEGFrame","MPEGParser","onCodec","profileValues","sampleRates","channelModeValues","AACHeader","Object","assign","protectionBit","privateBit","bufferFullnessBits","audioSpecificConfig","setUint16","AACFrame","AACParser","FLACFrame","_getFrameFooterCrc16","expectedCrc16","actualCrc16","flacCrc16","streamInfoValue","getFromStreamInfo","blockingStrategyValues","blockSizeValues","sampleRateValues","channelAssignments","bitDepthValues","FLACHeader","_decodeUTF8Int","value","zeroMask","shift","next","channelAssignment","decodedUtf8","crc8","FLACParser","_getNextFrameSyncOffset","secondByte","nextHeaderOffset","oggPage","_streamInfo","segment","filter","OggPageHeader","view","from","getBigInt64","sign","getUint8","firstPart","getUint32","secondPart","console","warn","readInt64le","getInt32","pageSegmentTableLength","segmentLength","segmentByte","OggPage","headerLength","totalLength","rawDataValue","OpusFrame","channelMappingFamilies","slice","silkOnly","celtOnly","hybrid","narrowBand","mediumBand","wideBand","superWideBand","fullBand","configTable","OpusHeader","packetData","Error","packetMode","packetLength","substr","getUint16","getInt16","packetConfig","headerData","OpusParser","_identificationHeader","_preSkipRemaining","VorbisFrame","blockSizes","VorbisHeader","vorbisCommentsData","vorbisSetupData","VorbisParser","_setupComplete","_prevBlockSize","oggPageSegment","_vorbisComments","_vorbisSetup","_mode","_parseSetupHeader","_getSamples","currentBlockSize","blockFlags","mask","setup","bitReader","count","modeBits","currentByte","unshift","log2","OggStream","_onCodec","_continuedPacket","_codec","_isSupported","_previousAbsoluteGranulePosition","_updateCodec","_parser","_checkCodecSupport","idString","test","_checkPageSequenceNumber","_pageSequenceNumber","_parsePage","oggPageStore","pop","OggParser","_streams","_currentSerialNumber","oggStream","delete","noOp","CodecParser","mimeType","enableLogging","enableFrameCRC32","_inputMimeType","_enableLogging","_crc32","_generator","_getGenerator","flush","parseChunk","chunk","parseAll","fileData","match","_frameNumber","_currentReadPosition","_totalBytesIn","_totalBytesOut","_totalSamples","_sampleRate","undefined","_rawData","minSize","rawData","increment","round","absoluteGranulePositionSamples","forEach","codecFrame","untrimmedCodecSamples","_log","logger","messages","stats","width","max","s","repeat","message","error","constants.absoluteGranulePosition","constants.codecFrames","constants.coupledStreamCount","constants.data","constants.header","constants.isLastPage","constants.preSkip","constants.vorbisComments","constants.vorbisSetup","constants.channelMappingTable","constants.channels","constants.streamCount","constants.totalSamples"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-99d7c744.js b/dist/index-99d7c744.js new file mode 100644 index 00000000..e6bd7e93 --- /dev/null +++ b/dist/index-99d7c744.js @@ -0,0 +1,2 @@ +const t=(t,e=t=>void 0!==t?": "+t:"")=>class extends Error{origMessage;constructor(s){super(t(s)+e(s)),this.origMessage=void 0!==s?String(s):""}},e=t(()=>"illegal argument(s)"),s=t=>{throw new e(t)},i=t(()=>"illegal state");class r{buffer;start;limit;pos;bitPos;bit;constructor(t,e=0,s=t.length<<3){this.buffer=t,this.start=e,this.limit=s,this.seek(e)}*[Symbol.iterator](){let t=this.start,e=t>>>3,s=7-(7&t);for(;t>>s&1,--s<0&&(e++,s=7),t++}get length(){return this.limit}get position(){return this.bitPos}seek(t){return(t=this.limit)&&s(`seek pos out of bounds: ${t}`),this.pos=t>>>3,this.bit=8-(7&t),this.bitPos=t,this}read(t=1,e=!0){if(t>32)return 4294967296*this.read(t-32,e)+this.read(32,e);if(t>8){let s=0,i=-8&t,r=t-i;for(r>0&&(s=this._read(r,e));i>0;)s=(s<<8|this._read(8,e))>>>0,i-=8;return s}return this._read(t,e)}readFields(t,e=!0){return t.map(t=>this.read(t,e))}readWords(t,e=8,s=!0){let i=[];for(;t-- >0;)i.push(this.read(e,s));return i}readStruct(t,e=!0){return t.reduce((t,[s,i])=>(t[s]=this.read(i,e),t),{})}readBit(t=!0){t&&this.checkLimit(1),this.bit--,this.bitPos++;let e=this.buffer[this.pos]>>>this.bit&1;return 0===this.bit&&(this.pos++,this.bit=8),e}_read(t,e=!0){e&&this.checkLimit(t);let s,i=this.bit-t;return i>=0?(this.bit=i,s=this.buffer[this.pos]>>>i&(1<>>this.bit),this.bitPos+=t,s}checkLimit(t){this.bitPos+t>this.limit&&(()=>{throw new i("can't read past EOF")})()}}const h=4294967296;class o{buffer;start;pos;bit;bitPos;constructor(t,e=0){this.buffer=void 0===t?new Uint8Array(16):"number"==typeof t?new Uint8Array(t):t,this.start=e,this.seek(e),this.buffer[this.pos]&=~((1<=this.buffer.length<<3)&&s(`seek pos out of bounds: ${t}`),this.pos=t>>>3,this.bit=8-(7&t),this.bitPos=t,this}bytes(){return this.buffer.slice(0,this.pos+(7&this.bit?1:0))}reader(t=0){return new r(this.buffer,t,this.position)}write(t,e=1){if(e>32){let s=Math.floor(t/h);this.write(s,e-32),this.write(t-s*h,32)}else if(e>8){let s=-8&e,i=e-s;for(i>0&&this._write(t>>>s,i),s-=8;s>=0;)this._write(t>>>s,8),s-=8}else this._write(t,e);return this}writeWords(t,e=8){let s,i=t[Symbol.iterator]();for(;s=i.next(),!s.done;)this.write(s.value,e)}writeBit(t){return this.bit--,this.buffer[this.pos]=this.buffer[this.pos]&~(1<=0?(o|=(1<>>-h&~o,this.ensureSize(),this.buffer[this.pos]=this.buffer[this.pos]&(1<s?s:t}function u(t,e){return{history:new Int16Array(t||4),weights:new Int16Array(e||4)}}function b(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]>>13}function c(t,e,s,i){let r=i>>4;t[0]+=e[0]<0?-r:r,t[1]+=e[1]<0?-r:r,t[2]+=e[2]<0?-r:r,t[3]+=e[3]<0?-r:r,e[0]=e[1],e[1]=e[2],e[2]=e[3],e[3]=s}const w=t=>Math.sign(t)*Math.round(Math.abs(t)),d=Array(16).fill().map((t,e)=>w(Math.pow(e+1,2.75))),p=[.75,-.75,2.5,-2.5,4.5,-4.5,7,-7],g=d.map(t=>p.map(e=>w(e*t)));function m(t,e,s,i,r){const h=t.read(8),o=t.read(24),a=t.read(16),l=t.read(16),u=Math.floor(l-8-16*h),w=Math.floor(u/8);if(h!=e.channels||o!=e.sampleRate||a*h>w*n)throw new Error("invalid frame header data");for(let e=0;e0&&t.read(k)}return a}function y(t){if(t.byteLength<16)throw new Error("QOA file size must be >= 16");const e=new r(t),s=function(t){if(t.read(32)!==l)throw new Error("Not a QOA file; expected magic number 'qoaf'");const e={samples:t.read(32),channels:t.read(8),sampleRate:t.read(24)};return t.seek(64),e}(e),i=[],h=[];for(let t=0;tMath.floor((65536+t-1)/t)),k=[7,7,7,5,5,3,3,1,0,0,2,2,4,4,6,6,6];function A(t,e){let s=t*M[e]+32768>>16;return s=s+((t>0)-(t<0))-((s>0)-(s<0)),s}function P(t,e,s,i,r){const h=e.channels,o=e.sampleRate,a=e.channelData,l=((t,e)=>Math.floor(8+16*t+8*e*t))(h,Math.floor((r+n-1)/n));t.write(h,8),t.write(o,24),t.write(r,16),t.write(l,16);for(let e=0;e805306367&&(i.weights[0]=0,i.weights[1]=0,i.weights[2]=0,i.weights[3]=0);for(let e=0;e<4;e++)t.write(i.history[e],16);for(let e=0;e<4;e++)t.write(i.weights[e],16)}for(let e=0;em)break;c(e.weights,e.history,u,l),n.push(o)}a=1?t[0].length:0,r={samples:i,channels:s,channelData:t,sampleRate:e},h=(i+a-1)/a,b=8+8*h+4*h*4*r.channels+(i+n-1)/n*8*r.channels,c=[];for(let t=0;t msg !== void 0 ? \": \" + msg : \"\") => class extends Error {\n origMessage;\n constructor(msg) {\n super(prefix(msg) + suffix(msg));\n this.origMessage = msg !== void 0 ? String(msg) : \"\";\n }\n};\nexport {\n defError\n};\n","import { defError } from \"./deferror.js\";\nconst IllegalArgumentError = defError(() => \"illegal argument(s)\");\nconst illegalArgs = (msg) => {\n throw new IllegalArgumentError(msg);\n};\nexport {\n IllegalArgumentError,\n illegalArgs\n};\n","import { defError } from \"./deferror.js\";\nconst IllegalStateError = defError(() => \"illegal state\");\nconst illegalState = (msg) => {\n throw new IllegalStateError(msg);\n};\nexport {\n IllegalStateError,\n illegalState\n};\n","import { illegalArgs } from \"@thi.ng/errors/illegal-arguments\";\nimport { illegalState } from \"@thi.ng/errors/illegal-state\";\nconst U32 = 4294967296;\nclass BitInputStream {\n buffer;\n start;\n limit;\n pos;\n bitPos;\n bit;\n constructor(buffer, offset = 0, limit = buffer.length << 3) {\n this.buffer = buffer;\n this.start = offset;\n this.limit = limit;\n this.seek(offset);\n }\n *[Symbol.iterator]() {\n let j = this.start;\n let i = j >>> 3;\n let b = 7 - (j & 7);\n while (j < this.limit) {\n yield this.buffer[i] >>> b & 1;\n if (--b < 0) {\n i++;\n b = 7;\n }\n j++;\n }\n }\n get length() {\n return this.limit;\n }\n get position() {\n return this.bitPos;\n }\n seek(pos) {\n if (pos < this.start || pos >= this.limit) {\n illegalArgs(`seek pos out of bounds: ${pos}`);\n }\n this.pos = pos >>> 3;\n this.bit = 8 - (pos & 7);\n this.bitPos = pos;\n return this;\n }\n read(wordSize = 1, safe = true) {\n if (wordSize > 32) {\n return this.read(wordSize - 32, safe) * U32 + this.read(32, safe);\n } else if (wordSize > 8) {\n let out = 0;\n let n = wordSize & -8;\n let msb = wordSize - n;\n if (msb > 0) {\n out = this._read(msb, safe);\n }\n while (n > 0) {\n out = (out << 8 | this._read(8, safe)) >>> 0;\n n -= 8;\n }\n return out;\n } else {\n return this._read(wordSize, safe);\n }\n }\n readFields(fields, safe = true) {\n return fields.map((word) => this.read(word, safe));\n }\n readWords(n, wordSize = 8, safe = true) {\n let out = [];\n while (n-- > 0) {\n out.push(this.read(wordSize, safe));\n }\n return out;\n }\n readStruct(fields, safe = true) {\n return fields.reduce((acc, [id, word]) => {\n return acc[id] = this.read(word, safe), acc;\n }, {});\n }\n readBit(safe = true) {\n safe && this.checkLimit(1);\n this.bit--;\n this.bitPos++;\n let out = this.buffer[this.pos] >>> this.bit & 1;\n if (this.bit === 0) {\n this.pos++;\n this.bit = 8;\n }\n return out;\n }\n _read(wordSize, safe = true) {\n safe && this.checkLimit(wordSize);\n let l = this.bit - wordSize, out;\n if (l >= 0) {\n this.bit = l;\n out = this.buffer[this.pos] >>> l & (1 << wordSize) - 1;\n if (l === 0) {\n this.pos++;\n this.bit = 8;\n }\n } else {\n out = (this.buffer[this.pos++] & (1 << this.bit) - 1) << -l;\n this.bit = 8 + l;\n out = out | this.buffer[this.pos] >>> this.bit;\n }\n this.bitPos += wordSize;\n return out;\n }\n checkLimit(requested) {\n if (this.bitPos + requested > this.limit) {\n illegalState(`can't read past EOF`);\n }\n }\n}\nexport {\n BitInputStream\n};\n","import { illegalArgs } from \"@thi.ng/errors/illegal-arguments\";\nimport { BitInputStream } from \"./input.js\";\nconst DEFAULT_BUF_SIZE = 16;\nconst U32 = 4294967296;\nclass BitOutputStream {\n buffer;\n start;\n pos;\n bit;\n bitPos;\n constructor(buffer, offset = 0) {\n this.buffer = typeof buffer === \"undefined\" ? new Uint8Array(DEFAULT_BUF_SIZE) : typeof buffer === \"number\" ? new Uint8Array(buffer) : buffer;\n this.start = offset;\n this.seek(offset);\n this.buffer[this.pos] &= ~((1 << this.bit) - 1);\n }\n get position() {\n return this.bitPos;\n }\n seek(pos) {\n if (pos < this.start || pos >= this.buffer.length << 3) {\n illegalArgs(`seek pos out of bounds: ${pos}`);\n }\n this.pos = pos >>> 3;\n this.bit = 8 - (pos & 7);\n this.bitPos = pos;\n return this;\n }\n bytes() {\n return this.buffer.slice(0, this.pos + (this.bit & 7 ? 1 : 0));\n }\n reader(from = 0) {\n return new BitInputStream(this.buffer, from, this.position);\n }\n write(x, wordSize = 1) {\n if (wordSize > 32) {\n let hi = Math.floor(x / U32);\n this.write(hi, wordSize - 32);\n this.write(x - hi * U32, 32);\n } else if (wordSize > 8) {\n let n = wordSize & -8;\n let msb = wordSize - n;\n if (msb > 0) {\n this._write(x >>> n, msb);\n }\n n -= 8;\n while (n >= 0) {\n this._write(x >>> n, 8);\n n -= 8;\n }\n } else {\n this._write(x, wordSize);\n }\n return this;\n }\n writeWords(input, wordSize = 8) {\n let iter = input[Symbol.iterator]();\n let v;\n while (v = iter.next(), !v.done) {\n this.write(v.value, wordSize);\n }\n }\n writeBit(x) {\n this.bit--;\n this.buffer[this.pos] = this.buffer[this.pos] & ~(1 << this.bit) | x << this.bit;\n if (this.bit === 0) {\n this.ensureSize();\n this.bit = 8;\n }\n this.bitPos++;\n return this;\n }\n _write(x, wordSize) {\n x &= (1 << wordSize) - 1;\n let buf = this.buffer;\n let pos = this.pos;\n let bit = this.bit;\n let b = bit - wordSize;\n let m = bit < 8 ? ~((1 << bit) - 1) : 0;\n if (b >= 0) {\n m |= (1 << b) - 1;\n buf[pos] = buf[pos] & m | x << b & ~m;\n if (b === 0) {\n this.ensureSize();\n this.bit = 8;\n } else {\n this.bit = b;\n }\n } else {\n this.bit = bit = 8 + b;\n buf[pos] = buf[pos] & m | x >>> -b & ~m;\n this.ensureSize();\n this.buffer[this.pos] = this.buffer[this.pos] & (1 << bit) - 1 | x << bit & 255;\n }\n this.bitPos += wordSize;\n return this;\n }\n ensureSize() {\n if (++this.pos === this.buffer.length) {\n let b = new Uint8Array(this.buffer.length << 1);\n b.set(this.buffer);\n this.buffer = b;\n }\n }\n}\nexport {\n BitOutputStream\n};\n","export const QOA_MIN_FILESIZE = 16;\nexport const QOA_MAX_CHANNELS = 8;\n\nexport const QOA_SLICE_LEN = 20;\nexport const QOA_SLICES_PER_FRAME = 256;\nexport const QOA_FRAME_LEN = QOA_SLICES_PER_FRAME * QOA_SLICE_LEN;\nexport const QOA_LMS_LEN = 4;\nexport const QOA_MAGIC = 0x716f6166; /* 'qoaf' */\nexport const QOA_FRAME_SIZE = (channels, slices) =>\n Math.floor(8 + QOA_LMS_LEN * 4 * channels + 8 * slices * channels);\n\nexport function qoa_clamp(v, min, max) {\n return v < min ? min : v > max ? max : v;\n}\n\nexport function LMS(h, w) {\n const history = new Int16Array(h || 4);\n const weights = new Int16Array(w || 4);\n return { history, weights };\n}\n\nexport function qoa_lms_predict(weights, history) {\n return (\n (weights[0] * history[0] +\n weights[1] * history[1] +\n weights[2] * history[2] +\n weights[3] * history[3]) >>\n 13\n );\n}\n\nexport function qoa_lms_update(weights, history, sample, residual) {\n let delta = residual >> 4;\n weights[0] += history[0] < 0 ? -delta : delta;\n weights[1] += history[1] < 0 ? -delta : delta;\n weights[2] += history[2] < 0 ? -delta : delta;\n weights[3] += history[3] < 0 ? -delta : delta;\n history[0] = history[1];\n history[1] = history[2];\n history[2] = history[3];\n history[3] = sample;\n}\n\nexport const qoa_round = (num) => Math.sign(num) * Math.round(Math.abs(num));\n\n/* We have 16 different scalefactors. Like the quantized residuals these become\nless accurate at the higher end. In theory, the highest scalefactor that we\nwould need to encode the highest 16bit residual is (2**16)/8 = 8192. However we\nrely on the LMS filter to predict samples accurately enough that a maximum \nresidual of one quarter of the 16 bit range is high sufficent. I.e. with the \nscalefactor 2048 times the quant range of 8 we can encode residuals up to 2**14.\n\nThe scalefactor values are computed as:\nscalefactor_tab[s] <- round(pow(s + 1, 2.75)) */\n\nexport const qoa_scalefactor_tab = Array(16)\n .fill()\n .map((_, s) => qoa_round(Math.pow(s + 1, 2.75)));\n\n/* The dequant_tab maps each of the scalefactors and quantized residuals to \ntheir unscaled & dequantized version.\n\nSince qoa_div rounds away from the zero, the smallest entries are mapped to 3/4\ninstead of 1. The dequant_tab assumes the following dequantized values for each \nof the quant_tab indices and is computed as:\nfloat dqt[8] = {0.75, -0.75, 2.5, -2.5, 4.5, -4.5, 7, -7};\ndequant_tab[s][q] <- round(scalefactor_tab[s] * dqt[q]) */\n\nconst dqt = [0.75, -0.75, 2.5, -2.5, 4.5, -4.5, 7, -7];\nexport const qoa_dequant_tab = qoa_scalefactor_tab.map((sf) => {\n return dqt.map((dq) => qoa_round(dq * sf));\n});\n","import { BitInputStream } from \"@thi.ng/bitstream\";\nimport {\n qoa_lms_predict,\n qoa_lms_update,\n qoa_clamp,\n qoa_dequant_tab,\n LMS,\n QOA_MIN_FILESIZE,\n QOA_SLICE_LEN,\n QOA_MAGIC,\n QOA_LMS_LEN,\n} from \"./lib/common.js\";\n\nfunction decodeHeader(stream) {\n const magic = stream.read(32);\n if (magic !== QOA_MAGIC) {\n throw new Error(`Not a QOA file; expected magic number 'qoaf'`);\n }\n\n // peek first frame to get audio file data\n const header = {\n samples: stream.read(32),\n channels: stream.read(8),\n sampleRate: stream.read(24),\n };\n\n // go back to end of header\n stream.seek(64);\n\n // return data\n return header;\n}\n\nfunction qoa_decode_frame(stream, audio, lmses, channelData, sampleOffset) {\n const channels = stream.read(8);\n const sampleRate = stream.read(24);\n const samples = stream.read(16); // frame samples\n const frameSize = stream.read(16);\n\n const dataSize = Math.floor(frameSize - 8 - QOA_LMS_LEN * 4 * channels);\n const numSlices = Math.floor(dataSize / 8);\n const maxTotalSamples = numSlices * QOA_SLICE_LEN;\n\n if (\n channels != audio.channels ||\n sampleRate != audio.sampleRate ||\n samples * channels > maxTotalSamples\n ) {\n throw new Error(`invalid frame header data`);\n }\n\n // decode LMS history and weights\n for (let c = 0; c < channels; c++) {\n const lms = lmses[c];\n for (let i = 0; i < QOA_LMS_LEN; i++) {\n let h = stream.read(16);\n lms.history[i] = h;\n }\n for (let i = 0; i < QOA_LMS_LEN; i++) {\n let w = stream.read(16);\n lms.weights[i] = w;\n }\n }\n\n for (\n let sample_index = 0;\n sample_index < samples;\n sample_index += QOA_SLICE_LEN\n ) {\n for (let c = 0; c < channels; c++) {\n const scalefactor = stream.read(4);\n const table = qoa_dequant_tab[scalefactor];\n const slice_start = sample_index;\n const slice_end = Math.min(sample_index + QOA_SLICE_LEN, samples);\n const slice_count = slice_end - slice_start;\n const lms = lmses[c];\n const sampleData = channelData[c];\n let idx = sampleOffset + slice_start;\n const weights = lms.weights;\n const history = lms.history;\n let bitsRemaining = 60;\n // note: this loop is a hot code path and could be optimized\n for (let i = 0; i < slice_count; i++) {\n const predicted = qoa_lms_predict(weights, history);\n const quantized = stream.read(3);\n const dequantized = table[quantized];\n const reconstructed = qoa_clamp(predicted + dequantized, -32768, 32767);\n const sample =\n reconstructed < 0 ? reconstructed / 32768 : reconstructed / 32767;\n sampleData[idx++] = sample;\n qoa_lms_update(weights, history, reconstructed, dequantized);\n bitsRemaining -= 3;\n }\n // skip stream if needed\n if (bitsRemaining > 0) {\n stream.read(bitsRemaining);\n }\n }\n }\n\n return samples;\n}\n\nexport default function decode(data) {\n if (data.byteLength < QOA_MIN_FILESIZE) {\n throw new Error(`QOA file size must be >= ${QOA_MIN_FILESIZE}`);\n }\n\n const stream = new BitInputStream(data);\n const audio = decodeHeader(stream);\n\n const channelData = [];\n const lmses = [];\n for (let c = 0; c < audio.channels; c++) {\n const d = new Float32Array(audio.samples);\n channelData.push(d);\n lmses.push(LMS());\n }\n\n let sampleIndex = 0;\n let frameLen = 0;\n do {\n frameLen = qoa_decode_frame(stream, audio, lmses, channelData, sampleIndex);\n sampleIndex += frameLen;\n } while (frameLen && sampleIndex < audio.samples);\n\n return {\n ...audio,\n channelData,\n };\n}\n","import { BitOutputStream } from \"@thi.ng/bitstream\";\nimport {\n qoa_lms_predict,\n qoa_lms_update,\n qoa_clamp,\n qoa_dequant_tab,\n qoa_scalefactor_tab,\n LMS,\n QOA_SLICE_LEN,\n QOA_FRAME_LEN,\n QOA_MAGIC,\n QOA_LMS_LEN,\n QOA_FRAME_SIZE,\n} from \"./lib/common.js\";\n\n/* The reciprocal_tab maps each of the 16 scalefactors to their rounded \nreciprocals 1/scalefactor. This allows us to calculate the scaled residuals in \nthe encoder with just one multiplication instead of an expensive division. We \ndo this in .16 fixed point with integers, instead of floats.\n\nThe reciprocal_tab is computed as:\nreciprocal_tab[s] <- ((1<<16) + scalefactor_tab[s] - 1) / scalefactor_tab[s] */\n\nconst qoa_reciprocal_tab = qoa_scalefactor_tab.map((s) =>\n Math.floor(((1 << 16) + s - 1) / s)\n);\n\n/* The quant_tab provides an index into the dequant_tab for residuals in the\nrange of -8 .. 8. It maps this range to just 3bits and becommes less accurate at \nthe higher end. Note that the residual zero is identical to the lowest positive \nvalue. This is mostly fine, since the qoa_div() function always rounds away \nfrom zero. */\n\nconst qoa_quant_tab = [\n // -8..-1\n 7, 7, 7, 5, 5, 3, 3, 1,\n // 0\n 0,\n // 1.. 8\n 0, 2, 2, 4, 4, 6, 6, 6,\n];\n\n/* qoa_div() implements a rounding division, but avoids rounding to zero for \nsmall numbers. E.g. 0.1 will be rounded to 1. Note that 0 itself still \nreturns as 0, which is handled in the qoa_quant_tab[].\nqoa_div() takes an index into the .16 fixed point qoa_reciprocal_tab as an\nargument, so it can do the division with a cheaper integer multiplication. */\n\nfunction qoa_div(v, scalefactor) {\n const reciprocal = qoa_reciprocal_tab[scalefactor];\n let n = (v * reciprocal + (1 << 15)) >> 16;\n n = n + ((v > 0) - (v < 0)) - ((n > 0) - (n < 0)); /* round away from 0 */\n return n;\n}\n\nfunction qoa_encode_frame(stream, audio, lmses, sample_offset, frame_len) {\n const channels = audio.channels;\n const sampleRate = audio.sampleRate;\n const channelData = audio.channelData;\n const samples = audio.samples;\n\n const slices = Math.floor((frame_len + QOA_SLICE_LEN - 1) / QOA_SLICE_LEN);\n const frame_size = QOA_FRAME_SIZE(channels, slices);\n\n // Frame header\n stream.write(channels, 8);\n stream.write(sampleRate, 24);\n stream.write(frame_len, 16); // frame samples\n stream.write(frame_size, 16);\n\n // write current LMS weights and history state\n for (let c = 0; c < channels; c++) {\n const lms = lmses[c];\n\n /* If the weights have grown too large, reset them to 0. This may happen\n\t\twith certain high-frequency sounds. This is a last resort and will \n\t\tintroduce quite a bit of noise, but should at least prevent pops/clicks */\n const weights_sum =\n lms.weights[0] * lms.weights[0] +\n lms.weights[1] * lms.weights[1] +\n lms.weights[2] * lms.weights[2] +\n lms.weights[3] * lms.weights[3];\n if (weights_sum > 0x2fffffff) {\n lms.weights[0] = 0;\n lms.weights[1] = 0;\n lms.weights[2] = 0;\n lms.weights[3] = 0;\n }\n\n for (let i = 0; i < QOA_LMS_LEN; i++) {\n stream.write(lms.history[i], 16);\n }\n for (let i = 0; i < QOA_LMS_LEN; i++) {\n stream.write(lms.weights[i], 16);\n }\n }\n\n /* We encode all samples with the channels interleaved on a slice level.\n\tE.g. for stereo: (ch-0, slice 0), (ch 1, slice 0), (ch 0, slice 1), ...*/\n for (\n let sample_index = 0;\n sample_index < frame_len;\n sample_index += QOA_SLICE_LEN\n ) {\n for (let c = 0; c < channels; c++) {\n const slice_len = qoa_clamp(QOA_SLICE_LEN, 0, frame_len - sample_index);\n const slice_start = sample_index;\n\n /* Brute for search for the best scalefactor. Just go through all\n\t\t\t16 scalefactors, encode all samples for the current slice and \n\t\t\tmeassure the total squared error. */\n let best_error = Number.MAX_SAFE_INTEGER;\n let best_slice;\n let best_slice_scalefactor;\n let best_lms;\n const sampleData = channelData[c];\n\n for (let scalefactor = 0; scalefactor < 16; scalefactor++) {\n /* We have to reset the LMS state to the last known good one\n\t\t\t\tbefore trying each scalefactor, as each pass updates the LMS\n\t\t\t\tstate when encoding. */\n let lms = LMS(lmses[c].history, lmses[c].weights);\n\n const table = qoa_dequant_tab[scalefactor];\n\n // an array of slice data\n let slice = [];\n let current_error = 0;\n let idx = slice_start + sample_offset;\n\n for (let i = 0; i < slice_len; i++) {\n let sample = sampleData[idx++];\n\n // turn into 16 bit signed integer\n sample = Math.floor(\n Math.fround(sample < 0 ? sample * 32768 : sample * 32767)\n );\n sample = qoa_clamp(sample, -32768, 32767);\n\n let predicted = qoa_lms_predict(lms.weights, lms.history);\n let residual = sample - predicted;\n let scaled = qoa_div(residual, scalefactor);\n let clamped = qoa_clamp(scaled, -8, 8);\n let quantized = qoa_quant_tab[clamped + 8];\n let dequantized = table[quantized];\n let reconstructed = qoa_clamp(predicted + dequantized, -32768, 32767);\n let error = sample - reconstructed;\n current_error += error * error;\n if (current_error > best_error) {\n break;\n }\n\n qoa_lms_update(lms.weights, lms.history, reconstructed, dequantized);\n slice.push(quantized);\n }\n\n if (current_error < best_error) {\n best_error = current_error;\n best_slice = slice;\n best_slice_scalefactor = scalefactor;\n best_lms = lms;\n }\n }\n\n lmses[c] = best_lms;\n // first, write the 4bit scalefactor\n stream.write(best_slice_scalefactor, 4);\n // now write each 3bit datum in the slice\n for (let i = 0; i < QOA_SLICE_LEN; i++) {\n // the last frame of a file might be smaller than QOA_SLICE_LEN\n const v = i < best_slice.length ? best_slice[i] : 0;\n stream.write(v, 3);\n }\n }\n }\n}\n\nexport default function encode({ channelData, sampleRate = 44100 } = {}) {\n const channels = channelData.length;\n const samples = channels >= 1 ? channelData[0].length : 0;\n const audio = {\n samples,\n channels,\n channelData,\n sampleRate,\n };\n\n const num_frames = (samples + QOA_FRAME_LEN - 1) / QOA_FRAME_LEN;\n const num_slices = (samples + QOA_SLICE_LEN - 1) / QOA_SLICE_LEN;\n const encoded_size =\n 8 /* 8 byte file header */ +\n num_frames * 8 /* 8 byte frame headers */ +\n num_frames *\n QOA_LMS_LEN *\n 4 *\n audio.channels /* 4 * 4 bytes lms state per channel */ +\n num_slices * 8 * audio.channels; /* 8 byte slices */\n\n const lmses = [];\n for (let c = 0; c < audio.channels; c++) {\n const lms = LMS();\n lms.weights[0] = 0;\n lms.weights[1] = 0;\n lms.weights[2] = -(1 << 13);\n lms.weights[3] = 1 << 14;\n lmses.push(lms);\n }\n\n // write header\n const stream = new BitOutputStream(encoded_size);\n stream.write(QOA_MAGIC, 32);\n stream.write(samples, 32);\n\n let frame_len = QOA_FRAME_LEN;\n for (\n let sample_index = 0;\n sample_index < samples;\n sample_index += frame_len\n ) {\n frame_len = qoa_clamp(QOA_FRAME_LEN, 0, samples - sample_index);\n qoa_encode_frame(stream, audio, lmses, sample_index, frame_len);\n }\n\n return stream.bytes();\n}\n"],"names":["defError","prefix","suffix","msg","Error","origMessage","constructor","super","this","String","IllegalArgumentError","illegalArgs","IllegalStateError","BitInputStream","buffer","start","limit","pos","bitPos","bit","offset","length","seek","Symbol","iterator","j","i","b","position","read","wordSize","safe","out","n","msb","_read","readFields","fields","map","word","readWords","push","readStruct","reduce","acc","id","readBit","checkLimit","l","requested","illegalState","U32","BitOutputStream","Uint8Array","bytes","slice","reader","from","write","x","hi","Math","floor","_write","writeWords","input","v","iter","next","done","value","writeBit","ensureSize","buf","m","set","QOA_SLICE_LEN","QOA_FRAME_LEN","QOA_SLICES_PER_FRAME","QOA_MAGIC","qoa_clamp","min","max","LMS","h","w","history","Int16Array","weights","qoa_lms_predict","qoa_lms_update","sample","residual","delta","qoa_round","num","sign","round","abs","qoa_scalefactor_tab","Array","fill","_","s","pow","dqt","qoa_dequant_tab","sf","dq","qoa_decode_frame","stream","audio","lmses","channelData","sampleOffset","channels","sampleRate","samples","frameSize","dataSize","QOA_LMS_LEN","numSlices","c","lms","sample_index","scalefactor","table","slice_start","slice_count","sampleData","idx","bitsRemaining","predicted","dequantized","reconstructed","decode","data","byteLength","header","decodeHeader","d","Float32Array","sampleIndex","frameLen","qoa_reciprocal_tab","qoa_quant_tab","qoa_div","qoa_encode_frame","sample_offset","frame_len","frame_size","slices","QOA_FRAME_SIZE","slice_len","best_slice","best_slice_scalefactor","best_lms","best_error","Number","MAX_SAFE_INTEGER","current_error","fround","clamped","quantized","error","encode","num_frames","encoded_size"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-a875d74a.js b/dist/index-a875d74a.js new file mode 100644 index 0000000000000000000000000000000000000000..fb0f9542a87c6d44e5969b6954ec3a8f91b76668 GIT binary patch literal 71585 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 0; --i) {\n base64ReverseLookup[48 + i] = 52 + i;\n base64ReverseLookup[65 + i] = i;\n base64ReverseLookup[97 + i] = 26 + i;\n}\n\nbase64ReverseLookup[43] = 62;\n\nbase64ReverseLookup[47] = 63;\n\n/** @noinline */ function base64Decode(b64) {\n var b1, b2, i = 0, j = 0, bLength = b64.length, output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == \"=\") - (b64[bLength - 1] == \"=\"));\n for (;i < bLength; i += 4, j += 3) {\n b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];\n b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];\n output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;\n output[j + 1] = b1 << 4 | b2 >> 2;\n output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];\n }\n return output;\n}\n\nif (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, \"wasm\", {get: () => String.raw`dynEncode01a33fc84f8dïoØå§ä³¨s¢þé\u0014õ?§\u001a\u001ašæ—ƒQ¬\u0001\u001e·\u0005ñì\u0012\u0006>_•å”\u0013è£\u001fM\u001aí'…Ë\u0013ÏÊí\u001f\tçåzmòeúaݐ\u0016§¢é\u0013,š\u001aî= 9z…ó¡= $\u0012.\u0012JõT¬K„'¨®ç ƒä“Ó\u001b·ßé‘àäà(u¾ŽÃ÷¯Ãì\u0005Í\u0000H¶3KQtíŒ;Çø=}ÉóX=}Çã»°£)½SÉVy{oEqûUHhé\u0007ì8÷7ó[Ÿ”¼ˆ\u0014\u001aiÖ¨A\u00062º»ƒÈ\u001c(ä\u0001\u0006+Ú»‰Ðé\u001b*7šç}ìÏÖ\u0012@ü€¿À\u000e¿B;?=}A\u0010\u000f?>\u0002ý\u0011ÿûüÿ\u0002~{\u0005xÎ#†ë5X.]J\n=Mi=M\u001e°UH\u0000\n˜5šâ’ª±ÀéOmr\u0001n\u0017¿¯2Ljª•\u001d˜{•\u0006\tÝájÔֆ\u0006\t\t\t±Û©bŸÕ\u001e\u001dé)j\u0019{èüül8üàJr/¡™¨‘‡²Ýþ\u000f^\u0018UÜàÈO6܅\u0007jÙ5èâ×að1º€H\u001fH=M2Û6íÊóI̧[TÜïÚÉ)„\u0000ÁW|âßH\u0005\u0006eF,l\tÌ¥\u000b'ž0Äb8Ï\u0012\u0019\u001cK“ß\f\u0016è!\u001dŒ\u0005e‘€J\nvÑz–Œ& WrnV\f\"5Ê\u0000ñ ýkwP”4Ã\b\u0016p¨‘¸RAx[\u0019p¼Ïóƒ;š7>ÃÑþ¨VU?°Rˆ›\u000eq9~\u0007ò‰Q”\u0003ڃw‡\u001bI=}­žœ•\tf›òÔ·rñ¾ª\u0014¸gðx7\u000eQE5-±\u001c®M߀ã\u0015l–?\u0012\u0016£Á•ãÃE\tóØ{\u000eË\u0003ÒÂÌ\u001e@µ\u000b–z\u00115fñ‘}.;\u0015\u0011¾ê%Mi‡\u000e‰_³ZU@å.ɂñ‰î¾Þ€m„Ät†×¢.\f,ä²BB;朤‘äû\u001aûZ_¡V)Œ‡ŒªAUµ¾BfÈéŸ Ò&§¦$¢Š\u0014\u0002»ôåÀk£z‹(Ÿ_zܟ^r>†ï ¾bˆ>ÁŽð/ªÄ\u001f\u001eDT\u0018\u000fçQ\u0007ŽlÄIÒ\u0001°Q}\u0019:\u00168_þ\u001aŽ!@ßvñ!\u0016\u0005œOö\n\\”\\ebVp\u0003Ȝ±\u001cÖ\u0017~\\¥NÐ'eŸB\u0002œb·#ÈN¥\u0013\u0012ŸY\t\u0017ßà#W´0a]¼!þ½\\n×\u001fØT¿¿‡¶çÉS­îä\u0007x7óÎ6ñI\u0001\u0011-ììùpfåh¸Çú,\u001ccµÔeiÂeic\u000bÓÂçˆ#ê²up¹aÛÝ\u0011b0¼þ7–\b\u0015\u0012Ÿ™\u0012\u0007Ü\u0006”>F3ÞÔTþñfkï±bxö”€„öf\u001dٍ†ˆ±…6H„”ΟÊß6 šÒ°ÂyV¶Á?»‰‚@?{¨Q¥+=}¥±ÿԓÌá9%û\u001e!\u0007>Âì&¸Õ\u0010@Ó\u0010„Uùq÷?ñ\u0014qt˜\u001b¿“çIU+÷g‚\u001ay\u0014+5sä\n¼¬åí•\u000bG\u0002Ö®\u0004‡S1Kƒ;…\u000eB\\\u0019\u0010\u0013©™f‹\u001b\u001fhX˜d)ºÐ¿²Uw ûû\u0016X1ƒ5°Ò1„LÁ”-Œ;j= piN:}îºB\u0003¯ÅÉw\u0012\u0016Xtô§¶¸3Œy¶¯oJáà\u0002Lž¸jÎn®În -Š¸ýûÄàsT\f½\u0015ÎòÓÄe\u0012s\t´{OsèÚÎþ´ƒÇ“å9Se\u001dkF†‰TV³úŽK-”š÷WE¾OÔ\nµR½‹ø*ٞvVèJ°§†\u0018¼Å¤ªàCŠœsr²^\u001cÕvü3ã\u0012ãÔ¯/´ Poü|$\fRÞ§KuÉ#þ\u0000‰[ªß{¦Ñ\u000eVú>ý>Ôws\u0012~~š9ž=Mz¶-ږ•hiò>ñ²1\u0013ždüÿ!ü>ý>í¾¿ñ\u001d赙À\tž/«\u000e~y\u0012æ¨Êwór„b0©\u0013\u001fì!ˆ\t\u0006~°»Ïž\u0005øj§\u0018Ý#ß88š÷\u0017AlÛ¦\u001c3¹ÇS8“oK:xÜ×\u0018'dAkÉÜ<É;–)3ÀbÐ{í«Û5?þ\nÈ\u0012N\u0018øRÙᾙ¹/+ß>ۏ¾6åô\u0001}mzQ|p÷Mž\u001b¼ðjÑí\u0003\u0011©;\u0001\u00102½&Ì#g×g|/[k*Zõ8ZvãXƒ\u0016çà\u0011F–\u0017ª¯a*÷«ª+V,\\¨rÏâ'É:\u001fG-à\u0019ëˆW\u0004£óÿ‡ˆîŸ‚8rpÿ\u0000]k€=Mîéû|]\u001b´$\u0003Î\"’îá“\u0014VìDŽ\u0013_d%~m\u0012¢>\u0002\u001daj%\u0019U6¨^8\"ž\u0018b ]¥®}l†ì\u001f\u001c\u0012­ï\u001aèÈfõ\u000blÔ\u0017֋ç\u0019ÝÜI\u0011ÃqÜ\u0010;ñ‘°[‚ÙåTàÆä\u000f>í•÷™õ\u000e{¯oí½3*iú\u0005•\u0007D¿gÔæÁ@sÙ Ñ\bèÚ\u0003=MÉ\u0006k\u0019áÑüçu\u0007êÕÙð\u0002\u000fw\u000e¨\tÀ\f³Fô~{\u0010ï_µ\u00039Ñ\u0002¬5,}í5×0ÿ>_6l*{îò)\u0018¯Gj\u0010\u0015E7(aôrÃ\u001ebôÚj˜Ç½\tT°ÜÃÄ\u0019gk;ß_߇Â֍ûÄRZð\u0014ùÒ¸\u0013§=MX*gê\u001e[ÉXÚ©^uN„~u~®\n:Õ_\u0002\u001dN\u000e\u0011ø\u001eW‰ë\u001e\u001aP\\^W\u001a\u0007pÀttØ\u001a÷\u001e2ÿ\u00162wTØ\u001aï\u001e2þ\u00162v6y6;V˜ÌۆI\u0014÷?ªê\u0003„̶^&\u001d>&í£F\u0013]V\u0007BfŒ¨T\u0004ß\u0010e|þîõ\u001d¹\u0004ù\u001d±\u0014ú\u001dÁ$˜]ö\tw\u001bá†yƒÏV.îbÁۂŠÆ.Þð¡Øۆ\u0000ït\u0014nZ$þ:—KÌòñӘð?«Ÿ»…\u0000±l“â\u0001¶\nSӀÿZ·ƒ©'7\ns%»4äcL+øÈ{\n^ÑKCU¨n9ðÑ~g³/rӆV$\u0002\n[cÉ6 &\u0013\u0015›(¿ô‚qðx\tú’Æ6\u0000ÞYSÇO×Èò{\f’-\u0007L;áèÚÆ\u000fUhk(öyžÄ„è7´Þ\u00141CY˜¤Dèé׃40,ä$Em9†¦\u000fS£\"¨ü“Çk\u0006U€ô¹ŠË UgÎ{>%[2\b\\ösiUîçÓ.œ\u0016À¨ãôÂ\u0010ÏûÇ~që¤\n˜$¼À&*ãhæM#Ïî8å#ûûU@·I‡§a†Âú[Hc\u0017°cŠ¥öém¶«èä\u0010ªªˆ#÷‡ˆ\u001dñg;ß¾ó\u001eºš/9í?\tg~ïB9¨'Sü\u0010ß.›),‡gi±Æèzåëf¹,\u001eÈâ^k¿|Ð= ”ÿÉUvî‡\u001c©ˆñ\u001fÚÍÖـ\"&•|\u0017ª[Å¢l\u0015Žy‚D¸ÖÏñI´QCÑ\u000eWõ\u0006ȉà°\u0014\u0007zÈ2_Ǹß(ËÒ¹pi}çkU̇-PV$MÍ)\u0005}é\u001cžD×q¹{¤aä†.|í+/ýºIë¸××I¥^\u0014bü½ö?Ñ/Æ°\u0014uCH¥g±•‚|¹M\u0006Þ#L²„ææûºÿ\f\u0013'œîA-÷\u0014B\u001c\u000f¿7\u0003<\u001bޙԭ\f9ì&\u0018Ô¢fÓ1EãÈ/ cE%5ÙO‡£.u\u001aK\u0011~¨¸;Ëíô°ÿu7u\u0016Rö¦×³…®= °~£3€0\u0012Èö‡ˆpI\u000bìx‚û\u001bŸ\u001c)þÏ\u000fXËyey\u000e„o\tI%Ùý°\u0016ðà8­Kð!9¡ƒ‰C£'Ý\tY0\u001d\u001f\u0006\u0004¶±Ú}\u0015îùÛÆze\"ߦ[ÌM…\u001cˆ\u001a÷qAš\u001c?¬;Q\u0013W–et\u0015„\u000bbW¬ýÛ)a\u0013W–et\u0015„+\u0018*˜¾­j¥h8Î\nÉëÎ\n~øqù|ô*= D\u0015ÑW\u0015©â\u0003\nq'$iÇùç\u0013Æ®sç4|¶¢USæK|cÅ\u0010À(46?µŠƒ#ËM0÷rYNAP÷r¦á«Ò×{²¶ÁØäpg´e—Ý\u0007|\u000e¸ìH=MïmÿOn@óå+(÷Ð\u000bMI3“ìñÈó倝\u0001Óz*^,áÿJ²Úz*\u0006 [Ò\u0010íxê|Žfp˜„ûÂû\u001aûBŒf4þs*þs*ö [ñ‘bG²ÐnjÄ%Àßñ«Zù\\è\u0010¬è\u000e ‘\u000bK-\u0006ÚÈ®”Û“×Ώ\u001eVyT­´1˜bØüJÅ\u0015ZÕüJÅ\u0015Ú=}\u000f›\u0002<\u000fó´\bnul/6|@{æÔî½\u0017àb|é ª\u0006³½wTŒAª³uêÀ.¸šNvΘ‘æS\u0002UL-÷h›rH7ÙV\nVÕ\u0013-pL¿ã.PÒ\u000e¿\u000fê\u0001Ã\u0013ÿqÎÁE­k…ÜŒ¦ÙÇéÙ²—l¥(t³p–OYúHp’cÖ¸ó„\u0019æÞy5½¶ÎÕ9Ȍ\u0018³˜\u0018³\u0018²ô\u001a³2§'6Š­´É‘»_9Ɏ^¿Ï«;\u0007Ù\u0001Ëa­&rb—f±\u0016_\u0006ZØÀª%#ŽÎh?̑;\u0006zÀVš‰j¿Ž2lúꋆGÂ^hì\u001e\nÊÀþߌ\u0014ðT†Gximü\u001f1Oå®&\u001f¥ïߗµe‰cË\u001a/9\u001a/Í\u001cN͟\u001dê\u0018¤MÎü´M\nƒ•]Fö\u0010kj\u0003®\u0003ò\u001bJ¤C©K•'î\u001cO§•GiÆb6ô¡ØfÒ\u0004\u0005é\u001c\u0012þ‚h°\u0014¶˜À= µfŠaG€Hߵэ¬Ãà\fÖO¥*–Ýh·s-#\u0019ýtú\u001aø*³D¡S6(t,ÀF0(´¡†¿nƒ,Ùádý˜Y@²íۄâ\u001e\u0001Ànhé9ÿ{~@øJèT\\†VåԞOó\u0001¢üdrí„\u0015¦ür…\n¨&\nÝJB¸ŸV%tr­QžóӞO\u0003—Våâ SBi¾ÿڐç\u0005ܘ\u000eÄ6OLi.p·Å(›Õ“x\bD¨\nD¨¼¬\f\u0015؍\u0016ª¼L9¯¨ÌšÓn¤°\fBªb\u001bêt\u0017Ó«óÚ;[K\u0012°èî¦AÀ—Ο™0ý'ð§|\u0004ÌÒÌ÷´rq\u0001½ó\u000b̎µazûû8\bœm´Ê/ŸœV:È&®\u0004¬ØÌZ&\fUk\u000f\u001a£‡r¿Ãî9>ÊR‡rѤçśz\"ÈBw&!Aúÿ’\u001c‘üd˜–&ù¤º¤ûë\u0002©ÿ?þlâSwÉ£kl¾2ž9²bÏáz\u001d«–­®k€(Ȫ-Ðg\u0003ýu\u0017ä\u000fƪa­ß÷Ðî5A3*®\u0017ÖÖ»­·G‚\u0005V@øb1r#\u000béof:\b&z:r\u001byG~qb˜f\u0015\u0000“ÜVš\\Q°\u0010%¿¦cœåþ„\u0007¤6\u000eá0n\"՘\u0003\u0005\u0006a•Õ:¬®{\t™$îN³ºüÜ~=}Ą6¬ÁÛ\u000eÏÓ¥Y¬ŒÆ€m‚šÝÜÀ,ØAà\u001364æ0kÐÇi\u0001žL#\u0010=MMôk%9ÿ[þ|Ä[Á<\u00000¯\u0019 ý¥þÖváÐ\u0014\\yí¬\u0016-zÌOï1ä@\u000b¤†ÙÙ®»…ÏÈ\u0000ïõ¯•j¢×ì”=}G›þÈÌû\u001aû¢r5·\u0016\u00065¥„\u000eƒ×ZíõÅä֔þ&Â\u0010žRX\u0002*ƒü°Q:ýBÖ.ùžkô){©Ô™B­>´MLZØî’Rf,\" ŸÊâ\u001eŸ¢¢p¦Ò\"ìÖ!¡o4•ºÕ††z0\u0004ŸŠÎÆm\u00110'$¦g,ˆžòߖö\fk†\u001abßì°qºU‰\u001fL?R©\u0001@c‹4¯Öçî\u0006쐁 U\tú\u0010˜Û‹(ZEOÂ\u000b\u001bD\u0000X\u001ez\u001a\u0004ÄC=}°×D$ãÞ)é\u0005]S²œ\u0014Äz¿¾ß‚ÝEL·kÍM\u0007Vañ„\u000f%F\u0018J\n\u001a4ôñ=Mچ™fÒ¶‡AÉ\u0018ÂíÁ\u001b|…Ô¤joÁÏ\u00133ÜV5íÇ-:5rKÜ[uò¦\\ŽÀ\u001cÜ]3ނµÂ«âQÙúх\fåô=}*´TLß8Å\u0004î7>Â'±„\u000f:LCdh\fúÕe÷͏M73ëFrԉmÝР“†ÿÀ’ÓM|\u0014\"6d‡\u000e@O…\u0006¹‘cs‚\u001dZ¡g%n’B³ý£UMŒK\u001bÅÖ0\u001aÝ8ÒõÏu·ø¶g͜¡ñš¾€ÚÓN\fŠ0þR)h= †þ‘P\u0012{n\u0019\u0019øQ€I3Åß3\u000314™\u0004’ÐT‘= Ìy”Åy¾–l܅= ÚÃiUCg´\u0016WœQ(ŠÁ$^]\u0002)Ù⑥þ\f \u00122­Û·>å˜m\u0014s&b¼úªèôQ'Yè¨FüyIr\u00181ýÎmaî0'\u0011\fÇ\u001bÈ\u001eýªÿ’#}^\u0006W_\u0006W}2QjAÂ*ϐšO¾“rûÿ\nDñöëß_\\Z= Â)¡#\tú„\u0010⟡]\u001bôö¯öx1ÓȒ6γ5_x}']Ö+—ü\\c°”O×\u0003ì9¯g_³Šd‘óai\"©[9ûЀC\u001b¹^\\:R¢ìŵ‡ý\u0019rt‡q׉Çܹ–‰'Æ\u0015Y[7lÅ4Ót\u0013Ò¡\u001fS\u001eÛà\u000b-W~\füx¯d…ãG@fýÉ\u0011Osó–Í\u0004@O¹\u0001\fg.æ\u000b\u0003,ŒHåÑ?_w‰Š•XÜi~ZS(E¶²ü×\u001d¹RJ=M¹\u001d\u0003Å\u0006_=Mø˜ÑL\u001f^\u0005ålZcþ‹\u001cëÙõðÛà„¸\u0012‚\u0016õ/ð±Üzé/™whW:ÍÐFÔ\f#ÉG´Â\u001fÈWŸ²\bÿÌ\u0010M+\u0010\u000eínrí\u001e\u001eî#ÌDoñ\u001a•„\u0012L}\u0017ª.–ñ¸ŠçpƒÑ}Ê\t\u0013\u001aYW’õ]j\u0006\u0010ã\u001aN¬k¸Áç÷F\u0001€Lã\fäªÇÔ)üõ\u0016¤ùæÈð}\t+æ® õ9\u001b~%žñõª÷\u001fè\u0012þ\u0004æutµØî «ï‚h\fw\u00003ZyVÖfÛÓÖ/fOP= =M»\u001aÔ4ßýa3‘øœ¿„\u0018\u0007‡$±äšFY\\ò\u000e[¬)¢Rø¼‘fلO\u0005\u0015\fü71w¿ŠæZlý֋°\nÓÚ? .)fsnW®Æ\u001dù–«Iò‡Í\u0002\u001b?Uñš¥A1ƒ¢7+\u0003_꼉ßÝÙâÕÐ\u0014¦]s¿î\u001es¿ðS9šÓ\u001cšŽú ÞWLs_Iu™=M¨6\u001fÛèÝë§bCgт \u0007{F¼©\u000f¦¶ÌKDZüM\u0013v•)Fº»ý»è e\u001bI\fÏ\u0001ÚëÆ\u0011*\u0001\u0017\u001b$&Ù轔\u001dÖe´XSX×øØê½ñ4\fÍàG+ô\u000fgÒ\f\u001b\tÈVæ\u0014T[å^~×?|#K·ÇlLÎØ\u0004i;ùV'j÷œ\u0015\u00130ðÀók\u0015—=Mî\u001eAxyv\u001ašJ\u0016bÞà0Œ\u0019\bVHÈA€\u0016¤M¸\u0011;O¸‘/(SÔ«¦üÆ3؍kU´Jf³)óg»1W¾‚lÄë§1ŠTõùÝ\u0010‡’†d%=MaPu™í(pD\\\u00000\u0019Þ0;7àe“(ÙД´\u0006¬\u0004\u0006µ o6˪@L\u0002$Žë¸Ç×cL›Jß¼Òó,]þ&5µÒ‚&ñ´…tÉv\u001dâPŠx\u001d\u000bXŽÔ šÔ8\u0005ç‹ÖH\u0005ë\u0006KÊ0]f\u0003 ê8-rü\u0005ºª\bå±­¼(ó\u0000åНµÒ3äóOôIø—Áþì\u001bj#\t= —bF%\u001f\u00144»XîÛ\u0016ð«!@$¹@Bl‘ý’U@O‘EDç/ \u0010}òªT\u00173Á$È%nJµ’Æž„[gÊóÀ;=M5»Ã\u0007:_ÿq¿BßÀ¥1æ-\u001fe ×D¦\u0017»6*„Û¿\u0017×_\u000e\nÔQ’¦sá0Ž¸ê\u0016w—Š]ÂÕÌ6Y\u001e£\u0006>3\u0002Cë\u001dxâF4!y'Èw†±Y¾ŽžñÕõ0ww‹*·\u0017ÕX•\u00073ógg5^\u0018/’S–Z.´‚ËÆK†9éÓm\"Ž}bŽ}âV|‰\u0002þPê¬t¤]pbŠ=M»tJ\u0010= ^¼-ÄÞ\u001b˜=}žWȼ\"¾ix=}žØW\u001f.¢µ}d=}žÜ\u0011ôwŸ·}S‰!/þ·KÂãŽy\u001es}ؚ±W\u001fwþ¿0—˜&)”\n±}Èóðí×=M\b©\u000b\u001b~šÜP\u001bAŠ\u00079Z†”ƒ*S\u001cό؜ñ\u001fÑMN·c¶\u0010Hï–ëŠB\u0003¹]h_þq^&\u001cZ=}\u001a*\u0011 „’\u0019! ÓœÿÉÊìíƒv\u001c‰\u0005™“×®>‹BŸŸ²Å2!´4\u0000\u0015œp_ÊݛÕ!©diŽtÓ7Ȳ¶–®â.;Ù1Ðëb¡º÷ñF\u0007\u0014\"inˆ/­­¯YNÓ(ÐÿÄ<š–›(ÓC–\u001a9~õ-­\u001f\"‹§7LQ‡<1Œ¢‡\b­ŸAäHÕ«´Dî‹ù–‘\u001bPŠ€= ñc{?ýW:Í;Ԃ\u000f]\u0014cán¿˜¼ü\u001e\u0001ÍJŸ\u0006£)™Glú!¯dئ:PN\u000fÂg\u001a½ÍŽ^–JÑjÅ\u0002^¿6f(Ä\u001fA?\u001b\u0017anD(°Hsn\n$\u000eR§Ärkx÷ò­Å\u0018á\u0006wÛ\u0013Èo]?!$\"A\"\u0011\"÷ð lÄ\u0005–ä¾qLô;±óðŒýó;^ð=M,±ð(&²À\u0013\u0000M\u0003ª\u0003ªÍü\"Kb(6tÒevö&h„ÌD}ÔeŒ¼<}TÑØõnzÞª 7º}óì\u0013.$¦‰„1Vå\tÇ=}5\u0001Mþü²!ì\u0005m¹™¼\u00136ˆj¦š€›ƒDƒ©èÒ·e\t\u0017§\f‚\"Š\u001eGœ\u0000ÑÜ%ɶÒÏ\u0010Ya\u001e[\u0005Jðe#¥ïÔ/;\u0015}¿:óöª\n¨\u001eÓ\u0013GÄ< 3mN¢¥¶«Ÿ°XقK—Þ°2ÞŹð¤d|9c\u0014¹õ\u000f.“J3¼«\u0002+™|°*\u0005Oôž‘ æï1²„/½©°„ˆ¬·³'´öÛ~ö\u0018|ïˆ\u0017šõJÛOi¹Ê·û† Ø<¦í>;°HÜVßÒ= &XÀî\u0015Ž15\f¦ð\u001d\u0006öƒÊ0ÊÀùl†=}¯~ñk\u001bÄÁ’4\u00171qø?ùÕºÏO,K,N¥‘EP\u001aÕ§v4\u0004‰Íøþú•³¥Êˆ\u0004‹k+*5­çr#1\u0018\u001eD\u0013Û<ç\u001bª£…\u0018\u0004\u0005´¯|{\u0012Ù\u00071¬‰ÇÆIje¥Y\u0003\u001eàkadž°–ÓÊ\t3$\u0000\u0006AßzŽHÇ·Åö­Ë6·Uœl\tþq\u001f5!¢×“EGm*°¥þ6¶ÔùWøJéW\u0003ÅN$p\tõ}\u0013ÙÕ/}°•,+:Ù\nµ'ãŸã²_‰6U˜Á|á÷\u001b*c»\\ÆU,g*ðÜÆl1ud™\t8¯à“\u0012-y÷I ŒÌxÉü.ù†e=Mɔ=Mk«\u0016?\u001e<çNd2o:Sò°\u001eÑX\u0014tÅÝjV\u0004ZTÃïÎ\u000eòê;èXúQÉ6ØØ91Ï=M1èpî®Å(è(P\fI³p¾[Ÿ\u001dy)\u0006$ì$ö®…K÷\u0019„¥{®!n\u0000P‘Úvä6œÐ\u0015’ÈVþCr¶>è\u000fqv\u0003É\u001b2ÇtD\u001ed@«=M¤c¶ç\u001f¨·íi«5A‰›,¸Ô\u000ffª/ْX¬‚š×\u0006ƒò*\u00012®\få¸oô\u001c\n{ë.»Üy½Ct EâaúÅç¶\u0001Gtœ\u0004d‡n\u001bòÔQº5Ñ\u000e66/\u001eË1=}wk*—l$¡J_!JÄ\u0011©m,v›À„p£re /7P$\u0015Ç.6TAE\u0019%8Ō7RÓ]Vú¨µp\bžPßGO\u0002ëüâëüÂGO2GO2HO2GO2\u0002=Mëe›HI@Kgg\u0006,p^›OSü5Ï\u0007Æyˤ˜&.‰\u001b+&Adëg=MÿšŸ‘O[¦çŒÀ‘\u000fmƒØa%\fÉ\u0019­V\u0013­8=MûŽ\u0005PNfýú’‰0uÝ'|!·‚Éñ\u0002jŒÖañ\u0005÷eWÂÏÍø4M;ȅ0 À\u001f'ú4¨àª\u0014\u001e¦~F>Dï\u001bo6¼.r\u001c]“gO:¦]§½„”Xhg†õ(Ýۂ†š‰@\u0011\u0019´¨¯ß£éD˜üÄF§\u001aƒÃ»y©õŽ@€= ´LM\u0013‰ô‚¯[y‡B3솆ÿºw•K)¢w¹ÆFY=MäՉñsÏGBGˆ'÷@Ki=Md¥\u000f”C\u0007k¤­3v»Õ=M\u001c÷N®fºŠÍ;Çà“³8M\u0010G\u000f>\u0004†Œ(’pÅ\u0012\t²fÌ\tŒÇ$‡€î2Ô.ÿ\u001b8ˆ…doÿ£©æ.oŒÏóSÛpX¡\u000bێ\u0019zÉw\u001e%šUµ¹Íî\u001bԭہMÁ†\u00165fg\nûîBÚþd\u0012Ÿâõ´ñŠB­,ײc‘ÒŽ\u000bPþq×wŠ\u0010À²©Ã\u0014= BOµ%DىϪðõ™üQqÀ5\nÀRÃgèˈ‰øÅ7IÑÜ\" eŸø;âqæÞ±g&:ã'sÆk\u0015®¨ÏíLàô\u0004oªH'÷:'\u0019\u0007E÷\u001ddf5*îx= £ñlí\u0002®F$\u0014\u0012«wmٓõîUT\u001d¬\u0017—»™åÕHFÔ]ò&÷\u001c*$Þ)Ê<\u001d{\\‘\u000eΘÍ?Çâ\u0016›V¹\"œpžAn·{‘²Î\u0017bu¾âaÍ«ªá\u0019\u0011éĊ9z_KW´ûS§%í\t©BÆÝ®¿µ\u0005t\u0005&ƒdùë³\u000fïú7ô£\u000bNÎ'ð µ\u0006\u0006Å©ïz0´™î¦\u0004êUtâKΣ¤=MdTr\u0019zU8\u0010vM[§óѳ±I„[‚ý¢wIÃÑy\u0014n·QÔÝ\u0011Uæµö\u0019ېðÀ¶{}IC°¶\"ë®ó ß\u0015›ƒ^vèZ\\y}\u0016׳BE6’°Èʊ\u0007’вJQ$-9Çê~>t‰m\u001b\u000bw¿²ˆŠ¦¨®®(|nÈÛp».„ÛTÀ^æ©É6•:\u0007ݽç\u0019²=}÷\tÕj\u0002Û¼Œ!ÙñI¯Ž.y_ŒüØ5ku–á\"P/qžÕ¡>F\u0004ˆÕëfâ=Mg4‘_’q|= lrö™RCD‘žö™zê]ÚæšKN4_©vÚè}ò͜p\u0003[üÊãᮍÓʃ.Æ\u0015i\bñC˜ÿ\u0014êÀž}2\u0005&[»ïmá­rÍ=}ĺ2x\u001e>ÄÂéèÖ{ÝÎæ—íǶáN\u0006!\u0002|Ä\u0005ώd[\u000e?9èH^ù—®µ;\u0019Z\\º¬yI‡\u0012ì\b²p>œÚ¾POŽ?\u0019@†º“ý\\zþ}\u001653)\u001e\u0015¡ÐÁÍç\u001f6 O\u0014#¤ˆ\u0000\u001fáÊcËc\u001d£ûÀ¨Û\u0002¥Û2¤y£ûVBر«£Š›_ÅcpF£–¤ƒŸËc=M¬ƒ¢g£(þf!yÛãO“\u001cí#\u0015·ƒm£\u0013ºÞñ#Ñ£ï:£áÛ©\u001b¢næâ\u000e¿ã#/\u001eàÁyÏW\u000e²C\u0001\t‡'՟X؈%¦\u0018)Ü\tp¹€ü˜C\u0017Q\u0016õãÓÛ}~¯$Oî\u0014LàHJ¸\u001ccø:«7í­döº¥ºXJæ9Ô÷\u001bÜÀ›ëé0þ“õ\u0015ÕÒÈ\u001akîщȺ–õK,þ‰H‡\u0007\u0001í‘3:?77nóŽ\bKÔæÈÊÖ÷\u0015*¯\u0018Õw\u001f¼=Moøllÿ8#N5£ØÔQ]Vóú1(=}•®ëdɌüŽ×üNihó.ˆF¹U\u0018ø†bg…³n\tûæyª(…âïþ¨5\u000e꯯\u0016\u0004;\u001eÞ_ï\t\t\t\t«Ö\u0016­\u0016&t\u0001Ê\u001fBƒ¨Å|’ø ö\u000e×P\f= 4o™Q\u001c\u0019…”&@²ªÞ= Ê—;·iª*[€/\u0012\u001b\u0005³‰<“{O\n\u001b\u0011ӊ(Ӄ\u001b\f&\u001a;Õ\u001b8\f„8üÂÓ\u0006\u0013oC“ý\u0015¢€¸ë€Ó\u000eQž;ÖËÖÒß؎Ä)¯Ï«fqF¹ÀÆ1È>›'ô&\u00169(T•j²õÚÙ¡%¸&\u000eù(”F\" ”–0†cÿ2S\ts\n\u0000{“¦O¦>©\u0010Y'\u0010®ë=McsÔ\u0004ØÞ©\u0003ú;ò}›°1¯\u0001‡û{VH!t;¬OÃ?½‡Ü¶q £Î eÃpH\u0013Xz\u0019ÿÞ\u0011¿žýxÓ\u0011ê¬ P‡\\šM'È¿…ë\u00179þÿ„}‚#Î'\u0014́ƒ}”÷»é¥¾\u0004åzt僵´„È\u0005A\u001bú.C„\\}!iÔjÛ\u001dAڌ¶¾;’ðOŸ \u000eÞÉ(àp’ø;åòXCy¹JùŒÛ51J.Nòvô.=M@ƒo”g1f”ë\u001b+³­1\nkË;´\u0010«ô7À®\u000bEˆ»¹éôäxT/½1¸\u0004xâ{Û¹ûÝysäzü°>;\u0005‰{e«\u0006j'S†ßMqÊØ>ÔÏzöp‰ýP³5=MX= :\u0015\u001f¸Š[\u0013\u001fð\u001b1·u1ºkĒ\u001bÌï¬v+FÎoŒÍ\u00180Ûçs•2Eî§tävòÐÒ×8Õ/\fž3ùŽ»¤.\\i8“{Ô#¤)eÎç³^Hšòtéæ»e½¶\u0004g\u0002፻¶\u001e\u0007^À¤g4xŽ³©3èô;¸¹\u0014-Ks—Á%ÌÂ>Ð= \u0015/³Åas8,}F9ÔRšr\u0011sh¿Ø³ú1j\u001eé ]Oš+E¶™ÛM9\u00114”%k’\u001c\u0016˜H4v|ß\u001f\u0001‚ͱÎØÑ\u0013L\u0017N ¤\u00040ãÀØj\u0016j®0 i\u001b[s+òwÝeD\u000b缸¶ëûº?k1Zp½r¡\u000b¢Í\u0001V=}\bOH\u0001V+\u0006?®r7šâÔúTÃ\\´æ~ÓY^‘\u0004É\\9<„¹\ta§ñ$‘î;òîâ3öuJ?\u0015­\"ã¡Ãoœ3ÿeKJŠ}T^f[ÞÖQõø|R÷©ìȌĎ\u001a랰Y8¦}òþr5IPò„8/0x¼v‰SP—\u0017|IëÞ(æ.ɇÕéH#\u001c2廗[_¯È\u0006\u001bHÇ·y”-1“c’©ÈQËàH‹(DÛËvšì\u0007R Œ„\u0013£Ú\"/u¡D$uDT˜Â%Þûµ«HÝ>f·!Ô0ŠŸL‡3¼m!_“À÷4{Çýàrá\u0019©-\u000f¯ú”Ê\u0013\bðÿ(jˆè€‹²ÅÎÃÌ\u0012ĖUÒ±T§\u001d#\u0004i(9\u0018\u0011í97­öºÛïH¥v•%!ßOWª·\u0017Ä~ãÀ½<€A iŽ¶…\u0018/%\u0015Ýز1PŒÂé\tÚ/¨Ueiñ$ÛÚOw±·Ü9\u0010C±0o\u0011»>ôí±ã\u0001¥\u001cPuÔµ·Ü=}\u0010C±0o\u0011»\u0000ãУ¶å\u0013Ëgí…éð\u0011£\"}3£Éx{F\"S\u0017^¼±b^Ù\u001c v\u000f„wsõ×ý½c\u0014ë=}P£i\u000f\u001f,Ðx'\fS¶¿£aDŠçH‚\bOó>.ü,LœD…º‚Lý.\u001cœ\u00106Іm…™¹ÿS\u0005~©'È3>§,à:FAú4{vìÆùHèâ\u0002~\u0005ëAú$çpq¬…%=}AúÐûV\u0005©¼rf9Ø\fy’Ñ0\\î«ï= ©Hܓ\u001d‰±(ä\u001fâ°6^€ÏO\u0000нڀ/}KŒZXÊ]w˜Òb\u0013þ/U}Ôn$q2èÚ3¡ˆdüzbP®µPÔ0‰Õ˞í6¡LK\u0015¢\u001doЃE¬= \u001eÎèt¬ZóÉ\u0014k\u0013+= ¬˜ý\fÀ²‚­qAå¬'þä\u001b²'þì[¶'2ã[6'\u001e㛯'\u001e\u0003\u0018Ӗ›v{Uj˜²^\u0013¸¹îŒ,¹\u0015<ªJm=MÖ¸\u001eʎ5,\u0019ró±Â\u0013.Ó\u001b=}t\u0016xHë2ÿ\u0011ë'±\u0016: ò>A6Ü3ÚȖùaÈÐ=M%\bŒ\u001cmٌ$UÀ°²åœ4“ä\u000bÝÞÇ8èðS\u001fæ\\ö>qâ¯}Ñ\u0006xO…üx͒¼É¦;\u0005çÒgÿ;\u0015»D.úâoÆ\u0017ì:Ñq\u001e|Š¨\u0010m}'¤@nÍ\nÁc[)•Ôp\u000eh¦\u0011ýI”Á­×\u0018Åà+(w9¥¨ì\u001cGkÁ,Í\fòש\u0004%t’°gX\u000bC°\u0004C€\t©}½g3\u001e¿´‹„Û±\u0010\u0012F£îÔòêÖú\u0010™¼ Ô\u0019lÝÂÓª±†FOkéûT•b–\u0004l›SO\u0014À\"4²äq\u001eǽbê¥,ß*i\\ô\u0019;S€‘FÀ\u0007ÿž$ª\u0003AÉÞF¸l\u001b”UKŸÑI\bè$u¾Oå]É\u000e×ʴ̊Œ´Tö>[çƒû ³Ü™\u001e¦dÍ\u0000O\f\u0013\u000f=}¿fW,u&Gâþ\u0010ø¦ì>N=}ù»F‰…\u0017½.Ö]MÌÔ¡‘c·»vTø0\u00162ƃM1†«Mø°=MöÙr\t/*‚R\nÙÔ ä\t\n\\.\u0007ô¦Î0ƾ¸êÅé#îmQ‹k;Þb\u0012Uä€\u001dJrr ý¬È˜ ¯Mo†,ܲìºBë®N­™äè\u000b$*{$ô²ùn]/!\u0018§\u000f¶­!ª\u000b¢OÖ³©oIz\u0010¤4Áeîô[&\u0018ãv\u0018ÃÉÎ{HÍë©Ò\\\u0019\u0018Îú4¥¥ß£»‹œ\u0016±WðNÕÔs{BµN\u0000\u0017+Z\u0010‚,ôToI\u00115yhÐ}naO,\bdèDqU È0q\u0013¶œÍRÝÒ4L\u0014Ü2¾á\u0004{\u0007å¬Ï]<º\u001f†\n}QÅÿ\u0015«^pY½Ÿ\u0003\u0003Œ.ÓÖv\u0017\u0003•UÓ\\)Œ›ƒ³\t\tI’®ÖŠ¹\tqÌ\u001f¬vÔ\u001f­\u0016 \"8w\u001c¾ñ\u0019\nI°ÅîHõøì˜úÝwܤßi‹%aƒ\u00050B*\u0014\u0015;Ó´±ï5Û|\u0019\u001bƒK\u0012\u001f´ú¥\u0010²IéëÕ!¾úÆURD՟J7ž\u001dFEz\\û.*z\u001flîAԓ¼…£·”Vä)•«zp\u0006!V[á»DB\u0001ÿx³Ãœ‚Â%:WŽÄËÙ\u0015¦ˆ\u00116ó{³Ûyµ2ã\u000b~Ó= !°'c\u0013¥‹þóí1À\u0004ëÚ2ÓG„«¦š[ÖÞm3\u0015M\u0007á0j»)\u000f†Ãæ\u001dÃæMª¼Û]ŠÂ\t+“1œ½W¬ŸµAEçRè\u0010̵·\u001d×GÃ;ƒK£ø‹àÇê=}pöÄá²kéâ@§oÎDEÂÈ«™F¡U\u000b\u001a…\u0014v¨bò^ÄÏ×\u0012í\u0018*Y¿KÝÛގã=}ÆÊ<\u001dMâH¡·Ç\u001f\u0013˜ØßÃ.\u0004\u0000JpÀ)ñ\u001d\u0017*,\u0011Ë)ШŸÏݘk0-\u001e<Òq™\fÿd‘\u0011\u0015¤\u00147¸¥ƒù¥…W'B\u0014.2WKà§Ìëz_و\nŽäñ!J^žÇÀf\fÕ\u0012‹Ÿ£…ìµÜ¡ÓÅë Äî€öÉò¥Òimu³Ô(\u0006ÌB邒€\"‘—,ßà\"]!í»1ƒ§=MèCf/WrëF\u0007\u000f,O(ÄCC\u00041Å*U$\u000fJ\\\u0015\u0003ŠìV]\u001c\u0002•AÁ†ò¬ÑÜ'‡Héô\u00152Z>,©ï\u0002ï\u001d·‰¶\u0000Hö¥Vڀ\u0005CJ\u0007AuĞÿ“Ô\u0005KG”;Ë\u001d5Þ¿*ðÚ\u0017ûB{½\u0000\frèJK+”ˆ\u0016ÿ\u000bz\u000eþ\u000bâ\u0013ÏÔx½†\u0015ãõ\u0006'»Þ\u0015L+0¶Á\u0005¯\u0018²¸cšG‰:\u0012ù= \n\n´æVüK¾ C0\u0011‚ÎSý‘4Å0= ší⠒-~Šˆ¥\u000bmÒRU…ì8c¹\u0015sž\\E²¼ïû\u0006\u0015\fn¦¸]\u0010͈60ÐÃù\u0011/Æìâ$Å}}#\u0014üÄ°^\u0018;¥ŠøKBÍùe…æ!™\u0001Ö\fˆ\u001a lB9Zþ O>£ñop\u0012!= Ö\u0012)\u0007T]ŽÒ\"•>(Š¡üâ>?\u001c–¾ !zö\u0010ùÂ\u001e†þá›Ta–\\\u001f‡8 LI¾ºM‹Ä¼ÈÍ%Iãù끞Âz†^Úb\u0019{½æ@\u0010\u0010å@\fj¯®[ÖrŸ\u0005’Åñú%®d\u0019‚m‹FvãüÓ\u0007Ç},/3ÓÎ\u0005r¾k:†>Dx²tÁ\u001a7_ÔfŸ²ÖJ¿\u0017=}òޑÕ|AõEÒ*ù\u0001\"O&\u000b}¥Hˆ0çôWùØ\u001d!\u0019…\nÇs®zã4‘æ\u0012œ\u0003\u0002\u0006r„ ŽPÅg\u0015û›l\u001eâɝøÑ@\u0011 þ~Ê°¶¨ú\u001d’퍾Y Y\u001bÓ·¿~a…²Æ\u0017Û\u0001\u0005іS,‘|\u001aŒ6ól\\ŸÌ—PË_Vy†Îù ±J¥½„\u001bræΕù\u001dìT®G[ù‰BnWôËieºNúûi¨\u0016°\u001b×@S¤•\u0001•‘ˆaýP?ÒdçùN:\"°\u0012”þ\u0012Å\u0018ÿŸ[òœp\u0000™dÄ\u0002PÞ\u001102Ùâ¾Þ\u001e†\u0016אŸŸw\nðƒAŒ, (–<´£é8oŽå¥’\n+»«4D‡¬Ø¥C¹À»ÍÒ°9KÓp*ÖB´¦\b\u0004£\u0019¶ÑDfœ\u0005’Eƒt8ÔÎÍY˜0Í\u001fEW¢?Ÿ\u000b>ø¸\u0004\bãè#Ûº?b҈®íq¯~Èëî·õ;\u000eœ‡î¼P£x\u0017~v/Ç\u001c!\beÌ·5“Šî4_7ÕÊòÄÕËu\u001dPÔmN{ô~\u0014Ò:!%ªõ±Fc3ÑH\u0006üµ\u0018ç°ÅF\u0012)wf8\u001e—('¬Dc=}\u0004ƄH'\"må/Á­\u000e\u001e£7p|©\fÒ\u0014\t\u0001\u000b=}TÍ\u0001}\u001dœ¨\u000e6†jÐáèÔÝy\u0006h¸È¬\u000fÔz®1ô\u00022âô«+ùÏ$Ý\u000b 0±\bÁ™\n­j\u0015›Œ–P–¶™\u0000\\GB¬žÖ¾š\u0006\u0014OÂÖù\u0005¨½¨¸$%EX,=}ÉÓ(GAӓ=}8Ž%ÅÓmÎ= •Û\u0018@2=M\u0003Ö\u0005õ“\u0010Ézr¹ý»Z+ïuûGï;ï&#ÇüüH]X•ååd¨r¯Œ*É՞\u0004ñéx&*¯ÕX\u0012\u000e¸ç7N\u001cO k™CaàOB„zrSEs®8·Œþ{:4G= —\u0004æ\u0019ô‚\u001d«Ò\u0015„éå©#EÜ\u0013u]õßºSÑÍ£ðÙs¨\u000eG\u00006ú‘!óñ‰gÔ\"\fÎLiý¦\u0000Qð\n\u0014¤º,\u001dD\u0017Ã'óö¼Gâ{ü>Á’¬¹(¯â2©ë£\u000eЄèïD\u0014I+Àgï\fk7iï8¥\u0015ؔ“\u0013í3ÿð(—èsnĨÀ†Ï•êª¦ßHAu-/\u0012ë¦ÜX'mÞ=MÎçnKk\u000bf\u001cõMÓ<–\u0016ùŒ\n͍Æ\u0003EÒ̚®f\u0015ÌóV\\È!”Óñ\u0017Qq¹^4\u001dSyáèÏ\u0012-=}<\u0003¹×3ý\by\fÀ’ ·ðmå6·¡­MI¾<\u000fVrº2F}Õ²jAŠ\u0013¿«Ê\u001cðå„w°F+i×?_˜}AÒð(ûï~wÖìzW|Ô]ÇA¥ˆ³\u0000l<@gúæ©GŸNà­ß·v›´Ósx)™<›ýޙƒóAЗ|d4\u001ehÐ\\k\n'Î6­ób\u0004ö¶Eaó-”œdcóöçšë)<7*\u001bã\u0011\u0002kcëÌ·ãk·ۄ¤\u0010\t£\u001a·q¬²\u0003þŒ?Á2ÿ²m\t†>L š”ú=MxoèÌìŒÎº\u001d?€LŽ=M¬\u0002V·Â÷¢ñ÷¢0<èäÇå“Áü—ðxîG5,ñi\u0004¤Á×\u0017×\u0015¿±\\rˆx\\.)¿À¾c{žù\u000eÀYKž\u0004$öGÍmÓa°ÿ)\u0011sJÒCÓØw‡\u001f\u001aøè²1yÞ±µü·æ«wê /¤\"+œÅL‰\u001eœýÓª*¤.\u001fÄxȂkâw%¦6\u0005…eºå¿æÃ.|„sƒ!-07ê¿#ð¸s*IY±'UZ¬@®óõ\u0002¦L·Î¢S&k@>ø\u0011þ8g{O qèª ³ÄE&\u0016\u0002õ#«CIþ\u000eóö‘HL)Cd±äbãûÁ úb¾àÇóQòOõ\t»\u001e¿Ç‘|c>/ã—\u0014˜H–û7».\\ZiéÊÌÔÐ\u00021syìæj\u0006ƒÓ¼–Ô¤•dŸ—A·Ä;ïpÜÀãז\u001bìW7˜€·\u001a\b[~\u0000yäÔ=}é3Õ0¡ÀX¾Óqä@>Ä{°÷¯ÕøÃ=}Cã×ÿH»B»ÕB=MåÛ¬o=}ó'C\u001bä®ö\n'=}=}¦M…ÞÖ0Ts*he–ó\u001bÁÃt\u0003ÛVXÑÔSB+¹f}=}9”íÍþ\u0006gҚ&\u000fucõ›m6\u0000~\n\tÀH÷\u001fý:Q\u001b¼BÍ)³’#Ì'žDDšI,ˆ¨pDIºUŠ=Mѯ\u000b±w'A¾ì¤ì4K+÷ò¤ˆ¤Û·&\u0017æ{«§ô‰:|U®õ\"ûÿ\u001c~S+Yɋ¶±Z•˜|á,NÐoGIöç\u001fJ\u001d€-°º úI\u0004É8·Ù­®¡\u0017\u0011¹'_,È\nZ±LORŠü\u0010\fVpêh«R\u0005Ü\u0013\fIÀÑ\u0003¥\u0005o騋y㵤†\u0016æº\u000b±d\u001fÒ@T¨\u001eàNۋ¶fòn×ÕçYӄ} Ö¶Ûø°\t]_¤€\f¶ˆn ¥š†*\t\u0019°\u0010Þú¦=M/\f^N©òߌEŒ®Ý†ZÕs´\n1Wޔ.«:àÛ¶\u001aU\u0004MÖ'\u0006ø*TM̱ö딤Ïv]zœ‡t'I„5\b=}¶þ‰^cˆ\u0002ì^Q‡Ô—ÃÏöv\u001e;ïÂ-rŸ¯\"\b ;\u0004»º»1è«[&@»R=M]-„*àç½µ×µä\u00067כ@\f‹¼=}'ÀáŸ\u0005æÄÃú‹\\Näe-^ö•\u0004ìý¨8§pöè\u000b\u001fH\u000bð£º&ËÆ\u0005dt#Àȁñ²²\u000fw5kÊ\u0016\u000e_^RÓþ%c}ç:—DŠ6ƒN¹ø-+Nuº\u0011·‰cºY\\kÔp]Ž\u0005´\"É»K[¬‰=M\u000b0Õÿ‘ÖÖ\u0010\u000b×½¦)DÎ\u0003´{\u0018\u0011Ôºõ´šÍm7º©l¸<ÞÎdú*Y@\tŽ+ÔG\b;Aº5*L?¬\u000e/Ðý˜3ŽšUï\u0015UÇkh¬è£Q1\fÓ\u000e~§ÏççŽ,i¹Åõxs£îþÀP\u0019û÷ÀoʑD6¬Ý\u001b= È¼DýMË\u00013\u00144²C\fŠ^‡¸¾£±¹hÁé\u001cKñ€˜ózŽ–\u0017¤/StÓ¹weP—ͱÆB\u000fů0\u0013²Í7ñ1ôfãËßúp[^pô’\u0013Ü8Ì2÷\u0007It0²‡>Â.Ì4\u001a\u00166bà†­/”YÀ–=}ŒáånӒ‘ÜûôQ\u0014ɹcœ$dJ´d*+\u0002©yt\u0015ç¾ìVY1´©eo\u001f?s;’þÓ|i\u001e}\u0010\u0015kÀëöH‚\u001c§‡ZõFÜN(µŸâ¾Ì/C‡\u0000B,\\¡g®\u0003E= z¦G\fʁ\\ÙZN¡ñ{:w\u0013”WQ½%zÎôÆýˆ\u001d:XNü®\u0018l2¾þ\u0012ï-\t€¼âë*\u00126_E.²Ö>†¯§Ñ²«lÕ bo”ÿŠ›\u000eT¼=Mô¡¥5»\u000eDðs‰\u0012ìz”7÷,Ç?]¸vŒÿ±v[Òð­Ò\u000fù)\u001bh?/Xði³Ù¦î\u00017Áš%Ë&ü\\×/–Ò\u00076@³xÈ7=}<ÂOR'ŸrJ!3ueh¼#H+[¶Ð!ã¢Ö¼È³\u0019ˆ¶»½±_Þ½‰÷Œywñ\u0017&C§&Aþ¦bÞe?Ä´\u001ejãÍÿ•µÁÇfø¶«ÜèEÀŒöñ(ÀâèèéÝw¼ ¦%(\u0015Ó?{Žò¥˜kŠÄ/©yxÓÂ;Š·•\u0003æ„74\u001e‰Ö5\u001eٍ®jëËÊҍ>#g¬\u0005ûkMJOŸËHIÉu\u001aTä‚(tZr»“\u0012_‚§U‰¥_\bwßڂGNE‚m \u0011e(\u0007|¨Š“,=MYz»¿Ù™I*‡èf/k]i\fjÿ\u0019\u0005&rpP;~ß]\u0002û4Èv¹HC\u0006a,J\u0010y1”Y+LÙT((CÀV‰ÙS‰ý1\u0010Ð8Þn\u0018ÊÉÆ<ÌòÎ'¹&ìT…̸BÖarÄÿ\u0010îˆÝÇ°¼9“°¨2¬ø—îÛ½³q\b;Ô5rë\\“ù?€ÆÍâ²x©çè\u000bv‡\u001b÷B\u0010A©GE)ãà\u0017×\u0007›AõüP\u0012‡Ì\u000eÂe÷jIÔ鈁4pè\u001aU\u0018v=}\fþ¾‘¬\u0018œ;/ùç4\u0013ìô\u0019dzóÃÐ&³\u0017urÐÙòˆò\u0015\u001anU\u0016mh+ÍlÝEí¶m\u001a\u001b„¥\u0012å\u0016ó!\u001aë¹\u001egK€áQ¹Š…t­jR…ª÷ÃÊ2\u001aŒíd\u0005¿bm’ËrÝ\bÎíY\u0001\u001b­_»o\u0003\u001c-o\u000e½;ú\u0011ÞÔ\nDSfí,Lú«&ÂûöW\u0011’'€K¨Ò\u000fâ­IÌ_B\u0016†zQh^9šF˵éW:=}ï\u0015ì×-²Ï\u0001ðÑær€–c€üù¬Ñ/ԗÃDEù\u0015´“i\u0001¼QP4%Úíö”ð]¡åŠa–E×òg$€ éÇbÇìUbÔ¯Â×£¦Ã£c™lê¥õ3)\u0017yÉØïn\u0019ÿš—Ùïn\u0019ÿš—Ùïn\u0019ÿš—Ùïn\u0019B°M]ù£)DÀˆñc±[^Ÿ\u0015ÍÜ2ÃÌ8\nv†±\u0002l8‹22)vß î\u0001óÝ\u0007Ï?xÎ\u001eÄwêÚËéÂx÷ù…\"¨xÆ\u001d\u001aÑëÞ-ϒ-ü\u001e^Çgæ,r‰x\u0001\"Վ2ípÔ±­Y}QË&¶g\n\u000boñ\u0018Û²[K(\u000e\u0000\u0014ý\f™â8¬—Z\u0006¢‡Ò¸Î&\u0005\\\u0000@¿®Å„úÊ\u000b܂ª9ƞ\u0012÷.8‹VâöémÏ\u0002\u00128pO{ÜT1Oâ‘p¬Ïj=M9Â= \t*7\u0018É\u0007²\u0010Ð\u0010Öñ\u0012튕ý\u0014}\tµŠŒº-‰VžSlT\u0016üuŠ\";M·y\njƹÿ\u0001n±1=Mꁄ&\u000bOŒÛ½\u0012‡íf·\u0014\u0017 •â‡T09*ÂD9\u0012qôq¾—\u0000ž/‡ŽatŠ6x\u0007…‚¥”u»™\u0017=M²–$€“r&áÛ߁¿fœ\u0013\u000b†¸{\u0011¤[Q ¾ß|±*‰q'¢<Ü\u0013ݐ¥ |‘\u000b{ƒ06ô¡ëM±e0Á\u0004«Ì,£œé\u0006j}û›*Ksåʤ\u0000\u0000¶T\u0000Hiý\u001a°}\u0019x\u0005ã-¹Ê]\u0013ﱅ;\u0013+\u0006là1gR¿\u0010ÎܙŸ‰\u001b€g”²*ïY£ÝiÍh+hém{OÿˆJ^\u0013:SUú4óˆ\u000eÉe~ìo‡ÎèDö]ûÁœ÷\u0017\u0002xDZ¼}4è9±\bޜǙ‰= ²î\u000f\\+ÈzR\nY²šV¡Ÿ¯îv= l}\u001ba\u0005û\u0000iÍ\u0016>t(= iWƒæÊÝJØFfM\u0004· úCát¶\f\u0018;¦¨\b\u001cu<„\u0017éQHó–\bwƒ]=}¯uÚôõZ\u0000‡ ƒ£(2òD[]ö\u0007\u001cØ.™‡ti¸\u001aË9âDÀ®\u0001t=}\"átnPèwŸ{òý<øòb= >dÎóª\u0006&°ƒ·\u0003%\u000bšY;Úf·‚P]ƒ^\f²Ë®\u001e„,a+±½«ß»\tŠ)d\u0005eë'‡ýe\u0013+µ•\b¯\u0000’0ä~I”«\t.Ø\t6ô\tݸP\"ñj5–Vó‘†#¹0\u0016T󐯔.Îïêpêö3ªMú\u001dDxÉÂ\u001bєæ\u0012Z£Ï Î«¨Z%„Š½-@Òf“\u0004ï§õÚç\u0005”fË÷wç\u0006H\u0014Ïmð…3~³*w:Í\u001bÀ-jñš§WÙñ'\u000bűûM\u0004\u001e\u00010ä¹½;\u000fwƒ\u001f\\©\u0002j=M„7Gh ~ýŸ9\u0014\u000f4\u0016ï\u0016…[Bk\u0014\u0011¾j4¶¿FR\u00147Š\u0016[\u001fƒK͇»üddNÜ'\u001d1î°¿™ð¿\u0006¡\u0013\u0007ìmÇð¢x¡j/øù9n/Ož‚kXAš,Ì.í\u001aÌÀ\u001f-7-†\tefzñeTòΨ–öŒ%,î$\u0013’˜ÂdHîÊT!Kÿo¾\u0005ʑƒÒ±0ûÏ!_Vô_s”3{o¡_ûX“1\u001bƜ@[֘:\u001bÖbÈÎS\u0010f*\u001a\nŒŽªÕ‚t\u000f\u0018iÛYÍ\u001b©n€Ø2Ð諾\u0007R\t°ÈîüzÂN<ìZÐÏ\u0017ŒÁ™W¢´™GÌ&ø¼\u0002\u0003Z\t‡TjZ’U°\u0014¨\u000fHv\u001eÙÕO3ØrŸh¥éÙTc“9—= ¤H›XI\u001dIט\u0015ú-\u0001v.qéšJo+dw\nŒ«}?QCöHçI†¡Éz·Þ\u000esϝ8ˆë„‘–\f\u0003º\u0002Ý¡È;9‡èt'ö¬\u0017„ˆ¥]Ž\\']ùÑJ#xÎìØ\u0017Ќá‚ãœnYsÑY&\u001dŸðÒ’ÆŽ\"±4PvÔM¾=}éÝ)ÊL\u0012t¼Õ\u001c;ìÔ<Üw‘“¸}a˜½\u0000ý\u0018.éÐ= ê¼®Átêöu“º×=Mt¾mÿ™$ÑOå(¾\"óqµ}\u0015“\u0002-ìNG”Š=MŒwH©U™5\u0004^\u0012\u0016o­\u000b¬Ô뺕\u0003 ‹©¾\u0005\u000eCÔ\u0015Ÿý\u0004=}ú¾¯\u0013\u000e*±À\u0003=Mz´’K։m^eX\n\u001aם®Ôøàԑð\u0012»\u0002Ôf,=  \u0003OÀ#I\\&ƒâw¥¦=}°ä2êæ\u0004Tö14AÆsL‚ˇ\u001fÁ09\u001eO“\u000fYØ݌«ëÞÌ\u0005$¶äx£\u000b\u001a/(\u001d‡\u001b[€?£†ÜÙ+\u001e\u0012.ÇRìSŸ×¼¡Ñös™„÷;TŒû\"\u000b©I‹r%@r\u000fÏmTj\u001a6Ü+\u0017=}.Ql1\u001b˜q¬L@\u00003×h¸´¬\u0011\u0013~â²vQpj›²‘óù\u001ecõz®-ف»‚dªQ\u001fTws²Ú½ŸsRsÂê©cŒçÃiO¯%R\u001eÓ\u0001¯®ä\u0015\u0000«\u0011\u0002¯(*ݯTFftLÓ¿ÖZé\u0003—;ëß ¿¬YË­.^èÆÖƽ\b·¦h»Gï.(–æ,\u0000¿Q‡h\u0004¢\u000b¸ï²MÃ\u0012¸² ‹\u001b?Î+j—4¬Ë\u00018# BµS\u0015÷ÅÑÒí'f ç›\u0019ófcô°j\u0010=M§¹ëzy½Ë\u0010×»7C¤H\u000bS™H©9Ýý{°x….= ¹€…Xs~LhHÏп\u0002\u000bô•î.\u0018É¿Ñ Û_§1?Œ¿½ò1®ô¿nº\u0016wPŠ‹>otØ(FÏjŒn¿¬ZÛ¿Á\u0014{âŠû”9æ™<†\u001aŒ‚\u00051Ј¿Ê\"í‚NÛyx\u0013'w\u0014÷z\u0016ûÙ\u0013ûØ\u0015×\u000e…{È\fš*fò\u0015ã\u0015ò•øõÌ\f3ŸœRTÒ$\u000bOU\u000fÿ\tG\u000b\"Þúôž@ü\u0012M}\bÀ¸þ\u0007\u00009\bI/K\u0016õ™= õŒ¡Å\u0000|\nö$UèÊ<“\u001bùÊ\u0004OéÑ;\u0011T¶—\u001až®(Z¹®À7>'úž±¬\u0010\u0007‡šåžíÄÒìêÿsNP›õæïpÁÇaa\u0005Ì1ÂÖäoVAÈ1í\u0016ºF\u0019',1p[›Ñ\u001f\\;X\u001eP\u000bQZð5Yú¯\u0002\u001eï7!íOyr´\"È\u0002ºNÅÂ-ºa·\u001a€žÏ½qѶþ\fxAœ±‘eaôò\u0019ØWÂÎoY\u0003Y êSÞ\f­‰Ô®OI= °.¢Ü(àÌ@p¡x\u0014\u0004|íòy\u000eø£vR²\n\u0011î÷\u000f,Œ¥ùú= ;НY?X¢U5È:R\b\u0000°ÙTۜÙ\u0019o\nºÞ\u0013\u0017Ò\u0016OÞkU‰Á\u0006üúv{·\u0019-pb\u00191 \u0016o\t2ŽÒV\u0019jRT\u0010aZ<&Ÿ¤ö‹ˆÖ\u001c”\u0016ُp¾yŠxêùžˆ¾~zóo/\u001dúÓVüxˆ}‚oÇçé¤@þóp\u0010Àí\u0002Kòî\u0004ç´Ðý4¢ Ù‡a^àð2ë‰v^s²\u001c\u001aõ\u001a‘ì\u0012\u0018sB}a—_\u0005£Ü¢\u000eñ=}mÄ×Uìñ4ÉF\u000bëÂÎ\u0015·8—f(tF¨\u0006Kèm\u001b- \bæ\u0000þòIR¶JupˆÖ‹€|Wbfÿ…Aq'V\u0011÷\u0003äÆ¥_\fuÀâÕ9ªô“1ó\u0015Ø+G^»íN÷ôè[=}5ÍÛ0m\u0001ë:›\u0005\u0015TüíÐþÒJ¶Òú3v„ÇM-\u0001è}bzóôJ\u0018×E\u0007àðn~ë9ÞÙv*KP\u0007Ö Þ\\°ìà0\u0019vE…àg’’ÈF6žLŠ9&\u0017õ ;U_2uS\fjlcÝ8K\u0002݀\u000b\u001a%Y×ÞèêÍñö|JV‡\u0000\u0013A=}\u0011\u0000CvºV̄—è=}\u001fŸÕ\u0018|Bî\u0012\u001aÿHØ>QöBXÚ\fðu\u0010]^Ñ€\u0002\u001fBùÐ\u001fë0ŸÔ\u0018‰œ—çþã= œ\u0016=MƒÒl\u0014„\u000e½U›Ð(Ò ò@ù\u001fGÑÎâö“=}RGV„Þ= ÿë\u0002Yº6ŒAõ•€\u0002ñ\u001a²ú33•.uÕMk—ï°¨\bytd?‚\u0017™íÆ\u0010\\™*¡ÅffRpƒ›= Üq \u000b$ò(Д_몾-\u0018\u0004ÿE*\u0014ȝ»õ\u0005#Þh)\u000b\u0002\u000f'9èi{f§ZaXeÒPô¡T°_\u000e®žzÓ–\u001c\u001eß\u001du¤\u001a‘>%€+á\u001c@³6€¼Æq\u0017$æ=Múßâs°Š\u0019\u0017êl]Á+ü™ºIəç\u000bûÒߖ°PæÂ\u001b~=}\u00044EÒA±*\\@žæê\u0012£\u0001ú±ãdj$Ëbâ« Ò;ƅ#¨ÁR½/ÔÔæ3†Ý·»â¯ÚªmÔp\u0007ە¢À1¼œÆ\u0013˜oë¯{ß­¬tF4Ünµ\u0012)ü„N4¥²aÌSœ-ØÏZÎ4ÁÑCqé'\f\u001a)∯J–«•ðã'š»ç2¿®N\t†\u0013‘¡Û7\u0012¾2²A¶So…\u0012_žœÚa\b}\u0003:i¹0\u0006ÉåRhÇ\u0007\u0001@'ù.Êæ\u001aOÀ5¾“ß\u0016­õÆJE^hח¢×°ÚZñêF€¯\u0011=}$¤Ê\tEFžÏ\u000f\fؾªV\n¦!™“\u000eŽ#Qü±;†Ôª€˜‰ÅÃ\bÑ\u000b=}ÆY8ÞåXy¬\u0012*ۆiÀ\n/“\u0018ä\u0012<ÎÙ\u0011\u0016hU\u0004\u0011› p°âÀŠÄC\u001bÁßx–”}kÀ¨~€ÔFbªI?—c\u0010HÊ\u0011‰\u001ce\t5º\u000fÂ\u001b„qï\u0012ßmš)F= ²_– óÜfº©š \u0014cy²úR›Äë„2ÀŒ¡;\b¹#0þ¥ƒQÂ+ïøÃ\u0019\"²ç¾*ÃWr°e\u0004.\u0003€·/È°d\u001b¼%ÖÚæÃZ«h'xDKÏ°h;L\u0004Óò¬fü= \u0013\u001f—¯jl?\u0013—Ú0c›ƒ«»‰èÃT\u0006Ç\u0019©çÅÓÞµèéô‹Œµ¨&\u0006ôëP5Q\u0006F\u0004YÕ½°œt{}ЩøÁԋ\u001dÇ©hÔkÀµ.,\u0004Tëq+h@UûÁ¿* ¤\u0014Sâ·*Ғ†ƒsè(FÖø›WåÝÖÿùDðH­é¦†ô†¿2ŠN…4\u0019ÔÁ=}u\u001bïA#±6¶“ÌÙ¤\nšÊ\u0003€ §gyÇÃKúÅeÊÉÅÌÏ´ü>¶D6@+3š,K=MQi!=Mç{M´Rii¸=M·Áôƕ)½•Ò=M—\u0012I$ö²°\u0011Î×óryÃÍç&ön׳6Ø\u000b\"\u0001]ásÖ.©ÎŽH\u000e\u000eÐi˜x\u0005Så®8@¹¹–WS¬z…åЕÙ\u000bԋ#¹Ðò\u000eÔÊò®VjýÌ ÐOíXûÿR(&Áêé\u001e1ðàܗÏÛ¯Ðܙ1„[â<\u0006&àjòÚ1\u0015\u00021x\u0004¿²…Ûq\u00151”nÜw\u000eÛßÚ\u0016w‡\u0003žÜ·êÜ­vÛ\tB‰ó\b\u0015Û\u0002‡\u000bkˆ;\"&\u0006|À1‹ª¿&A\u0013¿ÐƒK\u001fd\u0004•é­ž1†—êÌaÒuž\u0012¿\u0002\"ë\u0004-ÛíîÛ\u0015mÛ¥¡ˆKQƒ“œh\u0014a5FO-fK)FðÐê6‡üÀjq\u001d1ÌbÜíǍ©Ì_ÇW4Æ\u0002Õ[,Æ\u0001\u0015ôõÆÔ¢f\u0004ÒôìYëÕÇúȜ5²5Åì(GýõÒ\f7× ‚\u0018¢¢ë\fP½€\u001c\\4xj~\\ùä(ïTC\t:ÅÞDëtœU<\u0018$o|ýt\u000f8˜z2Œy1ž®OhÕ\b\n2ñm/\u0018\u0015ˆR¯Þˆvî¡m‡\u001a.8\u000eÀÙ̈z±Ì†oÖ8qΑ͒=  R_\u000f\u0001H\u0017\u0001êóÞW¸}'˜³ÉX׺\u001d=}ý¬ìžÉ«®2pµ½©\u001e«¸¹„%†\u0004ÑW\"SÿÛI^ñË÷\u0012¶‘lš¬vž¿º¥\nA¹]\u0001m´‰›‚³]q\u001bÇo2\u001cȗ\u001f”è;PͺÍÀ¨\u0010\t\u0016”GZa[!{¢Æ«Á£f£#Ã#pY\u0010~Ÿ>\u0010¾X\u0010~Y\u0010~Y\u0010~Y8\u000fC€^ZtVf\u001e\u000bŽ.æÇJ\u001e%·ªrt\u00114N—\u0013žÀ½Î\u001cãú%BvS¢Þ]5 8]: Hà\"üËM;>uÛ'Œqá\fýÌQë*œø,ðï6í\u0017\u0017,Ök3±Z>u—¼Î½9XF¸°ñ\u0017ˆFÞ¬º\u001döÝæ£@@²ÄÎBë}m¼êéz5\f~i¯Õ@kDP&(GÜôéF¾=M‹–Xé\u0015ƒ\u000bF\u0015’\u0011½>ÀCl\"\u0006÷6Úð\\\u0011.\u0003l^·œ\u001aú#\u001a–=M«˜Pèðt©[j\u0010é\u0014ƒÙŸ–|,Ê!\u001eC½aªձ\u0004\u0000fô_>â$i†\n3•œß)ØÑ$ژÍÑQa,>\u0002‘ãl°{[‹ÄM»AC̆Ü1\u001d°¾b\u001a\u001b\u001c‘¶ñ¨!hðŸ'\u0013dÂ÷\u0015Ô# À®\u0019*UF2(¾p\u001eœÔõÌ'¦™\u0005\u0003ƒ9å{à܋RögnüÈ\u000b°Mƒ J½oýדRü®‘P݃y&¢+¤\u001bº¾f\bVÌáÂÚ*§ü\u0005–\u001a\u000e¿³X(X<à×EÀtw¯r0\u0011K]Š¤´äÒ+[žCMd²ñž¦4žÚ»‚Àæ\u0014RÆ¿íúE\u0013ëÄ©Þ­†c\u0017ß´î\u00076ÔýA-~ÚÕ3\u0010A¨r<¿·V‡†ìäÄ\t‘8\u0003ÕC¯Zñ÷ÅeQ½E\u001ec\u0012|£Š= p{ƒ{­¢vÀó¬%y6\u0001g:˜†Ór³Ÿ90%|\u0004¿š‘ò¤0֛NÙ2¨%ƒ¤Cu§£c\u0003YzY\u0010\"\"‘yY\u0010~Y\u0010\t~Y\u0010~Y\u001eÚVMBÛ\u0000ÊÇ;ÂÇ,\u000bS×\u000eÒnÓÈô9Zvˆ\\œý$=}ýè-yÍVnü(P¦xë\\Fñå<©Îz˜ér^²\u0011¶\u0004•\\âmU¦L]ß«P-dˑ½mug\u0004\u0017ÏÀdƒ#4ûÒ½08n»r½ê@€\u001b\tñBë9€Ç=M\tñ„Cn÷׺ðŠ9¢¯)Ñ@h3'|ÿ‚Ô:\\\b–û\u0014\u0014¤A5.[¢!Ô¢éæ\u0002ú$?\býWˆ=MV’5Ñ&ø—¼\b=McèPH\u000b\u0007ÒF˜­é˜\u0002hêzxÏ~U¹1\u0018ÿ \\$ÝPð»9\u0011‰€NP\u001bo€qc_À{â~h0\\\u001e[ù[º–Zž4xÝkžæÏÚße‡ðj;N\u0013%æaʔ_\u001b=}üöqµø\u001f1ªbÒS\u0010~È9š= eigNÿ\u001c\u001eÀ^Øڌù^pwF\u001aÛ[ÑFʂ†Km \tz‚Š\u0001u¦Ù[àgŸjÆ\u0011‚ ï•DÊûQ\u001b-\u000b‰Ö…ªß\n[›®mn\u0001ÓØ¡Èø‘R»\f›=}[º\u0012\u000b]—9ú\u001e‚”\u0006h\u001e)o¢#‹2ÿõžg-‘ò_L›/ñ}º™*\u001fHyŒ¾È)‚Ô\u001b¢¦˜žâtÜ¢.o bl{“*h\"4?¢2춰\u0014Á\u000fgÂø\u0006mÈï\u001b~\u0005ej­ö=}\u0016oSî×ÊÛo%<á9WÛýD\u0011\u0004p€âً Y\bžÎÞ%Á}\u0016–I¦²ÒÝ5\u0018u,Þ*?ÜV~¨nÐQïþŠéz\u0015\u001aw˜àÛDŒ,…ÅÒ=MŠ\u001bv\u001a)²ZɞÕ\u0019_ÂmF <Øß#ò&¦<àëHad¯¸e´Xóm8f›P»q֜«o\bÆ\f:1…]÷×6È\u0006ó7+Hb\u001b¿\u000eh…\u0014¹hFÐíCPÊ4‡AÇu\u001d5´˜GSÿ7->Ë°¦T¯=}hÕ¬·reýžÊl¿õG\u0015ô:l†C\u000fá\u0014\u0015¨OøËG÷T+ÚmhOóÐ\u0004#\u001dÌp½\b‡˜ÑÊ= \u0012¨| ÎL½û(—3=Mi°N\u0004˜+ý\u00111Mf\u0011ïàȆ½»ÙT4Ð6>\u001bÞX¼=Mò\u0016­ù„ï.Fq§¨\\ƒ^y(ò9QËI[UH@¾~\u001e\\tžP¾pÍ,a‡ñÿ/ªZ\u001cÓud6¶ÖßÜud.a= _›•m®ž\u0005\u0012—ñ\u001eVÚ{ªŽøá络\u0005×e:؂\u001fœ\u0001†jBî!/“j\u0010@â(ɤÓÅ#Ž\u0002¥\u0013K¯g \u000fÃR¥&Ë\u0001µg£p\u0003-\u001e¨–•ìÓqŒÄû¯„[\u0018Ëù\u0006å\u0014¢½m>õËÜ© fë>¹iœb\u0004WK°ŠtŒ\u00137´\u000fA´då0ëe=Mż\u001cÕ5$‘ôÛï1EzšË\u001d¹ê\u0006Zâ=}ayÔ¯½½&z.»iÇhÕ\fðÏô\u0000†;Î0\u0006t(ÛÕ= …üØÔA؆lrï\u0003˜)§9\u000eÉ5Ïì\u0007i<çiÝʄ×ŬtvǕF5\u001cÔÒ¼n‚l\u000b‡JÓ\u001bö­Ž]GuRÄ8Ò*õtÕî†åZןÒG´„7q*$Œç‚íÊgÞ&ŽÆÖ³ßoƒúãɦj\bU‰ìÉà&V\u001bØá®0Jü\u000f°mIŽ[\u000fÝám\t(\u0002±Òê‡\u0013‰\u0019±<‘\\\u0017Â3îgHÿù|‡Tð8ê˜tßٌŠVKÙÂBPœwXÑÃË^#X®®ÛŸa#A·\u0015\u0004÷ÄjRºõ\u0011þg¯ü´•àè_\u0011úï>\u0005±oÐi‡èÔ¥’µÙ™Ñ„4µñ\u0019ÌÈÑR7M\u001cHûßÎH2þ¼àø\b«\u0019:4€E¿R›\u0015y2̊h\u0015é®Í\u001bø÷dn\u001c¸/\u001b÷d¬^íù×÷…[]5gZ8\u0017•KåÏNåYT­€òø·\u001bú&E=}f¾N\u001c˜D=}ðÁØ;ë=MSþöfh:Ø;ÞwuHI9\\®=MÜ\"J9è)\u0018»‰w„Ôa1:ʎ+\u0010\u0000ò\u0017ûàò]z†[TAQR<\u0011€c„E©Éð=MCpL©ïý×\u0015ÈC´\u0012ìÆáî½\\\u0014V´\u000epÉW\u0005=}ûwF,þ\u000e=}{™C,£àÄ\b”å?\u001e¬<= ék‰\u001eå‡ýÅQç-[R³Ô\u0004T+Š:èß\u000eÈ\t/2;>ø\u0005qò·ÆÝÃ\t†ÞԖïțÉìó\u0019:ó_çe~®µ¿¡í‹Ç\bù17n H\u000fþÈȉM7ap\u0007÷Ýl›;ÈfX2¯€HÕ9B8”ŸN/Î\t\u0015GT\u0015Y,‡OAÏÊ\u0010:?¨²‡o\u0012NÃpød=}ï¨Þ^Ìórù“\u000bb%\tò·?\fJÇlèìr×Èè\u0015È\u0012ÉΔ}Ig”)5.â8[>K«®øtE÷è2aÍ9oøÔ\u0007R­F^ÍM¢Ÿ‚ç0ôS=}D¨=M9\u001aöÖ\u0013-½ð=M­r¢¢0½@±€»—2¤\u001c#X¦­¥Ë;ºwY\u0010ÎMñ\u0010~Y€N€}YPCY\u0010~Y\u0010¢\u001bÉ^\u0004\u0010üf79)\u001fámÖ°ÖÙ»ý@Ùß\u001e=Mk¼T\u0007î\u0010\\úgõb)\b\u0017ê.¼\u000flÝjÕ\u001c&\bj¬n5ª9íâÏ\u000e¶ÛÑ\n\u001aËŒ\u000bø‚\u0014WN†³j˜ü1\u0004\u000e¿Â±ÝÕ\u0001\u001aÇ\u001c†Û¼”7=}nÖEGJ\u001dÀr0™Aٍj\u001eÕЕ¿‚ƒÌ\u0015{vŒMJ\u0016ò™BApT¦Ôv©\u0015‡®ÇÇ\u0013[\tC\u0017Nc;\u0001$œ&¦\u0004\u0015ޅce\u0018$*\u001e¦Br§Ñ€±¯!¸›˜Æóá)sÅ<óÔ.“RCÓ½„äØÄ\u0019¶Ä\u001dê„\u0015\u0002D’\u0003„l\u001bÄz¿Do­Ä‚©„\u0011\u0004‹\u0014„xÈĊàDgîÄ~º„ŒâÄgõ\u0001Éô•JúM‰÷í¸ù…9óÙúó­zõiÚù™Xôq\u0017øY—ö/ËlêÍöÊÍÒ\tÍ\f¹Ì\u001cùÌLyÌòYͶšÍl1̈́/\u0015“U•9•D\u0015¡(Ն= õ>•BÐ\u001e#¼Õ¯FÓ?\u0010~i7\u001cU\u0010~YŽqY\u0010~Y\u0010~Y\u0000\n\u000eM¡\u0010z“\u0013›‘ž„A\u0003Kö»×Òµýº¦Ð+*]Êä¼öDVŒ”= ±\u0010p-%Šé<•F…èó45ËðܗQ5žMF\u0018s9©Ëôöw]Èý{¹À+ñ\u001aèž\u001eEÜ ó6¤Ë™³W\u0014ÛmؽPÁ*ÅïåøJEôÖs]|\u000b‚ßW\u001eÄýY§˜\u00021-Påby\u001bj\u001d’'Ù\u0010äLYFÄÞt8€Ëqá÷…#\u001aÁå 2CäjóR¶KtÌ7š/ŠBæÊqFºô-n\u000bz¸z\u0002æjRÞ\"¶Ð= (å€äx’\u001djà\u0017žá-³ˆ\u001b'MàéPAC\u0011òô2\nKf\u0016wƒ¨Í¡µH\u001c(¥béJ\u000fe¾÷„Эš±\u0010Z)’ôk²\u000bQ\bœ+±ýLò‹/8Ÿ/™þ‰Òqþ‹RK(ÀTǂóÊÞ\u000bôaFMÙf\u0011û?ÂK_°Y\u0010™w\u0005Ÿç\u001cOT°V¸\u0019Aý“\u0002Ë$\bU\u0005ùn}û\u0012¾\bÖ\u000f,PZ\u0000\u0019{ñ~È^\u0004šTàZú™q៝\u0016! ha|š\"a–\" ¢= ÂC†D]Ÿ©ý£H¢×N)®ÙòmdÙaŒàڑš?Úc\u001eÚÎcÆÛD¥ýÛ= ¥/Ûï‡QۆHxÛjÆ£ÜK\u0007ºÜ)8ÓÜ\u000bYîÜãj\u000bܪ‡&Ü\fÿ7ÜboHÜ©Ø[Üä8nÜ\f‚Ü\u001bà˜Ü[§d¦#»ë·¨S}Y\u0010¾–‚|O\u0010P\u0010~Y\u0010~Y\u0010~Y8GO\tÁBZÖ°(ftA®\u000f (^oҝú\u0019Ê Ô\u0016¢š¶>\u001cÃgQ¹ÍU¶=}o‰;´þWY\u0005²ÂÜր‚ û#\u0017Ë.Œ,\u0006ay¼ïüF+Tƒ½ùYb@àë½\u0007A\u0011Ö/b\u0018¨,>QƑrþ‹R*^\u000bŠ^¦7L\u0018/a9ADÑÿIʌÚl02ôp0B\u000b\u0017’B×\u001b“¤ˆ ¢?\u00177t<‰R‡Ÿ42IºçŒ\u0015?ÏÀqöɆ\u000f\u0018µQsI[´ µá\u0005åiRϋ#>°\u0010ý\u0013ññúÝz‡ì²\\ŸK\u0004Ô+-àeŒ^»=MÞ4ëÎIõìXÑ.a¸ˆ6ú\f¬ €ôì¢QNÊbžÐgÐvìMÜ × !'\u0015OÉ\f\u001fr߄”\u0015›¿þ(W,ØsÑþ2Œ‹ð{Œ\\¸øYޓ>x\u0011_X~*¦\u0001ªD¿\u001e§)¸j”~—ÌÛ@ߪ:\nº”:„¸;º\u0000*¡~Ûc\u0016²2õ«:ñŸ£ÒB4ܘ¾×§¢åê¢b‹· «0ˆò4\u0011”¥Ñڂƒóx\u001eõž/Q^¿[Úm06´Ÿ“ôµéq\u0006\u0014K\u00015éh\t\u001c\u001f7ø%VK­¥§xCÄK$\u0016EýÓ:täa]Á­o¯\u0003ˆ\f'î¬ÉsMÕ&¢'¨\u000f™ü†¢’\u00104f\f2p‰1{>„/q¼úk‚—ãXCºI¦ sۍª\u0010­gGéÓqø'…“œ«7Îé„\u0004𯗑hæjÉ´\"Òîä±\u001a½Ùù\t\u0003vB|k2nh\"Z®Cºÿ§ŽH›Ð_¿”Ke\u000b\t°ÝAzf_^´n7ý\u0013™ãÞyè\u0018eø²\t¹S\u000e³Èòê“\u0007˜Û—FÊDÃß&V:ŠDtZ+È%ƒ¤S­££C\u0003Y\u0010~™nY|±Â|YÔ~Y\u0010~Y^k\u0016àü†y®P¼ ›“_ÒòNž\u0014u£Ý%©•\u0003€\u0003u¯*Ó\u0005…ÓIaÀñ’Æ”´/…ÿ \u000b¥÷iÕK\u0005¿–¸ÊÓL\u0005ŜÍ6\u001cõâ(Ùdי˜A$~<ÿBÛ>Hé\u0016+ÿÚ2\u0000d–\u001c\u001e\fÄ\tx.›–\u001f¬z\nÏF|\u0018ܵŠùE€S­NR\u000e›S!À^uy¶—\u0003Æö¹\u000f\têo¹Ù+Yu\\\u0003Þ\u00025\u0019s\u001fºnڐ\u0004\u0018ˆ\u0001’j“uäi/ào”‹Æÿ\u001f\u001e/8*ò³â‡·^Fñ–ƒ–üA\u0002Ûrh<º\fÑ= g°jÎ\u001f\u001c\u001f02Ê\u0012\u0013!Y§h°5«8éõþ9F\u001a‡Œ\u001cõ´„õ\bªLµóEi:ó°¹ý\u000b”—†\u0010¯\u0012‚ˆpØĎ²+Ôÿ\u0016B-²²3\u001e”3cª2‹Î\u001boÿpÊoú\u001cmã(\n'nßêø¨˜µÒÜҔ-bµR”4\u001f&b—þ/‡ÄR—AdÂ\u001b žÆH…òÏ\u001b<\u0000\u0012bcZR/t¡é+Œ\u001aÑÞ¡ÃošÊ¶E\"T֖ڞΡSK†ÒÈ梖\u0007]ÙPÎ\u0018Û_êºd¨àÁ̎Ƙg#|b°\u0014ZØ\u0005\u001c;ÔE\u001f¶\u0017Þðt>\u000b1\u000bP¨nòý…I\u0005h—\u001ayÿYSäÐe9N8\u0019oÁ„#šÍêy?\u0018…ac¼¢ÑŸ¯\u0013èY0D\u0006ß\u001bTh6·ÌÒ]\u001evæ\u000bDÒÍF Ì|Ác\u001d8ãџ®…\u000b\u0007ӆ^åSþ´i\u000f,\u0013Gaè\u0013Ú×5Ž\u0000ôïÿ¾&aåÏà—…û=}¹r5Ô,WÀì…z.\u0007©œJ\u0013S꽺ë\n&Ó&å:ïÇýUS;æSú\u000ešßG^•Ì|ükIŠè?²Ò\tŠKõýq:ÄuÑÊO[%e8ø'®N´ªysÕU1\u0010úŽÜ\tycE9éŚØVˆ\u001e®èPK\u0012\u000b\nvN±åvÞ¼ÜD>\u0004\u0013£¯¥¤£\u0003™?\u0010~_Ä~ûQÐ~\u0019V\u0010~qØ~Y\u0010þ¢*¤o­½#€$@Ó«žCä[â;@6*ƒ»Ù'ªò)\u0005Û\u0016»\u0016…)ĕ\u0019Ûúº2\u0003\u000f‰«¹Í1g\u000ffËA82ep\u0003×^š/äM\u0016¯‰q¥?ÞÒkîäÄ}¥'ë Å/{¥´_Uç“óºè\u0003^»ô\u00057^1艍Û;ÛA:\u0014†´9>c“P¶Ü‚ß´\u0004:ìo5†\u0001i߂juÀžT³à#\u000f„¤\u0001\u001eÁG“fÄ/²Âi\u0019i´Ž2ƒ¿\u0013·\u001eP\u0006×\u0000à1}}¶_½\u0019µ‚/6+^?\u0005užvëÁàfr=œu_’3éʉÏP9ŠS\u001e\u0019Á> ºK>\u0014´(y..a'(x\bIb_åˆDN¯?Ò&\u000fR¯\u0005LU«]\u0000†'\u0018íÒÃ\u0013 ðm(\u0011\u0014I•¹\u0005dZ<\u000b\u0019*¾Ò‘u\"—Á¨î’Ö\u001dg¦ºâ\u0003V¢æÓ\u001c'm.jo۔'‘8ò<ě¯ˆ\n\u000f,\u001fqý*ºß4\u001eì*oÎåG\u00016ݎ°îªaÈEƒÐq¤’ëS\u001fr9òÂ\u000b\u0000œ4ªù¼Н,krB\u0013\u000f¡'6\n\u0005õâÆWž®r!\u001fD\u001etúOða\u0015êã1¶Â‡[sË*E/ßìL•\u000f~FãgÒ¨AÑöçõ4h\u0005íO8ú…\u0005Jµ1\u001a8´Ìói‹[­µ„ͯ~EíX^͘Vx³Ôó†{\u000b\u0018_áKV_è@k>½\u001fqxã;É*eØ\\_ø®°ÒÐ\u0015‰\u000eVn÷>û´ÀÁ̋S]úª„Ê]/Ow\b‰Èà1H\u0004X\u0002BÔä\u000b\u0012×\u0003@*¤p–¯,ÔØÇóo+ç\bÆ\u001d©½Æ˜m»>©\u0006\t×d҂'\u000eJðü¼\u0012m[€\t/˜Ú\u0006|©\u0016Ñ\u001e;†]c¥ôî®WÉýUën5O4ù{ YåT~-RòPÔOXɗ]°F­\u000f[Ä\u0010îñ5ÐZ±{Ä»\tê7[à‰âôý†#->¦Y®¿ìX\u0015\u0007m÷Ê\u0001ŒÞôΏo®¸\nɱ\u0016đF®É€Ñ_\u001e‘mVéúá‚\u0018fQ0N‘Ïq\u0016êø}&äLÁK”\u0007\u001c/Êè^= \u0013±™åä>ºb= \u001c^dª\u0000Ÿú›uŠ…n4(!›|T\u000fyÚ!; †‡‡’¯Ø›ñ[{²ïØ\"“üƒÊ\u00127\"Åڟºù\u0002\"´Ú“Ú¥Â!\u0016DŠÚ¢\u0001 \u0004\bžÂ_B¡\búv\u0002ÍŸfO™Âú’›VauBlÚ¥³Ï°ãçÉ3\\($]·g.Ã!?®\t\u001bùÓU\nåëï®\u0004¢lóõ5æ\\\u0016ϯ„gÓ%²*–ØÑ?\u0006ªÆû¹¶d[ 4/1-ç\u0003\u0012·vÅE{[Þ=}Î\u0004t‹/ÄÐÇ)|Þ\u0005\u001c¶¿îa÷¿*&…+5/Š\u000b\u0003ß赬\u001f«ë\u0003açż¡,‹-Ê\u0014qâ,H…l¯šòI=}·U¡H3çÍl¢õlÆ0I\"\f«,JVqâÀ¼”¯/ Ök·r\u0007\tãɲÈU«²k\u0005a\u0007ÙM$|\u0017쉓ÓË*½LÿÁ©ŠuXà²83ß\t’oÊÃ×Â|\u0000¨«)º“\u001a\u001aÄòÅ­üaZ+kş™¸–Ä];fªí;¾þå’dõU†íœ\u001a[¯~'Õw29–ÑL?ªjÎ3ðLƒelíGv¡¢\u0017¸ŠÕM[Ï\u0000ppO=MÁBN„ ñ°=Mº=MÔrNh–õÀĨ\u0018\u0007\u0000LJTKAôU°oÌ\u0010#Ž0ë:ڕ—\t¶ý8ð[€\u0011ÉM]}ó\u001du1øîÞâA\u0018³zyät.ñýÝݼ•]®t‘ÑIb\t\u0004\u0012Ú΁šSYb*˜Â\u001eüÞS28BžûÛ[B\f\u0002žô›2D\u0013£+&¤c\u000b\u0019nY\u0010z]:Ö!oY8Ô~Y\u0010>€pY\u0010þvt…ú)¹ W\u001b\u0017ë®,AÙêUW,=Ms\ty´\u0010\u0017°\u0017‹3Fæ\u0016F±dj\u0017\u000bÕwˆ\u0011QÑ,f\u0018¼\u0016ÿ:þé\u001d'‰ŽÔ\u0003'Ážñ‹D\u000eEòù$áXƘ|€OrÞ¶¦\u001f®°³1ÕCõ\u0010cµöæ1¸½•\u000b7Ä}½æ¿o/«ÍÕÅ!W´\u000b/k×ÖÉVk»d\u000b\u0006\u0005Øi›<<\u0003\u0000\u0007ezôÉÿú>S€w7”(IWÁ\bí'}7òÉ\t\u000fÒÓF’ëÖå=}p[\u0011\u000fñ\u0006aÜÄÆo\fá\u0011ñ\u000eF¹\u001fo\u0010äðö®¯2XClc¥P¿®\u001dÚû\u0013ŽS¨<\u001d9ÏkW‡\u000ePȜªÐF _Ìÿ’p4ºçªœÓT@²2¹›³!n*ñqaï6›U\u0006EÒÊòœ\u0015tg2ÖÜ!P˜\u0006‘\u0001â\u001d\"–ÆԁBZ= Ÿëñ©èTR\u0018·–\nètŽå·ô‰tp1I]Õ½.\u0010t/\u001cÀpš#»G¢jS\u000b\u001d¯Zqg\u0003\u0007¿.\u001a\u001dÏd&\u0005”}³.„vûQ\u001eiÔò¹êœ›ÛÀ.F‰\u001a¿b††Œ}àAFî…T_¼òQ\u0010¥€­¶KLðC\u0011ê¥ ‚Çó´3+žb,ÿ@?ë0Ý´ª@Ç\tÈÉ\u0004Æ,Qî5{\u0014à,²ùl[‰È¶\u0000<ï‰\u0007ŸBÈFŠ««ãc(á¥]Òº“„)#±ù\u0013×¾O©æ¡ý‹\u0019²Ív»ÿ3é>m×µÚI”ˆ\u0004½î?u´·J\u0016KÝ@{pŒ/\"?q¸Š¯oîÕ«PlÃ\u0014\u0016©´2ÖS\u0019q‡ñôÉÖNÕì~;l<ª<·Þ\u0007TÜâ®fDü\u0007RpEj@ύOVLnmI\u001e¢\u000fU9\nF\"Ð>°I܇H‰sà*'œÜ/Þ>fÜ@ÿ!j‡…sѺŠL\\»ÀnˆqŠÿ¹¨‰ôÑr†Œ+ß]o†mVßÅ\u0000•Œ\u0000;rĜ\u000fü˜šz–ü\u0003ýã¢7¥…^·\u0013\n\t¤ >®\u001bšX£èóÄ\u000e\u0007(ß\u0010Íg\u0005þÄA2­\u0014Y΅ú\t´=}èwÒËe¢ï´¾! \u0018ûÔ°m\u0005ñ0Ëé\u000e\u001eÔQ2-”YÐdÍF'\nàíûàJ§<]'ú\u0002틍\u0002mè\u0004Ì¡ØHWýþ톘õɼ8ÔÕQ/ÑPn+Àúi†\u0000\bwàÌfkQ?¤Œˆ?ù1ho\u0015519ö—Q?ÿš­å®Í›yR%°®ÍËâüdXÒ¸·œ­üý͇|\u0003ęî('A¸µŸæ+ø#+ވÅ\t¯¸4_ïg„VŅ\"+;‹Ò‰õ<»@Ä\u0005¿:+TâЉjºÔ½\u0012¬\u0018èµ\u001fžîûàò%ž¬¬¦‚ì{ŒÅˆ\u000497ҀG\u001f;͈máÌîAëôûl›5ÇFUX/ºÆ\b\u0007\u00115ô\u001e\u0000i­\u0000ÜÞå‡\u000f³m<Óç1\u00054¿öX?h’‡›Üλ:Qƒ\u0011ê¨Ñ†¸«YÌk^HÃè\u0002, K5N¸í½©Ì\u0014?R\u0007•ôÈ\u0002\u0001ËlUôÔÓìh7¢÷o\u000bót[í(•O­jr͙[¡\u0004;?¥ˆ­#»ý~Y\u0010^àX\u0010P pP\u0010~Y\u0010~Y\u0010~\u001f†ì•¾ª0\u000eÞ{º\u00153\u0010/¦’骆QÜû•~deñ)z\u001au\u0001\u00175\u0017_6¸>@7_„\u0007qÂÊB\u0015^Ë\u0000‚èêdè\u0013O.Q¾\u0000÷= Å™òºŽU^L\u0002np\u0004b>Ef€—ÿˆ\t üڊá[\\=}qf4-Á\t\u0018™s\\2*{–à/â‹Ät¶²D'\u0001y¹™\u0015J,:ÒU:r†_ƒ\bxÈÒaÒ\u0001…\t—ÔM52\u0002@\u001fWŒˆ\u0006u\u000fÂ^š›Û zj4\"á9‰•Fw•6nŽ\njãâø¹œü\u001fkr:ê!íi®sÝ\u0002#Q\u0018¦×šªËßÛcŽè¤IÀ­ó—ô#\b\u0014%Çp¶GæPÃFä9š®U\u0019\u00113ü\u001e%‹Z&7Ÿ¸‡=M‰³$íÄ\u0011Z²ôx±Ô\u001bõ+p¾å?ܺ…>³~6)¼üÛï= ©\u0004\u0001›fû¦\u0006™_;\"ò;ôÚf›¹‰ÿ]«Šíê{}ßeÓÔåp„´ÁÏ1ÃÀ+\u0013’ñ'MâƗnÃS]/cD‰¥ª§$¸æ¨\u001dÏ·Ë^úƒm°¤šº$nLçí¸¶,Ù³ü…¸|€ê\u0007r\u00174\b>ç\u001d?¸Ì¢å‡\tÿ,\u0013±,\u001e8Ç\u000bÆÔÿ9{Ø¥,þ^Çñÿ4û“ñe6ûÉ\f\u0001<\u001cx\u0007UY:¼Cmÿ»Ñ6\u001bDïT\u0000Õ8Ñn·\"Æ6Ï$eˆ¿­æÎ͇\u0011LS×O3!#%Õæ\u0004 ©(~Ê·áß+ŒÂ­ÚöNOÌOÅwõìxì\b$I5\u0010[í¢\u001c͊YMÇßNõ‡,½†Ê8…\fØõ·t[ôö\u0006\u000fª0µ-i™d½è\n\f/C\u0014”;éŸ^½\u001câ\u000e·ìE6à:q2•Ýª=}‹»Á@7€\u0017I1yì[ójZð\nˆ\f@~²\u0005×\u0002\u0018\u0005È֛;nƒÿ\u001c&\f0°½\\¯A<©}\u0013&êV°=M\u0012Ó» gƒc°&ª\u0012¯\u0001jÙ\u001c7‡ë\u00046,xð½ZÕ\u001cŽÚŒv€‡žË¶Šß6\u0018¾ð\u0001ÂÔì\"fG“Ž;¡º\u0016JT\u001b@r\u0005\u0000è®\n\u0006.’\u0000НL¹Â©ûW?\u000fÔ\u0016Lhœ¹Âòýga\u0006”ŽPhfûÙþu{ûœ\u000f\u0015ùS|ycI=MÊ>ø%ðEÙPi{¯>\u000eV\u0005@p™ Ù>Ñ{o\u001d\u000bF U̶Òm \u0017ô\u001dˆ2µZå7‘˜F\u000bÂHóË-bþ7tfEÏ?™B\u0004\u0015#%¦.¤ƒ|Y\u0010žL\u0010~Ùâ6}Y\u0010~Y\u0010~YXÔBjÓ\u00057DjÏæ€ø)7^¯Úñ½×Ÿ•?\bŸ^92aXכjUÃ@ˆý\u0001n\u001e\bÐâwT\u001f‚{•\u0019Ênh¤9<†ÐxŠüû\u000e¼]~•xÌ9–òÞ¡\"nôŽ®êr‚¿\u0006öÛÉ\t\u0018¯Í\u000b÷t4Fa†HI1¼@¿\\©Û\u00190\u0018‡?;ae”eÙê™f1)º¿¦’É¡Ašï\u001bjv’î2 p6Ñ\\Š\u0004Ér‹ŸAW\bß\u000e\u000eÇ\u0015“¬¹ßò\u0017–\u0007¿‡4\u0014AÄVßÖ9\u001c‰\u0011ퟒ–\u0017܈Ì\"p–fÆra:¥°‚®_”øC~R$Š5©MG²or¸\u001b÷ד\u001ahãdÝ$MµKxÍóQ\u000eÖ#c\nF¦jJ)§ž$WN¦\u001eZÉ\u0019ª¥ªñ¨Õ\u0000°¯= Â[›ÿ‡ŠÚÆèá1[\u0012Æ\u0010!2Wð½4\u00174uÜÅ¢¹-ÒÀ<ùØõ_!‡9é=}X-ß|Èõ^\u0012\u0007nSkÚ¶Å8\né©Ñ-OÿÀÜ_È\u0015!\u0012‡Tk–4œÚÅ@Âé­áÒ_™)ӊ¦Dƒ:elÂ(m\"¬ž6¬Œu¬ V¬J–¬‚ºº­:ºG]sPaÓã'áp(ِ(=M€(× (º*®Îi¬˜J¬’p¶iÒ¸¡üÎïÅ\u001fTê\u000b\u0019û{\u0016훝5ó‰Is˜$ӎ¼\b–nm$Zµ¡DUˆ®\bqšír‚7-¢ÍâHó1HøÝ\bô¡kPOËK‡ÏDOÒJGMM/KPß\u00048M\u0017\u0012I\u000f\u000bFŽG\u001f}öœJb5\u001dK5\tW•¢çˆNŒmö\u00168\u0000.7ÄÎ7uŽ7\u001aZË®\u001aÍșÎú2˕;„\u0014££å.\u0005‹Z\u0010\u0007~ylY\u0010~\u0011nY\u0010~Y\u0010~Y\u0000r]v0#b~$i2Þ\u0013èªu= ®}B,Ö\u0002.«â-Eb¬¢ÐÉè³NF-@Tg›\u0005êµTÅH»BñWæ·oÑ¡qÆñ·³ --\u0017Hg\\\u0015E\b\b”ø0“ùê\u001fzóKL[xõ‡\u000eÊIýߌÅu™·P-ܦh”D…xë”~Û´ 5ëÓðgBÈEp¶bϵr:-ÆÎh/XE|é4\u001d\u000eƒ{ÄI’´è±'–\u0004t¢[+\u0015ݓ@¶¬Ò(}N…b>EŽÀ\u0014†akû¯\u001eÉÑa·Ô-mÂgsroIÒp˜\u0012oºâ;¢\"ٔ!Öl¡¯–¶¢\"¶Ô5œÉM\\¾€-\bijØ°µ;7,p–G\tä­öÐXœÜ@ü9d·Æw\tÔÀUªÿÑvÒ2œábŒõsßÐ\u000f͸Öþí;KHð>U\tò\u001c–\u001aÈöa-¼öp¿N´\u0013XðM]Iå †)„= Tüw×\u001b\u0010Áþ=}&Pp$Ydò\u001eVñ\tñêÖWV\f€x7\u0011µš×B˜Ù*;ô ¥r£¶\u0004óƒÁ\u000f\u001d°Ø\f*>ÎÆïrôÉq»V\u0018OÌÞá›A³ßðÕBñÔ\u0000J=}rJ*¿Öo†<þe‚ù\u0016\u001f>\\T€ß~\u0004á×\u0002‘Ù\u0002’Ô\u0002°á™¨@ӒÚÂìZª3\\f£#fÐz\u0000»u…\u000f~\u0004™9\ti|±V\u0010~Y\u0010~~\n~y6pR\u001d]›\"¼\"’(\u001fW™ò™û\u000ešha‹pF˜‰±=Mút?¶[¢v;bOè\u001eQ”jþ\u0012q\u000es6¢Ün¢\u0011Vò.Á·=M\u0010¡î\u001c(ô„ivGÒÓû:q\u0007.ـÛýú\n7é@dUû= ýJáç P­\u0010¶×\u0005ÝɝHð5\u0016EA\u0019 3흘ÕÕ¼6M¼vÍp¿K3Q\u0002–%ý¼‘ªÄWxX򫔻 \u001e¦D×qyi\u001c舿À@FgvËú:ŠÕ\f×t= Ê\u00145\u0013M‰þ¾N[ê½x®ø9\u0015(Ó%(ycûy\u0013(‚7õö¾’lçy\u0016AšÇ¶Ë\u00192‹i»¹U@®_Ç'\u000f%ȑàPŒpëIT'\u0010¿ŠÝrœénj7³Ë\u0018RKì¶Ýs0¤¯\bß6;hÅ9T1P„³ÊÛj¸\u0011\u00152jߊ°Â›o\u001a!”2óe,Å)\u001bµìÉ8×ÕkÇ>¿\u0015lÆB¥­äj*\u0005s–¤à£ן\u0015\u001ct\b\u0001.Õ£1£\u0014¢\u0005+®Ø:kdØóŒàÙZš?ÙÑ\u001fÙB\u0010~Y\t~Y\u0010~Y\u0010~À®)±…}ŽdŸë¼%‹¡\u0004ŸX¼q ÜÆüÎÖ-5at+\"ÁnwM\u0014kß=}ã\u0000qç\u0019‚?oj—ÌË\u0000B)\u0011‰\u00177‘q‡ö”Ï\u001bà*9\\k«o\nm›(+‹ÑÅ\" µ9§Ðˆ…˜ˆ_Kþdî”øÿ\u0001_)¸¡\u000eÌ\\^ÁLa°oÕ'…tÐ×ø\u0012\b2m\u0019’~,\u0017xѷ׃’,= ÿ‘}jÇ^¦\u001bßág”Üê“òÜm\u001f(†ßÞ\u001eµXTJT.à&= eÜwR\u0001ƒ|îoÒ= /R ø1Ÿ\\1vL>/?\u0016>\u0006X\u001a\u001b¸\u001b2\u0012²\u001bœ¡´*òá\u0004‹U\n{¯!¤èÒ\u0014¯!pۖZÿ3\u001crRrÂ4]–¼d†\u0002\\Z˜Þ.9ŸÇ=Mm\u0012\u0011±¢î\u001fzâI\u0018Ÿ\nþ.£Ê¾¨Ü\u0002Òg,Ý\u0004Yy,Ó\\\u000175©ÔÏ=}h\\zÑd+Áì/ªìV\fG¯1¶\u0007üÝö±L蕷Qô\u0003p±èAÂùå˜%ÕQš÷+\u001bNío\u0002Ø%ˆwTÙsãoü6î„ýïotÉCô**Ƙ\u000büCrr@©×ÿׇi¾Æ¿h0ŒÔÙ\u0004\nCÌr•p³Öê\u0010aȍžP3\u001d\u000bpÞ´¾±þ{ÕÍy1#É\u001e\u0001o\u0015\u0007säÊG\u0001ÝÖï|(²aQg÷[Ô\u000e=}ªz±\u001cŕd®Æ \u0012¿… \u0013»‹*¡\t\"¡â°ƒ_\tö…%«»µe&€D×!¯†FøÛèh´¿=}Â(up\u000b5÷\u0006»?¿nEì”\u000f_3c©(ç‰ÈÉtàÜ(+NL+\u000bITÔÒ@‹È<ÿ 8è_\u0006ÙÞ]\u00153â?êM\u000fá\u0006Õ®{SO+æB-ܵóeY¬\bï= \u0002ñ4 ¨&MÛ\u0018H=}\u0005–½\u0001šwõ\u001bTAF¹°\u000b¯\u000bŖ\u001dÖÆ¿þûÝI0°r}ü¼wd›¨\u0000·¢Œi×^*Ηtò³ß£é¤££·\u0000Y\u0010~‰òzU\u0010~Y>\u0010~Y\u0010\u001e„\t~فž\u001bï'@àÅ\u001f\u0019fmþ \\ÓaÂP´ »˜Lâ\u001dΩ\u0003?Ú#\f½¦¼!\u001b³\u0012ç©\u0016m\u0006Ó9ò)“\u0015óÿv*•ë\b»ý*)V= ‚«qž0C‡ëMú0…\u0014œËQ<2ɕi»ÏI2HæÛ9«˜\u0014¯ÝàA#t¶Ëò;#_Ÿço2ï\u0005 “l\u000f1>/V·/2ñ\bƒK\f‡Éð\u0006X\u0017=}rq\u0003p7<‡\nq\u0007S”Ïo‘qi Œ¿Yxq\u00046jÿOaoæäÓBUD®“ìüã2qå\u001f\u0011ÒE\u001fœ\u0005·>º\u0006¸W'ðUî|\u0019\u0011¼\u0011\u00169\u0006ÿX?¡áÎk3ûleÖN˛3È ÂD÷ +*¼2\u0014.\u001deî2J»<à\u0006Z\u0016qŸ\u001d$“ˆîµ\u0011a\u0005†Lz/µ_„…Zïÿ›±d‡š‡² ãæzªy ‡ätʅuá\u00065“(usR»\u001c\"Æ}”Þ\u000eñ¢cքª\u0012² ‡\u0014gò\u0017™ŸEòƒÒ/Y ‰&z\u0012GÙ+4Åilx…¯\u0018³J\u0006<§®\u000fÇ3ûÏl\u000fî썺ët\fÉh1œu\u001b<í–\u000bA¯\nï\b\u001bÚò9\u0007öü\u0011r:\u0006(\\¿Îºm–cõA—h­ŸYôƒq\u0015èaÝË5Sý,\u0016Qíï}Koë\u0012\b\u0019\u000fúdßó¨$ã8L4MÏÝOivçØmòN\u0006Ã÷ê‰M©™œ½¯\u001dC,\u00198ÉZ\u0001\u000e\u0014^𮀒}¯ÀK&6?±­†\u0017ÔxtH\t1ÁRO˜ûaéB¼+‘Ùcß}#\u0010J¯¼?\u0004k+Þé¿KÕeŠ@ÔZèï³k;\u0013\f_Ì9©IÏþ\u0005éTN¼eÀ‰+g;\u0016 O¨ð\\¹§âTÇOx5\u0011ÔÎA0T\t_$Ø\u0018î\u0010‹’\bfÔôþµõ\u000f´b\u0004jn=MÞwb{öàw$\u0012}±«¹ÞUvv4úž?뢎g*^q¿\u0010\u0015‰%[®ý¶ÿ¼\b„-’éگŀ“[ƒñ¢\u0015\u001aGâ\u001eû„lýæòÑO”eØw.= Š_¼ù‰pCÒá\u000f¼ˆ.4,Ò\u000f—\u0006\u0017/Â6Rœ\u0016YBË,£\u0001ﮇ;öÃÚè&Sì²\u0005t.\u0003uª'³E¾å‘=}óyé(…\u0016Ð/šð\u0004ß3®ê\u0014\u0001§¸á´\u001fܸlA•ë›¸h6LtÇ^疋\u0013¯þ­\u0006{™Ø9z¶†k\u0018/†Šd\u001bq¸g\u0016–\u000e¥)6µ¼Š5+’4Ç×î5S8ïx/·‘\u001eJӄ\u000fÍPXL/7¢fhÈ\"´)¢è‘yâ\u0001šŸæô’âÜþ'¡Ò\u0007}~ש0î\nD\u0016ÝB1\nsZݦ\"\\ï:\b4·6hEê|[¯l„(\u0018±Z±‰Åø9îa\u0017Ár:‰VÍÙB\u001cò­Û×E³\u0016*åyBËELQ+\u0015x\u0005i\u0010τ\bG¼ùÏð~\u0019\f]÷\u0007;÷Ðf” Õ\u000bmu~ÅnZ¶U/Ô6&áÜçÒn\u0014‚äANæ‡\u001c\u0015úÁ¨Â¨…ÉËS“H¥M„-ïBF+šÚèÉÎT\u001aHµîÇ7üÿKoQm_÷ödHä(\u0014j÷3Õö\b\u0015bÍ!z÷œ‘Mi|t=M\u001dIi¡ó\u0018‘oôê*Ý(Œ½¿ÿJä#_ɊÎ،ÞKì#4¹}= ýkÿxåxð¾zT}w_w\t\u001eG±i.\u0017;ÆO.þaњYŽUëö2\"þ˜\u000bÜJêB&áVê‹\u0016œLṄ©/ÿ\u0003#/SÄ\u0016•°,|\f+E1´rÝ/[!l+ªQi+/ÚižPÔ&†ð\u001bau'\u0015üöaù<ՒKÌè9\t\u001b±ÙfŸ4¼yD‰'ÑÓJ\u0000g%àè¹»V\u0003E4Èé¢ý\u0015“1È ¤ùgrTe\u0000\u00030î$Ø´\u001eO\fÕW\u0004 âÙkXDÖs9B\u0016\u0010<Å\u000fê\u0007TÀ-ª\u001b\b=Mr= $™_\u001f\u00072ÿ'¦ÄîÀ»Îkj=Mêñݕn,œ\u0006?k\"Š'ö-Öý>?ts\u0017dIn(w¾Ñïc8\n\u0016ÿì¶\u0014†íL¾˜êsX\u0014Š™ë\u001aY_\u0014\n\u0014UªnÚ\u001c\u0013ón62àA›”\u0007õSºµ.= »Ì0ø@Úzr\u001dÖrp*aLáן—DFs:,ª Ü\u000fˆ*eËâ=Mœ\u0014ΰmY&+D⾪›vžwBO[£Ezª3O¼ë \u0012Ã\u0016‘¨•Ûß+C8äOú±iNÆ;–Ú&œâÛ'“HÄ»Ì'Es½-•˜óO¦fë\u0002¿i÷\\\u0013×*6 Ð?Ž¤´wÒ1ãîá5nÐ4Ï= Ál;CËéÏ0\u0005I\u0005×\u001e~Fœ!Î=}kS»9R/dûÐ98àTgß+賶j4˜\u0014Ïs,\n…¢”ï\u001eÁr‡§‘\u0011òc{×41´, 3ë!\u0011µ\u0012²ÉÔ|á$‰C¯qbq\u0003!\tÉ&™\nu\u0006:hClüϳm‰\u0005\u0018Ù}:U\f­k„‰U¿\u0015w\u0015\u001c€Bn'\n\\gI‰D= Ê2Ryœ_;;rÞä¤Õب\u001bÿÑCàK3\u0006ή\u0014sÍ\u0005l#Åÿ‚·\u0014Ñ^;¤*.,\u0017Ìd\u0013\u0019¬ÕÕHëY:E\u001cb·B›Õ½Z:TpE¿X¬ˆŸÒKãGY%lúΓ°N‡†]홻÷Ô\u0016ç¸ÆbùÔIO=}(ŠNÜ´ó&›M½5\u0017=MüÖG¹FòXÏËQfŽ\u000fÀ\u001aL\n}-\u001dmW¾«¼u#ŽJ©ßí½,ázë\u0006ã¶îúؔ\u0001Z<'„p}/\u0002è®JÒXs¿}-ˆ)ù\u0001¾Z\u0014\u0007\u000f¾Ž¨OQ\u0012\nŠP\u0019\u0011i\u0019ÃbV&§~ñ¹ñ’çýI.¢]]3!yh%o\u0011µ1\u0019Ɗx–*„\u0013#’å\u0014W›\u0011YPX\u0000‡\u0001‚\u0002Y0rnY\u0000–M|Y\u0010~Y\u0010~ib†æapڟ‰ j¡z\u001a¿\u001ea¶•‹ª¸Üâû\u0013÷/þa\u0005·oµ\n}ì\u0014ñm+FÁËñ\fJÛ~ÙìC˜ã%äƬA\nîóÜø5ªêÇ\fµ:çú5œ\u00105›R6…d\u0000̉¼ë4AÄ(y\u0007\f‘¿5\t.;×v GŒ\u000f4I\u000fP¯ü\u001a\u0007ëz:ÄÊæ)mlU—À5\bQ[Ï^ \b\u001cuÉ.lB·žl\u0015FB_m¡ìwW\u0002Ïâ™.‚õb‹±›hVQ\u0002w-¡‰ˆ†‚¯; éXƒÚ>‰k4!ý±T‚\u0015\u000f±:F\bã±2P•+b5Š%@ßE¸•oûEcƒ\b¨=}ø¸K0úC!WÅ@¥èi\u001fôç{æ´ä6ŲzËD\u0018ê,ç¦ÈÉ\bÎ\u0014\u0011]Õij8Œ7ô‰\u000f+ÕA m+\u000fôä H­ö÷óQó\u0004aSÍYúø|NDíì5ÍU†x{\u001fã0}Â=MûM”[†rºø\no¶\u0018-Ðw¬Ñùj\u001d$©ýºØ3útƒú_©­\u0006×t|N,€Úðe= ØÌ\u0012v\u0007…ÉÐ\u0019ßy…H(¹™hý×Ðs\tžÈ\u0010‡÷XÌîs\t’ÛÀOšŽÓöï*B!ݟxH&‡â]ï\u001bQ.Q0ÑE¸]g®Ž”…]Á–W˜+ìvæ\u000f-á^2ŒÖåùBgó /©˜œ[f#.’°{ˆ=Mcé¦‰RØ\u0007i âÙØ\u0007\u0001DÄΉ¾TE´\n÷0\u001b8\u000b'y\u001b\u0006e²½vÈ\u0004/\u000b3ÔҞ/”{=Me\u0002\u0012ðے\u000f%æ= ¬¶z;•A̜ÉI?Ï×È\u0005a¼žÑ<´H\ti|\u0007ÖíÊ=}–”+ÜV\u0007o”­ØŠ‰3Ü6\u001aü³™t%’Á¹\u0011X\u0003wÉîõAû\u0005\t\u0010lz­îQ-ûTž)¸N˜P;>\u0006hG|y/à\npÛ\b\u000eIÉûV\u000b_°>±|\u0013ëm)\u001eÄٟ½Wd\u0018JÐhÂ\u0010<ˆ\fnLÙþ·èë\"\tj\u0005ÞÞAú~´aeÁ„Þ™+¼~öø\u0003r|¨±'\u0000\u0019\u0003*I¦A\f±\u000f@‰ëƒìê1mÞ5º†kŽÔñïáƒ'6'¶º&@³½\u0017e\u0018JÖ²âÜVn<•\u0019\n\u000f¢\u0014„€îº±Û]Ób(™ØQGà\u0013hne¸6Õú79]Ä\u0014f0r©\u0011\u001fožv–´b‡1%)Þ)\f‘[ð–Ô7ª°­Áï.š\u0003j\u001bòÁÁ™çòi6w\u0013òÉ2“…wÁÒw\"\u001bô»ƒh)!Òg\u0019\u001b6 t>p\u0001\u000b\u0019\u001bv¢R²š\u0002ž3„f„ÉÂ%ڛUŽLÒ¤YaP”È\u00118Âú‘žô\u0012‘*ç<Â.矬[ŒrðÆ\"i¹†TÓ#\u001ez¥;R¾ãý\u0019£m\u0016¥Ü\u0016Ô3ܽ$·J¨…Ûà«TÖäÿ÷±å×Ì+l6&\fáÁïIÿÓdTdÛ1®d›\u0013«=}UÄËê)CÛÍ·ˆ D\u000bë)\u0005·½-= ó»¤%Óõ\"'ôº»i;dÓù \u0002Ûja)–}Ò¿f\u0013µYêӗÔ%p´_‹-c!îÇ°’ÅœjÆ5r4矾hoÚôß\u00130ÅCÈ-|\"ꖉ\b×\fñt\u000f\u0010-i\u0013\u0006¯\u0006Bj“Ä)M»QP2ȘìÏʏ\u0005,N0ˆ›}ÛõÁh\u0014hÉ1UÛ\u0001P1ŠR*”\u000býhVTÍA‹8¬^BcËn§\u000f͵ÛXÅ4A^,û;Ê\u0015aß4tn6“^6g¾VÇÙ9ÈôÊ5/ \u0007\u0001;ÉV\\×uìqLñÁË\u001au4,gWÑIAeãX.X\f\u0000\u001bp‹\t¢œ\u00115x^\\Atð˜OÁ\u0001\u0004ëV*\u0002üào?~.„ˆ\u0001ùŒ—…?vn™œ 'ÿ†+\u0001Âl\u001c ÿý{òd˜!\u0011¾—öøsr6h¦× ¢£R0©\u000bÒ½ƒ= “Ã@Úªœ\u0003•Jî©\u001cÊÕ玐Ä\u0001;°ô\u0002Ùg&ˆf7À‰=}hӌ¸fûq³µ7¡ÎÇû\u001b\u0001ë\u0013ŒP3ãè\u0000볎ÑÇ»4ÄÇ{|ÄÇ\u001b֎Ò$‰b§¢\u0006\u000bÁ#/ñ\u000fޜ\u0006JY™‘N\u0010~Y\u0018Ù\u000e~Y4@}Ù¹X\u0010\u0016Ÿé’í洙äÅ=Mñ³”n©´¾q-[žõ'\u0003ºö^[;B¾.üÞûoX,\u0005o>g7ÞÒI’\u000eÔÖ¿µ±:3“],'“ó¬XÊî»]üe?®µ±= 4“oÌhøí­pG\u0017½ÉˆBÌõù\u000f4\u0015…E7Š\u0012Hû€Õ-99tS\\/¤f\b/<Í\u0006hù¼*U\u0007\u001fʆVþ1V/?%Ї÷ ññŽ\f\u0015©IˆŸ@Ð\n}\u001eÜÎà­Y:ô\u0013E(%n‚Ì\u001bÛðd^W¥è1¥–ª¨%CÇ=}DÇ\u0012îÈèaúõ=M]5\u0012Õ87pôõ„&5-%--¼ÍmZ÷ô™\u001e¸¼vø7k÷ôËêè•&-CCi4Dé~õpŠ’wß>I‰\u001dýpŒ\u000fØނNb¡½I9t“ê®°= bvs\u001b=})/W)\u0003Y©|\u001e°Z€ý±7yU[\\9â*\u000e\fâønZþXÛUWß\u001cN\bbîj—õݝÙvô!;±n·Àzڎû äj²\u0012\u0017÷\u0018Ô8w\u0016D,Aüæ—\u0017;GÊYìr@\u0016\u001d¹= uvl\u0011Ã÷ã\u0011Ʀ¶ª¼Kàd#\u0017&$p\n¯\u0017\"\u0004c\u0006Ø\u0015K+4D°/ç©»ÜÙykƒXé'öé\u0019áØut\u0007å\u0001kg%]É͗Ø\u0014\u001c7,\u0004Nï;1>û—kç)oT\u001f\t}wՖKJ<’¡ÚFû\u0011\t—\u0004Ö1ž\t\tKЧõ¹‰ùV³\t\u0004y‚¹ß.Ðï{\u0012ä\u001a~e\u0012\u0015ÎRFù]ùU\u0015DF8mbþüÞr-\nZ8‚Qü\\ÎUôÖ\u000b\u0006\bü¾]YÙ]¢\u0007\u0006’ᄀ\u0010Ù©ˆ}ۗd)úSvN/@o‰\u00197fwB\u0005\nm\tÞ:r~¬= Yvt‘\u0003\u0011Ôª:¾Ý\u0013²\u0017ó\"?&bzÝëB\u0017““,¦d‹Gý¤Ê¦=MÞ.[l\u0011ÉŽªÚŠJ^Ü8\u0019\u0016Ënp™Z\u0011yÝàoЄ\u0004\u0017\u0006²‚°•s\u0014_*Žß‡âˆd“wfæ&cdŸ¥\u0016\u000e¬¯ŽÌóŽâ¤¢õ$*ª§Y¹›ð‘H\u001dw.aE:†= /ŸˆN\n\u001e4\u000fšUØz\u0001ŸÁÂêywê\u000b+2¦¶\u001f—û’æ\u001e}juJáͼ ‡‰švb9Âüò↢˜¶ÿ…\n|!â(\u0012œ|Ë°óÕ¿\u0003\u0006\\£(~©û\u0006#c/£†u¤Çü¤a¬3\b²õQû3¨°%kžªŒÛÝk™8ä¿ê&—_Â\u0007>Í'Ñ´Eüˆ³\u0016Þ)[–\u000e+ß\u0016å—{Á\u0005ô\u0011+N’æۀ\u0004=M7¯–\u0000†Ó.ª)ÜàÙo~x\u0004_jf\u001fžÓï®ð'dl«ÆMç;vÌe=}‚Å\u000fB¶„ƒ™«Ê\u0015Æ?\u001c„OÎmLµô1×-U\u001eã7ð\u0006EÏý¸\bŸtËâ2uì¸F=MßéEõ¯\f*»\\âjûÚÖiB<Ô½\bh«a,\u0014z¹\n\b4Û Žhl‚Êq€¢†o\u0001½J„$Ûuþ\u0014yíµW«É³4\u0003!n§¸)Ê[ßÌds°¬WJ¶o\u001f5Ã2álißìÕMÈ|tܬbÊìrìõ\u0017\u001e5ÈÜì’5Ÿë”O\u000b-\t˜ö\u0007™ìÄ/ëÔ\u0007\f-¶žöç\u0011I»ÇqfÑ\"ÁW\u0002»³ª£C¹»-!Ö~™V€lY\u0010~Y\u0010~Y\u0010~Y\u0010^ÝµËøì\u0003ï\u001e$v\u0006§\u0005Pµk\u001eÿCf¶$¨¢-?lǕÈZë}=}Å\\],÷BÏu\u0004&kSVÅv\u0002,Ï0ÐTä7{ùó\u0005\nà,= ÈÙp3û\\ø\u0005‘È,ԒÈ\u001dÇ3LRl·ÑÉÆ×9œ\u001e#o0ÜÕ\u000e\u0019m—\\Éö•VïUÇ­zï(ŒÈ¸M×öëÛû„s\u001f(q\u001e·U÷ۜøD\u0000Õ8g1m=}uÍèþK½Eu\u001dDmҞ÷©õ,˜\u0000\bû\u00150¢\u00000á\b×áWs\u000bÛ÷†å0ž×\t€u›^阇ݎ¿@¢m‹÷=MDÖ\u0012+qv¨Ý\u0001@‰Ú\u0018¹ x\\ß\u0000\u000f\u00011Zf7GÑ\"þÑðî[¿\u0012Å™\u001aŒÞnˆ…ù:Ϻ\u0000ýb\u0014|·~†îÙ²ÒBêN=}Á–]\u001b?¾’”Ž=M2Ïjß­à—K¢*ò2wá\u0006\u001fB|\b 9X“üÖ{\n€ßBxÞ ¹\u0002”<¡\nû_#±õãX¥¤w±ëÐƒ˜'#= N¦i¿®KÓÀÂÄZõ(ï˜åm7¬œV\u001ckM$Ä8Š'\u001f~™\u0016b»…_¬ÜµÎE=My+ª\\Æ=}ú.\u001b|ÄE|‹+žîÆÍÂ+Û\u001bÎe›½ \u0003ó¿£{«#Ãû~Y\u0010^<ƒ\u0010wY\u0010~Y\u0010~Y\u0010~Y\u001cÿÔÐ\u0018#’è¦÷Õ¥O\u000fµƒúb£o£†Úª[\u0017Ù㕺¤/»sÒ¶OΦÚà+u½U±(-–Duñ\u000b\u0015¼Ýa(A\u0014&—pÁG\u001ahÃ\u0000M©\ftáë04ä'h䕐°µ’\u001d3jÂ%í³\u0005\u0017Q³Ø%ÄUy«”K\u0006+œFæ÷\u0002½Å„¡³Þ\u0012'\u000b—Ìç?ç\u00049‰±¶­(\\õÆï6ñ\u00042±v\u0018\f;\u0012že\u0017_´‰hjÓضéÛ=}Îå„\u0003'”xÆ_Œ³ä¿¸\u0004}…«ò™çË\u0017Ð垚´yi¶\u001b9\u0000Ãæè¤= -ãJY¥v*¬\u000f>Ò\u0013\u0004*c6.¥\u0002\u0001¬ç,ȵ֖¢ÐƵh¸œÿ‡l£4–ÖèY\u000fµ<\u001dýGf¶´ˆRë}×µ2.ëO÷ÈýØ3kvö…qç,TNÇmÂ9\u001b\u0013þ\u0005ƒº,o,\bY‡94&ÕºNlw\u000bÒ\u0016\u000e[ïX¨Õ\n\u001ak§ÒmO\u001dÌ6ß)åJ¯­Šîˇٸ]ÚùÛþÄ¡·¨\u00160e“Æ­\u001e’Ë_žE3ÄTíÛZíæ÷ùø<ù\bló8˜\u0016øY\u0011 b\nøÙßøü™ú\bý=M0$(Ø=}l½í\u00000\u000f\u0000Øa1tÛ]ç\u0006ŸÁ0mú×õ_tÛ¶ö\nãé@EÈ\u0018\u0011»Ý ½Œ\u0007‹HV\u001cE1UõŠ•¤@}Ú\u0017‘= ¢¢†½ÿq\u0005Ã:Ô{\u000b¾G\u000e=MsN2dXl©(ù¾—à\u0007\u0013…Iä52©ñß64üð™8Ô\u001c\n>¢VÉ$áÉXÊ>\u0017ü\b՟Clw¾É–>Ï/\u0006ÔÒVhwõ¹fð.Ñ0Ï=MšW«ïSë^…\u0001. úÏé_YS\u0006{Çñ\u0012\u0016_Kð\u0012hÉ\"\u0000>î@\u0010]1Uì\\s\tx\u0019¾q|?\u001f\u0005† Y\\;dqŠ\u0013ۋóUMfy±Ô©Ü×?„S\u001e@æ5F±\u0018\u0011ÞÏ ‹“ßQîQÏÑXî\\/Øÿ\u0019Ù\u0013\\‚pȍû:¯.\u0000-\u0017¬A\u001aôB];b\u0000—‡Á4_ÁȔkù|Æ\u0011î2º ß1ï”;\\mFˆ$¢Ø2ÂRàYêš\fByÊ\n\u0004B®%òš½áŒ~œ\u000fÀ\u0006q—\\VqJ|´BzÚ ý= š\u001cµNµxÖ÷…\u000btí·5ÎÔ¡Â&…£Ãç£çt\u000f~Y\u001d|\u0011\u0010\t~Y\u0010~Y\u0010~Y\u0010€“n³\u001bväCmÓ$lV¨‘\u0010³k\u001dïcbÐӞ&c\\»Å\"u-\u0007ÒÏõF]+R.—\u000bÒÕ\u0015+k7<ÅÖy,ïâÏՔ)k3ZÅÀFí\u000bLÇmˆ:ëøü…PÇTZ8g“¡µ\u0018Jëg\u0000Ì\u0014\u001bRçzîµüBî?ÐtÝTïo¿ÕVnk‡\u000eÃVx:Ìv\u0000\t~\u000b<%®\u0007¹\u00114ì\u0013õI–\u0000<ÎÂÆW;­&vÍÿÍK3QM%PËo\u0011ÀdžÎç>Eó\u0013(%[êD–¨(Tò·¹¡óûº\u0002\bþ\t8ÀhøYwõü\bMoCÕ\u0017+ín¼ÍØzK\u0007áC•ŒUm¡ŠÍf!NwëG´È>iY5½ðŽ\u000bÇWØÙ\u0019w\u000bÓ÷†Œ¯0\u0011\u000e×EÁs»!üƉ\u00160¤b×áÊs”U‹?ËQ6Z9qÓæŠ\u0019Þ@\u001f&\u0017]ñx|\\办\u0011@%Š\u0018êÝ\u0006a\u000f-\u0010\u0013Ü@d~%©ôM»Ç5¯õXÓëv~ÈÛ&›®°¡\u000fÙ\u001b!oƒ—ð&ø\u0012¯©èÕ45=}\u0007l\u0004•E7l-ÝÉ$\b5M&lTäɐJ=}Çü\u0004U\u0011:ì˜VÉz‘>[BïAéZ«öüp\u0006tK_h©¹|ß.Ä@Б²XËáf\u0005“Í.Ö\u001eϵ@ZKšÓ%\"Y{µf‰!Í>‹\u001c\u0010U8ẐcID\u000e\u0006\u0019U¬*{×@\t†QS4\u0019|÷Þ\u0006öƒAð5²Ù’EÛ¿ð‰ÓÐ*&úmÄú\u0010*\n]fŸÙ±åâ*k¶¿9Ò\u0017KX|„l´*Az¿…_\u0013;—vÄèß:lŒ\u0000…¹\u0017Œötˆ\u001cÆ:\u001dan=}qÑÔ)]\u000bvÿ9Ð\u001a\u001cZfHsÌ:yZ\u0000¹a\u0014\\“zˆúå2¯<àm¸”³M\u001b'%ê*sFþz+À‰t!]êSeF”ñ2ÕJßu€™›™}†oÂ2ܬ\u001f=}\b—lþkŠèèB¨0\u001f=}\u001bá¢ÝÏ¼‡ö\u0010Ur há@Z›ç܍֕MòŸ\náÆaè\u0007\u0005©Wò¸\u0013Öúã(u¤\u0016=M¨\u001fø¦=MY¯;uփyk#\u0017V¥‡ø¤F\u001a¨ß¸“‹ùã/z¤ü\"ª7,ºõÊ\u0000+7ÒçÒºT\u0018æ§ÆGéŽ3…= æu0±œÞ·iM3\u0018^åA­L\u001cÎǁN36âf¢¯9¦[¸ô³#V\u0010~YŽrYy^ª|\u001d|Y\u0010~Y\u0010~ّûBê¯-\u0004óË(d ©æ.¾\u0007L\t\u0013CLäÆnƒô\u001a¦\u0012;d~L©‘õ&*þ¯½¿Ô{\u001e|Æ\u0006&äB¯\u0011èÓl6cGò\u001d6æœïÅ:ØÌþjGþ\u000e6HalœáÉBê<Ç;\b5\u0006HìŒÀÉx1>w= ¹…JÉØa'Æü‡ð\u000b4Ï&hR\u001f¹ÚSû\u0002~\u0005óÎ.}AèE¹:êû/@\u0011ô!éÙ0Ý}\u000fvÙ,©}ۆ\u000f\u0019pT,U}Iiñ>ôj\u0010±\u0002Xœ¡{ÉnÊ>}„À\u0007ÿ*ÔLÀ¹ˆ\u0017{ÿ\u0004\u0002¸*f0åd\u00042\u0015{s‚\u0004»*\u0004V¿?¸±8ZÜGᅓ™Efqž± ‚Ý“~„ê\u0017:Øì\u0000ý\u0007\u0019,÷s\büü:-X\u0000\u0011X\u0013”\u0010:€ÿ*\\Ÿ>ƒu\u000eAn~xÑP\u001a]¿Þ‰5†-n“*њ‚\\D\"l\bã¯2FìàE\b™KócFÊÁÎ=M\u001dÿ=M‰”€“ë}hƂã2-\u0006àr•\u000baFˆ¹2\tªàA–Ë\u001a~ƚ®2'\u0002àáè“ܾz\nôÍÂ@€J÷´B\u0013¸Ÿs\u000fž\u0017\u0012Œ6f™\\yxJ¢ÃB—†\u001f™o•\f[Šl\tÂ\u0018cŠ~<ó€ðB2ò oòáú¢œ70¸SÛüãgo¤Ð•ªOÎÀ“JýãHi¤f}ª¿±¥!š­kàÏCœG#¤–¥¹O­{VЃuD#ꊥ­›—ÏgB¥Ÿ®\u001b»ö\u0013ÄL\u0003\néd_%aȨ0M«UÚ³\u001f\u000eÐ{Š«©\u0018¶Óˇ2´O;Ä\u000b_ç“\n= \u0003\u0011äl†%.:§À‘¬= ·\u0017 Í›½\u0001E\u0006îAÈ6×pÇÜ7ú5PG\u0007ç\blF\u001d5\u0005PÇfÐlhq5G ÈðéíÉï4¿<Ҝ_í5\t>GŸäì^Ö5zȆÁì‰_8ϞÄü¸ìTÅQ\u0005\u0004­hwo-S\u001f­bGE\u0001\bè\u001d-\u000bиZ¯híHs ·è)ÌáòóO7•~8\tª7‘Ê8¡:7\u0004Z8´ò%!N—žI\u0017 R×,=M70\n\u0007í\u000fçî\u0006ßl\u0005o\u000e/Î\twÎ\nÇN\u0011R\u0012Ï\u000b\u0004wŒ\u000bçŒ\b\u000fŽ\n×Â\u0011ç?\u0003ÏB\u0004·\u0002\u000bÿü\fW€\u0007\u001f}\t›!†r”CÒ§¢)t‘D\u0014˜Hô•6T•:´Ü%vÍ)VÖ$¶ÆLvÓPªAqV_ñ]\u0005ñ–UqoMqT]qJIñE\u0019ñt\u0011ñæ\u0014\u001d²\u0015é2\u0015\tò\u00159q\u0015yÏ\u0015yQ\u0015ù\u0010\u0015¹\u0010\u0016I‘\u0016)¿\u0016Ý@–\u0013)h¤}±Ã©EX\u0010~Y~þ~Y\u0010a€ÇX\u0010~Y\u0010~Y\u0010žÂ/*-:¥\u0007a¸ÃŸF£š\u0002©{›Ôã¢B¤m*\u0013ç,ƒÛ¾€ÔÅaF\u000b\u0015jj\u00171œ|¿\b–܁ƒ»\u0000i4Y-\u0006\u0012\u0010ê8i1~P¿PÝÜ\u0001—\u0017WŽ\u001bßkô\"7†—çê¡<1(®¿\u0004ù§\u0010yޙ\u0012\u0016g€ºWލ{\u001di”’UF‡\u0010jƒê1 ÒÀ\u0002âÛu¢\u0013w¬‰¼³yV×-Š\u000b\u000frFçABÌàôÕ\u001dµˆ“Gp’lÿw6H/Êö\bòMýA›°à„þ\u001báZ–|ŽßVž\u001d¥æ߸ê\u001eµò•_?„|ׂ†9\u001c•Q˜\u001füTnv“Cʅ¬r9\u0016A©úàb\u0012\u001e\tᕇ\u001fŒÜ™öš>Š”Âòjóež«å:‹en[åVÇeH÷å”/eå/\u001fårÅe(5å)­åb=MeœÝå…iåN9em™äbQå½Ê׍Æï»Ç¿»Ä_ÁÊg?͇<ÐwýË\u0017\u0000ѯ\u0000Îo{ÏÏ~Ì\u000fÒ\u000fâ͏ßÀgº&Ÿ\u0018\u0004œ\u0000\u0004‰\u0006\u0004{îD~\u001eDqúĂ\u0012Äñ«ˆ\u0000ûˆë\u0007\b=MïH\b\u001fÈ\u0016õˆöÍ\b\u0016©HþÙÈ\u0006Áˆ!ä\b\u0005Ô(Õm.-m{íY]m|éí>¹mBYm[qí…AmÕô՚öy°±…4m•\u0014í5Ìm'íkžítÊ-_÷yaö‘ ùÅ¢÷•¡ö½(՝(ډçÔYj×qhÖÁÈÙáIÓ¡IØe\u0007ÙŇÓʼnØe¸Õ%ºÖa8Õ\u00017ÚQøÔ±w×9zÖéØÙÝWÓmWØ5\u0019Õá\u0018Ö±ª/,\t׋\u0012ÇÂ\u0005ßÁ\u0004Ͻ\u000e×A\u0007g<\u0011??\u0010‹¥Æõ†ŸíÆSq+Z|{Y€Kaj\u001b\u0014c‹\u0016w+\u0015m;\u0018që\u0018|û\u001c€k\u001fjû Ã‹šw;šu+œq»Ÿl››p\u000b›~Û·OÚ\fåš\t뛁ß/>¢¯9¦»¸ã³'V\u0010~YŽrY\u0010~_@\u000f~Y\u0010~Y\u0002Yq\u001aVò6Ò=}\u0006åÏ¢1Šk5{tÒ\\†\u0013=Mꋯ1uü¿f\u0015Û±‡\u0014\u001f΃ëúgôZ'\u0006\u001b¼j)­1\u000eø¿â=Mۅw\u0018‡\u000b‹KswtWHF\u001eþjƒ11\u0014\u0000Àv\u001dÝ\tš\u0018o8bªœ¢Ó22\u0015¯½Š˜É\u001c \f\u00119ZBŠ+Vk”\u0006L†íjIX14¾À°ZÝՒ\u0017Ÿ|†Û!cÔ¡+F}¬ê/Ö1nŠÀ\u0006ÒÞíÿ\u001aŸ_ˆû rôšDƇöj}º1M\u0012¿B‚ÞÉ\"\u0019\u0007‘\"ܽŸ\u0016AF¾ æ¼„f¼öŽ”F½–\u0005»,…»V†¾Ô¶¾\u00065¼äõ<ŠºéÃ&ôÑ.TÜ^´ÊZtÚB\u0014VC4N+Ôa[”G74J?ÔUEœA»ì\u000e»P\u000e¾\u000eŽ¼’½½<=}½\u0010þ».þ\u001e^\u0019é'ñédQÁŽ\u0004ï\u0010\nß7´\u000534\u0005Kô\u001b'ô\u001aWt\u001c?Ô\u0017EÔ\u0010-T\u0007]T\u00049T\u0016QT\"$\u0014\u000bT‚n/¦Î0€\u000e/pŽ0¸>/|þ0tÞ/^0\tž/Uª0Ïê/\u000bj0²Ê0\u0016\n/8Š0¤:/½ú0wÚ/\u0012Z/Æ\u001a0\u0014¤2àՅàؑßډ_Ս_ØE\"Óñ\"•Ù\u00020â/êb/¬\"0ŸähFƒ\u0005\u0007Ë4ÄOÛ¶\u0001W0Çå踖E.?Tg,ÛE\u0011\u001f”ßD‹AçŸðÉ)I·„u+Ԍç'/áV«4ð[¿…\u0006ÑtÅR[9\u0002·ÒÇÙ·¹”-,$ÈgvõE\u0017üTE_«üì×QÅ\u0019ù¶4\u000e-\tXhy]Åç¦ôH4;€çß=MÉuY·þ.X\u0010hŽ™ÅðÊtW.;xðÿ‹Ä%š¹|ž\u001do,\u0014µÞ©+cô\u0015KzÀÑm/·Pê.Ä\u0006hŸ”\u0005žç\u0014\tU«ï¸ÂI.ÃVçgÜÅqß4\u0007$ëXëGþÅÕϖ\u001e(ë^íGÿƵP¶Ôڛ]Ú,â>h~P…q\u0019\u0014\u0015J{_þoŽ\u000e’\u000eâËíÀ¹L2-3jèƒ'{\u0018íïßÆý@¶œÑ+«:gn\u0005høt]Ë\u001bö'[Ðñ´\u0006‘,­¤R–ó?\u001dÇ)á´(A,ÒrhM:E„\u000e´œP{šñW¢Ã\u0005\"µªâ.y\u0002èG’\u0005v²ô :›—þïŸÎÕ¨Œr,C \f¿_â‚å—\n\u0017K¡Ç­vB˜\u0004žö‹â\u0014š³¨k$¨ó×ñ}Y\u0010~Y\u0010~Y\u0010~Y\u0010~Y\u0010~ º\u0006’ÉŠ×îb=Mž!ªu\u0005©y=}©xj\f\tŽ(sfŒ\t>*ye\f\nþ(vŒ\n>éwn\f\u000b\u000eét´\u000b.é’9\u0010J9ÙX9\u0019\u0019\u000f GAYþߐ\t\u001fÐ\u0005å^2¶|\u000e?ç6;÷\u000eJRpNR@6õn=}ýÎ;iá†W™¯JZ¾Û&Àk\u001d~c< !¹ð\u0002ù@\u0000Ù\"\u0002\u001aÞÅJ\u000eˆu¼‰T>ÛRáØBQØbéUCáS3\u0000_(\u0018C\u0019Íê–\u0012˜8z†±ÎD\"ÐLzvˆÉÏFNÏN ÏzÐ~\u001d ‘­Qúì¶üüªýèöûx”xß\u001e\u0018rþf˜\u000eÜIYQX1\nONÞOJ\u0006w‘Ñ=M\u0003ZU!š\u0017Ært{Ÿ=}‹ü>Œ÷>^Ҟ=}¶Zw$YU>ür>^0\u0019ùvþG@9ôzþ_¦ÀpM6 j@àöº^*^=M\u0019^\u0018n9ÿŠ¾Z*ñ\\JžH²wžáŠýÂÐ\t\u0002֌\nQ ØF\u0019âZÀ\u000bٝ‚ÿ&X<½ƒãæ€Öê)\fÚ*\u001eBÆ_Z4¡\u001f7iü¶Ÿ9Æ\u0006¿R°‘Óq /ÚÆ “®\u0019ïwGñ\u0015alA\u001a-q4\u0010\u001d„¡v–\u0017ž4Øf:;Ùv¿WfT\n>ÀV‰›˜ÿŠ<Šr¼Ö‚‚\u0002CZxµ\u0012HpŊV\u001e­f\u0018hÜ:!;\\o¯9\u000eÇüSåî_õÆl_ø1\u0002\u0001<_iÿy]± z\u001ci˜aú\u0010ӎ0QðYðQî>p‰HäAî9P®°YÜâfZ\u000e\u0004ØlNlPîáèð\u0010•Öݐ\u0019R‡´ç}Ž?ÇuÌRÇ != Ôܱ›!k\u001eóŽíaæ!Ç2!\u001cº|2\u000b&ìN\u0004\u0001äe\u0006A2+j\u0000>‚ñ[±rKL\u000eáæö÷…Œ>j•.i\\ÈúÌK\u0016\u0001æ—\u0016ý\u0011\u0001õ„_’0\u001bº×R_C/™\u001cà4ќÑ\\å¹À—·áô„-\u000e³M\u0019;&gyè\u001aˆ¿lWt \\åM¾Qh¸õ‹Gž\u00131§ýŒ1¿Å5\t]ľ› 1Ù?¼ßÄ= !]ºê«JFQq\u001fA4ùò€(\u0000ŸDLÑo\u0013ñ¶ñþ\u0000$,ÿÅUi]Õ6[ë\u001bP\u0018üé\u0014/ãòoBA\u000f‰ÐlWz˜Ç›cÒ¶\u0001=M\u001b®Ù—\u001e¤^·±º±ùô>né7\u0016i/9Z•ç\u0012Éüô3à³ð_Ãó\u0012ö˽÷PÖ]÷\u0015ÃÝ¡\u000bßýyÄ¿\u001cÉiF”\u001e@\u000bÂý0e\u001e\u0010èS¡¤7aâ¬= ›A$weZó‚šr4\u001a…ÚWT$-‚\u0012؅RnpÛvj¶\u001eÚX\u0005ŒÁ+= :«ß‰ù«›_¶qn¿#†:0jž*†·\nßA»ŒgR¯N\u0014í= P{\u0001SÂò>9'¢ÛA$\n\u0012\u0005Š™ŠÛ\"eÚ?ùèÈQ|éõÓmï- –ànüìŠj¤‡ñÒä?NåkZp@ë\u0013£Õ]\u001b\u0015= \u001bÛ¼ÔßAç\u0017\u00185ݚú´†\u0012þks\u0016ž¬\u00127ç=MrqÎF\u00125^&A6ژa4Zâ·}OV49\u0011\u000fIq\u001dsÆrÐ\u0017qQ£]t͋\\aÄWfƒñ×Ul£ÝwÛAMre\u000b0é”\u0017ð Ê@T\n¸À3= (Q\u0013JH5‹ƒi¼wp!6©ø\"ñâaŸí= ÑÎOKB4¨÷ÕVÀîàûœæ¹\u0019\u000fí£>œ HEAPU8.copyWithin(dest, src, src + num);\n\nvar abortOnCannotGrowMemory = requestedSize => {\n abort(\"OOM\");\n};\n\nvar _emscripten_resize_heap = requestedSize => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n abortOnCannotGrowMemory(requestedSize);\n};\n\nvar wasmImports = {\n /** @export */ b: JS_atan,\n /** @export */ a: JS_cos,\n /** @export */ d: JS_exp,\n /** @export */ e: JS_log,\n /** @export */ f: JS_pow,\n /** @export */ c: JS_sin,\n /** @export */ g: _emscripten_memcpy_js,\n /** @export */ h: _emscripten_resize_heap\n};\n\nfunction initRuntime(wasmExports) {\n wasmExports[\"j\"]();\n}\n\nvar imports = {\n \"a\": wasmImports\n};\n\nvar _create_decoder, _malloc, _send_setup, _init_dsp, _decode_packets, _destroy_decoder, _free;\n\n\nthis.setModule = (data) => {\n WASMAudioDecoderCommon.setModule(EmscriptenWASM, data);\n};\n\nthis.getModule = () =>\n WASMAudioDecoderCommon.getModule(EmscriptenWASM);\n\nthis.instantiate = () => {\n this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {\n const wasmExports = instance.exports;\n _create_decoder = wasmExports[\"k\"];\n _malloc = wasmExports[\"l\"];\n _send_setup = wasmExports[\"m\"];\n _init_dsp = wasmExports[\"n\"];\n _decode_packets = wasmExports[\"o\"];\n _destroy_decoder = wasmExports[\"p\"];\n _free = wasmExports[\"q\"];\n wasmMemory = wasmExports[\"i\"];\n updateMemoryViews();\n initRuntime(wasmExports);\n ready();\n});\n\nthis.ready = new Promise(resolve => {\n ready = resolve;\n}).then(() => {\n this.HEAP = wasmMemory.buffer;\n this.malloc = _malloc;\n this.free = _free;\n this.create_decoder = _create_decoder;\n this.send_setup = _send_setup;\n this.init_dsp = _init_dsp;\n this.decode_packets = _decode_packets;\n this.destroy_decoder = _destroy_decoder;\n});\nreturn this;\n}}","import { WASMAudioDecoderCommon } from \"@wasm-audio-decoders/common\";\nimport CodecParser, {\n totalSamples,\n data,\n codecFrames,\n header,\n vorbisComments,\n vorbisSetup,\n isLastPage,\n} from \"codec-parser\";\n\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\n\nexport function Decoder() {\n // injects dependencies when running as a web worker\n // async\n this._init = () => {\n return new this._WASMAudioDecoderCommon()\n .instantiate(this._EmscriptenWASM, this._module)\n .then((common) => {\n this._common = common;\n\n this._input = this._common.allocateTypedArray(\n this._inputSize,\n Uint8Array,\n );\n\n this._firstPage = true;\n this._inputLen = this._common.allocateTypedArray(1, Uint32Array);\n\n this._outputBufferPtr = this._common.allocateTypedArray(1, Uint32Array);\n this._channels = this._common.allocateTypedArray(1, Uint32Array);\n this._sampleRate = this._common.allocateTypedArray(1, Uint32Array);\n this._samplesDecoded = this._common.allocateTypedArray(1, Uint32Array);\n\n const maxErrors = 128 * 2;\n this._errors = this._common.allocateTypedArray(maxErrors, Uint32Array);\n this._errorsLength = this._common.allocateTypedArray(1, Int32Array);\n\n this._frameNumber = 0;\n this._inputBytes = 0;\n this._outputSamples = 0;\n\n this._decoder = this._common.wasm.create_decoder(\n this._input.ptr,\n this._inputLen.ptr,\n this._outputBufferPtr.ptr,\n this._channels.ptr,\n this._sampleRate.ptr,\n this._samplesDecoded.ptr,\n this._errors.ptr,\n this._errorsLength.ptr,\n maxErrors,\n );\n });\n };\n\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n get: () => this._ready,\n });\n\n // async\n this.reset = () => {\n this.free();\n return this._init();\n };\n\n this.free = () => {\n this._common.wasm.destroy_decoder(this._decoder);\n this._common.free();\n };\n\n this.sendSetupHeader = (data) => {\n this._input.buf.set(data);\n this._inputLen.buf[0] = data.length;\n\n this._common.wasm.send_setup(this._decoder, this._firstPage);\n this._firstPage = false;\n };\n\n this.initDsp = () => {\n this._common.wasm.init_dsp(this._decoder);\n };\n\n this.decodePackets = (packets) => {\n let outputBuffers = [],\n outputSamples = 0,\n errors = [];\n\n for (let packetIdx = 0; packetIdx < packets.length; packetIdx++) {\n const packet = packets[packetIdx];\n this._input.buf.set(packet);\n this._inputLen.buf[0] = packet.length;\n\n this._common.wasm.decode_packets(this._decoder);\n\n const samplesDecoded = this._samplesDecoded.buf[0];\n const channels = [];\n\n const outputBufferChannels = new Uint32Array(\n this._common.wasm.HEAP,\n this._outputBufferPtr.buf[0],\n this._channels.buf[0],\n );\n for (let channel = 0; channel < this._channels.buf[0]; channel++) {\n const output = new Float32Array(samplesDecoded);\n\n if (samplesDecoded) {\n output.set(\n new Float32Array(\n this._common.wasm.HEAP,\n outputBufferChannels[channel],\n samplesDecoded,\n ),\n );\n }\n\n channels.push(output);\n }\n\n outputBuffers.push(channels);\n outputSamples += samplesDecoded;\n\n this._frameNumber++;\n this._inputBytes += packet.length;\n this._outputSamples += samplesDecoded;\n\n // handle any errors that may have occurred\n for (let i = 0; i < this._errorsLength.buf; i += 2)\n errors.push({\n message:\n this._common.codeToString(this._errors.buf[i]) +\n \" \" +\n this._common.codeToString(this._errors.buf[i + 1]),\n frameLength: packet.length,\n frameNumber: this._frameNumber,\n inputBytes: this._inputBytes,\n outputSamples: this._outputSamples,\n });\n\n // clear the error buffer\n this._errorsLength.buf[0] = 0;\n }\n\n return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(\n errors,\n outputBuffers,\n this._channels.buf[0],\n outputSamples,\n this._sampleRate.buf[0],\n 16,\n );\n };\n\n // injects dependencies when running as a web worker\n this._isWebWorker = Decoder.isWebWorker;\n this._WASMAudioDecoderCommon =\n Decoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;\n this._EmscriptenWASM = Decoder.EmscriptenWASM || EmscriptenWASM;\n this._module = Decoder.module;\n\n this._inputSize = 128 * 1024;\n\n this._ready = this._init();\n\n return this;\n}\n\nexport const setDecoderClass = Symbol();\n\nexport default class OggVorbisDecoder {\n constructor() {\n this._onCodec = (codec) => {\n if (codec !== \"vorbis\")\n throw new Error(\n \"@wasm-audio-decoders/ogg-vorbis does not support this codec \" +\n codec,\n );\n };\n\n // instantiate to create static properties\n new WASMAudioDecoderCommon();\n\n this._init();\n this[setDecoderClass](Decoder);\n }\n\n _init() {\n this._vorbisSetupInProgress = true;\n this._totalSamplesDecoded = 0;\n this._codecParser = new CodecParser(\"audio/ogg\", {\n onCodec: this._onCodec,\n enableFrameCRC32: false,\n });\n }\n\n [setDecoderClass](decoderClass) {\n if (this._decoder) {\n const oldDecoder = this._decoder;\n oldDecoder.ready.then(() => oldDecoder.free());\n }\n\n this._decoder = new decoderClass();\n this._ready = this._decoder.ready;\n }\n\n get ready() {\n return this._ready;\n }\n\n async reset() {\n this._init();\n return this._decoder.reset();\n }\n\n free() {\n this._decoder.free();\n }\n\n async decodeOggPages(oggPages) {\n const packets = [];\n\n for (let i = 0; i < oggPages.length; i++) {\n const oggPage = oggPages[i];\n\n if (this._vorbisSetupInProgress) {\n if (oggPage[data][0] === 1) {\n this._decoder.sendSetupHeader(oggPage[data]);\n }\n\n if (oggPage[codecFrames].length) {\n const headerData = oggPage[codecFrames][0][header];\n\n this._decoder.sendSetupHeader(headerData[vorbisComments]);\n this._decoder.sendSetupHeader(headerData[vorbisSetup]);\n this._decoder.initDsp();\n\n this._vorbisSetupInProgress = false;\n }\n }\n\n packets.push(...oggPage[codecFrames].map((f) => f[data]));\n }\n\n const decoded = await this._decoder.decodePackets(packets);\n\n this._totalSamplesDecoded += decoded.samplesDecoded;\n\n // in cases where BigInt isn't supported, don't do any absoluteGranulePosition logic (i.e. old iOS versions)\n const oggPage = oggPages[oggPages.length - 1];\n if (oggPage && oggPage[isLastPage]) {\n // trim any extra samples that are decoded beyond the absoluteGranulePosition, relative to where we started in the stream\n const samplesToTrim = this._totalSamplesDecoded - oggPage[totalSamples];\n\n if (samplesToTrim > 0) {\n for (let i = 0; i < decoded.channelData.length; i++)\n decoded.channelData[i] = decoded.channelData[i].subarray(\n 0,\n decoded.samplesDecoded - samplesToTrim,\n );\n\n decoded.samplesDecoded -= samplesToTrim;\n this._totalSamplesDecoded -= samplesToTrim;\n }\n }\n\n return decoded;\n }\n\n async decode(vorbisData) {\n return this.decodeOggPages([...this._codecParser.parseChunk(vorbisData)]);\n }\n\n async flush() {\n const decoded = await this.decodeOggPages([...this._codecParser.flush()]);\n\n await this.reset();\n return decoded;\n }\n\n async decodeFile(vorbisData) {\n const decoded = await this.decodeOggPages([\n ...this._codecParser.parseAll(vorbisData),\n ]);\n\n await this.reset();\n return decoded;\n }\n}\n","import { WASMAudioDecoderWorker } from \"@wasm-audio-decoders/common\";\nimport EmscriptenWASM from \"./EmscriptenWasm.js\";\nimport OggVorbisDecoder, {\n Decoder,\n setDecoderClass,\n} from \"./OggVorbisDecoder.js\";\n\nclass DecoderWorker extends WASMAudioDecoderWorker {\n constructor(options) {\n super(options, \"ogg-vorbis-decoder\", Decoder, EmscriptenWASM);\n }\n\n async sendSetupHeader(data) {\n return this.postToDecoder(\"sendSetupHeader\", data);\n }\n\n async initDsp() {\n return this.postToDecoder(\"initDsp\");\n }\n\n async decodePackets(packets) {\n return this.postToDecoder(\"decodePackets\", packets);\n }\n}\n\nexport default class OggVorbisDecoderWebWorker extends OggVorbisDecoder {\n constructor() {\n super();\n\n super[setDecoderClass](DecoderWorker);\n }\n\n async free() {\n super.free();\n }\n\n terminate() {\n this._decoder.terminate();\n }\n}\n","import OggVorbisDecoder from \"./src/OggVorbisDecoder.js\";\nimport OggVorbisDecoderWebWorker from \"./src/OggVorbisDecoderWebWorker.js\";\nimport { assignNames } from \"@wasm-audio-decoders/common\";\n\nassignNames(OggVorbisDecoder, \"OggVorbisDecoder\");\nassignNames(OggVorbisDecoderWebWorker, \"OggVorbisDecoderWebWorker\");\n\nexport { OggVorbisDecoder, OggVorbisDecoderWebWorker };\n"],"names":["EmscriptenWASM","WASMAudioDecoderCommon","ready","base64ReverseLookup","Uint8Array","i","HEAPU8","wasmMemory","wasm","Object","defineProperty","get","String","raw","_create_decoder","_malloc","_send_setup","_init_dsp","_decode_packets","_destroy_decoder","_free","imports","a","b","x","Math","atan","cos","d","exp","e","log","f","y","pow","c","sin","g","dest","src","num","copyWithin","h","requestedSize","abort","this","setModule","data","getModule","instantiate","then","WebAssembly","instance","wasmExports","exports","buffer","initRuntime","Promise","resolve","HEAP","malloc","free","create_decoder","send_setup","init_dsp","decode_packets","destroy_decoder","Decoder","_init","_WASMAudioDecoderCommon","_EmscriptenWASM","_module","common","_common","_input","allocateTypedArray","_inputSize","_firstPage","_inputLen","Uint32Array","_outputBufferPtr","_channels","_sampleRate","_samplesDecoded","_errors","_errorsLength","Int32Array","_frameNumber","_inputBytes","_outputSamples","_decoder","ptr","enumerable","_ready","reset","sendSetupHeader","buf","set","length","initDsp","decodePackets","packets","outputBuffers","outputSamples","errors","packetIdx","packet","samplesDecoded","channels","outputBufferChannels","channel","output","Float32Array","push","message","codeToString","frameLength","frameNumber","inputBytes","getDecodedAudioMultiChannel","_isWebWorker","isWebWorker","module","setDecoderClass","Symbol","OggVorbisDecoder","constructor","_onCodec","codec","Error","_vorbisSetupInProgress","_totalSamplesDecoded","_codecParser","CodecParser","onCodec","enableFrameCRC32","decoderClass","oldDecoder","decodeOggPages","oggPages","oggPage","codecFrames","headerData","header","vorbisComments","vorbisSetup","map","decoded","isLastPage","samplesToTrim","totalSamples","channelData","subarray","decode","vorbisData","parseChunk","flush","decodeFile","parseAll","DecoderWorker","WASMAudioDecoderWorker","options","super","postToDecoder","OggVorbisDecoderWebWorker","terminate","assignNames"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index-e32e9397.js b/dist/index-e32e9397.js new file mode 100644 index 00000000..0da339e9 --- /dev/null +++ b/dist/index-e32e9397.js @@ -0,0 +1,2 @@ +function t(t,e){return e.forEach(function(e){e&&"string"!=typeof e&&!Array.isArray(e)&&Object.keys(e).forEach(function(r){if("default"!==r&&!(r in t)){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})}),t}const e={pcm8:(t,e,r,n,l)=>{let o=new Uint8Array(t,e),a=0;for(let t=0;t{let o=new Int16Array(t,e),a=0;for(let t=0;t{let o=new Uint8Array(t,e),a=0;for(let t=0;t8388608?n-16777216:n;r[e][t]=l<0?l/8388608:l/8388607}},pcm32:(t,e,r,n,l)=>{let o=new Int32Array(t,e),a=0;for(let t=0;t{let o=new Float32Array(t,e),a=0;for(let t=0;t{let o=new Float64Array(t,e),a=0;for(let t=0;t{let o=new Uint8Array(t,e),a=0;for(let t=0;t{let o=new Int16Array(t,e),a=0;for(let t=0;t{let o=new Uint8Array(t,e),a=0;for(let t=0;t>8&255,o[a++]=n>>16&255}},pcm32:(t,e,r,n,l)=>{let o=new Int32Array(t,e),a=0;for(let t=0;t{let o=new Float32Array(t,e),a=0;for(let t=0;t{let o=new Float64Array(t,e),a=0;for(let t=0;t>3)),m=new DataView(c),h=0;function p(t){m.setUint16(h,t,!0),h+=2}function u(t){m.setUint32(h,t,!0),h+=4}function w(t){for(var e=0;e>3)),p(f*(a>>3)),p(a),w("data"),u(c.byteLength-44),n(r,a,o)(c,h,t,f,i),Buffer(c)}},o=/*#__PURE__*/t({__proto__:null,default:l},[l]);export{o as i}; +//# sourceMappingURL=index-e32e9397.js.map diff --git a/dist/index-e32e9397.js.map b/dist/index-e32e9397.js.map new file mode 100644 index 00000000..cb945416 --- /dev/null +++ b/dist/index-e32e9397.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-e32e9397.js","sources":["../node_modules/node-wav/index.js"],"sourcesContent":["/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n\n'use strict';\n\nconst data_decoders = {\n pcm8: (buffer, offset, output, channels, samples) => {\n let input = new Uint8Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let data = input[pos++] - 128;\n output[ch][i] = data < 0 ? data / 128 : data / 127;\n }\n }\n },\n pcm16: (buffer, offset, output, channels, samples) => {\n let input = new Int16Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let data = input[pos++];\n output[ch][i] = data < 0 ? data / 32768 : data / 32767;\n }\n }\n },\n pcm24: (buffer, offset, output, channels, samples) => {\n let input = new Uint8Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let x0 = input[pos++];\n let x1 = input[pos++];\n let x2 = input[pos++];\n let xx = (x0 + (x1 << 8) + (x2 << 16));\n let data = xx > 0x800000 ? xx - 0x1000000 : xx;\n output[ch][i] = data < 0 ? data / 8388608 : data / 8388607;\n }\n }\n },\n pcm32: (buffer, offset, output, channels, samples) => {\n let input = new Int32Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let data = input[pos++];\n output[ch][i] = data < 0 ? data / 2147483648 : data / 2147483647;\n }\n }\n },\n pcm32f: (buffer, offset, output, channels, samples) => {\n let input = new Float32Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch)\n output[ch][i] = input[pos++];\n }\n },\n pcm64f: (buffer, offset, output, channels, samples) => {\n let input = new Float64Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch)\n output[ch][i] = input[pos++];\n }\n },\n};\n\nconst data_encoders = {\n pcm8: (buffer, offset, input, channels, samples) => {\n let output = new Uint8Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let v = Math.max(-1, Math.min(input[ch][i], 1));\n v = ((v * 0.5 + 0.5) * 255) | 0;\n output[pos++] = v;\n }\n }\n },\n pcm16: (buffer, offset, input, channels, samples) => {\n let output = new Int16Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let v = Math.max(-1, Math.min(input[ch][i], 1));\n v = ((v < 0) ? v * 32768 : v * 32767) | 0;\n output[pos++] = v;\n }\n }\n },\n pcm24: (buffer, offset, input, channels, samples) => {\n let output = new Uint8Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let v = Math.max(-1, Math.min(input[ch][i], 1));\n v = ((v < 0) ? 0x1000000 + v * 8388608 : v * 8388607) | 0;\n output[pos++] = (v >> 0) & 0xff;\n output[pos++] = (v >> 8) & 0xff;\n output[pos++] = (v >> 16) & 0xff;\n }\n }\n },\n pcm32: (buffer, offset, input, channels, samples) => {\n let output = new Int32Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let v = Math.max(-1, Math.min(input[ch][i], 1));\n v = ((v < 0) ? v * 2147483648 : v * 2147483647) | 0;\n output[pos++] = v;\n }\n }\n },\n pcm32f: (buffer, offset, input, channels, samples) => {\n let output = new Float32Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let v = Math.max(-1, Math.min(input[ch][i], 1)); \n output[pos++] = v;\n }\n }\n },\n pcm64f: (buffer, offset, input, channels, samples) => {\n let output = new Float64Array(buffer, offset);\n let pos = 0;\n for (let i = 0; i < samples; ++i) {\n for (let ch = 0; ch < channels; ++ch) {\n let v = Math.max(-1, Math.min(input[ch][i], 1)); \n output[pos++] = v;\n }\n }\n },\n};\n\nfunction lookup(table, bitDepth, floatingPoint) {\n let name = 'pcm' + bitDepth + (floatingPoint ? 'f' : '');\n let fn = table[name];\n if (!fn)\n throw new TypeError('Unsupported data format: ' + name);\n return fn;\n}\n\nfunction decode(buffer) {\n let pos = 0, end = 0;\n if (buffer.buffer) {\n // If we are handed a typed array or a buffer, then we have to consider the\n // offset and length into the underlying array buffer.\n pos = buffer.byteOffset;\n end = buffer.length;\n buffer = buffer.buffer;\n } else {\n // If we are handed a straight up array buffer, start at offset 0 and use\n // the full length of the buffer.\n pos = 0;\n end = buffer.byteLength;\n }\n\n let v = new DataView(buffer);\n\n function u8() {\n let x = v.getUint8(pos);\n pos++;\n return x;\n }\n\n function u16() {\n let x = v.getUint16(pos, true);\n pos += 2;\n return x;\n }\n\n function u32() {\n let x = v.getUint32(pos, true);\n pos += 4;\n return x;\n }\n\n function string(len) {\n let str = '';\n for (let i = 0; i < len; ++i)\n str += String.fromCharCode(u8());\n return str;\n }\n\n if (string(4) !== 'RIFF')\n throw new TypeError('Invalid WAV file');\n u32();\n if (string(4) !== 'WAVE')\n throw new TypeError('Invalid WAV file');\n\n let fmt;\n \n while (pos < end) {\n let type = string(4);\n let size = u32();\n let next = pos + size;\n switch (type) {\n case 'fmt ':\n let formatId = u16();\n if (formatId !== 0x0001 && formatId !== 0x0003)\n throw new TypeError('Unsupported format in WAV file: ' + formatId.toString(16));\n fmt = {\n format: 'lpcm',\n floatingPoint: formatId === 0x0003,\n channels: u16(),\n sampleRate: u32(),\n byteRate: u32(),\n blockSize: u16(),\n bitDepth: u16(),\n };\n break;\n case 'data':\n if (!fmt)\n throw new TypeError('Missing \"fmt \" chunk.');\n let samples = Math.floor(size / fmt.blockSize);\n let channels = fmt.channels;\n let sampleRate = fmt.sampleRate;\n let channelData = [];\n for (let ch = 0; ch < channels; ++ch)\n channelData[ch] = new Float32Array(samples);\n lookup(data_decoders, fmt.bitDepth, fmt.floatingPoint)(buffer, pos, channelData, channels, samples);\n return {\n sampleRate: sampleRate,\n channelData: channelData\n };\n break;\n }\n pos = next;\n }\n}\n\nfunction encode(channelData, opts) {\n let sampleRate = opts.sampleRate || 16000;\n let floatingPoint = !!(opts.float || opts.floatingPoint);\n let bitDepth = floatingPoint ? 32 : ((opts.bitDepth | 0) || 16);\n let channels = channelData.length;\n let samples = channelData[0].length;\n let buffer = new ArrayBuffer(44 + (samples * channels * (bitDepth >> 3)));\n\n let v = new DataView(buffer);\n let pos = 0;\n\n function u8(x) {\n v.setUint8(pos++, x);\n }\n\n function u16(x) {\n v.setUint16(pos, x, true);\n pos += 2;\n }\n\n function u32(x) {\n v.setUint32(pos, x, true);\n pos += 4;\n }\n \n function string(s) {\n for (var i = 0; i < s.length; ++i)\n u8(s.charCodeAt(i));\n }\n\n // write header\n string('RIFF');\n u32(buffer.byteLength - 8);\n string('WAVE');\n\n // write 'fmt ' chunk\n string('fmt ');\n u32(16);\n u16(floatingPoint ? 0x0003 : 0x0001);\n u16(channels);\n u32(sampleRate);\n u32(sampleRate * channels * (bitDepth >> 3));\n u16(channels * (bitDepth >> 3));\n u16(bitDepth);\n\n // write 'data' chunk\n string('data');\n u32(buffer.byteLength - 44);\n lookup(data_encoders, bitDepth, floatingPoint)(buffer, pos, channelData, channels, samples);\n\n return Buffer(buffer);\n}\n\nmodule.exports = {\n decode: decode,\n encode: encode,\n};\n"],"names":["data_decoders","pcm8","buffer","offset","output","channels","samples","input","Uint8Array","pos","i","ch","data","pcm16","Int16Array","pcm24","xx","pcm32","Int32Array","pcm32f","Float32Array","pcm64f","Float64Array","data_encoders","v","Math","max","min","lookup","table","bitDepth","floatingPoint","name","fn","TypeError","nodeWav","decode","end","byteOffset","length","byteLength","fmt","DataView","u8","x","getUint8","u16","getUint16","u32","getUint32","string","len","str","String","fromCharCode","type","size","next","formatId","toString","format","sampleRate","byteRate","blockSize","floor","channelData","encode","opts","float","ArrayBuffer","setUint16","setUint32","s","charCodeAt","setUint8","Buffer"],"mappings":"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"} \ No newline at end of file diff --git a/dist/utilities-0f571cba.js b/dist/utilities-0f571cba.js new file mode 100644 index 00000000..d7edb471 --- /dev/null +++ b/dist/utilities-0f571cba.js @@ -0,0 +1,2 @@ +const e=(e,t=4294967295,U=79764919)=>{const s=new Int32Array(256);let n,r,o,a=t;for(n=0;n<256;n++){for(o=n<<24,r=8;r>0;--r)o=2147483648&o?o<<1^U:o<<1;s[n]=o}for(n=0;n>24^e[n])];return a},t=(t,U=e)=>{const s=e=>new Uint8Array(e.length/2).map((t,U)=>parseInt(e.substring(2*U,2*(U+1)),16)),n=e=>s(e)[0],r=new Map;[,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((e,t)=>r.set(e,t));const o=new Uint8Array(t.length);let a,i,l,d=!1,u=0,c=42,T=t.length>13&&"dynEncode"===t.substring(0,9),h=0;T&&(h=11,i=n(t.substring(9,h)),i<=1&&(h+=2,c=n(t.substring(11,h))),1===i&&(h+=8,l=(e=>new DataView(s(e).buffer).getInt32(0,!0))(t.substring(13,h))));const m=256-c;for(let e=h;e255){const e=r.get(a);e&&(a=e+127)}d&&(d=!1,a-=64),o[u++]=a0?a+m:a-c}else d=!0;const p=o.subarray(0,u);if(T&&1===i){const e=U(p);if(e!==l){const t="Decode failed crc32 validation";throw console.error("`simple-yenc`\n",t+"\n","Expected: "+l+"; Got: "+e+"\n","Visit https://github.com/eshaz/simple-yenc for more information"),Error(t)}}return p};function U(){const e=Uint8Array,s=Float32Array;U.modules||Object.defineProperties(U,{modules:{value:new WeakMap},setModule:{value(e,t){U.modules.set(e,Promise.resolve(t))}},getModule:{value(e,s){let n=U.modules.get(e);return n||(n=s?WebAssembly.compile(t(s)):U.inflateDynEncodeString(s=e.wasm).then(e=>WebAssembly.compile(e)),U.modules.set(e,n)),n}},concatFloat32:{value(e,t){let U=new s(t),n=0,r=0;for(;n({errors:e,channelData:t,samplesDecoded:U,sampleRate:s,bitDepth:n})},getDecodedAudioMultiChannel:{value(e,t,s,n,r,o){let a,i,l=[];for(a=0;a(s=t(s),new Promise(t=>{const n=String.raw`dynEncode0114db91da9bu‡*t“““t“““““t““““$#“U¤¤“U¤¤3yƒ†„‰zzss|yu„svu‡yÚ&ˆ“4<054<,5T44^T44<(6U~J(44< ~A544U~6J0444ˆ†545 444J0444‰J,4U“4ˆU“‡…Ò“7U45“4U4Z“4U4U^/6545T4T44BUˆ~64CU~O4U54U~5 U5T4B4Z!4U~5U5U5T4U~6U4ZTU5U5T44~4O4U2ZTU5T44Z!4B6T44Uˆ~64B6U~O44Uˆ~4O4U~54U~5 44~C4~54U~5 44~5454Uˆ4B6Ub!444~UO4U~5 “U5“4U4ZTUŠ#44U$4†64<4~B6^“4<444~Uˆ~B4U~54Uˆ544~544~Uˆ5 µ“Uä#UJUè#5TT4U0ZTTUX5U5T4T4Uà#~4OU4U $~Cˆ4~54U~5 T44$6U\!TTT4UaT4<6T4<64<Z!44~4N4<U~5 4U”Z!4U±_TUŠ#44U•Uˆ6UÔ~B$544$6U\!4Uˆ6U¤#~B44Uä#~B$~64<6_TU‰#444U”~B~6~54<Y!44<_!T4Y!4<64~444~AN44<U~6J4U5 44J4U”[!U#44UŠO4U~54U~5 U54 “7U6844J44J 4UJ4UJ04VK(44<J44<J$4U´~54U~5 4U¤~5!TTT4U$5"U“5TTTTTTT4U$"4VK,U54<(6U~64<$6_!4< 64~6A54A544U~6#J(U’54A4U‡[!44J(44#~A4Uˆ6U“‡UŠU…[!44†64~64_!4<64~54<6T4<4]TU5 T4Y!44~44~AN4U~54U~54U5 44J(44J UÄA!U5U”#UôJU"UÔJUœ#UÔ"JU˜#U´"JT4U´ZTU5T4UôZTU5T4UDZTU5T4U$[T44~UO4U~5 UÔUô4U~U´$.U5T4UP[T4U~4~UO4U~5 U˜#<Uœ#<4U~U2$.UÄUN 44 ~UO4U~5 44!~UO4U~5 4U~4~UO4U~5 44J44J(U5 44U¤~J@44Uä~J<44UD~J844U~J44U$54U$5U‘54U$54U1^4U1^†!4U•~54U~5U”54U~6U4U^/65T4T4U$54U~4BUˆ~4O4U54U~5 UU'464U'_/54UˆU”~5T4T4U~4BUˆ~UO4U54U~5 U54Uä~4U¤~4U~U'$!44~5U5T44\T44U<~$6U\!4U#aT4U~4Uˆ~4O4U~5 U5U5U5TTT4U$"4YTU5 4Uˆ4~C5U5 U5U5444$4~64~\TUŽ5 4U~4Uˆ~5T4Y!44O4U~54U~54U5 4CYTU‹5 4Uä~4U¤~4U~4$6TU54U\!44Bæ4Bä~[!4U~4UD~4U~4Uˆ~4$6TUŒ54U\!44B†4B„~[!44U<~4U4~$5 4U"U˜#$544"†Y!454U^!44<J44<(J454U~84­U”N!#%'+/37?GOWgw‡—·×÷Uä;U”9$%& !"#`;U.getModule(U,n).then(e=>WebAssembly.instantiate(e,{})).then(({exports:U})=>{const n=new Map(Object.entries(U)),r=n.get("puff"),o=n.get("memory").buffer,a=new e(o),i=new DataView(o);let l=n.get("__heap_base");const d=s.length,u=l;l+=4,i.setInt32(u,d,!0);const c=l;l+=d,a.set(s,c);const T=l;l+=4,i.setInt32(T,a.byteLength-l,!0),r(l,T,c,u),t(a.slice(l,l+i.getInt32(T,!0)))})}))}}),Object.defineProperty(this,"wasm",{enumerable:!0,get:()=>this._wasm}),this.getOutputChannels=(e,t,U)=>{let s=[],n=0;for(;n{const s=this._wasm.malloc(t.BYTES_PER_ELEMENT*e);return U&&this._pointers.add(s),{ptr:s,len:e,buf:new t(this._wasm.HEAP,s,e)}},this.free=()=>{this._pointers.forEach(e=>{this._wasm.free(e)}),this._pointers.clear()},this.codeToString=e=>{const t=[],U=new Uint8Array(this._wasm.HEAP);for(let s=U[e];0!==s;s=U[++e])t.push(s);return String.fromCharCode.apply(null,t)},this.addError=(e,t,U,s,n,r)=>{e.push({message:t,frameLength:U,frameNumber:s,inputBytes:n,outputSamples:r})},this.instantiate=(e,t)=>(t&&U.setModule(e,t),this._wasm=new e(U).instantiate(),this._pointers=new Set,this._wasm.ready.then(()=>this))}var s=Worker;class n extends((()=>globalThis.Worker||s)()){constructor(e,t,s,n){U.modules||new U;let r=U.modules.get(s);if(!r){let e,t="text/javascript",o=`'use strict';(${((e,t,U)=>{let s,n,r=new Promise(e=>{n=e});self.onmessage=({data:{id:o,command:a,data:i}})=>{let l,d=r,u={id:o};"init"===a?(Object.defineProperties(e,{WASMAudioDecoderCommon:{value:t},EmscriptenWASM:{value:U},module:{value:i.module},isWebWorker:{value:!0}}),s=new e(i.options),n()):"free"===a?s.free():"ready"===a?d=d.then(()=>s.ready):"reset"===a?d=d.then(()=>s.reset()):(Object.assign(u,s[a](Array.isArray(i)?i.map(e=>new Uint8Array(e)):new Uint8Array(i))),l=u.channelData?u.channelData.map(e=>e.buffer):[]),d.then(()=>self.postMessage(u,l))}}).toString()})(${s}, ${U}, ${n})`;try{e=void 0!==process.versions.node}catch{}r=e?`data:${t};base64,${Buffer.from(o).toString("base64")}`:URL.createObjectURL(new Blob([o],{type:t})),U.modules.set(s,r)}super(r,{name:t}),this._id=Number.MIN_SAFE_INTEGER,this._enqueuedOperations=new Map,this.onmessage=({data:e})=>{const{id:t,...U}=e;this._enqueuedOperations.get(t)(U),this._enqueuedOperations.delete(t)},new n(U).getModule().then(t=>{this.postToDecoder("init",{module:t,options:e})})}async postToDecoder(e,t){return new Promise(U=>{this.postMessage({command:e,id:this._id,data:t}),this._enqueuedOperations.set(this._id++,U)})}get ready(){return this.postToDecoder("ready")}async free(){await this.postToDecoder("free").finally(()=>{this.terminate()})}async reset(){await this.postToDecoder("reset")}}const r=(e,t)=>{Object.defineProperty(e,"name",{value:t})};export{U as W,n as a,r as b}; +//# sourceMappingURL=utilities-0f571cba.js.map diff --git a/dist/utilities-0f571cba.js.map b/dist/utilities-0f571cba.js.map new file mode 100644 index 00000000..9b0d506a --- /dev/null +++ b/dist/utilities-0f571cba.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utilities-0f571cba.js","sources":["../node_modules/simple-yenc/dist/esm.js","../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js","../node_modules/@eshaz/web-worker/cjs/browser.js","../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js","../node_modules/@wasm-audio-decoders/common/src/utilities.js"],"sourcesContent":["const t=(t,n=4294967295,e=79764919)=>{const r=new Int32Array(256);let o,s,i,c=n;for(o=0;o<256;o++){for(i=o<<24,s=8;s>0;--s)i=2147483648&i?i<<1^e:i<<1;r[o]=i}for(o=0;o>24^t[o])];return c},n=t=>{const n=[];for(const e of t){let t=(e+42)%256;0===t||10===t||13===t||61===t?n.push(\"=\"+String.fromCharCode((t+64)%256)):n.push(String.fromCharCode(t))}return n.join(\"\")},e=(n,e=t)=>{const r=t=>new Uint8Array(t.length/2).map(((n,e)=>parseInt(t.substring(2*e,2*(e+1)),16))),o=t=>r(t)[0],s=new Map;[,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(((t,n)=>s.set(t,n)));const i=new Uint8Array(n.length);let c,a,l,f=!1,g=0,h=42,p=n.length>13&&\"dynEncode\"===n.substring(0,9),u=0;p&&(u=11,a=o(n.substring(9,u)),a<=1&&(u+=2,h=o(n.substring(11,u))),1===a&&(u+=8,l=(t=>new DataView(r(t).buffer).getInt32(0,!0))(n.substring(13,u))));const d=256-h;for(let t=u;t255){const t=s.get(c);t&&(c=t+127)}f&&(f=!1,c-=64),i[g++]=c0?c+d:c-h}else f=!0;const m=i.subarray(0,g);if(p&&1===a){const t=e(m);if(t!==l){const n=\"Decode failed crc32 validation\";throw console.error(\"`simple-yenc`\\n\",n+\"\\n\",\"Expected: \"+l+\"; Got: \"+t+\"\\n\",\"Visit https://github.com/eshaz/simple-yenc for more information\"),Error(n)}}return m},r=(n,e='\"',r=t,o)=>{const s=(t,n)=>(t%n+n)%n,i=(t,n)=>n.push(String.fromCharCode(61,(t+64)%256)),c=t=>t.map((t=>t.toString(16).padStart(2,\"0\")));let a,l,f=[],g=1/0,h=Array(256).fill(0);if('\"'===e?(l=[0,8,9,10,11,12,13,34,92,61],a=t=>0===t||8===t||9===t||10===t||11===t||12===t||13===t||34===t||92===t||61===t):\"'\"===e?(l=[0,8,9,10,11,12,13,39,92,61],a=t=>0===t||8===t||9===t||10===t||11===t||12===t||13===t||39===t||92===t||61===t):\"`\"===e&&(l=[13,61,96],f=[7,205,231],a=(t,n)=>13===t||36===t&&123===n||61===t||92===t&&(85===n||117===n)||96===t),void 0===o){o=0;for(let t=0;t{const n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,t,!0),[...n]})(r(n)))];for(let t=0;tt.replace(/[\\\\]/g,\"\\\\\\\\\").replace(/[`]/g,\"\\\\`\").replace(/\\${/g,\"\\\\${\");export{t as crc32,e as decode,r as dynamicEncode,n as encode,o as stringify};\n","import { decode } from \"simple-yenc\";\n\nexport default function WASMAudioDecoderCommon() {\n // setup static methods\n const uint8Array = Uint8Array;\n const float32Array = Float32Array;\n\n if (!WASMAudioDecoderCommon.modules) {\n Object.defineProperties(WASMAudioDecoderCommon, {\n modules: {\n value: new WeakMap(),\n },\n\n setModule: {\n value(Ref, module) {\n WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));\n },\n },\n\n getModule: {\n value(Ref, wasmString) {\n let module = WASMAudioDecoderCommon.modules.get(Ref);\n\n if (!module) {\n if (!wasmString) {\n wasmString = Ref.wasm;\n module = WASMAudioDecoderCommon.inflateDynEncodeString(\n wasmString,\n ).then((data) => WebAssembly.compile(data));\n } else {\n module = WebAssembly.compile(decode(wasmString));\n }\n\n WASMAudioDecoderCommon.modules.set(Ref, module);\n }\n\n return module;\n },\n },\n\n concatFloat32: {\n value(buffers, length) {\n let ret = new float32Array(length),\n i = 0,\n offset = 0;\n\n while (i < buffers.length) {\n ret.set(buffers[i], offset);\n offset += buffers[i++].length;\n }\n\n return ret;\n },\n },\n\n getDecodedAudio: {\n value: (errors, channelData, samplesDecoded, sampleRate, bitDepth) => ({\n errors,\n channelData,\n samplesDecoded,\n sampleRate,\n bitDepth,\n }),\n },\n\n getDecodedAudioMultiChannel: {\n value(\n errors,\n input,\n channelsDecoded,\n samplesDecoded,\n sampleRate,\n bitDepth,\n ) {\n let channelData = [],\n i,\n j;\n\n for (i = 0; i < channelsDecoded; i++) {\n const channel = [];\n for (j = 0; j < input.length; ) channel.push(input[j++][i] || []);\n channelData.push(\n WASMAudioDecoderCommon.concatFloat32(channel, samplesDecoded),\n );\n }\n\n return WASMAudioDecoderCommon.getDecodedAudio(\n errors,\n channelData,\n samplesDecoded,\n sampleRate,\n bitDepth,\n );\n },\n },\n\n /*\n ******************\n * Compression Code\n ******************\n */\n\n inflateDynEncodeString: {\n value(source) {\n source = decode(source);\n\n return new Promise((resolve) => {\n // prettier-ignore\n const puffString = String.raw`dynEncode0114db91da9b\u0014u‡\u0015\u0014\u0014\u0014\u0015*\u0017t\u0016““\u0015“t\u0018““““\u0015“t\u0017“““\u0015“\u0017\u001a\u0019\u0014\u0015\u0014\u0016\u0015\u0019\u0017\u0015\u0014$\u001a#\u0016“\u0015U¤¤\u0018\u001f“\u0014U¤¤\u0018\u001f\u001b3\u0017\u001ayƒ†\u0016\u0014\u0018„‰zz\u0014\u0018\u001fss|yu„svu‡y\u0017\u0015\u001eÚ&\u0019ˆ\u0015\u0018“4\u0014<\u001605\u00164\u0014<\u0016,5\u0017\u0017T4\u00154\u0016^\u0018T4\u00144\u0014<\u0016(6\u0018U\u0015~J\u0016(4\u00184\u0014<\u0016 ~A\u0014\u00145\u00194\u00144\u0016U\u001c~6\u0018J\u001604\u00174\u00194\u0016ˆ†5\u00174\u00185\u0016 \u0015\u001f\u001f4\u00144\u00164\u0015J\u001604\u00144\u00174\u0015‰J\u0016,4\u0017U“4\u0015ˆU“‡…\u001fÒ\u0016\u0015\u001a“7\u0014U45\u001b\u0017“4\u0018U4Z\u0018“4\u0017U\u00144\u0017U\u0014^/6\u001c5\u00184\u00165\u0019\u0017T4\u0018\u0018T4\u00144\u0019B\u0015\u0014U\u0015ˆ~6\u001a4\u001aC\u0015\u0014U\u0015~O\u0015\u00144\u0018U\u00155\u00184\u0019U\u0016~5\u0019 \u0015\u001f\u001fU\u00145\u001a\u0016T4\u0014B\u0015\u00144\u0017Z!\u00144\u0014U\u0016~5\u0019U\u00145\u0018U\u00155\u001a\u0017T4\u0018U\u0016~6\u0017U4Z\u0018TU\u00145\u0019U\u00165\u0018\u0017T4\u00184\u001b~4\u0019O\u0015\u00144\u0018U2Z\u0018TU\u00145\u0018\u0017T4\u00184\u001cZ!\u00194\u0016B\u0015\u00146\u0014\u0018T4\u001b4\u0014U\u0015ˆ~6\u00144\u0014B\u0015\u00146\u0014U\u0015~O\u0015\u00144\u00154\u0014U\u0015ˆ~4\u0018O\u0015\u0014\u001f4\u0016U\u0016~5\u00164\u0018U\u0015~5\u0018 \u0014\u001f\u0014\u00194\u00144\u0018~C\u0015\u00144\u0019~5\u00194\u0018U\u0016~5\u0018 \u0015\u001f\u0014\u001f\u0014\u001f4\u00184\u0019~5\u001d4\u00175\u00184\u001aU\u0015ˆ4\u001dB\u0015\u00146\u001aU\u0014b!\u0014\u001f\u001f4\u001a\u00194\u00144\u0018~U\u0014O\u0015\u00144\u0018U\u0016~5\u0018 \u0015\u001f\u001f\u001f\u0015\u0019“U\u00165\u0016\u0017“4\u0016U4Z\u0018TUŠ#\u001f4\u00184\u0014U\u0015$\u00144\u0017†6\u00174\u0015<\u0016\u00144\u0016~B\u0015\u00146\u0019^\u0018“4\u0015<\u0016\u00184\u001a4\u00184\u0017~U\u0015ˆ~B\u0015\u0014\u00194\u0016U\u0016~5\u00164\u0017U\u0015ˆ5\u00174\u00194\u001a~5\u001a4\u00184\u0019~U\u0015ˆ5\u0018 \u0015\u001f\u001f\u001fµ\u0017\u0015\u0019“Uä#U\u0014J\u0016\u0014Uè#5\u0018\u0016T\u0017T4\u0017U0Z\u0018T\u0016TUX5\u0017U\u00155\u0018\u0017T4\u0017\u0018T4\u0017Uà#~4\u0018O\u0015\u0014U\u00154\u0017U $~C\u0015\u0014ˆ4\u0018~5\u00184\u0017U\u0016~5\u0017 \u0015\u0019\u0017T4\u00144\u0015$\u00166\u0019U\u0014\\!\u001a\u0016T\u0016T\u0016T4\u0019U\u0013\u0015a\u0018T4\u0014<\u0016\u00146\u0017\u0018T4\u0014<\u0016\u001c6\u00184\u0014<\u0016\u0018Z!\u001c4\u00174\u0018~4\u0019N\u0014\u0014\u001f4\u0014<\u0016\u001cU\u0015~5\u001a \u0015\u001f4\u0019U”\u0016Z!\u00164\u0019U±\u0016_\u0018TUŠ#\u001f4\u00144\u0019U•\u0016U\u0015ˆ6\u0018UÔ\u001c~B\u0015\u0014$\u00145\u001a4\u00144\u0016$\u00166\u0019U\u0014\\!\u001d4\u0019U\u0015ˆ6\u0017U¤#~B\u0015\u00144\u00144\u0017Uä#~B\u0015\u0014$\u0014~6\u001b4\u0014<\u0016\u001c6\u0017_\u0018TU‰#\u001f4\u00174\u001a4\u0018U”\u001c~B\u0015\u0014~6\u0018~5\u001a4\u0014<\u0016\u0014Y!\u00144\u001a4\u0014<\u0016\u0018_!\u001a\u0017T4\u0018Y!\u00164\u0014<\u0016\u00146\u001a4\u0017~4\u001a4\u00174\u001b~A\u0014\u0014N\u0014\u00144\u00144\u0014<\u0016\u001cU\u0015~6\u0017J\u0016\u001c4\u0018U\u00155\u0018 \u0014\u001f\u0014\u001f4\u00144\u001aJ\u0016\u001c\u001f4\u0019U”\u0016[!\u0015\u001f\u001fU\u0014#\u001f\u0014\u001f\u0014\u001f\u00194\u00184\u0017U\u0015ŠO\u0015\u00144\u0018U\u0016~5\u00184\u0017U\u0015~5\u0017 \u0015\u001f\u001fU\u00155\u0019\u001f4\u0019\u001f\u0013\u001e\u0015 “7\u0014U\u0004\u001e6\u00188\u00144\u00184\u0014J\u0016\u00144\u00184\u0016J\u0016 4\u0018U\u0014J\u0016\u001c4\u0018U\u0014J\u001604\u0018V\u0014K\u0016(4\u00184\u0015<\u0016\u0014J\u0016\u00184\u00184\u0017<\u0016\u0014J\u0016$4\u0018U´\u001e~5\u001f4\u0018U\u0004\u001d~5 4\u0018U¤\u001c~5!\u0016T\u0016T\u0017T4\u0018U\u0015$\u00145\"U“5\u0014\u0016T\u0016T\u0016T\u0016T\u0016T\u0016T\u0016T4\u0018U\u0016$\u0014\"\u0017\u0014\u0015\u0018\u001c\u001f4\u0018V\u0014K\u0017,U\u00165\u00194\u0018<\u0016(6\u0014U\u0018~6\u00164\u0018<\u0016$6\u001d_!\u001c4\u0018<\u0016 6\u001c4\u0014~6\u001aA\u0014\u00145\u001b4\u001aA\u0014\u00155\u001e4\u00184\u0014U\u0017~6#J\u0016(U’5\u00144\u001aA\u0014\u00164\u001bU\u0013\u0015‡[!\u001b4\u00184\u0016J\u0016(4\u001c4#~A\u0014\u00144\u001eU\u001cˆ6\u001aU“‡U\u001cŠU\u0013\u0015…[!\u001b4\u001a4\u001b†6\u00144\u0016~6\u001b4\u001d_!\u001c4\u0018<\u0016\u001c6\u00194\u0014~5\u001a4\u0018<\u0016\u00146\u001d\u0018T4\u0018<\u0016\u00184\u001a]\u0018TU\u00155\u0019 \u001e\u001f\u0017T4\u0014Y!\u00174\u00194\u001d~4\u00164\u001c~A\u0014\u0014N\u0014\u00144\u0019U\u0015~5\u00194\u0016U\u0015~5\u00164\u0014U\u00155\u0014 \u0014\u001f\u0014\u001f4\u00184\u001bJ\u0016(4\u00184\u001aJ\u0016\u001c \u0016\u001fUÄ\u001dA\u0014\u0014!\u0017U\u00145\u0016U”#Uô\u001dJ\u0016\u0014U\u0010\"UÔ\u001dJ\u0016\u0014Uœ#UÔ\"J\u0016\u0014U˜#U´\"J\u0016\u0014\u0017T4\u0016U´\u0016Z\u0018TU\u00145\u0016\u0017T4\u0016Uô\u0015Z\u0018TU\u00145\u0016\u0017T4\u0016UDZ\u0018TU\u00145\u0016\u0017T4\u0016U$[\u0018T4\u00164\u001f~U\u001cO\u0015\u00144\u0016U\u0016~5\u0016 \u0015\u001f\u001fUÔ\u001dUô\u001d4\u0018U\u0004\u0019~U´\u0016$\u0015.U\u00145\u0016\u0017T4\u0016UP[\u0018T4\u0018U\u0004\u0019~4\u0016~U\u0019O\u0015\u00144\u0016U\u0016~5\u0016 \u0015\u001f\u001fU˜#<\u0016\u0014Uœ#<\u0016\u00144\u0018U\u0004\u0019~U2$\u0015.UÄ\u001dU\u0015N\u0014\u0014 \u001d\u00194\u00164 ~U\u001bO\u0015\u00144\u0016U\u0016~5\u0016 \u0015\u001f\u0014\u001f\u0014\u00194\u00164!~U\u001dO\u0015\u00144\u0016U\u0016~5\u0016 \u0015\u001f\u0014\u001f\u0014\u00194\u0018U\u0004\u0019~4\u0016~U\u001cO\u0015\u00144\u0016U\u0016~5\u0016 \u0015\u001f\u0014\u001f\u0014\u001f4\u00184\u0019J\u0016\u001c4\u00184\u0016J\u0016(\u001fU\u00145\u0014 \u0016\u001f4\u00184\u0018U¤\u0015~J\u0016@4\u00184\u0018Uä\u0019~J\u0016<4\u00184\u0018UD~J\u001684\u00184\u0018U\u0004\u0014~J\u001644\u0018U\u0019$\u00145\u00164\u0018U\u0019$\u00145\u0019U‘5\u00144\u0018U\u0018$\u00145\u001b4\u0016U1^4\u0019U1^†!\u00154\u0016U•\u0016~5\u001c4\u0019U\u0015~5\u001aU”\u001d5\u00144\u001bU\u0018~6\u0016U\u00144\u0016U\u0014^/6\u00195\u0016\u0017T4\u0016\u0018T4\u0018U\u0017$\u00145\u001b4\u0018U\u0004\u0019~4\u0014B\u0015\u0014U\u0015ˆ~4\u001bO\u0015\u00144\u0016U\u00155\u00164\u0014U\u0016~5\u0014 \u0015\u0019U\u0014U'4\u00196\u00144\u0014U'_/5\u00164\u0019U\u0015ˆU”\u001d~5\u0014\u0017T4\u0016\u0018T4\u0018U\u0004\u0019~4\u0014B\u0015\u0014U\u0015ˆ~U\u0014O\u0015\u00144\u0016U\u00155\u00164\u0014U\u0016~5\u0014 \u0015\u001f\u001fU5\u00144\u0018Uä\u0019~4\u0018U¤\u0015~4\u0018U\u0004\u0019~U'$\u0015!\u00174\u001a4\u001c~5\u001bU\u00145\u0019\u0017T4\u00194\u001b\\\u0018T4\u00184\u0018U<~$\u00166\u0014U\u0014\\!\u00194\u0014U#a\u0018T4\u0018U\u0004\u0019~4\u0019U\u0015ˆ~4\u0014O\u0015\u00144\u0019U\u0015~5\u0019 \u0016\u001fU\u00145\u001dU\u00175\u001eU\u00175\u0016\u0016T\u0016T\u0016T4\u0014U$\"\u0016\u0014\u0016\u0015\u001f4\u0019Y\u0018TU5\u0014 \u001c\u001f4\u0019U\u0015ˆ4\u0018~C\u0015\u0002\u00195\u001dU\u00165\u0016 \u0015\u001fU\u001f5\u001eU\u001b5\u0016\u001f4\u001b4\u00184\u0016$\u00144\u001e~6\u00164\u0019~\\\u0018TUŽ5\u0014 \u001a\u001f4\u0018U\u0004\u0019~4\u0019U\u0015ˆ~5\u0014\u0017T4\u0016Y!\u00164\u00144\u001dO\u0015\u00144\u0014U\u0016~5\u00144\u0019U\u0015~5\u00194\u0016U\u00155\u0016 \u0014\u001f\u0014\u001f\u001f4\u0018C\u0015\u0004\u001dY\u0018TU‹5\u0014 \u0018\u001f4\u0018Uä\u0019~4\u0018U¤\u0015~4\u0018U\u0004\u0019~4\u001c$\u00156\u0016\u0018TU5\u00144\u0016U\u0014\\!\u00184\u001c4\u0018B\u0015æ\u00194\u0018B\u0015ä\u0019~[!\u0018\u001f4\u0018U\u0004\u0014~4\u0018UD~4\u0018U\u0004\u0019~4\u001cU\u0015ˆ~4\u001a$\u00156\u0016\u0018TUŒ5\u00144\u0016U\u0014\\!\u00184\u001a4\u0018B\u0015†4\u0018B\u0015„~[!\u0018\u001f4\u00184\u0018U<~4\u0018U4~$\u00175\u0014 \u0017\u001f\u0014\u001f\u0014\u001f4\u0018U\u0010\"U˜#$\u00175\u0014\u001f4\u00144\"†Y!\u0014\u001f4\u00145\u00194\u0014U\u0014^!\u0015\u001f4\u00154\u0018<\u0016\u001cJ\u0016\u00144\u00174\u0018<\u0016(J\u0016\u00144\u00145\u0019\u001f4\u0018U\u0004\u001e~8\u00144\u0019\u001f\u001f­\u0015\u0017\u0014U”\u001c\u001fN\u0017\u0014\u0018\u0014\u0019\u0014\u001a\u0014\u001b\u0014\u001c\u0014\u001d\u0014\u001e\u0014\u001f\u0014!\u0014#\u0014%\u0014'\u0014+\u0014/\u00143\u00147\u0014?\u0014G\u0014O\u0014W\u0014g\u0014w\u0014‡\u0014—\u0014·\u0014×\u0014÷\u0014\u0016\u0015\u0014Uä\u001c\u001f;\u0015\u0014\u0015\u0014\u0015\u0014\u0015\u0014\u0016\u0014\u0016\u0014\u0016\u0014\u0016\u0014\u0017\u0014\u0017\u0014\u0017\u0014\u0017\u0014\u0018\u0014\u0018\u0014\u0018\u0014\u0018\u0014\u0019\u0014\u0019\u0014\u0019\u0014\u0019\u0014U”\u001d\u001f9$\u0014%\u0014&\u0014\u0014\u0014\u001c\u0014\u001b\u0014\u001d\u0014\u001a\u0014\u001e\u0014\u0019\u0014\u001f\u0014\u0018\u0014 \u0014\u0017\u0014!\u0014\u0016\u0014\"\u0014\u0015\u0014#`;\n\n WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString)\n .then((wasm) => WebAssembly.instantiate(wasm, {}))\n .then(({ exports }) => {\n // required for minifiers that mangle the __heap_base property\n const instanceExports = new Map(Object.entries(exports));\n\n const puff = instanceExports.get(\"puff\");\n const memory = instanceExports.get(\"memory\")[\"buffer\"];\n const dataArray = new uint8Array(memory);\n const heapView = new DataView(memory);\n\n let heapPos = instanceExports.get(\"__heap_base\");\n\n // source length\n const sourceLength = source.length;\n const sourceLengthPtr = heapPos;\n heapPos += 4;\n heapView.setInt32(sourceLengthPtr, sourceLength, true);\n\n // source data\n const sourcePtr = heapPos;\n heapPos += sourceLength;\n dataArray.set(source, sourcePtr);\n\n // destination length\n const destLengthPtr = heapPos;\n heapPos += 4;\n heapView.setInt32(\n destLengthPtr,\n dataArray.byteLength - heapPos,\n true,\n );\n\n // destination data fills in the rest of the heap\n puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);\n\n resolve(\n dataArray.slice(\n heapPos,\n heapPos + heapView.getInt32(destLengthPtr, true),\n ),\n );\n });\n });\n },\n },\n });\n }\n\n Object.defineProperty(this, \"wasm\", {\n enumerable: true,\n get: () => this._wasm,\n });\n\n this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {\n let output = [],\n i = 0;\n\n while (i < channelsDecoded)\n output.push(\n outputData.slice(\n i * samplesDecoded,\n i++ * samplesDecoded + samplesDecoded,\n ),\n );\n\n return output;\n };\n\n this.allocateTypedArray = (len, TypedArray, setPointer = true) => {\n const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);\n if (setPointer) this._pointers.add(ptr);\n\n return {\n ptr: ptr,\n len: len,\n buf: new TypedArray(this._wasm.HEAP, ptr, len),\n };\n };\n\n this.free = () => {\n this._pointers.forEach((ptr) => {\n this._wasm.free(ptr);\n });\n this._pointers.clear();\n };\n\n this.codeToString = (ptr) => {\n const characters = [],\n heap = new Uint8Array(this._wasm.HEAP);\n for (let character = heap[ptr]; character !== 0; character = heap[++ptr])\n characters.push(character);\n\n return String.fromCharCode.apply(null, characters);\n };\n\n this.addError = (\n errors,\n message,\n frameLength,\n frameNumber,\n inputBytes,\n outputSamples,\n ) => {\n errors.push({\n message: message,\n frameLength: frameLength,\n frameNumber: frameNumber,\n inputBytes: inputBytes,\n outputSamples: outputSamples,\n });\n };\n\n this.instantiate = (_EmscriptenWASM, _module) => {\n if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);\n this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();\n this._pointers = new Set();\n\n return this._wasm.ready.then(() => this);\n };\n}\n","/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nmodule.exports = Worker;","import NodeWorker from \"@eshaz/web-worker\";\nimport WASMAudioDecoderCommon from \"./WASMAudioDecoderCommon.js\";\n\nconst getWorker = () => globalThis.Worker || NodeWorker;\n\nexport default class WASMAudioDecoderWorker extends getWorker() {\n constructor(options, name, Decoder, EmscriptenWASM) {\n if (!WASMAudioDecoderCommon.modules) new WASMAudioDecoderCommon();\n\n let source = WASMAudioDecoderCommon.modules.get(Decoder);\n\n if (!source) {\n let type = \"text/javascript\",\n isNode,\n webworkerSourceCode =\n \"'use strict';\" +\n // dependencies need to be manually resolved when stringifying this function\n `(${((_Decoder, _WASMAudioDecoderCommon, _EmscriptenWASM) => {\n // We're in a Web Worker\n\n // setup Promise that will be resolved once the WebAssembly Module is received\n let decoder,\n moduleResolve,\n modulePromise = new Promise((resolve) => {\n moduleResolve = resolve;\n });\n\n self.onmessage = ({ data: { id, command, data } }) => {\n let messagePromise = modulePromise,\n messagePayload = { id },\n transferList;\n\n if (command === \"init\") {\n Object.defineProperties(_Decoder, {\n WASMAudioDecoderCommon: { value: _WASMAudioDecoderCommon },\n EmscriptenWASM: { value: _EmscriptenWASM },\n module: { value: data.module },\n isWebWorker: { value: true },\n });\n\n decoder = new _Decoder(data.options);\n moduleResolve();\n } else if (command === \"free\") {\n decoder.free();\n } else if (command === \"ready\") {\n messagePromise = messagePromise.then(() => decoder.ready);\n } else if (command === \"reset\") {\n messagePromise = messagePromise.then(() => decoder.reset());\n } else {\n // \"decode\":\n // \"decodeFrame\":\n // \"decodeFrames\":\n Object.assign(\n messagePayload,\n decoder[command](\n // detach buffers\n Array.isArray(data)\n ? data.map((data) => new Uint8Array(data))\n : new Uint8Array(data),\n ),\n );\n // The \"transferList\" parameter transfers ownership of channel data to main thread,\n // which avoids copying memory.\n transferList = messagePayload.channelData\n ? messagePayload.channelData.map((channel) => channel.buffer)\n : [];\n }\n\n messagePromise.then(() =>\n self.postMessage(messagePayload, transferList),\n );\n };\n }).toString()})(${Decoder}, ${WASMAudioDecoderCommon}, ${EmscriptenWASM})`;\n\n try {\n isNode = typeof process.versions.node !== \"undefined\";\n } catch {}\n\n source = isNode\n ? `data:${type};base64,${Buffer.from(webworkerSourceCode).toString(\n \"base64\",\n )}`\n : URL.createObjectURL(new Blob([webworkerSourceCode], { type }));\n\n WASMAudioDecoderCommon.modules.set(Decoder, source);\n }\n\n super(source, { name });\n\n this._id = Number.MIN_SAFE_INTEGER;\n this._enqueuedOperations = new Map();\n\n this.onmessage = ({ data }) => {\n const { id, ...rest } = data;\n this._enqueuedOperations.get(id)(rest);\n this._enqueuedOperations.delete(id);\n };\n\n new EmscriptenWASM(WASMAudioDecoderCommon).getModule().then((module) => {\n this.postToDecoder(\"init\", { module, options });\n });\n }\n\n async postToDecoder(command, data) {\n return new Promise((resolve) => {\n this.postMessage({\n command,\n id: this._id,\n data,\n });\n\n this._enqueuedOperations.set(this._id++, resolve);\n });\n }\n\n get ready() {\n return this.postToDecoder(\"ready\");\n }\n\n async free() {\n await this.postToDecoder(\"free\").finally(() => {\n this.terminate();\n });\n }\n\n async reset() {\n await this.postToDecoder(\"reset\");\n }\n}\n","export const assignNames = (Class, name) => {\n Object.defineProperty(Class, \"name\", { value: name });\n};\n"],"names":["t","n","e","r","Int32Array","o","s","i","c","length","Uint8Array","map","parseInt","substring","Map","forEach","set","a","l","f","g","h","p","u","DataView","buffer","getInt32","d","charCodeAt","get","m","subarray","console","error","Error","WASMAudioDecoderCommon","uint8Array","float32Array","Float32Array","modules","Object","defineProperties","value","WeakMap","setModule","Ref","module","Promise","resolve","getModule","wasmString","WebAssembly","compile","decode","inflateDynEncodeString","wasm","then","data","concatFloat32","buffers","ret","offset","getDecodedAudio","errors","channelData","samplesDecoded","sampleRate","bitDepth","getDecodedAudioMultiChannel","input","channelsDecoded","j","channel","push","source","puffString","String","raw","instantiate","exports","instanceExports","entries","puff","memory","dataArray","heapView","heapPos","sourceLength","sourceLengthPtr","setInt32","sourcePtr","destLengthPtr","byteLength","slice","defineProperty","this","enumerable","_wasm","getOutputChannels","outputData","output","allocateTypedArray","len","TypedArray","setPointer","ptr","malloc","BYTES_PER_ELEMENT","_pointers","add","buf","HEAP","free","clear","codeToString","characters","heap","character","fromCharCode","apply","addError","message","frameLength","frameNumber","inputBytes","outputSamples","_EmscriptenWASM","_module","Set","ready","browser","Worker","WASMAudioDecoderWorker","globalThis","NodeWorker","getWorker","constructor","options","name","Decoder","EmscriptenWASM","isNode","type","webworkerSourceCode","_Decoder","_WASMAudioDecoderCommon","decoder","moduleResolve","modulePromise","self","onmessage","id","command","transferList","messagePromise","messagePayload","isWebWorker","reset","assign","Array","isArray","postMessage","toString","process","versions","node","Buffer","from","URL","createObjectURL","Blob","super","_id","Number","MIN_SAFE_INTEGER","_enqueuedOperations","rest","delete","postToDecoder","finally","terminate","assignNames","Class"],"mappings":"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"} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..4f612a37 --- /dev/null +++ b/index.html @@ -0,0 +1,128 @@ + + + + + + Sea Audio Converter + + + +

+ SEA - Simple Embedded Audio Codec + [GitHub] +

+
+ +
+

Encode to Sea

+
+ Drag & drop an audio file (WAV/FLAC/MP3/OGG/OPUS) or click to upload. +
+ +
+ + +
+
+ VBR target bitrate: + + +
+
+ +
+
+ + +
+

Decode from Sea

+
Drag & drop a Sea file or click to upload.
+ + +
+
+
+ +
+ + + +
+

[GitHub]

+

Copyright © 2025 Dani Biró

+
+ + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..93707c22 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6688 @@ +{ + "name": "web", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "audio-decode": "^2.2.2", + "microbundle": "^0.15.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", + "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.7", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", + "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.26.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", + "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.25.9.tgz", + "integrity": "sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", + "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.7", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eshaz/web-worker": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eshaz/web-worker/-/web-worker-1.2.2.tgz", + "integrity": "sha512-WxXiHFmD9u/owrzempiDlBB1ZYqiLnm9s6aPc8AlFQalq2tKmqdmMr9GXOupDgzXtqnBipj8Un0gkIm7Sjf8mw==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/plugin-alias": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz", + "integrity": "sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==", + "dev": true, + "dependencies": { + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.30.0" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@thi.ng/bitstream": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@thi.ng/bitstream/-/bitstream-2.4.10.tgz", + "integrity": "sha512-0m/X+cNaXV3u7cUFifeG6n7p/nBCliGsaVAXn9OGZ8reChb8fUmZTbbuWZbDsA4/zqH7ySIbxWYH77R0L0qzyA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/postspectacular" + }, + { + "type": "patreon", + "url": "https://patreon.com/thing_umbrella" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/thi.ng" + } + ], + "dependencies": { + "@thi.ng/errors": "^2.5.24" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@thi.ng/errors": { + "version": "2.5.24", + "resolved": "https://registry.npmjs.org/@thi.ng/errors/-/errors-2.5.24.tgz", + "integrity": "sha512-XcUe550Xls6gUpw3VtJtXySgdTRocN3xPaQRraQx6YnKFuGz5/Lk//4TnXx8coPAiDr3eLDOfCyM23kxAWL9Rg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/postspectacular" + }, + { + "type": "patreon", + "url": "https://patreon.com/thing_umbrella" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/thi.ng" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.10.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", + "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", + "dev": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@wasm-audio-decoders/common": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@wasm-audio-decoders/common/-/common-9.0.5.tgz", + "integrity": "sha512-b9JNh9sPAvn8PVIizNh9D60WkfQong/u9ea873H47u7zvVDLctxYIp2aZw9CQqXaQdk7JB3MoU5UHiseO40swg==", + "dev": true, + "dependencies": { + "@eshaz/web-worker": "1.2.2", + "simple-yenc": "^1.0.4" + } + }, + "node_modules/@wasm-audio-decoders/flac": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@wasm-audio-decoders/flac/-/flac-0.2.5.tgz", + "integrity": "sha512-8M//CgB3PlkWwn47KcwD0tO6DZBA7/AGG0ukHSG0G97UbNEUNINvKDWAKPVWznzHsqeBP6axw+K/38dzng64JA==", + "dev": true, + "dependencies": { + "@wasm-audio-decoders/common": "9.0.5", + "codec-parser": "2.5.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/eshaz" + } + }, + "node_modules/@wasm-audio-decoders/ogg-vorbis": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/@wasm-audio-decoders/ogg-vorbis/-/ogg-vorbis-0.1.16.tgz", + "integrity": "sha512-HcEx4LPZbbzjhs9bTXgMaXLVCSMSo/egY9paJxAnE9tsYbvseAaGtVddLYktl3Qi/G+nW/ZzUXg4144izJjqCw==", + "dev": true, + "dependencies": { + "@wasm-audio-decoders/common": "9.0.5", + "codec-parser": "2.5.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/eshaz" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asyncro": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/asyncro/-/asyncro-3.0.0.tgz", + "integrity": "sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==", + "dev": true + }, + "node_modules/audio-buffer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/audio-buffer/-/audio-buffer-5.0.0.tgz", + "integrity": "sha512-gsDyj1wwUp8u7NBB+eW6yhLb9ICf+0eBmDX8NGaAS00w8/fLqFdxUlL5Ge/U8kB64DlQhdonxYC59dXy1J7H/w==", + "dev": true + }, + "node_modules/audio-decode": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/audio-decode/-/audio-decode-2.2.2.tgz", + "integrity": "sha512-xyh7z6dpRT+5Ez4ggV2cEkSShkDvvIBBmVPR3kYY7uIBqRO1BGNjofip6JnjBnvezhrU3ypBGZjepyKFDZWnDw==", + "dev": true, + "dependencies": { + "@wasm-audio-decoders/flac": "^0.2.4", + "@wasm-audio-decoders/ogg-vorbis": "^0.1.15", + "audio-buffer": "^5.0.0", + "audio-type": "^2.2.1", + "mpg123-decoder": "^1.0.0", + "node-wav": "^0.0.2", + "ogg-opus-decoder": "^1.6.12", + "qoa-format": "^1.0.1" + } + }, + "node_modules/audio-type": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/audio-type/-/audio-type-2.2.1.tgz", + "integrity": "sha512-En9AY6EG1qYqEy5L/quryzbA4akBpJrnBZNxeKTqGHC2xT9Qc4aZ8b7CcbOMFTTc/MGdoNyp+SN4zInZNKxMYA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-async-to-promises": { + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz", + "integrity": "sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==", + "dev": true + }, + "node_modules/babel-plugin-transform-replace-expressions": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz", + "integrity": "sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/brotli-size": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz", + "integrity": "sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==", + "dev": true, + "dependencies": { + "duplexer": "0.1.1" + }, + "engines": { + "node": ">= 10.16.0" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001695", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", + "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/codec-parser": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/codec-parser/-/codec-parser-2.5.0.tgz", + "integrity": "sha512-Ru9t80fV8B0ZiixQl8xhMTLru+dzuis/KQld32/x5T/+3LwZb0/YvQdSKytX9JqCnRdiupvAvyYJINKrXieziQ==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.88", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", + "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", + "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-each": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", + "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "dev": true, + "dependencies": { + "loader-utils": "^3.2.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gzip-size/node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "dependencies": { + "import-from": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/maxmin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw==", + "dev": true, + "dependencies": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^3.0.0", + "pretty-bytes": "^3.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/maxmin/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maxmin/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maxmin/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maxmin/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/maxmin/node_modules/gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/maxmin/node_modules/pretty-bytes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maxmin/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maxmin/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/microbundle": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/microbundle/-/microbundle-0.15.1.tgz", + "integrity": "sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "7.12.1", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.12.1", + "@babel/plugin-transform-flow-strip-types": "^7.12.10", + "@babel/plugin-transform-react-jsx": "^7.12.11", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-flow": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@rollup/plugin-alias": "^3.1.1", + "@rollup/plugin-babel": "^5.2.2", + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^11.0.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.2", + "asyncro": "^3.0.0", + "autoprefixer": "^10.1.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-transform-async-to-promises": "^0.8.18", + "babel-plugin-transform-replace-expressions": "^0.2.0", + "brotli-size": "^4.0.0", + "builtin-modules": "^3.1.0", + "camelcase": "^6.2.0", + "escape-string-regexp": "^4.0.0", + "filesize": "^6.1.0", + "gzip-size": "^6.0.0", + "kleur": "^4.1.3", + "lodash.merge": "^4.6.2", + "postcss": "^8.2.1", + "pretty-bytes": "^5.4.1", + "rollup": "^2.35.1", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-postcss": "^4.0.0", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-typescript2": "^0.32.0", + "rollup-plugin-visualizer": "^5.6.0", + "sade": "^1.7.4", + "terser": "^5.7.0", + "tiny-glob": "^0.2.8", + "tslib": "^2.0.3", + "typescript": "^4.1.3" + }, + "bin": { + "microbundle": "dist/cli.js" + } + }, + "node_modules/microbundle/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mpg123-decoder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mpg123-decoder/-/mpg123-decoder-1.0.0.tgz", + "integrity": "sha512-WV+pyuMUhRqv7s8S6p/Ii4KQHdBD1pb3yaABxcKJRsNp+HQ/Y6z2iIBIaOZu0JMHPTOoICYt0REDZ7XfLu+n/g==", + "dev": true, + "dependencies": { + "@wasm-audio-decoders/common": "9.0.5" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/eshaz" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "node_modules/node-wav": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/node-wav/-/node-wav-0.0.2.tgz", + "integrity": "sha512-M6Rm/bbG6De/gKGxOpeOobx/dnGuP0dz40adqx38boqHhlWssBJZgLCPBNtb9NkrmnKYiV04xELq+R6PFOnoLA==", + "dev": true, + "engines": { + "node": ">=4.4.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ogg-opus-decoder": { + "version": "1.6.14", + "resolved": "https://registry.npmjs.org/ogg-opus-decoder/-/ogg-opus-decoder-1.6.14.tgz", + "integrity": "sha512-RQpk9yFl/mqXFwcgf1BrEYWL92HZk++aU1fOO8mPZ1+1DUYbJdpdUQEFfbPE1xcBkRGU3p75DjEO+EDMNeikFQ==", + "dev": true, + "dependencies": { + "@wasm-audio-decoders/common": "9.0.5", + "codec-parser": "2.5.0", + "opus-decoder": "0.7.7" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/eshaz" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opus-decoder": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/opus-decoder/-/opus-decoder-0.7.7.tgz", + "integrity": "sha512-KWDyCi/9aXnNN+jrjs+aaVdwiwzDdac81S9ul0iv1CTs4+5K4VDZKuJjIImrYOBA2oSNHDjVq4xzn6BE+XbI1A==", + "dev": true, + "dependencies": { + "@wasm-audio-decoders/common": "9.0.5" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/eshaz" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "dev": true, + "dependencies": { + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/promise.series": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", + "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/qoa-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/qoa-format/-/qoa-format-1.0.1.tgz", + "integrity": "sha512-dMB0Z6XQjdpz/Cw4Rf6RiBpQvUSPCfYlQMWvmuWlWkAT7nDQD29cVZ1SwDUB6DYJSitHENwbt90lqfI+7bvMcw==", + "dev": true, + "dependencies": { + "@thi.ng/bitstream": "^2.2.12" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-bundle-size": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz", + "integrity": "sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "maxmin": "^2.1.0" + } + }, + "node_modules/rollup-plugin-bundle-size/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-plugin-bundle-size/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-plugin-bundle-size/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-plugin-bundle-size/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/rollup-plugin-bundle-size/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-plugin-bundle-size/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/rollup-plugin-postcss": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", + "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "concat-with-sourcemaps": "^1.1.0", + "cssnano": "^5.0.1", + "import-cwd": "^3.0.0", + "p-queue": "^6.6.2", + "pify": "^5.0.0", + "postcss-load-config": "^3.0.0", + "postcss-modules": "^4.0.0", + "promise.series": "^0.2.0", + "resolve": "^1.19.0", + "rollup-pluginutils": "^2.8.2", + "safe-identifier": "^0.4.2", + "style-inject": "^0.3.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "8.x" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-typescript2": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.32.1.tgz", + "integrity": "sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.1.2", + "find-cache-dir": "^3.3.2", + "fs-extra": "^10.0.0", + "resolve": "^1.20.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "rollup": ">=1.26.3", + "typescript": ">=2.4.0" + } + }, + "node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz", + "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==", + "dev": true, + "dependencies": { + "open": "^8.4.0", + "picomatch": "^4.0.2", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "rolldown": "1.x", + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-identifier": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", + "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", + "dev": true + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-yenc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/simple-yenc/-/simple-yenc-1.0.4.tgz", + "integrity": "sha512-5gvxpSd79e9a3V4QDYUqnqxeD4HGlhCakVpb6gMnDD7lexJggSBJRBO5h52y/iJrdXRilX9UCuDaIJhSWm5OWw==", + "dev": true, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/eshaz" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-inject": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", + "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", + "dev": true + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..04f8eb58 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "web", + "version": "1.0.0", + "description": "", + "type": "module", + "scripts": { + "build": "npx microbundle -i ./deps.js -f modern -o dist/deps.mjs" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "audio-decode": "^2.2.2", + "microbundle": "^0.15.1" + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 00000000..8c50259e --- /dev/null +++ b/src/index.js @@ -0,0 +1,5 @@ +import decodeAudio from "audio-decode"; + +export function decode(buffer) { + return decodeAudio(buffer); +} diff --git a/utils.mjs b/utils.mjs new file mode 100644 index 00000000..2ac41458 --- /dev/null +++ b/utils.mjs @@ -0,0 +1,89 @@ +export function readFile(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.onerror = () => reject(reader.error); + reader.readAsArrayBuffer(file); + }); +} + +export function downloadFile(data, filename, mimeType) { + const blob = new Blob([data], { type: mimeType }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + a.click(); + URL.revokeObjectURL(url); +} + +export function formatNumber(x) { + return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} + +export function encodeWAV(samples, sampleRate, channels) { + const buffer = new ArrayBuffer(44 + samples.length * 2); + const view = new DataView(buffer); + + const writeString = (offset, string) => { + for (let i = 0; i < string.length; i++) { + view.setUint8(offset + i, string.charCodeAt(i)); + } + }; + + writeString(0, "RIFF"); + view.setUint32(4, 36 + samples.length * 2, true); + writeString(8, "WAVE"); + writeString(12, "fmt "); + view.setUint32(16, 16, true); + view.setUint16(20, 1, true); + view.setUint16(22, channels, true); + view.setUint32(24, sampleRate, true); + view.setUint32(28, sampleRate * channels * 2, true); + view.setUint16(32, channels * 2, true); + view.setUint16(34, 16, true); + writeString(36, "data"); + view.setUint32(40, samples.length * 2, true); + + let sampleBuffer = new Int16Array(buffer, 44, samples.length); + sampleBuffer.set(samples); + + return new Uint8Array(buffer); +} + +export function channelSamplesToInterleavedInt16(channelSamples, channels) { + const interleavedSamples = new Int16Array(channelSamples[0].length * channels); + + for (let channel = 0; channel < channels; channel++) { + for (let i = 0; i < channelSamples[0].length; i++) { + let clamped = Math.max(-1, Math.min(1, channelSamples[channel][i])); + let i16 = Math.floor(clamped < 0 ? clamped * 0x8000 : clamped * 0x7fff); + interleavedSamples[i * channels + channel] = i16; + } + } + + return interleavedSamples; +} + +export function getPSNR(a, b) { + if (a.length !== b.length) { + throw new Error("Size mismatch"); + } + let sum = 0; + for (let i = 0; i < a.length; i++) { + const diff = a[i] / 32768 - b[i] / 32768; + sum += diff * diff; + } + + let rms = Math.sqrt(sum / a.length); + let psnr = -20 * Math.log10(2.0 / rms); + return psnr; +} + +export function calculateDifference(originalData, decodedData) { + const diff = new Int16Array(originalData.length); + for (let i = 0; i < originalData.length; i++) { + diff[i] = originalData[i] - decodedData[i]; + } + return diff; +} diff --git a/worker.mjs b/worker.mjs new file mode 100644 index 00000000..f5e66be3 --- /dev/null +++ b/worker.mjs @@ -0,0 +1,219 @@ +import { decodeAudioFile } from "./dist/deps.modern.js"; +import { + encodeWAV, + getPSNR, + channelSamplesToInterleavedInt16, + calculateDifference, +} from "./utils.mjs"; + +let wasm; + +(async () => { + const wasmModule = await WebAssembly.instantiateStreaming(fetch("codec.wasm"), { + env: { + memory: new WebAssembly.Memory({ initial: 256 }), // 16 MB + js_error: (start) => { + const view = new Uint8Array(wasmModule.instance.exports.memory.buffer); + let end = view.indexOf(0, start); + if (end === -1) throw new Error("Got invalid string from wasm"); + const str = new TextDecoder().decode(view.subarray(start, end)); + throw new Error(str); + }, + }, + }); + + const wasmExports = wasmModule.instance.exports; + wasmExports.setup(); + + wasm = { + wasm_sea_encode: (inputSamples, sampleRate, channels, quality, vbr) => { + if (!(inputSamples instanceof Int16Array)) + throw new Error("inputSamples should be Int16Array"); + + let wasmInputBufferSize; + let wasmInputBuffer; + let wasmOutputBufferSize; + let wasmOutputBuffer; + + try { + wasmInputBufferSize = inputSamples.byteLength; + wasmInputBuffer = wasmExports.allocate(wasmInputBufferSize); + const inputSamplesU8 = new Uint8Array( + inputSamples.buffer, + inputSamples.byteOffset, + inputSamples.byteLength + ).slice(); + + new Uint8Array(wasmExports.memory.buffer).set(inputSamplesU8, wasmInputBuffer); + + wasmOutputBufferSize = Math.floor(inputSamples.byteLength); + wasmOutputBuffer = wasmExports.allocate(wasmOutputBufferSize); + + const outputLength = wasmExports.wasm_sea_encode( + wasmInputBuffer, + wasmInputBufferSize, + sampleRate, + channels, + quality, + vbr, + wasmOutputBuffer, + wasmOutputBufferSize + ); + + if (outputLength === 0) throw new Error("Encoding failed: Output buffer too small."); + + const output = new Uint8Array( + wasmExports.memory.buffer, + wasmOutputBuffer, + outputLength + ).slice(); + + return output; + } catch (e) { + postMessage(["error", e.message]); + throw e; + } finally { + wasmExports.deallocate(wasmInputBuffer, wasmInputBufferSize); + wasmExports.deallocate(wasmOutputBuffer, wasmOutputBufferSize); + } + }, + wasm_sea_decode: (encodedData) => { + if (!(encodedData instanceof Uint8Array)) throw new Error("encodedData should be Uint8Array"); + + let wasmInputBufferSize; + let wasmInputBuffer; + let wasmOutputBufferSize; + let wasmOutputBuffer; + let wasmSampleRateBuffer; + let wasmChannelsBuffer; + + try { + wasmInputBufferSize = encodedData.byteLength; + wasmInputBuffer = wasmExports.allocate(wasmInputBufferSize); + new Uint8Array(wasmExports.memory.buffer).set(encodedData, wasmInputBuffer); + + wasmOutputBufferSize = wasmInputBufferSize * 15; + wasmOutputBuffer = wasmExports.allocate(wasmOutputBufferSize); + + wasmSampleRateBuffer = wasmExports.allocate(4); + wasmChannelsBuffer = wasmExports.allocate(4); + + const outputLength = wasmExports.wasm_sea_decode( + wasmInputBuffer, + wasmInputBufferSize, + wasmOutputBuffer, + wasmOutputBufferSize, + wasmSampleRateBuffer, + wasmChannelsBuffer + ); + + if (outputLength === 0) throw new Error("Decoding failed: Got zero output length."); + + const output = new Int16Array( + wasmExports.memory.buffer, + wasmOutputBuffer, + outputLength / 2 + ).slice(); + + const sampleRate = new Uint32Array(wasmExports.memory.buffer, wasmSampleRateBuffer, 1)[0]; + const channels = new Uint32Array(wasmExports.memory.buffer, wasmChannelsBuffer, 1)[0]; + + if (sampleRate === 0 || channels === 0) + throw new Error("Decoding failed: Got invalid output."); + + return { + samples: output, + sampleRate, + channels, + }; + } catch (e) { + postMessage(["error", e.message]); + throw e; + } finally { + wasmExports.deallocate(wasmInputBuffer, wasmInputBufferSize); + wasmExports.deallocate(wasmOutputBuffer, wasmOutputBufferSize); + wasmExports.deallocate(wasmSampleRateBuffer, 4); + wasmExports.deallocate(wasmChannelsBuffer, 4); + } + }, + }; + + // warm up JIT + const encodedData = wasm.wasm_sea_encode(new Int16Array(1024 * 1024), 44100, 1, 3, false); + wasm.wasm_sea_decode(encodedData); +})(); + +let exports = { + async decodeAudioFile(arrayBuffer) { + const audioBuffer = await decodeAudioFile(arrayBuffer); + const samplesPerChannel = [...Array(audioBuffer.numberOfChannels).keys()].map((i) => + audioBuffer.getChannelData(i) + ); + + const interleavedSamples = channelSamplesToInterleavedInt16( + samplesPerChannel, + audioBuffer.numberOfChannels + ); + + return { + samples: interleavedSamples, + sampleRate: audioBuffer.sampleRate, + channels: audioBuffer.numberOfChannels, + }; + }, + + encodeSEA(interleavedSamples, sampleRate, channels, quality, vbr) { + const start = performance.now(); + const encoded = wasm.wasm_sea_encode(interleavedSamples, sampleRate, channels, quality, vbr); + const end = performance.now(); + + return { + encoded, + duration: end - start, + }; + }, + + decodeSEA(encodedData, originalData) { + const start = performance.now(); + const { samples, sampleRate, channels } = wasm.wasm_sea_decode(encodedData); + const end = performance.now(); + const wave = encodeWAV(samples, sampleRate, channels); + let psnr = 0; + let differenceFromOriginal = null; + + if (originalData) { + psnr = getPSNR(originalData, samples); + differenceFromOriginal = encodeWAV( + calculateDifference(originalData, samples), + sampleRate, + channels + ); + } + + return { + wave, + differenceFromOriginal, + sampleRate, + channels, + duration: end - start, + psnr, + }; + }, +}; + +addEventListener("message", async (e) => { + const { data } = e; + const [id, fn, ...rest] = data; + + if (fn in exports) { + try { + const res = await exports[fn](...rest); + postMessage([id, res]); + } catch (e) { + postMessage(["error", e.message]); + console.error(e); + } + } else { + throw new Error(`Unknown function: ${fn}`); + } +});