@zip.js/zip.js 2.8.48 → 2.8.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/deno.json +1 -1
  2. package/dist/zip-core-external.js +351 -205
  3. package/dist/zip-core-external.min.js +1 -1
  4. package/dist/zip-core.js +357 -205
  5. package/dist/zip-core.min.js +1 -1
  6. package/dist/zip-fs-core-external.js +438 -216
  7. package/dist/zip-fs-core-external.min.js +1 -1
  8. package/dist/zip-fs-core.js +213 -435
  9. package/dist/zip-fs-core.min.js +1 -1
  10. package/dist/zip-fs-external.js +438 -216
  11. package/dist/zip-fs-external.min.js +1 -1
  12. package/dist/zip-fs-native.js +447 -219
  13. package/dist/zip-fs-native.min.js +1 -1
  14. package/dist/zip-fs.js +445 -217
  15. package/dist/zip-fs.min.js +1 -1
  16. package/dist/zip-legacy.js +359 -207
  17. package/dist/zip-legacy.min.js +1 -1
  18. package/dist/zip-native.js +360 -208
  19. package/dist/zip-native.min.js +1 -1
  20. package/dist/zip-web-worker-native.js +1 -1
  21. package/dist/zip-web-worker.js +1 -1
  22. package/dist/zip.js +358 -206
  23. package/dist/zip.min.js +1 -1
  24. package/index-native.cjs +446 -218
  25. package/index-native.min.js +1 -1
  26. package/index.cjs +444 -216
  27. package/index.d.cts +124 -2
  28. package/index.d.ts +124 -2
  29. package/index.min.js +1 -1
  30. package/lib/core/codec-pool.js +1 -1
  31. package/lib/core/codec-registry.js +2 -2
  32. package/lib/core/codec-worker-web.js +436 -0
  33. package/lib/core/codec-worker.js +23 -388
  34. package/lib/core/constants.js +5 -1
  35. package/lib/core/io.js +2 -1
  36. package/lib/core/options.js +8 -0
  37. package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
  38. package/lib/core/web-worker-base.js +10 -2
  39. package/lib/core/web-worker-inline-native.js +1 -1
  40. package/lib/core/web-worker-inline-wasm.js +1 -1
  41. package/lib/core/zip-fs.js +88 -12
  42. package/lib/core/zip-reader.js +90 -16
  43. package/lib/core/zip-writer.js +36 -13
  44. package/lib/zip-core-reader.js +6 -0
  45. package/lib/zip-core-writer.js +4 -0
  46. package/package.json +1 -1
  47. package/worker-message-property-names.js +1 -1
package/index-native.cjs CHANGED
@@ -111,6 +111,8 @@ const INFINITY_VALUE = Infinity;
111
111
  const UNDEFINED_TYPE = "undefined";
112
112
  const FUNCTION_TYPE = "function";
113
113
  const OBJECT_TYPE = "object";
114
+ const STRING_TYPE = "string";
115
+ const NUMBER_TYPE = "number";
114
116
 
115
117
  const EMPTY_UINT8_ARRAY = new Uint8Array();
116
118
 
@@ -239,10 +241,10 @@ function resetConfiguration() {
239
241
  Object.assign(config, DEFAULT_CONFIGURATION);
240
242
  }
241
243
 
242
- const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],n=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],e=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Uint8Array(288);u.fill(8,0,144),u.fill(9,144,256),u.fill(7,256,280),u.fill(8,280,288);const i=new Uint8Array(30).fill(5);function o(r){const n=new Uint16Array(16);for(const t of r)n[t]++;n[0]=0;const t=new Uint16Array(17);for(let r=1;15>=r;r++)t[r+1]=t[r]+n[r];const e=new Uint16Array(r.length);for(let n=0;n<r.length;n++)r[n]&&(e[t[r[n]]++]=n);return {o:n,symbols:e}}const G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=(x=()=>(G=>{let l=0,x=0,c=0,s=new Uint8Array(1024),p=0,m=0;for(;!m;){m=w(1);const r=w(2);if(0==r)z();else if(1==r)U(o(u),o(i));else {if(2!=r)throw Error("invalid deflate block type");U(...W());}}return s.subarray(0,p);function j(){if(l>=G.length)throw Error("unexpected end of deflate data");return G[l++]}function w(r){for(;r>c;)x|=j()<<c,c+=8;const n=x&(1<<r)-1;return x>>>=r,c-=r,n}function z(){x=0,c=0;const r=j()|j()<<8;l+=2,C(p+r);for(let n=0;r>n;n++)s[p++]=j();}function U(f,u){let i=N(f);for(;256!=i;){if(256>i)C(p+1),s[p++]=i;else {const f=i-257,o=r[f]+w(n[f]),G=N(u),l=t[G]+w(e[G]);C(p+o);const x=p-l;for(let r=0;o>r;r++)s[p++]=s[x+r];}i=N(f);}}function W(){const r=w(5)+257,n=w(5)+1,t=w(4)+4,e=new Uint8Array(19);for(let r=0;t>r;r++)e[f[r]]=w(3);const u=o(e),i=new Uint8Array(r+n);let G=0;for(;G<i.length;){const r=N(u);if(16>r)i[G++]=r;else if(16==r){const r=i[G-1];let n=w(2)+3;for(;n--;)i[G++]=r;}else G+=17==r?w(3)+3:w(7)+11;}return [o(i.subarray(0,r)),o(i.subarray(r))]}function N(r){const{o:n,symbols:t}=r;let e=0,f=0,u=0;for(let r=1;15>=r;r++){e|=w(1);const i=n[r];if(i>e-f)return t[u+(e-f)];u+=i,f=f+i<<1,e<<=1;}throw Error("invalid huffman code")}function C(r){if(s.length<r){let n=2*s.length;for(;r>n;)n*=2;const t=new Uint8Array(n);t.set(s.subarray(0,p)),s=t;}}})((r=>{const n=(r=(r+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let e=0;n>e;e+=4){const n=G.indexOf(r[e])<<18|G.indexOf(r[e+1])<<12|(63&G.indexOf(r[e+2]))<<6|63&G.indexOf(r[e+3]);t.push(n>>16&255),"="!==r[e+2]&&t.push(n>>8&255),"="!==r[e+3]&&t.push(255&n);}return new Uint8Array(t)})("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")),r=>r({workerURI:r=>{const n="text/javascript";let t=x();if("string"==typeof t&&(t=(new TextEncoder).encode(t)),r){const r=new Blob([t],{type:n});return URL.createObjectURL(r)}return "data:"+n+";base64,"+(r=>{let n="";const t=r.length;let e=0;for(;t>e+2;e+=3){const t=r[e]<<16|r[e+1]<<8|r[e+2];n+=G[t>>18&63]+G[t>>12&63]+G[t>>6&63]+G[63&t];}const f=t-e;if(1===f){const t=r[e]<<16;n+=G[t>>18&63]+G[t>>12&63]+"==";}else if(2===f){const t=r[e]<<16|r[e+1]<<8;n+=G[t>>18&63]+G[t>>12&63]+G[t>>6&63]+"=";}return n})(t)}}));var x;
244
+ const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],f=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],n=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],c=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],e=new Uint8Array(288);e.fill(8,0,144),e.fill(9,144,256),e.fill(7,256,280),e.fill(8,280,288);const j$1=new Uint8Array(30).fill(5);function z$1(r){const t=new Uint16Array(16);for(const f of r)t[f]++;t[0]=0;const f=new Uint16Array(17);for(let r=1;15>=r;r++)f[r+1]=f[r]+t[r];const n=new Uint16Array(r.length);for(let t=0;t<r.length;t++)r[t]&&(n[f[r[t]]++]=t);return {j:t,symbols:n}}const W$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p$1=(s=()=>(W=>{let p=0,s=0,o=0,Y=new Uint8Array(1024),l=0,B=0;for(;!B;){B=u(1);const r=u(2);if(0==r)T();else if(1==r)w(z$1(e),z$1(j$1));else {if(2!=r)throw Error("invalid deflate block type");w(...K());}}return Y.subarray(0,l);function S(){if(p>=W.length)throw Error("unexpected end of deflate data");return W[p++]}function u(r){for(;r>o;)s|=S()<<o,o+=8;const t=s&(1<<r)-1;return s>>>=r,o-=r,t}function T(){s=0,o=0;const r=S()|S()<<8;p+=2,D(l+r);for(let t=0;r>t;t++)Y[l++]=S();}function w(c,e){let j=q(c);for(;256!=j;){if(256>j)D(l+1),Y[l++]=j;else {const c=j-257,z=r[c]+u(t[c]),W=q(e),p=f[W]+u(n[W]);D(l+z);const s=l-p;for(let r=0;z>r;r++)Y[l++]=Y[s+r];}j=q(c);}}function K(){const r=u(5)+257,t=u(5)+1,f=u(4)+4,n=new Uint8Array(19);for(let r=0;f>r;r++)n[c[r]]=u(3);const e=z$1(n),j=new Uint8Array(r+t);let W=0;for(;W<j.length;){const r=q(e);if(16>r)j[W++]=r;else if(16==r){const r=j[W-1];let t=u(2)+3;for(;t--;)j[W++]=r;}else W+=17==r?u(3)+3:u(7)+11;}return [z$1(j.subarray(0,r)),z$1(j.subarray(r))]}function q(r){const{j:t,symbols:f}=r;let n=0,c=0,e=0;for(let r=1;15>=r;r++){n|=u(1);const j=t[r];if(j>n-c)return f[e+(n-c)];e+=j,c=c+j<<1,n<<=1;}throw Error("invalid huffman code")}function D(r){if(Y.length<r){let t=2*Y.length;for(;r>t;)t*=2;const f=new Uint8Array(t);f.set(Y.subarray(0,l)),Y=f;}}})((r=>{const t=(r=(r+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,f=[];for(let n=0;t>n;n+=4){const t=W$1.indexOf(r[n])<<18|W$1.indexOf(r[n+1])<<12|(63&W$1.indexOf(r[n+2]))<<6|63&W$1.indexOf(r[n+3]);f.push(t>>16&255),"="!==r[n+2]&&f.push(t>>8&255),"="!==r[n+3]&&f.push(255&t);}return new Uint8Array(f)})("zb1rc9s4zwD6/fyKJLOPR1xBWkm+xJFDZ3rfbq/bNrvbetyOY1OxEptyJbpuGvv57WcAUhLtuN193st5z7TjSBSvIAgCIAA6gvdvj5KlHKs0k0ecq5uFyJKDiUhSKRoN/dcfzSdn+tERLBYO2zCnLOSw26NlIQ4KladjddQbZ7JQt/fyfHQTC3h1cSXGKlbwcjm/EHks4cVITeMcHuV5lscZnKdSdXXulF7Cjn5L6K0Z6bcCntYvY3gxWsQzeDhSoz9SsYpH8DrP5mkh4iW8E1/VIznOJiKPVzDObxYqi6ewyAr1QhTF6FLEE3iXj2SRZPn8rcrFaB4v4I0YTUYXM2ESbuDPPFVWwhweZPNFLooizaRJu4aHYnwn9WLDCzFL4Av/kqWTgwAu+dFSavBNjuAtr+EN37gUq4MUrvhgMIR9/4e9JMudmVAHgge9qN3pi55wXXaLSYqLrc9d81HxsKHOVL/fDz82T7rd6CRqdlsxJfSuBsFwIIZcbfbXXKYqHva6fdVT2BrN6oHkVwPlhVi8dzVQVI3s9/vdj1Rp1G435HBDeQcP4DV8hXtwDp/gDTwd8qveeDYqioNHurJ8OVZZ7gh2q6Zp4WdcrNdeuBktFkJOMFn3IVjrz72yB8Fa+DMhL9W0hzlyHvTSxJF93m00hH+xTBKRl/3NCLwjp0wH4V/cKPEqSQqhQDJIufS6BMJe2ud5L3d5tywsuPqY+ZdCEeY5ORwGDCS3k9wWJvYUf0pjF8OPbwYC4dGI2u3hx0/0Enb02zm9RS39ds9A6+PXgaxLvKaXssQDejMlNjRdPdnHXuIUKwL8A6rHUR/FIB+yYc8AU20uhXLYbS7UMpf/1qmbjZ6B9wfiqxJyUhwstuZCw1wYUCsC3qNesVyI3LlV5ZJxBEh2q/xqpkD6Qn5eiiVShw0ks2UxdWqUIQx3Wqyn50KWc+QXQukl7gSgfOovA+F/Gc2WgsvNhoHg2PHNplwwBw8dAWq36hIfXGUeWE8P+0BiG7qH+KCgzMpA1pW+QGwrS/wAX/TLc12BxvKDdxw7Mx4p3bE0cQLOednMeo1vVbdMG8I3RRSrsFoMyjJeOIScv/NnjqzG0Yw45/mZVTB+508dBTkEawnCL2bpWDgB1JUwtoGLVOne4gDLSa1Wj+mrKrsVWJ3BRV43/rOjvJC5uk8bmFdjbUY/l9WdVvWIqh5H8LpruT8W6cxRvzQjxljZCVNGNXgzBNkPGg3VaDhiIL1wyN/5X3DO6KURha3jVrfZaXX7feWFECKybOBLjL0ByXifoCTOVOzIs2CtYnV62ow8wdwwODlph2EnOj4+7vwsYBYL3s/9PFsi/v6y9Zmt180IprpSyNktrjpNyHEOGg0n54Mh66k+b0Y95fFmxHJ/gSgvkTwEd+Cal7MmWEWsMx70stNqKjLXrSpZi0E27Pf7CmvDZxqF6pUUrSx0toUycQApIU1WIY2pkIDopo1mCMpN+83oTMa5v8gWDiMY5psNPOa3iNpFfPvWRpV3vo1Bv3ShXHGKadq7NR7Vz2ggzUa2Xjs59v2X1pCBHGRDnhMhg/z0lHer1bmBK7u5wZBqlYA0HWtGaMoaShKhxPPT0+5aDOQQmo1/y/XaUXqcOcNy9ZJpyEZD1SDo/uw0G5JBzhiozWYDLzkRw93NqOwMEp6e8i9m2fj6bfpN8HYYgfIf8EF43Iza3VZ40oRWEDWjZrMVHkPU7kTNbjMMIoiOw+Nms3vchWbUbTePj9tRMATlv+aDsB1220EQtU4g7LZPjo/bzZMmRK0gOGmfHAddaDZP2q3OyXE3GoI4c5R/jwv/XrmIGCj/nAv/3E74xIX/icXKzwUSObYxf+ttDIdS0R6s8EFdXvjnfDAE4X/iAYjNcjEZKXEHEEfI3cnLmkEUuEr5Y/+Nj1NY0zHs37uKTPnnIHBalP8JUvzlubuNVLha0v5JEByHJydRu3XcCk5OQqamebYiYpw5Rw9GUmbqYDoqpgfzLBcHajqSB9HHdvPAOwgPLlJVHJU9SAhDC6SdiEtjg0may7Gm0809Z+u1Yb15IUN2ANkhuwxT/lMn8YvlxQjZUCfs/DyGsPOzM3ZDxhiMXR5aO8/CED7Mhjj3fndKDAfnn9eE17/XUxb8YICoi7RuyLbGYTa8qBe2G4bl06ge6HzlmvCTWYZ47X/6pRWdtE46x9FJB1eAyb1G1OmV9fWY8J86yu46YzXmGLwCuXlYk8fyaz88ORP9Jv608ef45ExTzVh9lB/zWDXkWjXytWzkVsq/VSPfvND7SbkVnJ6KNfI2SLs3Tx1ru0eoQcalfw9SLpxuwLa437DkYFNib5FJxU8JzwbBEAqeDcIhjHk2iIYw49mgOYQRzwatbRb7+ETPvMtuscL12qHqpP/CCSEdCK85/Ih/uvpP2DJ/O8NqGSjK3YaEudJHWBUwhhlzRy5W5Ur/9aCamV+igA3XQW/EZzDjYxhT2WYABYOCJ5BwtcH+0yDcZB0ADoPG4hb0Fg1pSO6Y3ppDGpk7o7fWkAbojtbBZgP3+W06X2S5eiZucAvEpXLff+c8Jsam0EsZHteTi4w1l+t1KFoQ9PP1OujL7bWZyi+jWTo5WIzy0bw4UNnB4uJ6kkTVgkx56Dp5v99mp6eRng8NDliaHCtasiTZ3Seuy0kZTA3nvtLreMJL7mTB32kM53WvFYMlD3tOul6HrD/pLXHyMFPCCy58IUkKdBbWuloOccHysCf7497YSD125oLBjAe92WlRSRuYazAbfuTFYKZxBslL2WqjMT5NyrxY4xR5Ti0oTCAZjIcMJi5vbQyer2rO6Jcu28C7+G/3I0D6+pK/hNyIi8Oe8u/zAYJKAv0OKz5B+fcHwbCmXr80o165lfYzIt8OFWF+RfT99w6r15RCJsUIgDnKd2rIT4KTdhS1up2PYqCGkA9CSg7brZN2u9ONupTeM42birEw0pz7g9BKCyntV5po6egS39m8hMkm/JeO0BlB+H/ww9DasEjG+YMfBkBPv9bD2kzSS1Hs1gpIe3/FIRu+pqw9HFYgUQSSfSSwxBNBq0S3vb00TI6DTB6MZrkYTW4OdK2Tg+l8ND4Yj2YzMTk8qqqnSqpO61GYnguGLMuv5e47PeSXjUb5gqLTm5GcZPM/UHQqOH8Lv/Ojp9XSLIpVlk+O4I86sUgv5Ugtc3EEf/I/4Bk/+pYurgpvdJHlyhtPxfjaqwr2KlHpuRnvryVze6dx3NO3d2/SwBzce/30AHfxYrlACiQmR6UI9ZmHHXjFb+VoLuKj1/efPXwcHW3gA1f+qMB+Ore49ccmw68v7j042mzgFYPfrCypEvkI+1jEoWiCXeLtr/e80BT5iw+OJiJPv4j7yDYM4Sc+6EIYQdgZwhM+CDsQtaCJ3JfgYQBK8EEA9G8IUtgTALngqCObIkegZgIy/W6y5ALzpKKkU5CIf8Rx/skHO7qgIewmIDf5J65I+r9eK/+ZY/Ng9K01JM7rT9z1Ur6lNDEkmIfIfrUOOU8bjY7+08U/+2n8SBQH1+LmoEi/iaOSz3jNB0Ut5SFNxQ4nPO21fk7dqNtPekmprhK8GCQoWTrJv1LOebBedzm1qt9bjMiSNIqS4elp1PpIb0YjcnoadnRC17x3P0qjegFTJ1Uh8Iuu5eMMq4EZn52ehh+jbvNnZ9bvHyPDVgySIXUpHX4UW9qwBBkASDyvnp5i0GyIsyROvNawN0aWoNXnyXrd6qPISfRRDpTu+PAjEUZ6N13HpMgkdauUJqZg/9VwuLFpik0SnjsCAraZiO9+Ddnm2Q51IxwAVT6HQ5ImNU7gnwy5/rSUuQxCfEfXmA6cDAcsKggKguBHTKvKjHjCg96hHIyGvdFHXqzXIeLBIBniBkkIkPLkY4KVJKenEf408afVS3mKuiwERPrx5ASwDp5CPkiHfES8GrJtyMGNhkPd4yUPO91WMwhOfp597LTbzeOfxx+j9vHPxUfzofvzCFYck7JBOqxT06rHKF+2+pIES5QosdUVXxHarVC7BgpT0yFf8iWlLjF1Y5dvW+U5/liiGSYpO2nzvFKd4KqrtFHfXW60e5cLzmaD/de0/XJpqvil5UU4nRWtSsqZV8j6JogMY54gHsx4ghzwiCfIAS95ghwwDmcFU5jAgotBMPwoscQNqoLOmnGI7+EQ5lwMInyOhnBN38K4ie/NIVzw1hb65AZ5VrwYLPSy+Dge3NTazdlgXuk9R7QIrrGqiyFMeYEZTZG5XeR6p8iCirjhECa8wKym0LVdaLFT6EYXokEUmNUUWtiFbnYKzXUhHKnLW7DgK7jhU5jzydawW9WaUWfNhidiMeTLEgAahywgEEFb1oBAsrW0YOG6Q1jxBSz4DdzwOcz5NVzzVckxpJsNFHu3FcQyQoBXXGhO4gNX+uE3riouq0ygDBYvZROYvzR38wpMRb+xzU+GDcCO/huJQdRiTLg8xAH2xKwQ5fFEOVKkPmaQkHOi2L2o3UY92ZmjeAD6RZ6h0se85Gc5D2LXzVnsuhJ/FAjUUrhcIeDwQZ6edvFvXrLVYvMEO4caOAcRWY/tJ3pmtL+g+FQlhkPGNn8ZFeKtVmqliXPo5LXa1vA6g5q3tnUYalurl5MWjLcMbJ+gJkIXyy3pQrKeGmTDjzwnKj3I3JBeQv0S0UukX5r00hyWI3znzx0FGdtsYCz4ff8dLd6ZZj4ymwHxK2kPWcLRvhw1L8T5W3NAsxTfOR+4LTnCWEA+Wr0u3xSYcZlDMIRLLIG4yDLTKzm7iXOddm+ppkKqdEwM24NsIuKEHwYbdmvOGgo1yhE9p4JwD/T0bGBU3MjxgX0SsasdqLuYQFF2pQAh4jEQDx7PNlz2kjNntBqlyqEaK4GX929LqZU+HyyE+TYXTg4B/DRQKDgmnN7pjTRYg2B4SER2vU4HIT2Hwy2y/juemUooIMG6BNVVDN0ItdicUsw75GfKF3g66uiSzxiLxw5jse7SzKDTaOf0wxPCs1/Yvz6jZqc8mZkIR4KAEQQgBJ5aVeDU5zUlI3qrRKxAilgCHu+k8jLODeTSjeZRUSvQaCh2qzuUmg4V3AAptzoBY51qp2l85d+wolK6rpmXC+GkAgrWk7UsVK0gZaXN+DVlzUtBYoRN6TRZCk6M0YCZ4RnKbpwKcRbGwRblFsKQ7uWajwYCNwQxxD4uG41kay7/ZD1RAXaGohkrj9ZW/zNr5392KeT1UshwKSRmQgtcClpN+q2XnzljfmdR1Esi588djXF6EZR70EMnh53FkjON7BnkDJIadQszjzODuuNSj1mjrXlA3J3Rmd0YSMm9g8YzKMvCfwWTs/2YnPU0k0qYmd/BzAr5LgzebeEopAYfRYmPCb+DjPVBnbBx6KGTQsIMIlXC9hThKSGHjI5btaAr4FaPAUG4dBTvC18IrhhU032DMMqZNeleWIHg24bVLUyqGYMMEgtuBcJtXBWabbjozQxAGg1H8YfODFSl8BxVm6WnYbg05zcO4SXvk46k0VB9sQNVyUUPRT5zrESHwo5EcafazxGTctcZeaN/fWao6Qt6I+9zny97S5d/3iUcc+EoWMLS/YyarEZjfIeKZNzSsvSS9brKkpUHxXreMgZLN6974htwcN0GaoEM3pXwXBDkNSylX04Il8vZrCKSe/YdyAyIDmeiVKzcrzdvZDFUflMyZRpX7d3dOcpHqyOq6zBEzmA8UuNpmX8m+GEI2/VtNswJIIMPEMBfSKT3Lnzs0cjq0WM6QS9GMwW/+bXCBeT+/tW8halyu18j06/v14q9rDU8mCNONvAbgwK6PzvRz08Gud5BK4LCYFTjwQwCwCyENFYqpoEuzRisOCWa90oXVzYr4fZa3BQx/sYjyNHEqJzYP0SeJoaLiVcbUIJWZSGIUCbCGaGaMsmzuaNQsy7197FwlmzDYFUvxBuxfQbCOf9y5gizcDS3tuL8slZH6AE7gi+lKMYjpL1k9HT+5ikaKmVSSFQVVCftbEvqlafKPlUlSVX44+koR27snrJsD5TBfxrTivm6GdRIMjQGU/Ug5qLko6sVU52V0fRXOa+3hyv8t4iT1eeL3c+o4jcb7Jf/fIPdO1172dO72+7bnW33Bxsu7SbVol+vpW91o564b7SD1ZAJIIwY2y7Mt8oS/YDgkDtqEKIo7u8bEdthN3tkfFGdVUZss4+xrHdW3S/chCpm5vJ/Ctb/PbiSVAbZ38D3h9CrDuZKHoZgTuDk+8GJupXvWBdBTpvEFQJMMeRPMh5GGxR7D3ZL4begZxUQDPeVGuw52970335n068gLrcgnu+HeLZh4OiKag4u44Nm0G6FJ92TDrRPwuN2GLROoHvcDbpReBIRs2u3SYQvg0yTrUdORgcvaf0aDZGO5cw+MVKnJedEB0cPcDw5CUoEoO2s8k5WaVMhRYykHkYNom9inxWYukPo0IwkrwkdWs3JQT7kr5F6fVS4C+gmbcJv2YVd/Q+3o77TzgPTzkyoARAhRsD3hJ+J0siO4FfO4r/pC9nL9SS/J5zcT+fLmXNPONL9imwMg7DZOj5ud8Mmc0PchNK6Km1TOKwPaP9Nn3V9um0+yEBCOqz7+HrLJiRa63yDqLIS+1p1Q0H4UTFUlFpz9tVWK5H6p/52z/5WmSlgFt3eueYPZ/Ux1Ce7xLnue8V2vxH1MddSlva5YqLVqPBU8D/gkeBHE5HMRkp4xDu9F/zo8lu6OIKHgg+aIYTNE+gOjUbkxfcIoYDb8XQp6YA1VndNhB+PZrOL0fg6lnvMh63tZmNm47buLopqWjIUkziFZSHu1pDAt3ShD9jiArDsUokH+bgZxWOYiS9iFs/AjLPTipeAFHak0C66ruuFUNNsEk83XMCkprgLuIE5Kkixh35uzKMN0lzwVaPxSTgrBl/4uNHIGo3DZaNxeNFoOIfpel2wRuPQOUzW68Nca0gajcNivT4cr9df1mtnQTP6Hq75H8K5hgVDqpgmzgW75n9iyq/CufDvDBhWcFsOy4b7vtEwQ3DSxPnC5tTeOwGmenzLnffIlJkuzE12ZGSv+e+YlOxtbAN5xcpWZsrE/2qmjKo1nK7ekcXGtKqq1nRv2CZtNJzizEq8RMxmsXNDda1IsDSfb/DI6r5wJnANDrHnNUydiT/Gaedfzub6Kdb2EwttTlvZ3F7WNrdIW8ud/p34sUkwKDwMLUlgwPYZBWf6JLyml7k/T6VtdEv7i8clHDpbzImsuVS9pjclaZK7GgKsotvnaSmUoI2RI/lDzbtURmCp14XCdCABWXUgs0RuafNgBdvmyRKvQHBTzXX6di7Ks2vvrPgLZJ6FmQ9lQ5wsyIVvEyUyLbQzkUW5bfusJ+jxP6RAexwSLBq0z11hHxWqqUpiEaFCs8wlfdFoNgOLZK32k6mpRYMmJQ2a71m118jb3E/V49noMr6AbKkWS0UjuyQNhFAHb+EbXO0SJVQkNhpOcnaFS+WKVtIXs5K0iwXZpoP5/A2ndlVrDuZEy+aEn4Jd4WK9Qgok/D0Ag/k2xP92FLvTHV9WtAmpxhUSmyuYbtdqAWyX4KSJM1mvL1FENCy/hszfEaErrY3Z1ulpE3/bJiCAET8Mt2yzlpUap+ACxlxtWG/l6w4RJdowkOt1UdkgaOutRcnui12xNUSnCeKJHwpcEeWiVHclAbXlW7Cj5xuhtc+No9UPWu+w2iSpHM1mN7dzp+QIyma7yI2/QHVKtuV8kGvmh5an/aWFCpVgt4PjkRyLGQ2K7HIYTMrh7vQ9t3wkZm513AuyPzsbNRo3DosLxxYGxL7qK+sjRF4BUwb4F5EUG4EJq/miG4fhsCHhhVDv0rnIlopmaGxEvje447VF0+LM5ki6ZmKUl/kT0rtcgYJLhkgjKnRBgyk09xGjichrsyis+sa51XOzWM5m5bYoaV6kOUtRtF6dbUwW6LQz135ZFTbbs5Y5FTNnsXKTkRodlYZGyh+PloXAg0494be058U5TDIp8NhC9lJ0nphlhXBYLGzhy8AbzSGxHgP7DcodV2wzbjSct4ZXMcTjrd6FSXq9Mhtx4oxraqI33rfbGy+Sltmhhl+9HYTbQvtTYaRvqunlHbb3vpEN2a3EvmiTv4VzS+sBCTniknY0e51nC5GrG0fAUUkmj+D2UqgYuyxtLfCvld4GFX5ix/i6Jm8Hc6Jvu2ZcNhqIHUXP75aCmVVna6rRyM/yOFuvc0i49Ctid3ZUPRJbHj/SpK0gRCrMMk52yeGhWq8Ps/U65TyrkKgw6EO5TRdpzRRW//7Y0jSVCjdxkMpCIS5kycHNrl/Lf7IKbHSUGh3zzc566OV7cVP+EDcF8xfpQryb5tnycrqlPftzR2xV/sq4MmK30a0Ruw353mEYFTBiNYKcXM565fmIpB7f9EpMN5rechwIOR/HWOc3w+pd5GJ0vSlTsT+4uxJcEN/LudzRQpe90OWET8aJpAqkjW1DRwOCwd8UM5DbKpcDrTWivuX6MOvuGcqGSF/gueBHNIIj+FwLjEdGKHz1fZZM3mGp8OySDuVQeTp+d7MguqSxO+mlPm2UxZ+pmjqfBTtL+AsRb6UepVK3jjYMCX+MfhV+zSChqTIulMpOekzon1BnYLbDMMHoOzsWkePqmKew9ix7k7KY3kpdlMNtKkturdjQvri820pJZvAwqG5IWhvs1rDc6mAJhJV8yPmXRsPO2Lc/b1PVN3ecEm816yo2fNyzB2CSYXcgvTtUNd9LVWdba3K0vUTH269LS/r68F1MuuMcRa5R5UrP7nhZmoPuzLi99EQ/67GK2VNobJJy4WW9UkfXT88cfeaV2+JPqrWUaD9jpWOqy1MWl0UwU+ZWp+qg/GKaJnjQWVLc3OMC5Eb6afE4lbTsWaMh+jxcrx3B0XCvw+CONCkh1Rb8qnKty91KGiTbMpZWSJM5NUqiXgiRuPxWsa47WjxWgxMN+TWUD9CziZXOojk1qnZcFSUeStERN04gVvKb4JHmvfVBjRx9SS9HKsvJSrt686ejfLIa5eJBJsfLPBdyfNNoOL8J/sMsFdXSffzLcAXwU8keYBeeCBCoUd05j1Sq0lBASl3U+J8ttKV0AuNMJuklWgKQFJX4WjpjFf3cJquH58KfjgqaRHTU3ALu7V3J73siJ1e9+mBLHvK3tU3SIX+7zYHU7N9EjA/m2WQ5Q2vIc6Gde+E/aFZrk/W49HEoqpgpmoEZOCQ+tXP+5qnFYxieQn96SgUfj9KZmKD8ITZkx3KnFxQFYI8Oq9gnVerM+8RN7FDJ9zYah9UM0WztE7c1S2SfvB+WZ7iHofaw5C9LnWkPPSilQamXJUglK5eHpHyKNvecRE7aWg2vh1zEYVAe66I7Rr12KgpA0K22vd2dbg/g4r0QgkdI16ttneCFFOUFIYRDvtFJellv8pWE/c8K7AcmDu9wTx9LpUqjsefjh1mKitAfFOPfKcXgcO/g7eb2fK4a/EFR/t2SrGIZbqfp5fTPkRL5i1F+HYcbGHFRcQ3r9fd5XCOtLZGF/sugkSKVnFQOEcb4CAscgRH2nk5ioVDNpbgjlBuyf0n/xb2/Pr299/jRp6cv3z168uhNb480l1Xsc8+W4yBDom/YTbSMZD30eSg5X931edl1w4CWyltbGUIjUFyw3k/VMNAVuxzFMwG6P+I/GYmxkMqpZ6Bh9Uo4Ceodn2hCfg+Z2weZVHk2m4ncjJ38dGbxasOfiJ6uZLTD+W+9Yk0fBNoF9HN/PvqKaF6qlaDTYsxBvaYukjkpVA3AIhdfhFQPEITxYVC+U7diNM40Y0htKaJi8G2+amoxUBNbibdAul9B8rmAXBTLmYr/vtxmR2tgc77qTFmv6AjfaBymPlrOi4lFMfZ2vKQWufaxqnZOqXbFN2W2SKK81SEgVl+GrHAkVyCtiBF4Rl2HjDjkZegLK/FMsyOSxZKVQScmjoCBqXRY9hCVSJqk4VOvfvoyyu3DRBxIqTg5l9cyW8kDOvQ/YuV4DN7GCgql9cJIneMcyF0qtSGfAKlW6HBpZ+uLx3hgNOP/UXWbHuppZ0Zho/2zCh//lKspLkp10IbBWGfes+symDi3NK54tmGb0WTyCLH1eVooIUXuHJlKjsC5RWEuFpuaTyH0U9b6lbBLYwRxS2niHNF+hY7vjQaxU6A4fyZqdc9feiuVrPcXmjzNhELZHYRT0i1Ne9KyaobswtFofI111tX8VFXz03Y1bKM4fy4ajSelAGytBYO2BA1NZElCP9oQXtxawZUytRVdKVV2QKVE3YmIVCgdqWmsTKimmQKdeaQ2/HKWXYxm71CiXSrymguPIexCAF04hhPoQBhAG8IQWuhc14SwCRGELQghbA9hZXR7Ct1kpkY9Sy8TknRss9zSCWliRAEBAUb56MYt1ivTAgj1QljcKR6WDhmL7fKtONJFbqrmBwGEgJ1tQQeMU6D2BoRWFzotOOlAGHUhPIkw3AM0uy3AqBDHnS6EQdSCsN3sQBS0utAMjiNoBScd6IStFnSxSBhF3S6EHSwWtdrHnSGD+b7G29CBY+xAQH1oUTcC7EnUpc4E2J92B7vUDahXmA971gl076IWBENLMXytbD2cjlCSGabQGL1uKb0ydaatPDL1T4LhoBZvp7h1apZD7masrK4kgluU0sV+oRpEKCeBLVswVSong0Mu0X/jv9FP5ifpbIbhhkC5tp7ySx0r6TYR8UpBgTvJGH9m+DOixCU+rvBnij8TER8dgcItJw5ggUk3ItZhD6y95FJV9h0HEn1klJElb+fIRiwryDC4RjXhBRKn6ziAL1jjIg7gUsR2hW9rsc5G9zvhUnhkXFrIMQ0y/OOG2+sj62/Fj6j5doOXim1wlXxTP/QyeitKNyPckPXTleAYdODqOyUrIyfM+6Aq/7ks/lpwqZ++Cp7rp3uCZ5tNjdYPbG/In9TAo4ANoh+dncSRJ4br9dGRZcNi5kHv2RPBH9TKREcynXb0bZZe6B3z4MhV7tGBc+RK94gdbSqDyNqqZWtm0d80qILXlABWBsAUuSZchw0JaIFThwrJLUsYU5/wzzG6zyfhuhSnrfx+br5TPnIbZaDLlCHELJz+pLbcmsjpSkJGOpd2Q5FP8BvhCv+pqB3czwW6O2LWDPSbi9EmyurLtGjIcZ09FS5vQsYzL2xQtSD892JQoPmT+6dyw6H/CB1p8SB18Eg5GasSngr0f3xhmQG92QImjY6U1Pv6mA/RD4yesH/VczTksuoX9UX+oMWnNvqgRZP3uwXsR2rLZKnTF2djORDDeIwuux1XO8FaNlLvrWX5UrnHoBc75NzBv8wLIeNjZSJ/OMq9j2G1frmv0HcgPD3tui8ryuD7PpGNsM2AqMQ7EbcieIwU4WVJY+C+iJvRcecYfkWS8TsSjz+Qi/lTxBk805QxVQ7m6TJ4XiVIBp+RNTuviKfJ8grr/6Br7cInfPsNf/7Cn5/w5wn+CKR5UsVeBBmRP/xJ8KfAnzH+zPBniT8r/Jnizw3+XOPPBf58wZ9L/HmrqCOJcqKfn6EMBd9U2bUy5UqV3f9A70+xJy/w54FC4vwGH19jbV/x556Ku3CuyqFg0hv8eYo/7/XAR8p5pcpNgfnz0YJOS53bR1jXI8qJPw9VHODp2sOqWPTzc+zEPy/6QtVFP/9nRd+p+B0eTz82f1/qv3ZYvP/ehgApf4HGf6n/SPEcUv+h4lkZIyhlewjfC2u/3NfrOue7OidtKd+UMxjSweWVcsiweaW0zzKzaNfjckB0XhIrmJWOUfo8Wg91rEjE9X1flDE8MLqLBdw6lolW7SqMMCcHaui6pYJLF6pslMqSkO2rD9It6h5iGDjj78tTV2IcIPTpBXKXT3vbxq7CNnYt9wyMlmI4G7SS5dlADl23hPmtEaXM8MWGjv5K22TEpW1D47JB7GZaN5jWERjkIB2u1wH6h+unXj7IcJsRZ1+R9xIsDqBM2uEFcs0LvFS8C/cVb8KvikftLvyu+K9IzdwQ/sBH+BPTO/BMcdwE3OgEniveDOCz4uEJvFJcr2n4oHjYht907r8U90L4SfHBkRR4xp8SLozymyPA+GNiND8QcnIER0dwlKQzYeTa+qN5RXmvekllsUySdJwKqQ7mYp5RdZpTrDIdDeGJ4m+VM1EMhMSnhWKgZAnn8IT1lByEnSGPAB+Oh7xJD90hP9YyuOSPlaPtYQyozXrvdvfgI4kmzT7X4XUQDXjX+hq2WugfvfX9xPoetTu9CENVWd+P7e/doBd1j3fqt3yqMPIf9dj0shmYTrbRFlPyh8qRkkFCT7lkUFjeXCVx2baAFrYF9K0+h0Kb5zPc/Qb5MA6R50DWIPPCXtpHnJc8ZZuo3TUvUbvLrIWJTLEbbjtYyz7XcQa/S+XcMtgEurXoxiU2nhDVQx1O1udJo5G4qRf2ecZucwxRKM0p9cY+QbvbgBfWTeS7TaTUhJvT+DDIUsZr+kmt1NUAasbnCp4oBmNp0zUz9HYYUQzIumEb3siRmFCwyA7lfXmGbccIYCsjIorUoW0ropP3+8c9pZkY2Y/a7bOo3Y4lG9LsWIFQovZxrx1GhoMNOAVVQ/8/E2DNCy2PqQ1z/rcQ5P8aI6yjjBt02GWWaD2TlvVMFShUrdfVsywtSEKD2poDF7j/6mi/mncu95ae7Ae9il73I9E8i0Qzlj3pcdGbZLc5z101SF13iEHeeObm62CzmqYz4XieYL38X9hEFEJmHkoXrgzDJqxzNM4PiJSP5P9G4Ok65PRHCjltAk+P5H8l8rSe0JGsAk/joxV5WtdqQk9/GeWDpYSVhKmEiYSFhBsJcwnXcshHsp61CzT2CWqrJysKbj1vhH61v4dB5PW/Be21aeI4kniQFN0E63ARfYwhbW0BGGhSaybUD8NPU+CIbgng/KOoI01nJvi0nWSCT+f8ugwh9HGuIxCZuCU3+q0MabIowxPp14ksI1BPpR2CeiW3YlAv5d4g1HrB5RTXtYuZKAp1/hGjWrDSKcSpnTk+GqSrNS4SObyww2lMZw6JtsJfoLXlggS6S8EDNIi6FBTb27ln5+j3eZfyeNx2M7mkWqlM96yqUlcSNBp2Fa8VRiakKsLG8XazlqqlWt1UR9jx5JmDWfUaxsc1Rqz0LwWD7TFQ7CcPv1Sy8SVGLPHCDou/W4fJZLs70Zh2Wcn3W9wkiboKRV2L6JZZH+5kffj9rC/UdtYXqspKTfym30IQ/l9owv8TxWNB0Vr4T7YAdyV3nEERed8qjHBi/up34b9RnjeE1zp/uBWZ+4G8G2hUd+jUSPbrdTkYblIaDeSjT3k+kLb/ktxWhlDbJALJ01O9sfayU9Q2oFkDhmbGhwfafeGtDtBinvDvN8Uajcx14ZCy5NufGAZSfWucanW65Blkp6c87JVfLLXPV2lpPsh/HIPlvhXIpPvfhP9AQKGfvqL5tWEEsIsa+oq/UhR6ujDBqIJDnmpoILK+VQPXxdxDPib1yDfqQMBiyvRQlftO1MdcPZbxrUJRf3zmumOU8wdZNf/fcFzU/l/C8yBB1az/k/B4gpkeqjJA3JXgY5C13gPr/CViuGuHPel5jKYmRSfyjBe4vUl+VSZBvo01nofD1Uoe6zWvemaG7aaDHP9W/XTMqE/pbz48M39jk85cDO4qh/57xansexSBS0zFmTbdDJnZaXEcfR6x3lZPyt5uc0J6ToFM7PXMzjhCBkbVBC/102dY6YfXAqb66R66ZekZQg7hg+rzlCQ64V+hDFeaMA3MenqqhnpSab94qtyw90oZxKgRP+XjwVgPFHPj8PtoipfyKUxclwF9fKh4CrM+xT03zWFcPB5A3kcXMCfhy0HurYYYrHZcwfwv4fLiZyd1EwYjgxiUMtKVugnTLs/BIZ+w20l2q0eHPC6ezuiWeiz1vJ558TzQT244dHmkX6aYPPF4ZOZk0jciVsqnKFWnvdTziK3Iq0qDQ55XKO55cojjQ1Z9rPH2EOMROnoMTuqZVPbzWGMYmASeMsg9j4xIyQ7fcq4wDssUXg+B1dM9CGnuNCee8MSVg9yoCxDjeELZdCR1w9CWvJZuEruuo+NjTxT/qpyUVBkYiQP7kQIhFY7U2j/ubZM+6pcXkgIgwGqh4AGM+THMTAS3gCMv7Ix52OzCjDcpkh3qch8qvWWRjrsSKjIdpZg0sVid47pFn4/X6+yQJ2itOusXZ7SVEABdXsTBIc/OnIxAbX1BLe0LhVI2vbG46IeBLhp2dVqs345Nfux6yjM80kvOrB7HmUno6FfHjM/WMZ3vwgWhklZQQSQv+DGMeQtxkjz1qP4xb9byx0xDYkbRgclGKqU6ZgYYrpv0MRRifshT4jTH/YRNslviK2gsuGZU9fhQlfQlOOSel5iTfkTaMyc/JET9QVkKWQl1BgKlqp8xC31NvCZEjMUJQtiqkeCs6merQBjCMTpUWZmPrczHO7U3UUjiKJ/kOD3pmQW+ODcJHf3qGEDbOs1Psj4l4gHTEAvcHJoMiM3T7JY0f/+Nty+QUSKedfrn2MVPWEGGWegshVucxZu7iwLJs7m+AR01ngpGohY5K/sP1KAYojmoU7+74ZBh+DmkJfQeDaHAg4cAY9dpzlEvVf33oWKxk/ICL0QA8zktj0mU9UITyZ8gucKwD7gYM4/P6Z3KYYAZIj+Q8keol9PJqNvDmuivrkRIq5Lc4zd1JTlWUmJbcUoj7pluEZ+nzMNDcwb4VPLB7X0V/yXhV9T0/o4/f+DPn6jzBfz2E31r4bcWfuvit9adb238FnbwY/fOxw5+bEb4sRnpr092qtVFw479FfWQ+OE7ha3PeFT+J/25k6EZWRmi9lYDzYiqiLqYBfWeWEcQte7mwY91HrQD2Axr2fORtA+Wfsawbf3W2UkcWMTp/Q777DgkIfwpPkrWEP4fYkeceijLk8OV4u/1Cl3h0lwOlOvQQdOQGeNP4T8TA9UQ/n2M3+o/x6PGlRrWB2xlCpozWTp/I1vR199R98PxHMfBFAjA0YnsZ3z3779/9+jtp9eP3nx69PzRi0cv31ljeydrq2RJHN61MDHdsY6eQvWH8jziX55TnHHzl7RcQSy93OTPtzM/M5mfbWe2zhUsgUKrj4Q/ro4Ws35OKruc4RLOzgIU08bC4xlco1Ercp0JQrag4FAhcio3wn8szoSfclQE+SkYLdVemd+VZDHP4qgqSrxGyi/+eWHyQRYusacz+ptZwH25D7iTTIfyF/658oSf4E+qcJCy0SCGK1XmIVFnkuexF9I3SWxXimyLS6eljYZD9HWJYfX8JeSQe5q+Ko+OhFPzNzN/Bcb8Solt8YWilhgQBoB0DaTRA9AfC0baNrKx4zhR/lxQG1jGxZ5pSp4olyv9l6rn91XFKGHzmGgEpBUmLTVO7FkXqL3E3NS5Pd9x2VCk+b3rBbYWiiLuRSgCmN21HuttKpEhUae/I6QPqzFrr6nrU5yaat54NWQMyHEqz2hpnCtPgur/oSgC2x+K6dW3BApDI/xrLl2Fyo7rU+maXPjgCf8acBpo8q8pvXyp6qA8VIvLlb0P35fG6BIP6zivTMmD6v6Sm3IBoR+e8ufiEO9ya0WHXPnvRKPRPi6fOifl03GzfDoJy6cwqBLDsHrsdDr60XJYlJYZBMbTNlYQ2iLC8j6014LuKGnZSfeEzmNkiktsQl/4K2EgsxIMDKtNuD4iNMTQNOf485vQgFqidxK9a3ycmr8r4VH6J/qLa8z/JMjJCV09/FfCZkL/kFsWJNhF6b8UjQb++s/UXvKAHamtqF4J1zSHdsr6r+0OuK1c0G2kiUPzul6rfhuv9aj0n2Qk40WEl4c49vWasHUsGo1DJH/rdafT4TynyWkd8r0laVGvxPanto5yxXNfKsAfBM8hz/1PGsFoumCnKOX7S0GwKaN5UAbsziPpKHbKH0lHsn1d0e1ZvTUD2ZerFVWZ8IHoMr7zMGwyKL/WyNR1ndy/EF739LSFTKCmWrl/gzqB9Trq5/5UnQVxRz+EMXViqs6iuAlyjQGMO3rwRBvlGu8RQ4rYDD35r2YIv6JHmmRWHkoRfopqRaa/m4MEP6VNIeUhlH0GA0wD3jvATBOnfWwGRRSIcCyghZRDMzQPYfPEPHXRMe+lYPTi4KP/HMcVMFe/PcOx4ZumE5T2GUHQ2k57hWnd7bQPmIaXDem2cB1T+m/KpJi3ysppN1Vrq+8ka621ST6pZmB3mlpxsNvyX7iWlrPZYTkQrYC2cvy01bef6r5pQN1ZuzlSD5oMzPAV9TM0WZ2TKk4NVVd25e/+/sPhsH+KErRWTko8pwCoRIdsIFRnE0gzJXc0/pXg8HBYWpOIGVzZz/0PoldyWvji4Qds6RodDg1AwNROYEEeBxMpOxjySF+Q0/mbIZDSy+PZ5vvVS129y+VW5TzYEJyOm7g0jpt34GBwt3qo4piWFIFGphkt6j8NgCqgdiT7u85LHmxUuUYGNGJ3qOfRVgoo1isrtDt+EmLHT8L9Hf+gqof/1Y5/+Ecd1z0OA4J1GHwH2M8UK/vkRoRKjYaz3ZW7fanWKBJF3QcimSXdqAjdhqr+x8TSbB20GeZ+ouhBGe6k3hokD8yy/EvS8GPaOW7U2c7R+KE5c+iV1tjI7DUazst6D0wUKz9ap5P6RJpIdqF1vG/0qdNygEzjUHPIhm133VLDofgrhP1hqPdgWtRVrWqjK0QXUmiRW4Jdpr5U0ZQ7U3FTl3gq/lH15fk3Od4rFjf3AkVryW24EMPMf9WIoEFTJtFGbcGlhiLbBREmIiuOusaULMCcTIsKIfFDS9TH5Jy7btZobP/FGdDM+K8K14jB5v2Z//nftJ+h5FGgsZTnpF5GMh0yoYneNQqlh1KO4vS+wpsRfjjVdKiYKjA/Ba5tsgEO6c27r0wBTh+pUPmIcGL//8SVp3KAC2ro39cEhc7dI47X0jXRtqJk1DqdDi0cuV5Hls2FYScpF61nprc6Ld/iH6UD7ZLmK0LtolaxyVIJZp5Qn1YKDjmL21pA+ERsGsVnxZ25SX5CzgvpaMk21xOKHBzt95n+g8DDGFTbHO9dwlPGREQ4BjGypf3gzIk0h3rm/B2xs1K2GCSdtMUc6VpmosoxE3fqmYm7Fc3qO61RN1zzqJVZyx5WVQ9bD4eg81hwD38rGozsIIvDWop5VkqhJLYYSHmRJYPS5XjvRB3AeclXCpT/TPAp/n1u/p4Lnf5A6b9vtb1VovRtqt9M8pXS2atzdrQWqY/S6a06Lae3l6K88F35r8i4BAU+/PMG/4QhouuZ14wttd3z3ZNfLvwv2jQ/xSMI4Y/xfEb4FwrGlNgnNcwZkS96RFNrUn2Rr+59PElEeX5FBASmfNX/VZ39ijEfJ3yJyt8F/sHj7Bt6wAu5YK4fh72kjxojOgPv4+kmFP0VnXysWKVFUrAcSDcZHvL5ek2PHl55cUMvw0M+0amYtmDjTKpULoWJSxFp8k43EGKT2ZBzzJwNeyxzXe1mnkHeT8wG8AmlxITneOBYGA3Rno6XKhZH8dlANUZD1h+TwOd59Y3ISX91toqTGvyfDfidraMGsx+VBwLCnyqz7Ehpoyk0Plg2eyB5KzhpdqJWq3VslJNBrxkaA0x0+eAhSloh3ktM3ERpsbG9h5kvJ9q4oXwNg533pl0yNA02o96fythNWXWp7bxlc2RKzOCrVnq9U9XjY4WnufXYqPZ7+tt7nde/Qkqhkx7qMpRkaniJxrP8s/LIQLppVIsv1GCJ9iR0lqk8z7pXEQ9bw5bb/JmsrUFpM2dcBn8Jt+ke9/tNWg0/VW9Oqm9fI0UqWmM4KU8Yi1OecOm2Ie1z6bYaDXVmHySxOKGTJ03s9WHSG03uIZHV6VZLf3Hsi2EIfwkU+ozEi9rH0C5PXrywes69FrRM3GdjJ1UfmS3xJIhOBpusd17BFPXzcF7BU3qhDlVhYO2GJYjdEAqE0BtrOh7iNH7TNLXRuDR7VK079VAbC4qUsox+NXn5XetYLV3RK7kVeF0vDxLyKzXtSpyRoB/jpkfHQh+kPhWuDzh+265G9cWZsAPF/7XH3gXLoICIZlLXgpnjV6MlrUjPB0kk8lK4rQixwHTpFG8cz8oOehmxdeXAZT93TT1k0Fe9MZBkoyt5xkBbm2qNOO6363VAVpzy0CrADAFKeIs2esnrjwgmIFwz7EDCoPLj8lraZqV8bZL1YtdKiYb833aOEN8xSzlLQHfPUy9zjq6CSlMh0k7OSUGpJzyjyDUmzSUlvAZL+Tg1qZnCv9JDLTxWW+vct6uVVm2yrk3WtclKzOM8IQ6t8Mq5g4IoOR4wXgtm9M6pOuWF1o8QP3otYOtYgVL0WQEaJT2huFRPhNGx3z1RYGVxw/zOzUHNHI9KvEKHd0V+t6AKXES3glqh4wJ9yn5LNmw1T6EL0wGK1TldtTJoirVy01vTmU21wuqbQ1C/b7p8bc5AEjTNeo2uFE0Wa2GyRb/1gYgWWPA1w1VIGG7AByZLn+JeZIq2bX2YlJUQ/c+Bm7n1WPYBOevXCymrjjAw9oaze2ADWQnyrAZ5ZoGczhrugmVreWcVWcjgA9nLVpWwrTXu5H2ertdOTjsCbgfBHVhmfZ4zWu6/SR26qlzGdi5c0vVS1qcriUU6cQmUS5IZqzecRZzQaOsI96cdxfu2yG/OgnYl29//kWArt6RajH+sO0uTpL2JCDbylJendiTjPdf6Fy1tnt5XLP+xSFlpJg3KfTKCZa4FSwN/k3pXwCSJ9lKt1zS0+4rdkTmhOqOj5vcd01GZcFgt0UJ5Hu4HpX7DGrttOYMZUcbGTKTr+c9kWyJReP5HnHaMT/+70m6FNk/+j9AGRY1yamb4ZKaV09hLpBqjlfCl+jF+QbtPNWn5GvkzRIFC8UoJQ1jTR8OIqizZKOhunN43Bfr4ps8nlkYbuI2wdD6bNxrEqQSsVHoZJK55lgou+hQJqyMjViv31rWV5fGrd1/1DO7PFPVtC/dDr0rfwv4xgoz+8AhxFS1pccu7A/VtjB0rcxy81EujBL7p5z9E4Y2pghiFu9DStTP4v0FzZBhFzrvtCFTObxR5vwreF8jUypzPlR2G0AtZnaHJIM/5QhdZYMin6u0mZ7081/6qnRZE+E2/ha0ITKCPNOcTVV3A5kWsqijZ+wUrTctqOhDCcRNDdAQYbASSqn6MaXIc4U+3jEJSVP6ZA9/3JWpXunQrL4Px7qem+TDL0eswzRmM6CnJGSy3MqvcZF3tJqOL8wm0TsJ2c8hgSuXznMGEnrLc8lZa5Nus+b+iMxELN+xYd1F9J0vUtYJG53cPlWnrLgRJbUtB4loiiIcfodV67i9hxnN03ehjjHEMuk2PeCvjEwUrnvsKFRboLJ/7QqK//MS85eQ9v+C5f60L3eAjPc157n/RiddYhYQLnnoOkhg8yP/CU/TyWAmU1xhc8szVRj0orvEAvvEArngAD1DSj40lci9s90ea4KJjWHlkQoQUo627aOTuusPT0xGMXK5vhJZ8OZg1pkNDqa947UYDM4z4cAUjj1+B/oARWji/YrcFOXIZXxBZ6/fDTuOKKnpbfoOrBrrLXmlnkN7Vvi7e5r6UPOxEgTkqOBCbu9196/JZAyF7hWC1Orf5wej/WdUaEqvBrDH555Coxvrtf36s3747Vk233sKSp94Fkq1v/WV5jPPNWxIh6980GtdlaJDyZu5JqgPQHKgsO0hG+QHG1zuCqjsnVXf0LqxDMj7gCw9jfyB13Q0Q4rqCGUQYDx64Ll01THqzg+2L6eXezHSpxgOeet8qKwnZn7PbB3zhzj0d4Udw6c1pe/mv9wB1WqKveq6rdjLrmz0ELiNQ2LRd//x7nZ6bTlOvNYzm/x/AiFBK9aNemaWgLPCjN+XxZg/31J3kfribxnScNuo/tfe/2lRFLzotXEPfQVQMI7AXQXGpmmN8yVynXilsuFt1mjjNCB9MNeFJWFWz3eyMbnGc/aLX6Y8aX363ccMZXaKA+6WfatvV13zU7zd7mcdf4xJ+fXrahFmD9ogRI0apECRvLgVPkQET/LKfnV16mduO256TeZeMLLT4l3569sVL3ah9HEftYzyE+4JHEgs+01F80A9wVPnJXuf1IYHlRGrvgvw6h5yrs7DV6sRhq9XaDeUSmEguUsZhJ+wGkMv4MNQhXRJ6LCQGT8GfGf6M8GdJcafwaYKW1p/x54mKJSj8EfghpyAr+DSlfPizwJ8bvObwWtZhYAIGF9UrxiWAL7IMvJKjWX0cgJIY/fEtPn7DnysZK8sc8Eu+e8kj3vm+pgvZ15a18GWuHWzpiDqoclfFLRdLzBnaOTotQHBZLpB5bTGtDfAZteqUd8ozat6prptHk6y1KE+maAqvcn57RWB+IOMih9cynuXwVcbLHO7JeJrDuYwjlPsRIeANjv2pjNsnETyiYu8RMBt4YOoJsJ4x1TOielZUz4TqCU90PR2sxwt1RS2qKKCKQiuK1WsrHpZ2Q9AoNYYZjGAJK5jCBMx9XHABX+AS6BoceACv4WsVo6LD4J79cs6Lswd5fKWNpccYcaLd5+Pe2HXZ18G4dBzTLizag+XrQA1mQ4yOgl9WPPMfSljysN1b9nlIMubXwXLYW6L2Pk2cVX/ZaDgrviQF8bJk+M/99/LMecvf5k6Iq+oh+mjzt/opxCesmIcQsNh4M4542Fv2R6aJ0bA3cl3tZjOiE6gVHzFY8BDGPLTGkSbOAt0qYeFxHBME/UV5OhhiDxd0xIiS4HodHvIlq7/SscaAzNhNpbrOe4MxBpW6NxgPXazzDpRQtzSYYSCEdHCvhNiQz1ivWKUmMuN4hG478RV/wFN4zc/9c8Pb9ehLGF/xc/8B7kjn/mtJOT6VOSYiGWFcVMzyVWe5p7O8kUiP5zygi3rGfATfeIJzNOV4vhfAF3RiusFoUiu45DdeSFbqjYZz7j+SZzd9LvL4pi9yRqfk9odz/6mMb/r4h20fLCEb95Z/zZ0U792GCQiDeuf+FSqisbWxN4ELfJjiDbwo8154/NowHs68358w96JH8//NFUP+tpZ8L/Q0m2rC3rxx3WPXFCFNH2JdnznzBr/2Qpi7/JrFNHzXRYzzPJwg7ViF+GcgjLFtcFY25HCF6DNvXLJDjF5tHNwmjYYz4SsG31zd6ynHISzopbfsT13MQUg1dSdDWKBnIZu6LhC6Yc9uTMn/HoC/8HnjUi8MnEj3y5B/yZ0prOCbhwlsY8yP5uTHSGtq7E0YOgPOe2Y8hzQeM0YaGSLHykYOXZCZ1fjN1XOCS3Ef4PdDvRTjqaP8Ri/iFVjn2V/vkDIYa2I2Q5CNz/A08rSI8Y8bnhZsxi9zB432chD1JaFV1r7Oike/mNZohBi3snTdGKghSnU9qiQhN2tPuwIbFkzn01VRRV7x3cwHM4xvQ8e/X3LnpENbEHOkl1faD33edc/iBeA857cviKq/q3bSdqvF4LGM7+XwEn838Omf5Ko3hDd5HZvaWNY7pXH6jYBDZ8vQXvlXZMmCDFlf+VJikpR94rXYen1YZ+gGOxnCkDHbWPxp3TI6zMqzT3l8noPktw9lHGz0BbEvbK8549uK0Yxa/Rwd36/lIEdyaAJb6Dg1VvqJSe8G2+nHZXp3tx7lv5NWBC58BeU/ljyFjJ/oO1Soh+kGCnrINjAu+4y1vs4d5A6vJWAMVkRL4V9IGKOvLJ0r0DrBm+Ef4rHWpeRjfMJxNaPt7rR7GW/3tO8nZRqVTS9N0z2J62IGr3Mn0o02I9rIqU1p2lT+S8lTo3Wa4fsLNAvcCP+J4jg6unaMn4DwFSa8xIRc8bbuH7ZB6Pgo1/E1qytEZmrnBkd9u8bRSwyqNc9yDKC6WKojZkfSfJ/fOZIFcyPcPh6kjMXTIi6A8HW9Nu4C5CWwa2zvRb2i2rVQ/YOBMlcKT8khxYfE+KvfCCBMRrcJSRFYSmkjYnDl4KUyBaz4GK5RLKyvKDI7L+Y2my/he6wlcInGRbd1VbWa5R6xSlFDks1/s90J25zP2C0VutB+GxeCYxxG6c+ksZKnx7cO/oEZg9cOJunKu2FduXbloD/+fcnxkP8QLUCwN+u145w7XeRUUfZBLxb2r2ZYi3DjLM/FWB1M6YamA7p78ahsphKjsJnuIT93WqwsujRhv8d3ru7aX/yT02IwpyrcLuwMfM5g3g/b6/W8j++7EuYqlZNsZa7WvVO59McUA3MO0i/06QPd6SnRWS4wMGuHUWN2hpA7iWnqEZxbvBICNa7miqqaQfdQ++Li63956O3jZqulq9ipwUA9mY0ui4NCqL2jq2f3uULBsdsIGYaEphobjZbBKmcbXXbwJapHGcX3HPIDsWr+TfHZ9yv99p1Km3WlzbiEW13przrA6owS/b905//zrrfqVlrkCkulz6qJWuJE2e3+9MPBbDfDYrvkZ7TLs5pu1023YzIjN603Gs6UY9Mw7Rf0UjCYmmqMXxW6c9DD75h9zk3fPCzGTqsv16psG+ZEE6ff7/uF1J23rkvKIHOnDKaMQeHxKZ6uTwkoHp9q6FR84Be8yhvBFdQj7NQj7OAIMbC4QVVN1Aq79JQHyHXPOcZunKK+yBrvH+jK6S/lafWmB/ZKDTAZt7V5eRY1bzSKvr6r97871rnVQc1j2TP6imb0zrCP62Ef47DxkPC/OOw/t4b9ZzXsD/+Xw/5QDtuMt1uPtxtbrdNw9UIquzE7LF1usB8V0Ss3iHx8ME+LOYaz3kOtXjtsi2I9Q9fHQvb7J40Qyh1K3xXPt3a6bWVf3dsTQ6yqAt9yZ2cvPAmq7Ce0FR9KP6lMsx84DKLevi1Bt1cVJeLfJnOsjnXIjfNf5Yli2m9zyW7f1D2Igo4ZvuEP7jlN/JhLfnh4jsqJT/hz7kSsEtmrHjS3BfY0cZ7m6DNaZTgBuzufnIjBl+2tK6pr69jpzXh7G73A20oO8AYHe+Y2WOUO2E+a2BEcooa+QYgZO+TIRPTDzkdtdr27Uxcqy0XZktbMFvs3RVqRptrt6WzBd+Hfqkdak+YTIs0lOSaMtokymug6Uz4m5dHUrvZaOch/GppbL60xPiUWHa224u9g6UnHMA4tHMZU8nOnzVDrC58cYukmJiksE1ZSc0ItIL4IC/Wjbme9PpQkR2GRfjMw4MW0syM8B5qP5I2B61G8m3KQ5bUyvriZX2SzYi9HsbBp4UlNC0+OYx15z18gOVvJHjOofC3RqBTTXXc45OeY+skxIWp64UkfP/XYnYxBT/o3KEd8kSBR5pAoZ2Aa4HWM/JhkHC3TYOoGLsyzkBt4akmE1/w1yfAo6YQnsIQLvNtBwlOQJOlQO0sUlajiC3y6c6aGhwQlWn6X39qGTk05T7pb0JlKF2fJaEd6C47jG5zTNZNsCM6i9mPAc8Wv+u7SsNM3i2nB2Cc7k4aygZxZGYteeWaFMQzrgppqR65dHifEro5Y7IXcBcFFqkp0ycVCjPbBAHkV0xc0f5/ypovEC5BS6L0mPLa6g6xY84d9QWWarsXgDYude87xPygThu65c4zfjnUwLwLQtF/B/78yPu0d4HkGYUuYzzf6SDwKTrRgWMeKIGBSCMzOcC9SeR5ui0UqLzF8tJclHtHAvQhWLwgUvWkFPLJWwHtrBTwsVwChf6jRH8cOj+C9XgAP7QXwqFoA7/2H+kj2BX+IjwS6J3rtVVYoL9jdNbJ9rvb9ZZIr3qEG3hFoanaFulfPDzy2xvbSPOdqA/fp+UW9uiN4R7QSHsNLPbb79tge67Hlir/UT2prNPvGUlLD742CgLJ3n93adk5iWRsBmNQoKHkNpNdFn3cajXGfYkvfIs9BxisrrU3Y1TW8JSndQkZKCv4pDVlob6jGYfkUtQKmydANX5S1mOV5w1zn3HFu6ppceolajPX7djo2uJVtT+uf7ByA3XZ5naLl/MWdHHUKWNv+AsoBsEprEgXtemrM6JoRfiaY3WEUrWyd1o8x2ZwQ78Hkz4qbOhzaaZthrDUxJmdYz3kYS+Om7+CDFrBcfm7ePlWpOOzy+ZvUvElVYVRXGMXV7qH0zOfq+zP/gxlX/3+d8e9Oz47dwJ6JmagKVexZCtt15mYNyubduZmov5sbU02rrqZltHljmxQQg7nyxlRn3zCZeKm88qaAu9E18mxK/kMjnjtjxSq+iDNn6uHWgLE4JdqwT1k8oQTTyrJWPNic7VaU7KkxTEkHib5jR/rLwWSIQQLBdSf6zGLCEw97D5UW4+/rSu1aLLaa2GXDKWuuY2mpVKMg2JEuoqC9F8SDBDdh6s4YQ23t2F3VxTtaCnssDB+EEsrK42MTHmcF0h9J/FuKtKvytCGtd6nEW0HCasHwUovdClbkD43KX0swL+TZLCbRE6012CGVuatFpUshvqdD1bKxSTyuh3NcDqdhi+Q4KFskr6NcN3B47G7jJZn7J8136+a7sZmEax6Cte1FwUn9xWtufQoD88lrVefIpQp+s32Jpn2R2qPcnnBz37Fl9eFoEzYSBq/Fer06NG7V1Jt+tX9eyTPqOaXEhBL0yNZrCtBjZntF1pnkyr0TNrWKT3To5P6SjhFyf2lM/tDDw1+Whw9kGXpBnsRLZh2pagzOtT8M/uEmJ6ClKDlgX5O7+yl+LEO147OHGXqCnKyEcbJCu1VMxjvjypsYJAgGDobjZ2eOyRNsZ6DwHF/wDjNsjRqKHUxxuelH3UPsFGa/Pq077XJhDMkO9jWAGSHXfjD1oDBhy78T8EimXlloGOWRWwXeY1mBrMS9MACvVR7yLsmQXeDyxbkyweaW31/JJtyNvWT3tL4yra/I1l/RBdMuKW7OOi2KH2SxZGdh1K3SDOe/XpO6wWSI2h30TsQJX5LtyIp+r7UfkH6moHUcDX6vLfskwrs6rjgRkgtpUuNZ+WTZKW2ZRV+gRYu+pOwCbUiq+D9AlVxAtBOh8ds/LT6I9KvZpC8GTf2ubZnK6ls71V85OlTFSFteLwX5i68EGWcnlXF2oSd1hgIojAj6Vrh1B0nXSNvOLQVPtK3cmMIeksugMa8bC16ARGM5kGQoZwVad9jtTJ/wWWYBTq28re92f5T3Cs+DmQmqilduMDTbxWjbZKcbGJPiKpJxGQi/JwwPZEXztWJqakNCwTzLreYTHWxjrQJNB+175xzz4bgxwk/HjZF9tZZleqYP5s+8KNZWgS/0VR4deJfvu+OQhx1Q/EVu7jh8JjEcND0+l9b9Gfq2EnOPhIAWo0jdpoj2MijDQjK2QU8XqrO2yS2zVtfEqD6ejXpeaZloMuBVU7Sf6Yz9KpbfQVlDsSB5zYThty5/yuie2VzMxKigi7O32zw1o2o0trotto6YH1u2BVjnu9xpRvAip6u7lrNZnRMPrUsbhFfS0RdffJDmGnrtioS/Fi7NlHOEl7sfJPpy4oMjVzLrmk3bhDGjAeQ3t8qvR1RdG2+NulDOLV3/67DbDajyhlxUTbJbuV6jM7HDtGlqwaU/Fxq+v0n7atVxGV5/fJqWtyuU1xCYWS/TvTGYi/hmNkM0hrGba/avwJU4gwJXYgAFrsRZWSm+VTfH5Fz5nxF2KXqQ4WgLXNk5FLiysegK9zxTtIyF+he6xQaM3DVMlwqzUY/7QblVHoZoEfKTjHPbWWfMwIAzpkuwxHrtCH6IATBKMOcYp7yXYmJSXd4uiavThj0IO35oRTnCSOE707zIs7FAewe6lvjgyMXwp6kczWY3t+l6neE1ZZtyHgx/6nK8ej2Z6QvtyJccWbp6onZmM9GzWVq/mWWkAZqXAE0QoBISDdAEASr3ADTBaABF9clLDECLLYBmBFBpA7T4e4BKAmiOiWkF0KwGaK0luwtHgln6bURrYh8wcwQmGqBp/Bb+E+kk5RIsaAkWO3UKObFWYIFR6a3QtPn2VYDfW17VJa2qGpLwf6pUY6zuoagAwarpZbfYKJpy3VpXfiNtoCvciZY8qM0D9HXXj0ezGcp/6HZ45+OHWXpB2+hDMf5RwT2fsWivELPExw68yCbLmeCj4kaODzC8hmo09N30dLE4cZ3f7xvyo/oehh/0g+d0E8Dtd2uJ921URxORzEZKHNXW7OWs7f96dPktXRzhPdrNMC6/e/loRWle2I5DvCVANRpHcjm/EDledn6zQEkDWdgvYnZm/qL9r8GJx7lz+0oSrtvX6OHdzHWkkBvB6Z5VoEvs4IOMBWYnIYJ3IUevoYy/xBg6VSSXRBtsHlrGSOS8iELaEWCoYx0sFwNI9XMiD2iO5IXtfl4XybmXa4Y874dtuvsigtzjYUcfH/Sz9Trrn6zX3UMMQtXt5+t1TqYzQR/t9fBT0E/X67TfWq+7HC/VCPGKhKoFnebk/KTcU2io5eALjBhwg6xX4c/xwuQC4161IigwgFIChRWCqEDbHST2WvrBVyj8+4JjihdC4f8qeOYeQ+H/bnL8ijn+wBy/6xx/Cu5gcnVPLe4dvLqVtSDpo8AAS8bovEx5bqX8TinXtON8ppYytwMFhmEqbch+xi+Y64Pg+gUbajSwavx9Tr/n4swpMGoTPtZksiz7Bjv+Srim+AvBmz/TRzS6KvwphhEq/Bu8z6Tw7ykuwbpwz4p1Y2BNYaaQ06ObQTkKPWS+pFEGBZcIjDmmwqCJJtoTRn4CNLIk5YSiwFaKAlthbCoecbTsE2ftY7zMF6WlMoUO22N9BK4w/pcX6Q4Sor6nEA1VKKo+f6WY7ZP1qoz6Y+L96OtcjcP8e2HfCXsnu2bVsICJNveQGntYN2buurVr0ElVLQ/vNPrwTqN3itxp+IXSt4FYDX++2/Bnuxa6n2qr4RfqbsM7ReyGMcAON/fSUjgdczNtJuEJ3mPqhvBMwQftIP/YyvqwypqgGw4E8LzK99LK90JtXXarMOdnhTdpbN04pi8kC3QYnw1zMEwdRfGpVn+gqRTiBEYB4Xj167WAFyYIwKXiT+VAUKS83yk6iZXwKyZcWAl/YMIXK+FPHRCQOpKVQRPpj6h80SlCgHFIX1bBG0jP4N+IMmoT3uZh4vFBecu612JAEdzAazEWey3STeTQBQld5Df/kvGfEp7I+JnEzRs5gB6JEqs8VaOLGXJW5aMWoXIxmpgP5aO/SBfi3TTPlpdTB5kNZAp+sFf+eCssRRBnK7EiGX+/A5aJnZaV3InD9n+635Gb2WG4veXV+7Nltru7yxl6ZbhRD0+qKwqX63opTMsN7hW53lTITy8703Y32lFt9+ZX3RAJw1s7qvEDx2jiSLe8sFPFFfciDBMLuX8lTT9AcU8Z8yjedh3V77eYznAYQqvbpz0ZvYBZrwwgTNpFC4KYpas310xT61pXiH4/qPTTcRpzCgeogw6STu5CcAV36X4l4TsVdb/W1P2afknV9g+K1buG8kfS2jpUfedD2Ci3BonCBQ2uBroiI6UQlJ+YvwWdsym0qaXcpHsw95tPxEwocYBRCPHiburrpe44mZN/QYt5VT3dyCpNaolCH+IZmmP9YoBkqVckrtL3Oa7Sh/nGEKftRaq+t0jVDxcpVtb7f/5f")),r=>r({workerURI:r=>{const t="text/javascript";let f=s();if("string"==typeof f&&(f=(new TextEncoder).encode(f)),r){const r=new Blob([f],{type:t});return URL.createObjectURL(r)}return "data:"+t+";base64,"+(r=>{let t="";const f=r.length;let n=0;for(;f>n+2;n+=3){const f=r[n]<<16|r[n+1]<<8|r[n+2];t+=W$1[f>>18&63]+W$1[f>>12&63]+W$1[f>>6&63]+W$1[63&f];}const c=f-n;if(1===c){const f=r[n]<<16;t+=W$1[f>>18&63]+W$1[f>>12&63]+"==";}else if(2===c){const f=r[n]<<16|r[n+1]<<8;t+=W$1[f>>18&63]+W$1[f>>12&63]+W$1[f>>6&63]+"=";}return t})(f)}}));var s;
243
245
 
244
246
  /*
245
- Copyright (c) 2025 Gildas Lormeau. All rights reserved.
247
+ Copyright (c) 2026 Gildas Lormeau. All rights reserved.
246
248
 
247
249
  Redistribution and use in source and binary forms, with or without
248
250
  modification, are permitted provided that the following conditions are met:
@@ -270,72 +272,19 @@ const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,1
270
272
  */
271
273
 
272
274
 
273
- const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
274
- const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
275
- const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
276
-
277
- const STRING_TYPE = "string";
278
- const RESERVED_COMPRESSION_METHODS = [
279
- COMPRESSION_METHOD_STORE,
280
- COMPRESSION_METHOD_DEFLATE,
281
- COMPRESSION_METHOD_DEFLATE_64,
282
- COMPRESSION_METHOD_AES
283
- ];
284
-
285
- const registeredCodecs = new Map();
286
- const codecStreams = new Map();
287
-
288
- function registerCodec(codec = {}) {
289
- const { compressionMethod, format, codecURI, CompressionStream, DecompressionStream, versionNeeded } = codec;
290
- if (!Number.isInteger(compressionMethod) || compressionMethod < 0 || compressionMethod > MAX_16_BITS ||
291
- typeof format != STRING_TYPE || !format.length) {
292
- throw new Error(ERR_INVALID_CODEC_DEFINITION);
293
- }
294
- if (RESERVED_COMPRESSION_METHODS.includes(compressionMethod)) {
295
- throw new Error(ERR_RESERVED_COMPRESSION_METHOD);
296
- }
297
- const hasStreams = typeof CompressionStream == FUNCTION_TYPE || typeof DecompressionStream == FUNCTION_TYPE;
298
- if (!hasStreams && (typeof codecURI != STRING_TYPE || !codecURI.length)) {
299
- throw new Error(ERR_INVALID_CODEC_DEFINITION);
300
- }
301
- registeredCodecs.set(compressionMethod, { compressionMethod, format, codecURI, versionNeeded });
302
- if (hasStreams) {
303
- setCodecStreams(format, { CompressionStream, DecompressionStream });
304
- }
305
- }
306
-
307
- function unregisterCodec(compressionMethod) {
308
- const codec = registeredCodecs.get(compressionMethod);
309
- if (codec) {
310
- registeredCodecs.delete(compressionMethod);
311
- let formatUsed;
312
- registeredCodecs.forEach(otherCodec => formatUsed = formatUsed || otherCodec.format == codec.format);
313
- if (!formatUsed) {
314
- codecStreams.delete(codec.format);
315
- }
316
- }
317
- }
318
-
319
- function getRegisteredCodec(compressionMethod) {
320
- return registeredCodecs.get(compressionMethod);
321
- }
322
-
323
- function getCodecStreams(format) {
324
- return codecStreams.get(format);
275
+ function concat(first, second) {
276
+ const result = new Uint8Array(first.length + second.length);
277
+ result.set(first);
278
+ result.set(second, first.length);
279
+ return result;
325
280
  }
326
281
 
327
- function setCodecStreams(format, streams) {
328
- const { CompressionStream, DecompressionStream } = streams;
329
- if (typeof CompressionStream != FUNCTION_TYPE && typeof DecompressionStream != FUNCTION_TYPE) {
330
- throw new Error(ERR_INVALID_CODEC_MODULE);
331
- }
332
- codecStreams.set(format, { CompressionStream, DecompressionStream });
282
+ function toExactUint8Array(array) {
283
+ return array.byteOffset || array.byteLength != array.buffer.byteLength ? new Uint8Array(array) : array;
333
284
  }
334
285
 
335
- async function ensureCodecStreams(format, codecURI) {
336
- if (!codecStreams.has(format) && codecURI) {
337
- setCodecStreams(format, await import(/* webpackIgnore: true */ /* @vite-ignore */ codecURI));
338
- }
286
+ function getDataView(array) {
287
+ return new DataView(array.buffer, array.byteOffset, array.byteLength);
339
288
  }
340
289
 
341
290
  /*
@@ -520,50 +469,6 @@ function encodeText(value) {
520
469
  }
521
470
  }
522
471
 
523
- /*
524
- Copyright (c) 2026 Gildas Lormeau. All rights reserved.
525
-
526
- Redistribution and use in source and binary forms, with or without
527
- modification, are permitted provided that the following conditions are met:
528
-
529
- 1. Redistributions of source code must retain the above copyright notice,
530
- this list of conditions and the following disclaimer.
531
-
532
- 2. Redistributions in binary form must reproduce the above copyright
533
- notice, this list of conditions and the following disclaimer in
534
- the documentation and/or other materials provided with the distribution.
535
-
536
- 3. The names of the authors may not be used to endorse or promote products
537
- derived from this software without specific prior written permission.
538
-
539
- THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
540
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
541
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
542
- INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
543
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
544
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
545
- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
546
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
547
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
548
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
549
- */
550
-
551
-
552
- function concat(first, second) {
553
- const result = new Uint8Array(first.length + second.length);
554
- result.set(first);
555
- result.set(second, first.length);
556
- return result;
557
- }
558
-
559
- function toExactUint8Array(array) {
560
- return array.byteOffset || array.byteLength != array.buffer.byteLength ? new Uint8Array(array) : array;
561
- }
562
-
563
- function getDataView(array) {
564
- return new DataView(array.buffer, array.byteOffset, array.byteLength);
565
- }
566
-
567
472
  // Derived from https://github.com/xqdoo00o/jszip/blob/master/lib/sjcl.js and https://github.com/bitwiseshiftleft/sjcl
568
473
 
569
474
  // deno-lint-ignore-file no-this-alias
@@ -1933,6 +1838,102 @@ function toCompatibleWritable(writable) {
1933
1838
  });
1934
1839
  }
1935
1840
 
1841
+ /*
1842
+ Copyright (c) 2025 Gildas Lormeau. All rights reserved.
1843
+
1844
+ Redistribution and use in source and binary forms, with or without
1845
+ modification, are permitted provided that the following conditions are met:
1846
+
1847
+ 1. Redistributions of source code must retain the above copyright notice,
1848
+ this list of conditions and the following disclaimer.
1849
+
1850
+ 2. Redistributions in binary form must reproduce the above copyright
1851
+ notice, this list of conditions and the following disclaimer in
1852
+ the documentation and/or other materials provided with the distribution.
1853
+
1854
+ 3. The names of the authors may not be used to endorse or promote products
1855
+ derived from this software without specific prior written permission.
1856
+
1857
+ THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
1858
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1859
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
1860
+ INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
1861
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1862
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
1863
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
1864
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
1865
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
1866
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1867
+ */
1868
+
1869
+
1870
+ const ERR_INVALID_CODEC_DEFINITION = "Invalid codec definition";
1871
+ const ERR_RESERVED_COMPRESSION_METHOD = "Reserved compression method";
1872
+ const ERR_INVALID_CODEC_MODULE = "Invalid codec module";
1873
+
1874
+ const RESERVED_COMPRESSION_METHODS = [
1875
+ COMPRESSION_METHOD_STORE,
1876
+ COMPRESSION_METHOD_DEFLATE,
1877
+ COMPRESSION_METHOD_DEFLATE_64,
1878
+ COMPRESSION_METHOD_AES
1879
+ ];
1880
+
1881
+ const registeredCodecs = new Map();
1882
+ const codecStreams = new Map();
1883
+
1884
+ function registerCodec(codec = {}) {
1885
+ const { compressionMethod, format, codecURI, CompressionStream, DecompressionStream, versionNeeded } = codec;
1886
+ if (!Number.isInteger(compressionMethod) || compressionMethod < 0 || compressionMethod > MAX_16_BITS ||
1887
+ typeof format != STRING_TYPE || !format.length) {
1888
+ throw new Error(ERR_INVALID_CODEC_DEFINITION);
1889
+ }
1890
+ if (RESERVED_COMPRESSION_METHODS.includes(compressionMethod)) {
1891
+ throw new Error(ERR_RESERVED_COMPRESSION_METHOD);
1892
+ }
1893
+ const hasStreams = typeof CompressionStream == FUNCTION_TYPE || typeof DecompressionStream == FUNCTION_TYPE;
1894
+ if (!hasStreams && (typeof codecURI != STRING_TYPE || !codecURI.length)) {
1895
+ throw new Error(ERR_INVALID_CODEC_DEFINITION);
1896
+ }
1897
+ registeredCodecs.set(compressionMethod, { compressionMethod, format, codecURI, versionNeeded });
1898
+ if (hasStreams) {
1899
+ setCodecStreams(format, { CompressionStream, DecompressionStream });
1900
+ }
1901
+ }
1902
+
1903
+ function unregisterCodec(compressionMethod) {
1904
+ const codec = registeredCodecs.get(compressionMethod);
1905
+ if (codec) {
1906
+ registeredCodecs.delete(compressionMethod);
1907
+ let formatUsed;
1908
+ registeredCodecs.forEach(otherCodec => formatUsed = formatUsed || otherCodec.format == codec.format);
1909
+ if (!formatUsed) {
1910
+ codecStreams.delete(codec.format);
1911
+ }
1912
+ }
1913
+ }
1914
+
1915
+ function getRegisteredCodec(compressionMethod) {
1916
+ return registeredCodecs.get(compressionMethod);
1917
+ }
1918
+
1919
+ function getCodecStreams(format) {
1920
+ return codecStreams.get(format);
1921
+ }
1922
+
1923
+ function setCodecStreams(format, streams) {
1924
+ const { CompressionStream, DecompressionStream } = streams;
1925
+ if (typeof CompressionStream != FUNCTION_TYPE && typeof DecompressionStream != FUNCTION_TYPE) {
1926
+ throw new Error(ERR_INVALID_CODEC_MODULE);
1927
+ }
1928
+ codecStreams.set(format, { CompressionStream, DecompressionStream });
1929
+ }
1930
+
1931
+ async function ensureCodecStreams(format, codecURI) {
1932
+ if (!codecStreams.has(format) && codecURI) {
1933
+ setCodecStreams(format, await import(/* webpackIgnore: true */ /* @vite-ignore */ codecURI));
1934
+ }
1935
+ }
1936
+
1936
1937
  /*
1937
1938
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
1938
1939
 
@@ -2486,8 +2487,8 @@ class ChunkStream extends TransformStream {
2486
2487
  1. Redistributions of source code must retain the above copyright notice,
2487
2488
  this list of conditions and the following disclaimer.
2488
2489
 
2489
- 2. Redistributions in binary form must reproduce the above copyright
2490
- notice, this list of conditions and the following disclaimer in
2490
+ 2. Redistributions in binary form must reproduce the above copyright
2491
+ notice, this list of conditions and the following disclaimer in
2491
2492
  the documentation and/or other materials provided with the distribution.
2492
2493
 
2493
2494
  3. The names of the authors may not be used to endorse or promote products
@@ -2506,20 +2507,15 @@ class ChunkStream extends TransformStream {
2506
2507
  */
2507
2508
 
2508
2509
 
2509
- const MODULE_WORKER_OPTIONS = { type: "module" };
2510
- const ERROR_EVENT_TYPE = "error";
2511
- const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
2512
2510
  const ERR_WORKER_STARTUP_TIMEOUT = "Worker startup timeout";
2513
2511
 
2514
- let webWorkerSupported, webWorkerSource, webWorkerURI, webWorkerOptions, createWorkerFailed;
2515
- let transferStreamsSupported = true;
2516
- try {
2517
- transferStreamsSupported = typeof structuredClone == FUNCTION_TYPE && structuredClone(new DOMException("", "AbortError")).code !== UNDEFINED_VALUE;
2518
- } catch {
2519
- // ignored
2520
- }
2512
+ let webWorkerSupported, createWorkerFailed, webWorkerBackend;
2521
2513
  let initModule = () => { };
2522
2514
 
2515
+ function setWebWorkerBackend(backend) {
2516
+ webWorkerBackend = backend;
2517
+ }
2518
+
2523
2519
  async function supportsDeflate(config) {
2524
2520
  const { CompressionStream: NativeStream, CompressionStreamFallback: FallbackStream } = config;
2525
2521
  if (FallbackStream && !FallbackStream.requiresModule) {
@@ -2544,6 +2540,14 @@ function resetWebWorkerSupport() {
2544
2540
  createWorkerFailed = false;
2545
2541
  }
2546
2542
 
2543
+ function disableWebWorker(workerData) {
2544
+ if (workerData.createWorker) {
2545
+ createWorkerFailed = true;
2546
+ } else {
2547
+ webWorkerSupported = false;
2548
+ }
2549
+ }
2550
+
2547
2551
  class CodecWorker {
2548
2552
 
2549
2553
  constructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, workerURI, createWorker }, onTaskFinished) {
@@ -2596,7 +2600,7 @@ class CodecWorker {
2596
2600
  // deno-lint-ignore valid-typeof
2597
2601
  webWorkerSupported = typeof Worker != UNDEFINED_TYPE;
2598
2602
  }
2599
- return (useWebWorkers && ((webWorkerSupported && workerURI) || createWorker) ? createWebWorkerInterface : createWorkerInterface)(workerData, config);
2603
+ return (useWebWorkers && webWorkerBackend && ((webWorkerSupported && workerURI) || createWorker) ? webWorkerBackend : createWorkerInterface)(workerData, config);
2600
2604
  }
2601
2605
  }
2602
2606
 
@@ -2640,58 +2644,6 @@ function createWorkerInterface(workerData, config) {
2640
2644
  };
2641
2645
  }
2642
2646
 
2643
- function createWebWorkerInterface(workerData, config) {
2644
- const { baseURI, chunkSize, workerStartupTimeout } = config;
2645
- let { wasmURI } = config;
2646
-
2647
- if (!workerData.interface) {
2648
- // deno-lint-ignore valid-typeof
2649
- if (typeof wasmURI == FUNCTION_TYPE) {
2650
- wasmURI = wasmURI();
2651
- }
2652
- let worker;
2653
- try {
2654
- worker = getWebWorker(workerData.workerURI, baseURI, workerData);
2655
- } catch {
2656
- if (workerData.createWorker) {
2657
- createWorkerFailed = true;
2658
- } else {
2659
- webWorkerSupported = false;
2660
- }
2661
- return createWorkerInterface(workerData, config);
2662
- }
2663
- Object.assign(workerData, {
2664
- worker,
2665
- workerAlive: false,
2666
- terminated: false,
2667
- interface: {
2668
- run: async () => {
2669
- try {
2670
- return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
2671
- } catch (error) {
2672
- if (error && error.workerStartupFailed) {
2673
- if (workerData.createWorker) {
2674
- createWorkerFailed = true;
2675
- } else {
2676
- webWorkerSupported = false;
2677
- }
2678
- const { reader } = workerData;
2679
- if (reader) {
2680
- reader.releaseLock();
2681
- }
2682
- workerData.reader = null;
2683
- workerData.writer = null;
2684
- return runWorker$1(workerData, config);
2685
- }
2686
- throw error;
2687
- }
2688
- }
2689
- }
2690
- });
2691
- }
2692
- return workerData.interface;
2693
- }
2694
-
2695
2647
  async function runWorker$1({ options, readable, writable, onTaskFinished }, config) {
2696
2648
  let codecStream;
2697
2649
  try {
@@ -2740,6 +2692,95 @@ async function runWorker$1({ options, readable, writable, onTaskFinished }, conf
2740
2692
  }
2741
2693
  }
2742
2694
 
2695
+ /*
2696
+ Copyright (c) 2025 Gildas Lormeau. All rights reserved.
2697
+
2698
+ Redistribution and use in source and binary forms, with or without
2699
+ modification, are permitted provided that the following conditions are met:
2700
+
2701
+ 1. Redistributions of source code must retain the above copyright notice,
2702
+ this list of conditions and the following disclaimer.
2703
+
2704
+ 2. Redistributions in binary form must reproduce the above copyright
2705
+ notice, this list of conditions and the following disclaimer in
2706
+ the documentation and/or other materials provided with the distribution.
2707
+
2708
+ 3. The names of the authors may not be used to endorse or promote products
2709
+ derived from this software without specific prior written permission.
2710
+
2711
+ THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
2712
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
2713
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
2714
+ INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
2715
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2716
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
2717
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
2718
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
2719
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
2720
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2721
+ */
2722
+
2723
+
2724
+ const MODULE_WORKER_OPTIONS = { type: "module" };
2725
+ const ERROR_EVENT_TYPE = "error";
2726
+ const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
2727
+
2728
+ let webWorkerSource, webWorkerURI, webWorkerOptions;
2729
+ let transferStreamsSupported = true;
2730
+ try {
2731
+ transferStreamsSupported = typeof structuredClone == FUNCTION_TYPE && structuredClone(new DOMException("", "AbortError")).code !== UNDEFINED_VALUE;
2732
+ } catch {
2733
+ // ignored
2734
+ }
2735
+
2736
+ setWebWorkerBackend(createWebWorkerInterface);
2737
+
2738
+ function createWebWorkerInterface(workerData, config) {
2739
+ const { baseURI, chunkSize, workerStartupTimeout } = config;
2740
+ let { wasmURI } = config;
2741
+
2742
+ if (!workerData.interface) {
2743
+ // deno-lint-ignore valid-typeof
2744
+ if (typeof wasmURI == FUNCTION_TYPE) {
2745
+ wasmURI = wasmURI();
2746
+ }
2747
+ let worker;
2748
+ try {
2749
+ worker = getWebWorker(workerData.workerURI, baseURI, workerData);
2750
+ } catch {
2751
+ disableWebWorker(workerData);
2752
+ return createWorkerInterface(workerData, config);
2753
+ }
2754
+ Object.assign(workerData, {
2755
+ worker,
2756
+ workerAlive: false,
2757
+ terminated: false,
2758
+ interface: {
2759
+ run: async () => {
2760
+ try {
2761
+ return await runWebWorker(workerData, { chunkSize, wasmURI, baseURI, workerStartupTimeout });
2762
+ } catch (error) {
2763
+ if (error && error.workerStartupFailed) {
2764
+ disableWebWorker(workerData);
2765
+ releaseWorkerStreams(workerData);
2766
+ return runWorker$1(workerData, config);
2767
+ }
2768
+ if (error && error.codecImportFailed) {
2769
+ if (workerData.reader) {
2770
+ releaseWorkerStreams(workerData);
2771
+ return runWorker$1(workerData, config);
2772
+ }
2773
+ workerData.onTaskFinished();
2774
+ }
2775
+ throw error;
2776
+ }
2777
+ }
2778
+ }
2779
+ });
2780
+ }
2781
+ return workerData.interface;
2782
+ }
2783
+
2743
2784
  async function runWebWorker(workerData, config) {
2744
2785
  let resolveResult, rejectResult;
2745
2786
  const result = new Promise((resolve, reject) => {
@@ -2819,6 +2860,15 @@ function watchClosedStream(writableSource) {
2819
2860
  return { writable, closed, abortPipe: () => abortController.abort() };
2820
2861
  }
2821
2862
 
2863
+ function releaseWorkerStreams(workerData) {
2864
+ const { reader } = workerData;
2865
+ if (reader) {
2866
+ reader.releaseLock();
2867
+ }
2868
+ workerData.reader = null;
2869
+ workerData.writer = null;
2870
+ }
2871
+
2822
2872
  function terminateWorker$1(workerData) {
2823
2873
  const { worker } = workerData;
2824
2874
  if (worker) {
@@ -2886,7 +2936,7 @@ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true)
2886
2936
  try {
2887
2937
  worker = new Worker(resolvedURI, resolvedOptions);
2888
2938
  } catch (error) {
2889
- if (!isModuleType) {
2939
+ if (isModuleType) {
2890
2940
  return getWebWorker(url, baseURI, workerData, false, useBlobURI);
2891
2941
  } else {
2892
2942
  throw error;
@@ -3004,12 +3054,15 @@ async function onMessage({ data }, workerData) {
3004
3054
  const stale = () => workerData.generation != generation;
3005
3055
  try {
3006
3056
  if (error) {
3007
- const { message, stack, code, name, outputSize, cause } = error;
3057
+ const { message, stack, code, name, outputSize, cause, codecImportFailed } = error;
3008
3058
  const responseError = new Error(message);
3009
3059
  Object.assign(responseError, { stack, code, name, outputSize });
3010
3060
  if (cause) {
3011
3061
  responseError.cause = Object.assign(new Error(cause.message), { name: cause.name });
3012
3062
  }
3063
+ if (codecImportFailed) {
3064
+ responseError.codecImportFailed = true;
3065
+ }
3013
3066
  close(responseError);
3014
3067
  } else {
3015
3068
  if (type == MESSAGE_PULL) {
@@ -3048,7 +3101,9 @@ async function onMessage({ data }, workerData) {
3048
3101
  if (writer) {
3049
3102
  writer.releaseLock();
3050
3103
  }
3051
- onTaskFinished();
3104
+ if (!(error && error.codecImportFailed)) {
3105
+ onTaskFinished();
3106
+ }
3052
3107
  }
3053
3108
  }
3054
3109
 
@@ -3098,7 +3153,7 @@ async function runWorker(stream, workerOptions) {
3098
3153
  }
3099
3154
  await ensureCodecStreams(format, options.codecURI);
3100
3155
  }
3101
- workerOptions.transferStreams = transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams);
3156
+ workerOptions.transferStreams = !format && (transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams));
3102
3157
  const streamCopy = !compressed && !checkCrc32 && !computeCrc32 && !encrypted;
3103
3158
  const workerSupported = format === UNDEFINED_VALUE || Boolean(options.codecURI);
3104
3159
  workerOptions.useWebWorkers = !streamCopy && workerSupported && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));
@@ -3602,7 +3657,7 @@ async function initHttpReader(httpReader, sendRequest, getRequestData) {
3602
3657
  forceRangeRequests,
3603
3658
  combineSizeEocd
3604
3659
  } = httpReader;
3605
- if (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest == "undefined" || preventHeadRequest)) {
3660
+ if (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest == UNDEFINED_TYPE || preventHeadRequest)) {
3606
3661
  const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, combineSizeEocd ? -END_OF_CENTRAL_DIR_LENGTH : undefined));
3607
3662
  const acceptRanges = response.headers.get(HTTP_HEADER_ACCEPT_RANGES);
3608
3663
  if (!forceRangeRequests && (!acceptRanges || acceptRanges.toLowerCase() != HTTP_RANGE_UNIT)) {
@@ -4455,9 +4510,13 @@ const OPTION_USDZ = "usdz";
4455
4510
  const OPTION_UNIX_EXTRA_FIELD_TYPE = "unixExtraFieldType";
4456
4511
  const OPTION_LOCAL_EXTRA_FIELD = "localExtraField";
4457
4512
  const OPTION_STRICTNESS = "strictness";
4513
+ const OPTION_FILENAME_VALIDATION = "filenameValidation";
4514
+ const OPTION_NORMALIZE_FILENAME = "normalizeFilename";
4458
4515
  const OPTION_MAX_APPENDED_DATA_SIZE = "maxAppendedDataSize";
4459
4516
  const OPTION_DECRYPT_CENTRAL_DIRECTORY = "decryptCentralDirectory";
4460
4517
  const OPTION_SIGN_CENTRAL_DIRECTORY = "signCentralDirectory";
4518
+ const TEXT_TYPE_FILENAME = "filename";
4519
+ const TEXT_TYPE_COMMENT = "comment";
4461
4520
  const STRICTNESS_STRICT = "strict";
4462
4521
  const STRICTNESS_BALANCED = "balanced";
4463
4522
  const STRICTNESS_TOLERANT = "tolerant";
@@ -4504,6 +4563,11 @@ const ERR_SPLIT_ZIP_FILE = "Split zip file";
4504
4563
  const ERR_OVERLAPPING_ENTRY = "Overlapping entry found";
4505
4564
  const ERR_AMBIGUOUS_ARCHIVE = "Ambiguous archive";
4506
4565
  const ERR_ENCRYPTED_CENTRAL_DIRECTORY = "Encrypted central directory is not supported";
4566
+ const ERR_UNSAFE_FILENAME = "Unsafe filename";
4567
+ const ERR_INVALID_STRICTNESS = "Invalid strictness (must be 'strict', 'balanced' or 'tolerant')";
4568
+ const ERR_INVALID_FILENAME_VALIDATION = "Invalid filenameValidation (must be 'strict', 'balanced' or 'tolerant')";
4569
+ const ERR_INVALID_MAX_APPENDED_DATA_SIZE = "Invalid maxAppendedDataSize (must be a number greater than or equal to 0)";
4570
+ const DRIVE_LETTER_REGEXP = /^[a-zA-Z]:/;
4507
4571
  const CHARSET_UTF8 = "utf-8";
4508
4572
  const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
4509
4573
  const CHARSET_CP437 = "cp437";
@@ -4525,6 +4589,10 @@ const ZIP64_EXTRACTION = {
4525
4589
  bytes: 8
4526
4590
  }
4527
4591
  };
4592
+ const MAX_END_OF_CENTRAL_DIR_PROBES = 64;
4593
+ const CENTRAL_DIRECTORY_UNREACHABLE = 0;
4594
+ const CENTRAL_DIRECTORY_PLAUSIBLE = 1;
4595
+ const CENTRAL_DIRECTORY_REACHABLE = 2;
4528
4596
 
4529
4597
  class ZipReader {
4530
4598
 
@@ -4553,6 +4621,8 @@ class ZipReader {
4553
4621
  const checkAmbiguity = strictness == STRICTNESS_STRICT;
4554
4622
  const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
4555
4623
  const maxAppendedDataSize = getMaxAppendedDataSize(getOptionValue$1(zipReader, options, OPTION_MAX_APPENDED_DATA_SIZE), strictness);
4624
+ const filenameValidation = getFilenameValidation(getOptionValue$1(zipReader, options, OPTION_FILENAME_VALIDATION), strictness);
4625
+ const normalizeFilename = getOptionValue$1(zipReader, options, OPTION_NORMALIZE_FILENAME);
4556
4626
  const { endOfDirectoryInfo, endOfDirectoryReachingEndCount } = await findEndOfCentralDirectory(reader, rejectAmbiguousEndOfDirectory, maxAppendedDataSize);
4557
4627
  if (!endOfDirectoryInfo) {
4558
4628
  const signatureArray = await readUint8Array(reader, 0, 4);
@@ -4746,11 +4816,22 @@ class ZipReader {
4746
4816
  const decode = getOptionValue$1(zipReader, options, OPTION_DECODE_TEXT) || decodeText;
4747
4817
  const rawFilenameEncoding = filenameUTF8 ? CHARSET_UTF8 : filenameEncoding || CHARSET_CP437;
4748
4818
  const rawCommentEncoding = commentUTF8 ? CHARSET_UTF8 : commentEncoding || CHARSET_CP437;
4749
- let filename = decode(rawFilename, rawFilenameEncoding);
4819
+ let filename = decode(rawFilename, rawFilenameEncoding, TEXT_TYPE_FILENAME);
4750
4820
  if (filename === UNDEFINED_VALUE) {
4751
4821
  filename = decodeText(rawFilename, rawFilenameEncoding);
4752
4822
  }
4753
- let comment = decode(rawComment, rawCommentEncoding);
4823
+ if (normalizeFilename) {
4824
+ const normalizedFilename = normalizeFilename(filename);
4825
+ if (normalizedFilename !== UNDEFINED_VALUE) {
4826
+ filename = normalizedFilename;
4827
+ }
4828
+ }
4829
+ if (isUnsafeFilename(filename, filenameValidation)) {
4830
+ const error = new Error(ERR_UNSAFE_FILENAME);
4831
+ error.filename = filename;
4832
+ throw error;
4833
+ }
4834
+ let comment = decode(rawComment, rawCommentEncoding, TEXT_TYPE_COMMENT);
4754
4835
  if (comment === UNDEFINED_VALUE) {
4755
4836
  comment = decodeText(rawComment, rawCommentEncoding);
4756
4837
  }
@@ -4811,10 +4892,10 @@ class ZipReader {
4811
4892
  entry.getData = (writer, options) => fileEntry.getData(writer, entry, zipReader.readRanges, options);
4812
4893
  entry.arrayBuffer = async options => {
4813
4894
  const writer = new TransformStream();
4814
- const [arrayBuffer] = await Promise.all([
4815
- streamToBlob(writer.readable).then(blob => blob.arrayBuffer()),
4816
- fileEntry.getData(writer, entry, zipReader.readRanges, options)]);
4817
- return arrayBuffer;
4895
+ const arrayBufferPromise = streamToBlob(writer.readable).then(blob => blob.arrayBuffer());
4896
+ arrayBufferPromise.catch(() => { });
4897
+ await fileEntry.getData(writer, entry, zipReader.readRanges, options);
4898
+ return arrayBufferPromise;
4818
4899
  };
4819
4900
  offset = endOffset;
4820
4901
  const { onprogress } = options;
@@ -5065,7 +5146,7 @@ let ZipEntry$1 = class ZipEntry {
5065
5146
  readRanges
5066
5147
  });
5067
5148
  }
5068
- let writable;
5149
+ let writable, abortError;
5069
5150
  try {
5070
5151
  if (!checkOverlappingEntryOnly) {
5071
5152
  if (checkPasswordOnly) {
@@ -5085,12 +5166,22 @@ let ZipEntry$1 = class ZipEntry {
5085
5166
  writer.size += error.outputSize;
5086
5167
  }
5087
5168
  if (!checkPasswordOnly || error.message != ERR_ABORT_CHECK_PASSWORD) {
5169
+ abortError = error;
5088
5170
  throw error;
5089
5171
  }
5090
5172
  } finally {
5091
5173
  const preventClose = getOptionValue$1(zipEntry, options, OPTION_PREVENT_CLOSE);
5092
5174
  if (!preventClose && writable && !writable.locked) {
5093
- await writable.getWriter().close();
5175
+ const writableWriter = writable.getWriter();
5176
+ if (abortError) {
5177
+ try {
5178
+ await writableWriter.abort(abortError);
5179
+ } catch {
5180
+ // the error being propagated is more relevant; ignored
5181
+ }
5182
+ } else {
5183
+ await writableWriter.close();
5184
+ }
5094
5185
  }
5095
5186
  }
5096
5187
  return checkPasswordOnly || checkOverlappingEntryOnly ? UNDEFINED_VALUE : writer.getData ? writer.getData() : writable;
@@ -5470,16 +5561,51 @@ function getDiskOffset$1(reader, diskNumber) {
5470
5561
  return reader.getDiskOffset ? reader.getDiskOffset(diskNumber) : 0;
5471
5562
  }
5472
5563
 
5564
+ function isStrictnessValue(value) {
5565
+ return value === STRICTNESS_STRICT || value === STRICTNESS_BALANCED || value === STRICTNESS_TOLERANT;
5566
+ }
5567
+
5473
5568
  function getStrictness(strictness, checkAmbiguity) {
5474
5569
  if (strictness === UNDEFINED_VALUE) {
5475
5570
  return checkAmbiguity ? STRICTNESS_STRICT : STRICTNESS_BALANCED;
5476
5571
  }
5572
+ if (!isStrictnessValue(strictness)) {
5573
+ throw new Error(ERR_INVALID_STRICTNESS);
5574
+ }
5477
5575
  return strictness;
5478
5576
  }
5479
5577
 
5578
+ function getFilenameValidation(filenameValidation, strictness) {
5579
+ if (filenameValidation === UNDEFINED_VALUE) {
5580
+ return strictness;
5581
+ }
5582
+ if (!isStrictnessValue(filenameValidation)) {
5583
+ throw new Error(ERR_INVALID_FILENAME_VALIDATION);
5584
+ }
5585
+ return filenameValidation;
5586
+ }
5587
+
5588
+ function isUnsafeFilename(filename, filenameValidation) {
5589
+ if (filenameValidation == STRICTNESS_TOLERANT) {
5590
+ return false;
5591
+ }
5592
+ const pathParts = filename.split("/");
5593
+ if (pathParts.length > 1 && pathParts[pathParts.length - 1] === "") {
5594
+ pathParts.pop();
5595
+ }
5596
+ if (pathParts.includes("..") || filename.startsWith("/") || filename.startsWith("\\\\") || DRIVE_LETTER_REGEXP.test(filename)) {
5597
+ return true;
5598
+ }
5599
+ return filenameValidation == STRICTNESS_STRICT && (pathParts.includes(".") || pathParts.includes(""));
5600
+ }
5601
+
5480
5602
  function getMaxAppendedDataSize(maxAppendedDataSize, strictness) {
5481
5603
  if (maxAppendedDataSize !== UNDEFINED_VALUE) {
5482
- return maxAppendedDataSize;
5604
+ const size = toNumber$1(maxAppendedDataSize);
5605
+ if (typeof size != NUMBER_TYPE || Number.isNaN(size) || size < 0) {
5606
+ throw new Error(ERR_INVALID_MAX_APPENDED_DATA_SIZE);
5607
+ }
5608
+ return size;
5483
5609
  }
5484
5610
  if (strictness == STRICTNESS_STRICT) {
5485
5611
  return 0;
@@ -5490,12 +5616,6 @@ function getMaxAppendedDataSize(maxAppendedDataSize, strictness) {
5490
5616
  return MAX_16_BITS;
5491
5617
  }
5492
5618
 
5493
- const MAX_END_OF_CENTRAL_DIR_PROBES = 64;
5494
-
5495
- const CENTRAL_DIRECTORY_UNREACHABLE = 0;
5496
- const CENTRAL_DIRECTORY_PLAUSIBLE = 1;
5497
- const CENTRAL_DIRECTORY_REACHABLE = 2;
5498
-
5499
5619
  async function findEndOfCentralDirectory(reader, rejectAmbiguous, maxAppendedDataSize) {
5500
5620
  const { size } = reader;
5501
5621
  const anchoredLength = Math.min(size, END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS);
@@ -5631,6 +5751,10 @@ function getOptionValue$1(zipReader, options, name) {
5631
5751
  return options[name] === UNDEFINED_VALUE ? zipReader.options[name] : options[name];
5632
5752
  }
5633
5753
 
5754
+ function toNumber$1(value) {
5755
+ return typeof value == STRING_TYPE && value.trim() ? Number(value) : value;
5756
+ }
5757
+
5634
5758
  function getDate(timeRaw) {
5635
5759
  const date = (timeRaw & 0xffff0000) >> 16, time = timeRaw & MAX_16_BITS;
5636
5760
  return new Date(1980 + ((date & 0xFE00) >> 9), ((date & 0x01E0) >> 5) - 1, date & 0x001F, (time & 0xF800) >> 11, (time & 0x07E0) >> 5, (time & 0x001F) * 2, 0);
@@ -5669,12 +5793,16 @@ var zipReader = /*#__PURE__*/Object.freeze({
5669
5793
  ERR_INVALID_AUTHENTICATION_CODE: ERR_INVALID_AUTHENTICATION_CODE,
5670
5794
  ERR_INVALID_COMPRESSED_DATA: ERR_INVALID_COMPRESSED_DATA,
5671
5795
  ERR_INVALID_CRC32: ERR_INVALID_CRC32,
5796
+ ERR_INVALID_FILENAME_VALIDATION: ERR_INVALID_FILENAME_VALIDATION,
5797
+ ERR_INVALID_MAX_APPENDED_DATA_SIZE: ERR_INVALID_MAX_APPENDED_DATA_SIZE,
5672
5798
  ERR_INVALID_PASSWORD: ERR_INVALID_PASSWORD,
5673
5799
  ERR_INVALID_SIGNATURE: ERR_INVALID_SIGNATURE,
5800
+ ERR_INVALID_STRICTNESS: ERR_INVALID_STRICTNESS,
5674
5801
  ERR_INVALID_UNCOMPRESSED_SIZE: ERR_INVALID_UNCOMPRESSED_SIZE,
5675
5802
  ERR_LOCAL_FILE_HEADER_NOT_FOUND: ERR_LOCAL_FILE_HEADER_NOT_FOUND,
5676
5803
  ERR_OVERLAPPING_ENTRY: ERR_OVERLAPPING_ENTRY,
5677
5804
  ERR_SPLIT_ZIP_FILE: ERR_SPLIT_ZIP_FILE,
5805
+ ERR_UNSAFE_FILENAME: ERR_UNSAFE_FILENAME,
5678
5806
  ERR_UNSUPPORTED_COMPRESSION: ERR_UNSUPPORTED_COMPRESSION$1,
5679
5807
  ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
5680
5808
  ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
@@ -5736,6 +5864,8 @@ const ERR_INVALID_UNIX_EXTRA_FIELD_TYPE = "Invalid unixExtraFieldType (must be '
5736
5864
  const ERR_INVALID_UNIX_ID_SIZE = "uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)";
5737
5865
  const ERR_INVALID_MSDOS_ATTRIBUTES = "Invalid msdosAttributesRaw (must be integer 0..255)";
5738
5866
  const ERR_INVALID_MSDOS_DATA = "Invalid msdosAttributes (must be an object with boolean flags)";
5867
+ const ERR_INVALID_LEVEL = "Invalid level (must be integer 0..9)";
5868
+ const ERR_INVALID_PASSWORD_TYPE = "Invalid password (password must be a string, rawPassword must be a Uint8Array)";
5739
5869
  const ERR_INVALID_SIGNATURE_DATA = "Signature data exceeds 64KB";
5740
5870
 
5741
5871
  const EXTRAFIELD_DATA_AES = new Uint8Array([0x07, 0x00, 0x02, 0x00, 0x41, 0x45, 0x03, 0x00, 0x00]);
@@ -5743,6 +5873,7 @@ const EXTRAFIELD_OFFSET_AES_VENDOR_VERSION = 4;
5743
5873
  const VENDOR_VERSION_AE_1 = 1;
5744
5874
  const INFOZIP_EXTRA_FIELD_TYPE$1 = "infozip";
5745
5875
  const UNIX_EXTRA_FIELD_TYPE = "unix";
5876
+ const MAX_LEVEL = 9;
5746
5877
 
5747
5878
  let workers = 0;
5748
5879
  const pendingEntries = [];
@@ -5905,7 +6036,8 @@ class ZipWriter {
5905
6036
 
5906
6037
  remove(entry) {
5907
6038
  const { filenames, files } = this;
5908
- if (typeof entry == "string") {
6039
+ // deno-lint-ignore valid-typeof
6040
+ if (typeof entry == STRING_TYPE) {
5909
6041
  entry = files.get(entry);
5910
6042
  }
5911
6043
  if (entry && entry.filename !== UNDEFINED_VALUE) {
@@ -6043,20 +6175,20 @@ function resolveAttributes(zipWriter, name, options) {
6043
6175
  let msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
6044
6176
  let versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
6045
6177
  const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
6046
- const uid = getOptionValue(zipWriter, options, PROPERTY_NAME_UID);
6047
- const gid = getOptionValue(zipWriter, options, PROPERTY_NAME_GID);
6048
- let unixMode = getOptionValue(zipWriter, options, PROPERTY_NAME_UNIX_MODE);
6178
+ const uid = getNumberOptionValue(zipWriter, options, PROPERTY_NAME_UID);
6179
+ const gid = getNumberOptionValue(zipWriter, options, PROPERTY_NAME_GID);
6180
+ let unixMode = getNumberOptionValue(zipWriter, options, PROPERTY_NAME_UNIX_MODE);
6049
6181
  let unixExtraFieldType = getOptionValue(zipWriter, options, OPTION_UNIX_EXTRA_FIELD_TYPE);
6050
6182
  let setuid = getOptionValue(zipWriter, options, PROPERTY_NAME_SETUID);
6051
6183
  let setgid = getOptionValue(zipWriter, options, PROPERTY_NAME_SETGID);
6052
6184
  let sticky = getOptionValue(zipWriter, options, PROPERTY_NAME_STICKY);
6053
- if (uid !== UNDEFINED_VALUE && (uid < 0 || uid > MAX_32_BITS)) {
6185
+ if (uid !== UNDEFINED_VALUE && (!Number.isInteger(uid) || uid < 0 || uid > MAX_32_BITS)) {
6054
6186
  throw new Error(ERR_INVALID_UID);
6055
6187
  }
6056
- if (gid !== UNDEFINED_VALUE && (gid < 0 || gid > MAX_32_BITS)) {
6188
+ if (gid !== UNDEFINED_VALUE && (!Number.isInteger(gid) || gid < 0 || gid > MAX_32_BITS)) {
6057
6189
  throw new Error(ERR_INVALID_GID);
6058
6190
  }
6059
- if (unixMode !== UNDEFINED_VALUE && (unixMode < 0 || unixMode > MAX_16_BITS)) {
6191
+ if (unixMode !== UNDEFINED_VALUE && (!Number.isInteger(unixMode) || unixMode < 0 || unixMode > MAX_16_BITS)) {
6060
6192
  throw new Error(ERR_INVALID_UNIX_MODE);
6061
6193
  }
6062
6194
  if (unixExtraFieldType !== UNDEFINED_VALUE && unixExtraFieldType !== INFOZIP_EXTRA_FIELD_TYPE$1 && unixExtraFieldType !== UNIX_EXTRA_FIELD_TYPE) {
@@ -6168,7 +6300,7 @@ function resolveAttributes(zipWriter, name, options) {
6168
6300
 
6169
6301
  function resolveMetadata(zipWriter, name, options) {
6170
6302
  const encode = getOptionValue(zipWriter, options, OPTION_ENCODE_TEXT, encodeText);
6171
- let rawFilename = encode(name);
6303
+ let rawFilename = encode(name, TEXT_TYPE_FILENAME);
6172
6304
  if (rawFilename === UNDEFINED_VALUE) {
6173
6305
  rawFilename = encodeText(name);
6174
6306
  }
@@ -6176,7 +6308,7 @@ function resolveMetadata(zipWriter, name, options) {
6176
6308
  throw new Error(ERR_INVALID_ENTRY_NAME);
6177
6309
  }
6178
6310
  const comment = options[PROPERTY_NAME_COMMENT] || "";
6179
- let rawComment = encode(comment);
6311
+ let rawComment = encode(comment, TEXT_TYPE_COMMENT);
6180
6312
  if (rawComment === UNDEFINED_VALUE) {
6181
6313
  rawComment = encodeText(comment);
6182
6314
  }
@@ -6196,8 +6328,11 @@ function resolveMetadata(zipWriter, name, options) {
6196
6328
  if (!passThrough) {
6197
6329
  password = getOptionValue(zipWriter, options, OPTION_PASSWORD);
6198
6330
  rawPassword = getOptionValue(zipWriter, options, OPTION_RAW_PASSWORD);
6331
+ if ((password && typeof password != STRING_TYPE) || (rawPassword && !(rawPassword instanceof Uint8Array))) {
6332
+ throw new Error(ERR_INVALID_PASSWORD_TYPE);
6333
+ }
6199
6334
  }
6200
- const encryptionStrength = getOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
6335
+ const encryptionStrength = getNumberOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
6201
6336
  const zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);
6202
6337
  const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
6203
6338
  const ntfsTimestamp = getOptionValue(zipWriter, options, OPTION_NTFS_TIMESTAMP);
@@ -6215,7 +6350,10 @@ function resolveMetadata(zipWriter, name, options) {
6215
6350
  compressionMethod !== COMPRESSION_METHOD_STORE && compressionMethod !== COMPRESSION_METHOD_DEFLATE && !registeredCodec) {
6216
6351
  throw new Error(ERR_UNSUPPORTED_COMPRESSION);
6217
6352
  }
6218
- let level = getOptionValue(zipWriter, options, OPTION_LEVEL);
6353
+ let level = getNumberOptionValue(zipWriter, options, OPTION_LEVEL);
6354
+ if (level !== UNDEFINED_VALUE && (!Number.isInteger(level) || level < 0 || level > MAX_LEVEL)) {
6355
+ throw new Error(ERR_INVALID_LEVEL);
6356
+ }
6219
6357
  if (zipWriter.options[OPTION_USDZ]) {
6220
6358
  if (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) {
6221
6359
  throw new Error(ERR_UNSUPPORTED_ENCRYPTION_USDZ);
@@ -6236,7 +6374,7 @@ function resolveMetadata(zipWriter, name, options) {
6236
6374
  useCompressionStream = false;
6237
6375
  }
6238
6376
  const zip64 = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIP64);
6239
- if (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(encryptionStrength >= 1 && encryptionStrength <= 3)) {
6377
+ if (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(Number.isInteger(encryptionStrength) && encryptionStrength >= 1 && encryptionStrength <= 3)) {
6240
6378
  throw new Error(ERR_INVALID_ENCRYPTION_STRENGTH);
6241
6379
  }
6242
6380
  const rawExtraField = serializeExtraField(options[PROPERTY_NAME_EXTRA_FIELD]);
@@ -7430,6 +7568,14 @@ function getOptionValue(zipWriter, options, name, defaultValue) {
7430
7568
  return result === UNDEFINED_VALUE ? defaultValue : result;
7431
7569
  }
7432
7570
 
7571
+ function getNumberOptionValue(zipWriter, options, name, defaultValue) {
7572
+ return toNumber(getOptionValue(zipWriter, options, name, defaultValue));
7573
+ }
7574
+
7575
+ function toNumber(value) {
7576
+ return typeof value == STRING_TYPE && value.trim() ? Number(value) : value;
7577
+ }
7578
+
7433
7579
  function getMaximumCompressedSize(uncompressedSize) {
7434
7580
  return uncompressedSize + (5 * (Math.floor(uncompressedSize / 16383) + 1));
7435
7581
  }
@@ -8013,7 +8159,7 @@ try {
8013
8159
  // ignored
8014
8160
  }
8015
8161
 
8016
- var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:z,Error:L,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),_=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(_,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,_:0,l:void 0}}function Je(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,v:t,k:0,m:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.M=e,this.C=t,this.Z=0;}},re=class{constructor(e,t,n,r,i){this.W=e,this.q=t,this.S=n,this.L=r,this.$=i;}};function D_(e){return Q_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function $e(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.D[e.A++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.I+e.H;return e.D[f]=255&i,e.D[f+1]=i>>>8&255,e.D[f+2]=r,e.H+=3,i=i-1&65535,e.N[__[r]+ie+1].j++,e.U[y_(i)].j++,e.H==e.R}function De(e,t){let n=255&t,r=e.I+e.H;return e.D[r]=0,e.D[r+1]=0,e.D[r+2]=n,e.H+=3,e.N[n].j++,e.H==e.R}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=z.floor((t+v-1)/v),f=1<<8+Ce;return {...Je(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,O:n,V:r,X:i,J:new g(32768),K:new g(n),ee:f,D:new p(32768),te:0,ne:32768,A:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,he:0,de:0,we:0,be:0,ve:0,ke:0,ge:0,me:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),ze:new g(be+1),H:0,R:0,Me:Z,I:0,Ce:0,Ze:0,We:8,qe:32768,Se:0,Le:0,$e:0,N:new k(fe).fill(0).map(()=>Q()),U:new k(2*me+1).fill(0).map(()=>Q()),De:new k(2*oe+1).fill(0).map(()=>Q()),Ae:w_(),Ie:w_(),He:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Qe=r,f.je=i,t.push(f);}return t}function Q(){return {j:0,Qe:0,Ne:0,je:0}}function w_(){return new ne([],dn(null,Z,0,0,0))}function dn(e,t,n,r,i){return new re(e,t,n,r,i)}function $_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=mn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,_=t[f]||0;r[i++]=e?$e(_,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,_=e[r];if(n>=_&&n<=_+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,_=e[n];if(i>=_&&i<=_+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function mn(e){let t=z.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,v=3,ee=258,ae=ee+v+1,nt=4096,Ue=16,He=ee,bn=29,ie=256,Te=ie+1+bn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,$=-1,Q_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var hn=k_($_()),sn=k_(new k(30).fill(5)),Fe=I_(hn),R_=I_(sn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function he(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,xn,pn,Sn,En,gn,Tn,wn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=z.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=wn[255&t]^Tn[t>>>8&255]^gn[t>>>16&255]^En[t>>>24&255]^Sn[255&n]^pn[n>>>8&255]^xn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.Ce=1+(e.T-1&7),e.p=0,e.T=0;}function An(e,t,n){let r,i,f=[],_=0;for(r=1;r<=be;r++)_=_+n[r-1]<<1,f[r]=_;for(i=0;i<=t;i++){let t=e[i].je;0!=t&&(e[i].Qe=$e(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.N.length;t++)e.N[t].j=0;for(let t=0;t<e.U.length;t++)e.U[t].j=0;for(let t=0;t<e.De.length;t++)e.De[t].j=0;e.N[ve].j=1,e.ie=e.fe=0,e.H=e._e=0;}function Et(e){if(e.N&&e.N.length>=fe)for(let t=0;t<fe;t++)e.N[t]=Q();else {e.N=[];for(let t=0;t<fe;t++)e.N.push(Q());}if(e.U&&e.U.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<2*me+1;t++)e.U.push(Q());}if(e.De&&e.De.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.De[t]=Q();else {e.De=[];for(let t=0;t<2*oe+1;t++)e.De.push(Q());}e.Ae=new ne(e.N,new re(Fe,a_,ie+1,Te,be)),e.Ie=new ne(e.U,new re(R_,i_,0,me,be)),e.He=new ne(e.De,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.Ce=0,St(e);}var se=1;function Dn(e,t,n){return n=e.Te[se],e.Te[se]=e.Te[e.Le--],z_(e,t,se),n}function mt(e,t,n,r){return e[t].j<e[n].j||e[t].j==e[n].j&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Le&&(i<e.Le&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function yn(e,t){let n,r,i,f,_,l,o=t.M,u=t.Z,a=t.C.W,c=t.C.q,s=t.C.S,h=t.C.$,d=0;for(f=0;f<=be;f++)e.ze[f]=0;for(o[e.Te[e.$e]].je=0,n=e.$e+1;n<fe;n++)r=e.Te[n],f=o[o[r].Ne].je+1,f>h&&(f=h,d++),o[r].je=f,!(r>u)&&(e.ze[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].j,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].je+_)));if(0!=d){do{for(f=h-1;0==e.ze[f];)f--;e.ze[f]--,e.ze[f+1]+=2,e.ze[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.ze[f];0!=r;)i=e.Te[--n],!(i>u)&&(o[i].je!=f&&(e.ie+=(f-o[i].je)*o[i].j,o[i].je=f),r--);}}function L_(e,t){let n,r,i,f=t.M,_=t.C.W,l=t.C.L,o=-1;for(e.Le=0,e.$e=fe,n=0;n<l;n++)0!=f[n].j?(e.Te[++e.Le]=o=n,e.ye[n]=0):f[n].je=0;for(;e.Le<2;)i=e.Te[++e.Le]=o<2?++o:0,f[i].j=1,e.ye[i]=0,e.ie--,_&&(e.fe-=_[i].je);for(t.Z=o,n=z.floor(e.Le/2);n>=1;n--)z_(e,f,n);i=l;do{n=Dn(e,f,n),r=e.Te[se],e.Te[--e.$e]=n,e.Te[--e.$e]=r,f[i].j=f[n].j+f[r].j,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].Ne=f[r].Ne=i,e.Te[se]=i++,z_(e,f,se);}while(e.Le>=2);e.Te[--e.$e]=e.Te[se],yn(e,t),An(f,t.Z,e.ze);}function bt(e,t,n){let r,i,f=-1,_=t[0].je,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].je=65535,r=0;r<=n;r++)i=_,_=t[r+1].je,!(++l<o&&i==_)&&(l<u?e.De[i].j+=l:0!=i?(i!=f&&e.De[i].j++,e.De[t_].j++):l<=10?e.De[n_].j++:e.De[r_].j++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function ht(e,t,n){let r,i=-1,f=t[0].je,_=0,l=7,o=4;0==f&&(l=138,o=3);for(let u=0;u<=n;u++)if(r=f,f=t[u+1].je,!(++_<l&&r==f)){if(_<o)do{C(e,e.De[r].Qe,e.De[r].je);}while(0!=--_);else 0!=r?(r!=i&&(C(e,e.De[r].Qe,e.De[r].je),_--),C(e,e.De[t_].Qe,e.De[t_].je),C(e,_-3,2)):_<=10?(C(e,e.De[n_].Qe,e.De[n_].je),C(e,_-3,3)):(C(e,e.De[r_].Qe,e.De[r_].je),C(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function vn(e){let t;for(bt(e,e.N,e.Ae.Z),bt(e,e.U,e.Ie.Z),L_(e,e.He),t=oe-1;t>=3&&0==e.De[pe[t]].je;t--);return e.ie+=3*(t+1)+5+5+4,t}function In(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.De[pe[i]].je,3);ht(e,e.N,t-1),ht(e,e.U,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.D,e.A,t,i,n),e.A+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Qe,Fe[ve].je),xt(e);}function st(e,t,n){let r,i,f,_,l=0;if(0!=e.H)do{r=255&e.Me[l],r+=(255&e.Me[l+1])<<8,i=e.Me[l+2],l+=3,0==r?C(e,t[i].Qe,t[i].je):(f=__[i],C(e,t[f+ie+1].Qe,t[f+ie+1].je),_=a_[f],0!=_&&(i-=ge[f],C(e,i,_)),r--,f=y_(r),C(e,n[f].Qe,n[f].je),_=i_[f],0!=_&&(r-=Ee[f],C(e,r,_)));}while(l<e.H);C(e,t[ve].Qe,t[ve].je);}function kn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.N[t].j)return 0;if(0!=e.N[9].j||0!=e.N[10].j||0!=e.N[13].j)return 1;for(t=32;t<ie;t++)if(0!=e.N[t].j)return 1;return 0}function wt(e,t,n,r,i=0){let f,_,l=0;e.ve>0?(2==e.o.t&&(e.o.t=kn(e)),L_(e,e.Ae),L_(e,e.Ie),l=vn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ke)&&(f=_)):f=_=n+5,n+4<=f&&t?Pe(e,t,n,r,i):_==f?(C(e,(N_<<1)+r,3),st(e,Fe,R_)):(C(e,(lt<<1)+r,3),In(e,e.Ae.Z+1,e.Ie.Z+1,l+1),st(e,e.N,e.U)),St(e),r&&pt(e);}function vt(){let e=je();return e.l=v_(e),e}var Ye=[{Ue:Lt,Re:0,Ye:0,Ee:0,Pe:0},{Ue:U_,Re:4,Ye:4,Ee:8,Pe:4},{Ue:U_,Re:4,Ye:5,Ee:16,Pe:8},{Ue:U_,Re:4,Ye:6,Ee:32,Pe:32},{Ue:Ne,Re:4,Ye:4,Ee:16,Pe:16},{Ue:Ne,Re:8,Ye:16,Ee:32,Pe:32},{Ue:Ne,Re:8,Ye:16,Ee:128,Pe:128},{Ue:Ne,Re:8,Ye:32,Ee:128,Pe:256},{Ue:Ne,Re:32,Ye:128,Ee:258,Pe:1024},{Ue:Ne,Re:32,Ye:258,Ee:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.V)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(v-1)]);let n=e.J[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.O-1]=0,Ve(e.K,0,(e.O-1)*e.K.BYTES_PER_ELEMENT);}function Un(e){let t,n,r=e.h;for(t=e.O;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.J[t],e.J[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e.l.P?e.i=he(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e.l.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.qe-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.Se-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Un(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=v){let t=e.ae-e.le;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e.le&&(e.be=l_(e,e.be,e.u[t+v-1]),e.J[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e.le--,!(e.ce+e.le<v)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.k<e.qe){let t,n=e.ae+e.ce;e.k<n?(t=e.qe-n,t>He&&(t=He),Ve(e.u,n,t),e.k=n+t):e.k<n+He&&(t=n+He-e.k,t>e.qe-e.k&&(t=e.qe-e.k),Ve(e.u,e.k,t),e.k+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let _=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(_=0,r<-15)return -2;r=-r;}else r>15&&(_=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=_)return -2;8==r&&(r=9);let l=v_(e);return l?(e.l=l,l.o=e,l.Y=42,l.P=_,l.B=void 0,l.v=r,l.h=1<<l.v,l.F=l.h-1,l.G=i+7,l.O=1<<l.G,l.V=l.O-1,l.X=(l.G+v-1)/v,l.u=new p(2*l.h),l.J=new g(l.h),l.K=new g(l.O),l.k=0,l.ee=1<<i+6,l.D=new p(l.ee*ot),l.ne=4*l.ee,l.u&&l.J&&l.K&&l.D?(l.Me=l.D.subarray(l.ee),l.I=l.te+l.ee,l.R=3*(l.ee-1),l.ve=t,l.ke=f,l.We=n,Fn(e)):(l.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Hn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.A=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):he(0),t.oe=-2,Et(t),0)}function Bn(e){e.qe=2*e.h,It(e),e.xe=Ye[e.ve].Ye,e.ge=Ye[e.ve].Re,e.me=Ye[e.ve].Ee,e.pe=Ye[e.ve].Pe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.he=v-1,e.we=0,e.be=0;}function Fn(e){let t=Hn(e);return 0==t&&Bn(e.l),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e.l;gt(n),t=n.A,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.D,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.A-=t,0==n.A&&(n.re=n.te));}function Ie(e,t){let n=e.l;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.D.buffer,n.te+t,n.A-t),n.A-t));}function Nt(e,t){let n,r=e.l;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.A){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.v-8<<4)<<8;if(t=r.ke>=2||r.ve<2?0:r.ve<6?1:6==r.ve?2:3,n|=t<<6,0!=r.ae&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ae&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Oe?0:8)+(null==r.B.Ve?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,255&r.B.Je),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.D,r.A)),r.Ze=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,at),r.Y=113,q(e),0!=r.A)return r.oe=$,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.A,n=(65535&r.B.Ke)-r.Ze;for(;r.A+n>r.ne;){let i=r.ne-r.A;if(M(r.D,r.A,r.B.Ge,r.Ze,i),r.A=r.ne,Ie(e,t),r.Ze+=i,q(e),0!=r.A)return r.oe=$,0;t=0,n-=i;}M(r.D,r.A,r.B.Ge,r.Ze,n),r.A+=n,Ie(e,t),r.Ze=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Oe&&r.B.Oe.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Oe[r.Ze++],T(r,t);}while(0!=t);Ie(e,n),r.Ze=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Ve[r.Ze++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.A+2>r.ne&&(q(e),0!=r.A))return r.oe=$,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ve?Lt(r,t):2==r.ke?Pn(r,t):3==r.ke?Zn(r,t):Ye[r.ve].Ue(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ae=0,r.ue=0,r.le=0))),q(e),0==e.avail_out))return r.oe=$,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.A?0:1)}function P_(e){if(Z_(e))return -2;let t=e.l,n=t.Y;return t.u=Z,t.J=qe,t.K=qe,t.D=Z,t.Me=Z,t.Te=new R(0),t.ye=Z,t.ze=qe,t.N.length=0,t.U.length=0,t.De.length=0,t.B=void 0,t.te=0,t.re=0,t.I=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ae,_=e.he,l=e.me,o=e.ae>ye(e)?e.ae-ye(e):0,u=e.J,a=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+_-1],v=c[f+_];_>=e.ge&&(i>>=2),l>s&&(l=s);do{if(n=t,c[n+_]!=v||c[n+_-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>_){if(e.Se=t,_=r,r>=l)break;b=c[f+_-1],v=c[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=s?_:s}function zt(e,t){wt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Lt(e,t){let n,r,i,f=ke(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ae-e.ue,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;_=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,_),e.D[e.A-4]=n,e.D[e.A-3]=n>>8,e.D[e.A-2]=~n,e.D[e.A-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ue,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ue+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==_);if(l-=e.o.avail_in,l){if(l>=e.h){e._e=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ae=e.h,e.le=e.ae;}else e.qe-e.ae<=l&&(e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,e.le>e.ae&&(e.le=e.ae)),M(e.u,e.ae,e.o.next_in,e.o.next_in_index-l,l),e.ae+=l,e.le+=ke(l,e.h-e.le);e.ue=e.ae;}return e.k<e.ae&&(e.k=e.ae),_?(e.Ce=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.qe-e.ae,e.o.avail_in>i&&e.ue>=e.h&&(e.ue-=e.h,e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,i+=e.h,e.le>e.ae&&(e.le=e.ae)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=ke(i,e.h-e.le)),e.k<e.ae&&(e.k=e.ae),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Ce=8),_?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),0!=n&&e.ae-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=v)if(e.ae,e.Se,e.se,r=e_(e,e.ae-e.Se,e.se-v),e.ce-=e.se,e.se<=e.xe&&e.ce>=v){e.se--;do{e.ae++,n=u_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.be=e.u[e.ae],e.be=l_(e,e.be,e.u[e.ae+1]);else r=De(e,e.u[e.ae]),e.ce--,e.ae++;if(r){let t=j(e,false);if(null!=t)return t}}if(e.le=e.ae<v-1?e.ae:v-1,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),e.he=e.se,e.de=e.Se,e.se=v-1,0!=n&&e.he<e.xe&&e.ae-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ke||e.se==v&&e.ae-e.Se>nt)&&(e.se=v-1)),e.he>=v&&e.se<=e.he){let t=e.ae+e.ce-v;e.ae,e.de,e.he,r=e_(e,e.ae-1-e.de,e.he-v),e.ce-=e.he-1,e.he-=2;do{++e.ae<=t&&(n=u_(e,e.ae));}while(0!=--e.he);if(e.we=0,e.se=v-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ae-1]),r&&zt(e,0),e.ae++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ae++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<v-1?e.ae:v-1,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Zn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=v&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=v?(e.ae,e.ae,e.se,n=e_(e,1,e.se-v),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=De(e,e.u[e.ae]),e.ce--,e.ae++),n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Pn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ae]),e.ce--,e.ae++,n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){return j(e,true)??3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Ot=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Mn=[16,1,73,1,200,1],Yn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Mn),Ft.push(...Yn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Ot,0,0]),Wt=new g([...Ot,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function Jt(e,t){let n,r=e.l,i=e.next_in_index,f=e.next_out_index,_=e.next_in,l=e.next_out,o=r.u,u=r.p>>>0,a=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.k>>>0,v=r.m>>>0,k=r.it,g=f-(t-e.avail_out),m=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,z=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&h];t:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,0==y){l[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}x+=u&(1<<y)-1,u>>>=y,a-=y;}for(;a<15;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&d];n:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}T+=u&(1<<y)-1,u>>>=y,a-=y;}let t=x,c=f-g;if(T>c){let n=T-c;if(n>b&&k){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==v){if(z=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}else if(v<n){z=w+v-n;let e=n-v;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let t=0;t<e;++t)l[f++]=o[z++];if(t-=e,z=0,v<t){for(let e=0;e<v;++e)l[f++]=o[z++];t-=v,z=f-T;}}else {if(z=v-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}for(;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}else {for(z=f-T;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(u&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(u&(1<<y)-1)];continue t}}while(i<p&&f<m);let M=a>>3;i-=M,a-=M<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<m?m-f+257:257-(f-m),r.p=u>>>0,r.T=a>>>0;}var Xn=new R(0);function M_(e,t){let n=Xn,r=t?ue+m_:ue+d_;return {...Je(e,0),o:e,ft:16180,_t:false,P:0,lt:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,vt:0,kt:0,gt:n,xt:new g(320),Tt:new g(288),yt:new R(r),zt:0,it:true,Mt:0,Ct:0,Zt:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function h_(e=1){return We(64,e,0)}function Qt(e=0){return We(96,e,0)}function Y_(e){return (255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255}var Le=15,Gn={Zt:false,Wt:Zt,qt:Mt,St:Xt,Lt:Gt,$t:20,Dt:257,At:0,It:d_,Ht:false,Qt:true},Kn={Zt:true,Wt:Pt,qt:Yt,St:Wt,Lt:Kt,$t:19,Dt:256,At:-1,It:m_,Ht:true,Qt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,h,d,w,b,v,k,m,p,x,T,y,z,M,C,Z=new g(Le+1),W=new g(Le+1),q=l?Kn:Gn;for(o=0;o<=Le;o++)Z[o]=0;for(u=0;u<n;u++)Z[t[u]]++;for(s=i.jt,c=Le;c>=1&&0==Z[c];c--);if(s>c&&(s=c),0==c)return q.Qt?(T=h_(1),r.jt[0]=T,r.jt[1]=T,i.jt=1,0):-1;for(a=1;a<c&&0==Z[a];a++);for(s<a&&(s=a),w=1,o=1;o<=Le;o++)if(w<<=1,w-=Z[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(W[1]=0,o=1;o<Le;o++)W[o+1]=W[o]+Z[o];for(u=0;u<n;u++)0!=t[u]&&(f[W[t[u]]++]=u);switch(e){case 0:z=M=f,C=q.$t;break;case 1:z=q.Wt,M=q.qt,C=q.Dt;break;default:z=q.St,M=q.Lt,C=q.At;}if(v=0,u=0,o=a,y=_.jt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;for(;;){T=qn(f,u,o,d,e,z,M,C,q.Zt),k=1<<o-d,m=1<<h,a=m;do{m-=k;let e=(v>>d)+m;r.jt[y+e]=T;}while(0!=m);for(k=1<<o-1;v&k;)k>>=1;if(0!=k?(v&=k-1,v+=k):v=0,u++,0==--Z[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(v&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=Z[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;p=v&x,r.jt[_.jt+p]=We(h,s,y-_.jt);}}if(0!=v)for(T=h_(o-d);0!=v;){for(0!=d&&(v&x)!=p&&(d=0,o=s,y=_.jt,h=s,T=h_(o)),r.jt[y+(v>>d)]=T,k=1<<o-1;v&k;)k>>=1;0!=k?(v&=k-1,v+=k):v=0;}return _.jt+=b,i.jt=s,0}function qn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=b_(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=b_(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=b_(_[i],n-r,f[i]);}else u=Qt(n-r);return u}var p_=new R(0),Qn={Nt:true,Ut:new R(544),Rt:p_,Yt:p_},$n={Nt:true,Ut:new R(544),Rt:p_,Yt:p_};function $t(){let e=je();return e.l=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.Zt&&(t.ft<16191||t.ft>16209)||!t.Zt&&(t.ft<16180||t.ft>16211))))}function er(e){let t;return Ge(e)?-2:(t=e.l,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Zt?16191:16180,t._t=false,t.lt=false,t.ot=-1,t.ut=t.Zt?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.gt=t.yt,t.it=true,t.Mt=-1,0)}function _r(e){let t;return Ge(e)?-2:(t=e.l,t.h=0,t.k=0,t.m=0,er(e))}function tr(e,t){let n,r;if(Ge(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.Zt=-16==t,t=-t;}else n=5+(t>>4),r.Zt=false,t<48&&(t&=15);let i=r.Zt?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.v!=t&&(r.u=Z),r.P=n,r.v=t,_r(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e.l=r,r.o=e,r.ft=i?16191:16180,n=tr(e,t),n}function nr(e){let t=e.Zt?$n:Qn,n={jt:0};if(t.Nt){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Ut.fill(0),f=t.Ut,t.Rt=f,i=9;let _={jt:f},l={jt:i},o={jt:0};for(Oe(1,e.xt,288,_,l,e.Tt,o,e.Zt),f=_.jt,i=l.jt,e.zt=o.jt,r=0;r<32;)e.xt[r++]=5;i=5;let u=o.jt,a={jt:f},c={jt:i};n.jt=u,Oe(2,e.xt,32,a,c,e.Tt,n,e.Zt),t.Yt=f.slice(u),t.Nt=false;}e.et=t.Rt,e.nt=9,e.tt=t.Yt,e.rt=5,e.zt=n.jt;}function rr(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.v),r.u)))return 1;if(0==r.h&&(r.h=1<<r.v,r.m=0,r.k=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.m=0,r.k=r.h;else {let e=r.h-r.m;e>n&&(e=n),M(r.u,r.m,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.m=n,r.k=r.h):(r.m+=e,r.m==r.h&&(r.m=0),r.k<r.h&&(r.k+=e));}return 0}var S_=class extends L{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,_,l,o,u,a,c,s,h,d,w,b,v,k,g=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;l=0,u=0,o=0,a=0,r=Z,i=0,f=Z,_=0,n=e.l,16191==n.ft&&(n.ft=16192),z(),c=l,s=o,k=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(L(16),2&n.P&&35615==u){0==n.v&&(n.v=15),n.ct=W(0),n.ct=T(n.ct,u),q(),n.ft=16181;break}if(n.B&&(n.B.Et=-1),!(1&n.P)||(($(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=$(4)){e.msg="unknown compression method",n.ft=16209;break}if(D(4),v=$(4)+8,0==n.v&&(n.v=v),v>15||v>n.v){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<v,n.ot=0,e.i=n.ct=he(0),n.ft=512&u?16189:16191,q();break;case 16181:if(L(16),n.ot=u,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=u>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16182;case 16182:L(32),n.B&&(n.B.Xe=u),512&n.ot&&4&n.P&&(n.ct=y(n.ct,u)),q(),n.ft=16183;case 16183:L(16),n.B&&(n.B.Pt=255&u,n.B.Je=u>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16184;case 16184:1024&n.ot?(L(16),n.ht=u,n.B&&(n.B.Ke=u),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>l&&(h=l),h&&(n.B&&n.B.Ge&&n.B.Bt&&(v=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,v,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,n.ht-=h),n.ht))return m();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Oe[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Oe=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Ve[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Ve=Z);n.ft=16188;case 16188:if(512&n.ot){if(L(16),4&n.P&&u!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}q();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Et=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:L(32),e.i=n.ct=Y_(u),q(),n.ft=16190;case 16190:if(!n.lt)return C(),2;e.i=n.ct=he(0),n.ft=16191;case 16191:if(5==t||6==t)return m();case 16192:if(n._t){A(),n.ft=16206;break}switch(L(3),n._t=!!$(1),D(1),$(2)){case 0:n.ft=16193;break;case 1:if(nr(n),n.ft=16199,6==t)return D(2),m();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}D(2);break;case 16193:if(A(),L(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&u,q(),n.ft=16194,6==t)return m();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>l&&(h=l),h>o&&(h=o),0==h)return m();M(f,_,r,i,h),l-=h,i+=h,o-=h,_+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(L(14),n.bt=$(5)+257,D(5),n.vt=$(5)+1,D(5),n.wt=$(4)+4,D(4),n.bt>286||!n.Zt&&n.vt>30){e.msg=n.Zt?"too many length":"too many length or distance symbols",n.ft=16209;break}n.kt=0,n.ft=16197;case 16197:for(;n.kt<n.wt;)L(3),n.xt[pe[n.kt++]]=$(3),D(3);for(;n.kt<19;)n.xt[pe[n.kt++]]=0;n.gt=n.yt,n.et=n.tt=n.gt,n.nt=7;let c={jt:n.gt},g={jt:n.nt},p={jt:0};if(k=Oe(0,n.xt,19,c,g,n.Tt,p,n.Zt),n.gt=c.jt,n.nt=g.jt,k){e.msg="invalid code lengths set",n.ft=16209;break}n.kt=0,n.ft=16198;case 16198:for(;n.kt<n.bt+n.vt;){for(;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if((65535&w)<16)D(w>>>16&255),n.xt[n.kt++]=65535&w;else {if(16==(65535&w)){if(L(2+(w>>>16&255)),D(w>>>16&255),0==n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}v=n.xt[n.kt-1],h=3+$(2),D(2);}else 17==(65535&w)?(L(3+(w>>>16&255)),D(w>>>16&255),v=0,h=3+$(3),D(3)):(L(7+(w>>>16&255)),D(w>>>16&255),v=0,h=11+$(7),D(7));if(n.kt+h>n.bt+n.vt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.kt++]=v;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.gt=n.yt,n.nt=9;let I={jt:n.gt},H={jt:n.nt},Q={jt:0};k=Oe(1,n.xt,n.bt,I,H,n.Tt,Q,n.Zt),n.gt=I.jt,n.nt=H.jt;let j=Q.jt;if(n.et=n.gt.slice(0,j),k){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let N=n.xt.subarray(n.bt,n.bt+n.vt),U={jt:n.gt},R={jt:n.rt},Y={jt:j};if(k=Oe(2,N,n.vt,U,R,n.Tt,Y,n.Zt),n.gt=U.jt,n.rt=R.jt,n.tt=n.gt.slice(j),k){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return m();case 16199:n.ft=16200;case 16200:if(!n.Zt&&l>=6&&o>=258){C(),Jt(e,s),z(),16191==n.ft&&(n.Mt=-1);break}for(n.Mt=0;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.Mt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Zt?31:15),n.ft=16201;case 16201:n.Ge&&(L(n.Ge),n.ht+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.Ct=n.ht,n.ft=16202;case 16202:for(;w=n.tt[$(n.rt)],!((w>>>16&255)<=a);)S();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(L(n.Ge),n.dt+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.ft=16204;case 16204:if(0==o)return m();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.k&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.m?(h-=n.m,d=n.h-h):d=n.m-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[_]=255&n.u[d],++_,++d;}else {d=_-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[_]=f[d],++_,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return m();f[_++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(L(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(_-s,_);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?u:Y_(u)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}q();}n.ft=16207;case 16207:if(n.P&&n.ot){if(L(32),4&n.P&&u!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}q();}n.ft=16208;case 16208:return k=1,m();case 16209:return k=-3,m();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return m();throw e}function m(){if(C(),n.h||s!=e.avail_out&&n.ft<16209&&(n.Zt?n.ft<16208:n.ft<16206)||4!=t){let t=s-e.avail_out;if(rr(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n._t?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==k||4==t&&0==k)&&(k=-5),k}function x(e,t,r){return n.ot?W(e,t,r):he(e,t,r)}function T(e,t){return g[0]=255&t,g[1]=t>>>8&255,W(e,g,2)>>>0}function y(e,t){return g[0]=255&t,g[1]=t>>>8&255,g[2]=t>>>16&255,g[3]=t>>>24&255,W(e,g,4)>>>0}function z(){f=e.next_out,_=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,l=e.avail_in,u=n.p,a=n.T;}function C(){e.next_out=f,e.next_out_index=_,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=l,n.p=u,n.T=a;}function q(){u=0,a=0;}function S(){if(0==l)throw new S_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function L(e){for(;a<e;)S();}function $(e){return u&(1<<e)-1}function D(e){u>>>=e,a-=e;}function A(){u>>>=7&a,a-=7&a;}}function tn(e){return Ge(e)?-2:0}var X_=65536,ar=32768,W_=class{constructor(e=16,t=X_){this.Ot=[],this.Vt=e;for(let n=0;n<z.min(e,4);n++)this.Ot.push(new p(t));}acquire(e=X_){for(let t=this.Ot.length-1;t>=0;t--){let n=this.Ot[t];if(n.length>=e)return this.Ot.splice(t,1),n}return new p(e)}release(e){this.Ot.length<this.Vt&&this.Ot.push(e);}};function nn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.Jt(t);if(0!=n&&0!=n)throw new L("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,_){n||(n=r());let l=n.o;if(n.Kt)return;let o=0;for(;o<f.length;){let r=z.min(f.length-o,ar),u=f.subarray(o,o+r);for(l.next_in=u,l.next_in_index=0,l.avail_in=u.length;l.avail_in>0;){let r=t.acquire(),f=false;try{l.next_out=r,l.next_out_index=0,l.avail_out=r.length;let i=e.en(l,0),o=r.length-l.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,_.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new L("process error: "+i)}finally{f||i(r);}}if(n.Kt)break;o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let _=n.o;for(;;){let n=t.acquire(),r=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let i=e.en(_,4),l=n.length-_.avail_out;if(l>0){let e=!1,i={tn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new L("finalization error: "+i)}finally{r||i(n);}}let l=e.nn(_);if(0!=l&&0!=l)throw new L("end failed: "+l)}})}function rn(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}function ir(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return nn({Xt:()=>vt(),Jt:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function or(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return nn({Xt:()=>$t(),Jt:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ir(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(rn());}},g_=class{constructor(e="deflate"){let t=or(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(rn());}};
8162
+ var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:z,Error:L,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),_=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(_,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,_:0,l:void 0}}function Je(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,v:t,k:0,m:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.M=e,this.C=t,this.Z=0;}},re=class{constructor(e,t,n,r,i){this.W=e,this.q=t,this.S=n,this.L=r,this.$=i;}};function D_(e){return Q_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function $e(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.D[e.A++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.I+e.H;return e.D[f]=255&i,e.D[f+1]=i>>>8&255,e.D[f+2]=r,e.H+=3,i=i-1&65535,e.N[__[r]+ie+1].j++,e.U[y_(i)].j++,e.H==e.R}function De(e,t){let n=255&t,r=e.I+e.H;return e.D[r]=0,e.D[r+1]=0,e.D[r+2]=n,e.H+=3,e.N[n].j++,e.H==e.R}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=z.floor((t+v-1)/v),f=1<<8+Ce;return {...Je(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,O:n,V:r,X:i,J:new g(32768),K:new g(n),ee:f,D:new p(32768),te:0,ne:32768,A:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,he:0,de:0,we:0,be:0,ve:0,ke:0,ge:0,me:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),ze:new g(be+1),H:0,R:0,Me:Z,I:0,Ce:0,Ze:0,We:8,qe:32768,Se:0,Le:0,$e:0,N:new k(fe).fill(0).map(()=>Q()),U:new k(2*me+1).fill(0).map(()=>Q()),De:new k(2*oe+1).fill(0).map(()=>Q()),Ae:w_(),Ie:w_(),He:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Qe=r,f.je=i,t.push(f);}return t}function Q(){return {j:0,Qe:0,Ne:0,je:0}}function w_(){return new ne([],dn(null,Z,0,0,0))}function dn(e,t,n,r,i){return new re(e,t,n,r,i)}function $_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=mn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,_=t[f]||0;r[i++]=e?$e(_,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,_=e[r];if(n>=_&&n<=_+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,_=e[n];if(i>=_&&i<=_+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function mn(e){let t=z.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,v=3,ee=258,ae=ee+v+1,nt=4096,Ue=16,He=ee,bn=29,ie=256,Te=ie+1+bn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,$=-1,Q_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var hn=k_($_()),sn=k_(new k(30).fill(5)),Fe=I_(hn),R_=I_(sn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function he(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,xn,pn,Sn,En,gn,Tn,wn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=z.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=wn[255&t]^Tn[t>>>8&255]^gn[t>>>16&255]^En[t>>>24&255]^Sn[255&n]^pn[n>>>8&255]^xn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.Ce=1+(e.T-1&7),e.p=0,e.T=0;}function An(e,t,n){let r,i,f=[],_=0;for(r=1;r<=be;r++)_=_+n[r-1]<<1,f[r]=_;for(i=0;i<=t;i++){let t=e[i].je;0!=t&&(e[i].Qe=$e(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.N.length;t++)e.N[t].j=0;for(let t=0;t<e.U.length;t++)e.U[t].j=0;for(let t=0;t<e.De.length;t++)e.De[t].j=0;e.N[ve].j=1,e.ie=e.fe=0,e.H=e._e=0;}function Et(e){if(e.N&&e.N.length>=fe)for(let t=0;t<fe;t++)e.N[t]=Q();else {e.N=[];for(let t=0;t<fe;t++)e.N.push(Q());}if(e.U&&e.U.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<2*me+1;t++)e.U.push(Q());}if(e.De&&e.De.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.De[t]=Q();else {e.De=[];for(let t=0;t<2*oe+1;t++)e.De.push(Q());}e.Ae=new ne(e.N,new re(Fe,a_,ie+1,Te,be)),e.Ie=new ne(e.U,new re(R_,i_,0,me,be)),e.He=new ne(e.De,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.Ce=0,St(e);}var se=1;function Dn(e,t,n){return n=e.Te[se],e.Te[se]=e.Te[e.Le--],z_(e,t,se),n}function mt(e,t,n,r){return e[t].j<e[n].j||e[t].j==e[n].j&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Le&&(i<e.Le&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function yn(e,t){let n,r,i,f,_,l,o=t.M,u=t.Z,a=t.C.W,c=t.C.q,s=t.C.S,h=t.C.$,d=0;for(f=0;f<=be;f++)e.ze[f]=0;for(o[e.Te[e.$e]].je=0,n=e.$e+1;n<fe;n++)r=e.Te[n],f=o[o[r].Ne].je+1,f>h&&(f=h,d++),o[r].je=f,!(r>u)&&(e.ze[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].j,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].je+_)));if(0!=d){do{for(f=h-1;0==e.ze[f];)f--;e.ze[f]--,e.ze[f+1]+=2,e.ze[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.ze[f];0!=r;)i=e.Te[--n],!(i>u)&&(o[i].je!=f&&(e.ie+=(f-o[i].je)*o[i].j,o[i].je=f),r--);}}function L_(e,t){let n,r,i,f=t.M,_=t.C.W,l=t.C.L,o=-1;for(e.Le=0,e.$e=fe,n=0;n<l;n++)0!=f[n].j?(e.Te[++e.Le]=o=n,e.ye[n]=0):f[n].je=0;for(;e.Le<2;)i=e.Te[++e.Le]=o<2?++o:0,f[i].j=1,e.ye[i]=0,e.ie--,_&&(e.fe-=_[i].je);for(t.Z=o,n=z.floor(e.Le/2);n>=1;n--)z_(e,f,n);i=l;do{n=Dn(e,f,n),r=e.Te[se],e.Te[--e.$e]=n,e.Te[--e.$e]=r,f[i].j=f[n].j+f[r].j,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].Ne=f[r].Ne=i,e.Te[se]=i++,z_(e,f,se);}while(e.Le>=2);e.Te[--e.$e]=e.Te[se],yn(e,t),An(f,t.Z,e.ze);}function bt(e,t,n){let r,i,f=-1,_=t[0].je,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].je=65535,r=0;r<=n;r++)i=_,_=t[r+1].je,!(++l<o&&i==_)&&(l<u?e.De[i].j+=l:0!=i?(i!=f&&e.De[i].j++,e.De[t_].j++):l<=10?e.De[n_].j++:e.De[r_].j++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function ht(e,t,n){let r,i=-1,f=t[0].je,_=0,l=7,o=4;0==f&&(l=138,o=3);for(let u=0;u<=n;u++)if(r=f,f=t[u+1].je,!(++_<l&&r==f)){if(_<o)do{C(e,e.De[r].Qe,e.De[r].je);}while(0!=--_);else 0!=r?(r!=i&&(C(e,e.De[r].Qe,e.De[r].je),_--),C(e,e.De[t_].Qe,e.De[t_].je),C(e,_-3,2)):_<=10?(C(e,e.De[n_].Qe,e.De[n_].je),C(e,_-3,3)):(C(e,e.De[r_].Qe,e.De[r_].je),C(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function vn(e){let t;for(bt(e,e.N,e.Ae.Z),bt(e,e.U,e.Ie.Z),L_(e,e.He),t=oe-1;t>=3&&0==e.De[pe[t]].je;t--);return e.ie+=3*(t+1)+5+5+4,t}function In(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.De[pe[i]].je,3);ht(e,e.N,t-1),ht(e,e.U,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.D,e.A,t,i,n),e.A+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Qe,Fe[ve].je),xt(e);}function st(e,t,n){let r,i,f,_,l=0;if(0!=e.H)do{r=255&e.Me[l],r+=(255&e.Me[l+1])<<8,i=e.Me[l+2],l+=3,0==r?C(e,t[i].Qe,t[i].je):(f=__[i],C(e,t[f+ie+1].Qe,t[f+ie+1].je),_=a_[f],0!=_&&(i-=ge[f],C(e,i,_)),r--,f=y_(r),C(e,n[f].Qe,n[f].je),_=i_[f],0!=_&&(r-=Ee[f],C(e,r,_)));}while(l<e.H);C(e,t[ve].Qe,t[ve].je);}function kn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.N[t].j)return 0;if(0!=e.N[9].j||0!=e.N[10].j||0!=e.N[13].j)return 1;for(t=32;t<ie;t++)if(0!=e.N[t].j)return 1;return 0}function wt(e,t,n,r,i=0){let f,_,l=0;e.ve>0?(2==e.o.t&&(e.o.t=kn(e)),L_(e,e.Ae),L_(e,e.Ie),l=vn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ke)&&(f=_)):f=_=n+5,n+4<=f&&t?Pe(e,t,n,r,i):_==f?(C(e,(N_<<1)+r,3),st(e,Fe,R_)):(C(e,(lt<<1)+r,3),In(e,e.Ae.Z+1,e.Ie.Z+1,l+1),st(e,e.N,e.U)),St(e),r&&pt(e);}function vt(){let e=je();return e.l=v_(e),e}var Ye=[{Ue:Lt,Re:0,Ye:0,Ee:0,Pe:0},{Ue:U_,Re:4,Ye:4,Ee:8,Pe:4},{Ue:U_,Re:4,Ye:5,Ee:16,Pe:8},{Ue:U_,Re:4,Ye:6,Ee:32,Pe:32},{Ue:Ne,Re:4,Ye:4,Ee:16,Pe:16},{Ue:Ne,Re:8,Ye:16,Ee:32,Pe:32},{Ue:Ne,Re:8,Ye:16,Ee:128,Pe:128},{Ue:Ne,Re:8,Ye:32,Ee:128,Pe:256},{Ue:Ne,Re:32,Ye:128,Ee:258,Pe:1024},{Ue:Ne,Re:32,Ye:258,Ee:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.V)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(v-1)]);let n=e.J[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.O-1]=0,Ve(e.K,0,(e.O-1)*e.K.BYTES_PER_ELEMENT);}function Un(e){let t,n,r=e.h;for(t=e.O;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.J[t],e.J[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e.l.P?e.i=he(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e.l.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.qe-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.Se-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Un(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=v){let t=e.ae-e.le;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e.le&&(e.be=l_(e,e.be,e.u[t+v-1]),e.J[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e.le--,!(e.ce+e.le<v)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.k<e.qe){let t,n=e.ae+e.ce;e.k<n?(t=e.qe-n,t>He&&(t=He),Ve(e.u,n,t),e.k=n+t):e.k<n+He&&(t=n+He-e.k,t>e.qe-e.k&&(t=e.qe-e.k),Ve(e.u,e.k,t),e.k+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let _=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(_=0,r<-15)return -2;r=-r;}else r>15&&(_=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=_)return -2;8==r&&(r=9);let l=v_(e);return l?(e.l=l,l.o=e,l.Y=42,l.P=_,l.B=void 0,l.v=r,l.h=1<<l.v,l.F=l.h-1,l.G=i+7,l.O=1<<l.G,l.V=l.O-1,l.X=(l.G+v-1)/v,l.u=new p(2*l.h),l.J=new g(l.h),l.K=new g(l.O),l.k=0,l.ee=1<<i+6,l.D=new p(l.ee*ot),l.ne=4*l.ee,l.u&&l.J&&l.K&&l.D?(l.Me=l.D.subarray(l.ee),l.I=l.te+l.ee,l.R=3*(l.ee-1),l.ve=t,l.ke=f,l.We=n,Fn(e)):(l.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Hn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.A=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):he(0),t.oe=-2,Et(t),0)}function Bn(e){e.qe=2*e.h,It(e),e.xe=Ye[e.ve].Ye,e.ge=Ye[e.ve].Re,e.me=Ye[e.ve].Ee,e.pe=Ye[e.ve].Pe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.he=v-1,e.we=0,e.be=0;}function Fn(e){let t=Hn(e);return 0==t&&Bn(e.l),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e.l;gt(n),t=n.A,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.D,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.A-=t,0==n.A&&(n.re=n.te));}function Ie(e,t){let n=e.l;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.D.buffer,n.te+t,n.A-t),n.A-t));}function Nt(e,t){let n,r=e.l;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.A){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.v-8<<4)<<8;if(t=r.ke>=2||r.ve<2?0:r.ve<6?1:6==r.ve?2:3,n|=t<<6,0!=r.ae&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ae&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Oe?0:8)+(null==r.B.Ve?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,255&r.B.Je),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.D,r.A)),r.Ze=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ve?2:r.ke>=2||r.ve<2?4:0),T(r,at),r.Y=113,q(e),0!=r.A)return r.oe=$,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.A,n=(65535&r.B.Ke)-r.Ze;for(;r.A+n>r.ne;){let i=r.ne-r.A;if(M(r.D,r.A,r.B.Ge,r.Ze,i),r.A=r.ne,Ie(e,t),r.Ze+=i,q(e),0!=r.A)return r.oe=$,0;t=0,n-=i;}M(r.D,r.A,r.B.Ge,r.Ze,n),r.A+=n,Ie(e,t),r.Ze=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Oe&&r.B.Oe.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Oe[r.Ze++],T(r,t);}while(0!=t);Ie(e,n),r.Ze=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.A;do{if(r.A==r.ne){if(Ie(e,n),q(e),0!=r.A)return r.oe=$,0;n=0;}t=r.B.Ve[r.Ze++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.A+2>r.ne&&(q(e),0!=r.A))return r.oe=$,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.A)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ve?Lt(r,t):2==r.ke?Pn(r,t):3==r.ke?Zn(r,t):Ye[r.ve].Ue(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ae=0,r.ue=0,r.le=0))),q(e),0==e.avail_out))return r.oe=$,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.A?0:1)}function P_(e){if(Z_(e))return -2;let t=e.l,n=t.Y;return t.u=Z,t.J=qe,t.K=qe,t.D=Z,t.Me=Z,t.Te=new R(0),t.ye=Z,t.ze=qe,t.N.length=0,t.U.length=0,t.De.length=0,t.B=void 0,t.te=0,t.re=0,t.I=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ae,_=e.he,l=e.me,o=e.ae>ye(e)?e.ae-ye(e):0,u=e.J,a=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+_-1],v=c[f+_];_>=e.ge&&(i>>=2),l>s&&(l=s);do{if(n=t,c[n+_]!=v||c[n+_-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>_){if(e.Se=t,_=r,r>=l)break;b=c[f+_-1],v=c[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=s?_:s}function zt(e,t){wt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Lt(e,t){let n,r,i,f=ke(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ae-e.ue,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;_=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,_),e.D[e.A-4]=n,e.D[e.A-3]=n>>8,e.D[e.A-2]=~n,e.D[e.A-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ue,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ue+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==_);if(l-=e.o.avail_in,l){if(l>=e.h){e._e=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ae=e.h,e.le=e.ae;}else e.qe-e.ae<=l&&(e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,e.le>e.ae&&(e.le=e.ae)),M(e.u,e.ae,e.o.next_in,e.o.next_in_index-l,l),e.ae+=l,e.le+=ke(l,e.h-e.le);e.ue=e.ae;}return e.k<e.ae&&(e.k=e.ae),_?(e.Ce=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.qe-e.ae,e.o.avail_in>i&&e.ue>=e.h&&(e.ue-=e.h,e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,i+=e.h,e.le>e.ae&&(e.le=e.ae)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=ke(i,e.h-e.le)),e.k<e.ae&&(e.k=e.ae),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Ce=8),_?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),0!=n&&e.ae-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=v)if(e.ae,e.Se,e.se,r=e_(e,e.ae-e.Se,e.se-v),e.ce-=e.se,e.se<=e.xe&&e.ce>=v){e.se--;do{e.ae++,n=u_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.be=e.u[e.ae],e.be=l_(e,e.be,e.u[e.ae+1]);else r=De(e,e.u[e.ae]),e.ce--,e.ae++;if(r){let t=j(e,false);if(null!=t)return t}}if(e.le=e.ae<v-1?e.ae:v-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=v&&(n=u_(e,e.ae)),e.he=e.se,e.de=e.Se,e.se=v-1,0!=n&&e.he<e.xe&&e.ae-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ke||e.se==v&&e.ae-e.Se>nt)&&(e.se=v-1)),e.he>=v&&e.se<=e.he){let t=e.ae+e.ce-v;e.ae,e.de,e.he,r=e_(e,e.ae-1-e.de,e.he-v),e.ce-=e.he-1,e.he-=2;do{++e.ae<=t&&(n=u_(e,e.ae));}while(0!=--e.he);if(e.we=0,e.se=v-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ae-1]),r&&zt(e,0),e.ae++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ae++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<v-1?e.ae:v-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Zn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=v&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=v?(e.ae,e.ae,e.se,n=e_(e,1,e.se-v),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=De(e,e.u[e.ae]),e.ce--,e.ae++),n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Pn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ae]),e.ce--,e.ae++,n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Ot=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Mn=[16,1,73,1,200,1],Yn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Mn),Ft.push(...Yn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Ot,0,0]),Wt=new g([...Ot,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function Jt(e,t){let n,r=e.l,i=e.next_in_index,f=e.next_out_index,_=e.next_in,l=e.next_out,o=r.u,u=r.p>>>0,a=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.k>>>0,v=r.m>>>0,k=r.it,g=f-(t-e.avail_out),m=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,z=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&h];t:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,0==y){l[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}x+=u&(1<<y)-1,u>>>=y,a-=y;}for(;a<15;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&d];n:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}T+=u&(1<<y)-1,u>>>=y,a-=y;}let t=x,c=f-g;if(T>c){let n=T-c;if(n>b&&k){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==v){if(z=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}else if(v<n){z=w+v-n;let e=n-v;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let t=0;t<e;++t)l[f++]=o[z++];if(t-=e,z=0,v<t){for(let e=0;e<v;++e)l[f++]=o[z++];t-=v,z=f-T;}}else {if(z=v-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[z++];continue e}for(let e=0;e<n;++e)l[f++]=o[z++];t-=n,z=f-T;}for(;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}else {for(z=f-T;t>2;)l[f++]=l[z++],l[f++]=l[z++],l[f++]=l[z++],t-=3;t&&(l[f++]=l[z++],t>1&&(l[f++]=l[z++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(u&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(u&(1<<y)-1)];continue t}}while(i<p&&f<m);let M=a>>3;i-=M,a-=M<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<m?m-f+257:257-(f-m),r.p=u>>>0,r.T=a>>>0;}var Xn=new R(0);function M_(e,t){let n=Xn,r=t?ue+m_:ue+d_;return {...Je(e,0),o:e,ft:16180,_t:false,P:0,lt:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,vt:0,kt:0,gt:n,xt:new g(320),Tt:new g(288),yt:new R(r),zt:0,it:true,Mt:0,Ct:0,Zt:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function h_(e=1){return We(64,e,0)}function Qt(e=0){return We(96,e,0)}function Y_(e){return (255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255}var Le=15,Gn={Zt:false,Wt:Zt,qt:Mt,St:Xt,Lt:Gt,$t:20,Dt:257,At:0,It:d_,Ht:false,Qt:true},Kn={Zt:true,Wt:Pt,qt:Yt,St:Wt,Lt:Kt,$t:19,Dt:256,At:-1,It:m_,Ht:true,Qt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,h,d,w,b,v,k,m,p,x,T,y,z,M,C,Z=new g(Le+1),W=new g(Le+1),q=l?Kn:Gn;for(o=0;o<=Le;o++)Z[o]=0;for(u=0;u<n;u++)Z[t[u]]++;for(s=i.jt,c=Le;c>=1&&0==Z[c];c--);if(s>c&&(s=c),0==c)return q.Qt?(T=h_(1),r.jt[0]=T,r.jt[1]=T,i.jt=1,0):-1;for(a=1;a<c&&0==Z[a];a++);for(s<a&&(s=a),w=1,o=1;o<=Le;o++)if(w<<=1,w-=Z[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(W[1]=0,o=1;o<Le;o++)W[o+1]=W[o]+Z[o];for(u=0;u<n;u++)0!=t[u]&&(f[W[t[u]]++]=u);switch(e){case 0:z=M=f,C=q.$t;break;case 1:z=q.Wt,M=q.qt,C=q.Dt;break;default:z=q.St,M=q.Lt,C=q.At;}if(v=0,u=0,o=a,y=_.jt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;for(;;){T=qn(f,u,o,d,e,z,M,C,q.Zt),k=1<<o-d,m=1<<h,a=m;do{m-=k;let e=(v>>d)+m;r.jt[y+e]=T;}while(0!=m);for(k=1<<o-1;v&k;)k>>=1;if(0!=k?(v&=k-1,v+=k):v=0,u++,0==--Z[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(v&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=Z[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(q.Ht?b>=ue:b>ue)||2==e&&(q.Ht?b>=q.It:b>q.It))return 1;p=v&x,r.jt[_.jt+p]=We(h,s,y-_.jt);}}if(0!=v)for(T=h_(o-d);0!=v;){for(0!=d&&(v&x)!=p&&(d=0,o=s,y=_.jt,h=s,T=h_(o)),r.jt[y+(v>>d)]=T,k=1<<o-1;v&k;)k>>=1;0!=k?(v&=k-1,v+=k):v=0;}return _.jt+=b,i.jt=s,0}function qn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=b_(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=b_(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=b_(_[i],n-r,f[i]);}else u=Qt(n-r);return u}var p_=new R(0),Qn={Nt:true,Ut:new R(544),Rt:p_,Yt:p_},$n={Nt:true,Ut:new R(544),Rt:p_,Yt:p_};function $t(){let e=je();return e.l=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.Zt&&(t.ft<16191||t.ft>16209)||!t.Zt&&(t.ft<16180||t.ft>16211))))}function er(e){let t;return Ge(e)?-2:(t=e.l,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Zt?16191:16180,t._t=false,t.lt=false,t.ot=-1,t.ut=t.Zt?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.gt=t.yt,t.it=true,t.Mt=-1,0)}function _r(e){let t;return Ge(e)?-2:(t=e.l,t.h=0,t.k=0,t.m=0,er(e))}function tr(e,t){let n,r;if(Ge(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.Zt=-16==t,t=-t;}else n=5+(t>>4),r.Zt=false,t<48&&(t&=15);let i=r.Zt?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.v!=t&&(r.u=Z),r.P=n,r.v=t,_r(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e.l=r,r.o=e,r.ft=i?16191:16180,n=tr(e,t),n}function nr(e){let t=e.Zt?$n:Qn,n={jt:0};if(t.Nt){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Ut.fill(0),f=t.Ut,t.Rt=f,i=9;let _={jt:f},l={jt:i},o={jt:0};for(Oe(1,e.xt,288,_,l,e.Tt,o,e.Zt),f=_.jt,i=l.jt,e.zt=o.jt,r=0;r<32;)e.xt[r++]=5;i=5;let u=o.jt,a={jt:f},c={jt:i};n.jt=u,Oe(2,e.xt,32,a,c,e.Tt,n,e.Zt),t.Yt=f.slice(u),t.Nt=false;}e.et=t.Rt,e.nt=9,e.tt=t.Yt,e.rt=5,e.zt=n.jt;}function rr(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.v),r.u)))return 1;if(0==r.h&&(r.h=1<<r.v,r.m=0,r.k=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.m=0,r.k=r.h;else {let e=r.h-r.m;e>n&&(e=n),M(r.u,r.m,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.m=n,r.k=r.h):(r.m+=e,r.m==r.h&&(r.m=0),r.k<r.h&&(r.k+=e));}return 0}var S_=class extends L{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,_,l,o,u,a,c,s,h,d,w,b,v,k,g=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;l=0,u=0,o=0,a=0,r=Z,i=0,f=Z,_=0,n=e.l,16191==n.ft&&(n.ft=16192),z(),c=l,s=o,k=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(L(16),2&n.P&&35615==u){0==n.v&&(n.v=15),n.ct=W(0),n.ct=T(n.ct,u),q(),n.ft=16181;break}if(n.B&&(n.B.Et=-1),!(1&n.P)||(($(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=$(4)){e.msg="unknown compression method",n.ft=16209;break}if(D(4),v=$(4)+8,0==n.v&&(n.v=v),v>15||v>n.v){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<v,n.ot=0,e.i=n.ct=he(0),n.ft=512&u?16189:16191,q();break;case 16181:if(L(16),n.ot=u,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=u>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16182;case 16182:L(32),n.B&&(n.B.Xe=u),512&n.ot&&4&n.P&&(n.ct=y(n.ct,u)),q(),n.ft=16183;case 16183:L(16),n.B&&(n.B.Pt=255&u,n.B.Je=u>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q(),n.ft=16184;case 16184:1024&n.ot?(L(16),n.ht=u,n.B&&(n.B.Ke=u),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),q()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>l&&(h=l),h&&(n.B&&n.B.Ge&&n.B.Bt&&(v=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,v,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,n.ht-=h),n.ht))return m();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Oe[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Oe=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==l)return m();h=0;do{v=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Ve[n.ht++]=v);}while(v&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,v)return m()}else n.B&&(n.B.Ve=Z);n.ft=16188;case 16188:if(512&n.ot){if(L(16),4&n.P&&u!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}q();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Et=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:L(32),e.i=n.ct=Y_(u),q(),n.ft=16190;case 16190:if(!n.lt)return C(),2;e.i=n.ct=he(0),n.ft=16191;case 16191:if(5==t||6==t)return m();case 16192:if(n._t){A(),n.ft=16206;break}switch(L(3),n._t=!!$(1),D(1),$(2)){case 0:n.ft=16193;break;case 1:if(nr(n),n.ft=16199,6==t)return D(2),m();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}D(2);break;case 16193:if(A(),L(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&u,q(),n.ft=16194,6==t)return m();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>l&&(h=l),h>o&&(h=o),0==h)return m();M(f,_,r,i,h),l-=h,i+=h,o-=h,_+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(L(14),n.bt=$(5)+257,D(5),n.vt=$(5)+1,D(5),n.wt=$(4)+4,D(4),n.bt>286||!n.Zt&&n.vt>30){e.msg=n.Zt?"too many length":"too many length or distance symbols",n.ft=16209;break}n.kt=0,n.ft=16197;case 16197:for(;n.kt<n.wt;)L(3),n.xt[pe[n.kt++]]=$(3),D(3);for(;n.kt<19;)n.xt[pe[n.kt++]]=0;n.gt=n.yt,n.et=n.tt=n.gt,n.nt=7;let c={jt:n.gt},g={jt:n.nt},p={jt:0};if(k=Oe(0,n.xt,19,c,g,n.Tt,p,n.Zt),n.gt=c.jt,n.nt=g.jt,k){e.msg="invalid code lengths set",n.ft=16209;break}n.kt=0,n.ft=16198;case 16198:for(;n.kt<n.bt+n.vt;){for(;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if((65535&w)<16)D(w>>>16&255),n.xt[n.kt++]=65535&w;else {if(16==(65535&w)){if(L(2+(w>>>16&255)),D(w>>>16&255),0==n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}v=n.xt[n.kt-1],h=3+$(2),D(2);}else 17==(65535&w)?(L(3+(w>>>16&255)),D(w>>>16&255),v=0,h=3+$(3),D(3)):(L(7+(w>>>16&255)),D(w>>>16&255),v=0,h=11+$(7),D(7));if(n.kt+h>n.bt+n.vt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.kt++]=v;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.gt=n.yt,n.nt=9;let I={jt:n.gt},H={jt:n.nt},Q={jt:0};k=Oe(1,n.xt,n.bt,I,H,n.Tt,Q,n.Zt),n.gt=I.jt,n.nt=H.jt;let j=Q.jt;if(n.et=n.gt.slice(0,j),k){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let N=n.xt.subarray(n.bt,n.bt+n.vt),U={jt:n.gt},R={jt:n.rt},Y={jt:j};if(k=Oe(2,N,n.vt,U,R,n.Tt,Y,n.Zt),n.gt=U.jt,n.rt=R.jt,n.tt=n.gt.slice(j),k){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return m();case 16199:n.ft=16200;case 16200:if(!n.Zt&&l>=6&&o>=258){C(),Jt(e,s),z(),16191==n.ft&&(n.Mt=-1);break}for(n.Mt=0;w=n.et[$(n.nt)],!((w>>>16&255)<=a);)S();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.Mt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Zt?31:15),n.ft=16201;case 16201:n.Ge&&(L(n.Ge),n.ht+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.Ct=n.ht,n.ft=16202;case 16202:for(;w=n.tt[$(n.rt)],!((w>>>16&255)<=a);)S();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+($((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)S();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(L(n.Ge),n.dt+=$(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.ft=16204;case 16204:if(0==o)return m();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.k&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.m?(h-=n.m,d=n.h-h):d=n.m-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[_]=255&n.u[d],++_,++d;}else {d=_-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[_]=f[d],++_,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return m();f[_++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(L(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(_-s,_);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?u:Y_(u)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}q();}n.ft=16207;case 16207:if(n.P&&n.ot){if(L(32),4&n.P&&u!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}q();}n.ft=16208;case 16208:return k=1,m();case 16209:return k=-3,m();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return m();throw e}function m(){if(C(),n.h||s!=e.avail_out&&n.ft<16209&&(n.Zt?n.ft<16208:n.ft<16206)||4!=t){let t=s-e.avail_out;if(rr(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n._t?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==k||4==t&&0==k)&&(k=-5),k}function x(e,t,r){return n.ot?W(e,t,r):he(e,t,r)}function T(e,t){return g[0]=255&t,g[1]=t>>>8&255,W(e,g,2)>>>0}function y(e,t){return g[0]=255&t,g[1]=t>>>8&255,g[2]=t>>>16&255,g[3]=t>>>24&255,W(e,g,4)>>>0}function z(){f=e.next_out,_=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,l=e.avail_in,u=n.p,a=n.T;}function C(){e.next_out=f,e.next_out_index=_,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=l,n.p=u,n.T=a;}function q(){u=0,a=0;}function S(){if(0==l)throw new S_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function L(e){for(;a<e;)S();}function $(e){return u&(1<<e)-1}function D(e){u>>>=e,a-=e;}function A(){u>>>=7&a,a-=7&a;}}function tn(e){return Ge(e)?-2:0}var X_=65536,ar=32768,W_=class{constructor(e=16,t=X_){this.Ot=[],this.Vt=e;for(let n=0;n<z.min(e,4);n++)this.Ot.push(new p(t));}acquire(e=X_){for(let t=this.Ot.length-1;t>=0;t--){let n=this.Ot[t];if(n.length>=e)return this.Ot.splice(t,1),n}return new p(e)}release(e){this.Ot.length<this.Vt&&this.Ot.push(e);}};function nn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.Jt(t);if(0!=n&&0!=n)throw new L("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,_){n||(n=r());let l=n.o;if(n.Kt)return;let o=0;for(;o<f.length;){let r=z.min(f.length-o,ar),u=f.subarray(o,o+r);for(l.next_in=u,l.next_in_index=0,l.avail_in=u.length;l.avail_in>0;){let r=t.acquire(),f=false;try{l.next_out=r,l.next_out_index=0,l.avail_out=r.length;let i=e.en(l,0),o=r.length-l.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,_.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new L("process error: "+i)}finally{f||i(r);}}if(n.Kt)break;o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let _=n.o;for(;;){let n=t.acquire(),r=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let i=e.en(_,4),l=n.length-_.avail_out;if(l>0){let e=!1,i={tn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new L("finalization error: "+i)}finally{r||i(n);}}let l=e.nn(_);if(0!=l&&0!=l)throw new L("end failed: "+l)}})}function rn(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}function ir(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return nn({Xt:()=>vt(),Jt:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function or(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return nn({Xt:()=>$t(),Jt:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ir(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(rn());}},g_=class{constructor(e="deflate"){let t=or(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(rn());}};
8017
8163
 
8018
8164
  /*
8019
8165
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
@@ -8082,6 +8228,7 @@ setDefaultConfiguration({
8082
8228
 
8083
8229
  const ERR_ENTRY_EXISTS = "Entry filename already exists";
8084
8230
  const ERR_READABLE_CONSUMED = "Readable stream already consumed";
8231
+ const ERR_ABORT_EXPORT = "zipjs-abort-export";
8085
8232
  const INFOZIP_EXTRA_FIELD_TYPE = "infozip";
8086
8233
  const INTERPRETED_EXTRA_FIELD_TYPES = new Set([
8087
8234
  EXTRAFIELD_TYPE_ZIP64,
@@ -8190,8 +8337,9 @@ class ZipFileEntry extends ZipEntry {
8190
8337
  const uncompressedSize = zipEntry.data ? zipEntry.data.uncompressedSize : reader.size;
8191
8338
  await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
8192
8339
  const { readable } = reader;
8340
+ const { signal } = options;
8193
8341
  zipEntry.uncompressedSize = reader.size;
8194
- await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable));
8342
+ await toCompatibleReadable(readable).pipeTo(toCompatibleWritable(writer.writable), { signal });
8195
8343
  return writer.getData ? writer.getData() : writer.writable;
8196
8344
  }
8197
8345
  }
@@ -8458,7 +8606,7 @@ class ZipDirectoryEntry extends ZipEntry {
8458
8606
  for (const entry of entries) {
8459
8607
  let parent = this;
8460
8608
  try {
8461
- const path = entry.filename.split("/");
8609
+ const path = entry.filename.split("/").filter(pathPart => pathPart != "" && pathPart != ".");
8462
8610
  const name = path.pop();
8463
8611
  path.forEach(pathPart => {
8464
8612
  const previousParent = parent;
@@ -8833,6 +8981,39 @@ function detach(entry) {
8833
8981
  }
8834
8982
  }
8835
8983
 
8984
+ function forwardAbort(signal, abortController) {
8985
+ if (!signal) {
8986
+ return () => { };
8987
+ }
8988
+ if (signal.aborted) {
8989
+ abortController.abort(signal.reason);
8990
+ return () => { };
8991
+ }
8992
+ const abort = () => abortController.abort(signal.reason);
8993
+ signal.addEventListener("abort", abort, { once: true });
8994
+ return () => signal.removeEventListener("abort", abort);
8995
+ }
8996
+
8997
+ function isExportAborted(error) {
8998
+ return Boolean(error) && error.message == ERR_ABORT_EXPORT;
8999
+ }
9000
+
9001
+ function aggregateEntryErrors(errors) {
9002
+ const [error] = errors;
9003
+ const otherErrors = errors
9004
+ .slice(1)
9005
+ .flatMap(otherError => [otherError, ...(otherError && otherError.entryErrors || [])])
9006
+ .filter(otherError => otherError !== error);
9007
+ if (otherErrors.length) {
9008
+ try {
9009
+ error.entryErrors = [...(error.entryErrors || []), ...otherErrors];
9010
+ } catch {
9011
+ // ignored
9012
+ }
9013
+ }
9014
+ return error;
9015
+ }
9016
+
8836
9017
  function getUserExtraField(extraField) {
8837
9018
  if (extraField) {
8838
9019
  const userExtraField = new Map();
@@ -8953,8 +9134,9 @@ async function exportZip(zipWriter, entry, totalSize, options, readers) {
8953
9134
  function addFileSystemHandle(zipEntry, handle, options) {
8954
9135
  return addFile(zipEntry, handle, []);
8955
9136
 
8956
- async function addFile(parentEntry, handle, addedEntries) {
9137
+ async function addFile(parentEntry, handle, addedEntries, parentName = "") {
8957
9138
  if (handle) {
9139
+ const entryName = parentName ? parentName + "/" + handle.name : handle.name;
8958
9140
  try {
8959
9141
  if (handle.isFile || handle.isDirectory) {
8960
9142
  handle = await transformToFileSystemhandle(handle);
@@ -8976,12 +9158,18 @@ function addFileSystemHandle(zipEntry, handle, options) {
8976
9158
  const directoryEntry = parentEntry.addDirectory(handle.name);
8977
9159
  addedEntries.push(directoryEntry);
8978
9160
  for await (const childHandle of handle.values()) {
8979
- await addFile(directoryEntry, childHandle, addedEntries);
9161
+ await addFile(directoryEntry, childHandle, addedEntries, entryName);
8980
9162
  }
8981
9163
  }
8982
9164
  } catch (error) {
8983
- const message = error.message + (handle ? " (" + handle.name + ")" : "");
8984
- throw new Error(message, { cause: error });
9165
+ try {
9166
+ if (error.entryName === UNDEFINED_VALUE) {
9167
+ error.entryName = entryName;
9168
+ }
9169
+ } catch {
9170
+ // ignored
9171
+ }
9172
+ throw error;
8985
9173
  }
8986
9174
  }
8987
9175
  return addedEntries;
@@ -8991,15 +9179,32 @@ function addFileSystemHandle(zipEntry, handle, options) {
8991
9179
  async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
8992
9180
  const totalSize = getTotalSize([zipEntry], "uncompressedSize");
8993
9181
  const writtenSizes = new Map();
8994
- await exportChildren(zipEntry, directoryHandle);
9182
+ const abortController = new AbortController();
9183
+ const { signal } = abortController;
9184
+ const releaseSignal = forwardAbort(options.signal, abortController);
9185
+ const exportedEntryNames = [];
9186
+ try {
9187
+ await exportChildren(zipEntry, directoryHandle);
9188
+ } catch (error) {
9189
+ try {
9190
+ error.exportedEntryNames = exportedEntryNames;
9191
+ } catch {
9192
+ // ignored
9193
+ }
9194
+ throw error;
9195
+ } finally {
9196
+ releaseSignal();
9197
+ }
8995
9198
  return directoryHandle;
8996
9199
 
8997
9200
  async function exportChildren(entry, parentHandle) {
8998
9201
  if (options.concurrent) {
8999
9202
  const results = await Promise.allSettled(entry.children.map(child => exportChild(child, parentHandle)));
9000
- const failedResult = results.find(result => result.status == "rejected");
9001
- if (failedResult) {
9002
- throw failedResult.reason;
9203
+ const rejectedResults = results.filter(result => result.status == "rejected");
9204
+ if (rejectedResults.length) {
9205
+ const failedResults = rejectedResults.filter(result => !isExportAborted(result.reason));
9206
+ const reportedResults = failedResults.length ? failedResults : rejectedResults;
9207
+ throw aggregateEntryErrors(reportedResults.map(result => result.reason));
9003
9208
  }
9004
9209
  } else {
9005
9210
  for (const child of entry.children) {
@@ -9009,6 +9214,12 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
9009
9214
  }
9010
9215
 
9011
9216
  async function exportChild(child, parentHandle) {
9217
+ if (signal.aborted) {
9218
+ if (isExportAborted(signal.reason)) {
9219
+ return;
9220
+ }
9221
+ throw signal.reason;
9222
+ }
9012
9223
  try {
9013
9224
  if (child.directory) {
9014
9225
  const childDirectoryHandle = await parentHandle.getDirectoryHandle(child.name, { create: true });
@@ -9017,6 +9228,7 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
9017
9228
  const fileHandle = await parentHandle.getFileHandle(child.name, { create: true });
9018
9229
  const writable = await fileHandle.createWritable();
9019
9230
  await child.getData({ writable }, Object.assign({}, options, {
9231
+ signal,
9020
9232
  onprogress: async progress => {
9021
9233
  if (options.onprogress) {
9022
9234
  writtenSizes.set(child.id, progress);
@@ -9028,9 +9240,19 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
9028
9240
  }
9029
9241
  }
9030
9242
  }));
9243
+ exportedEntryNames.push(child.getRelativeName(zipEntry));
9031
9244
  }
9032
9245
  } catch (error) {
9033
- throw new Error(error.message + (child ? " (" + child.name + ")" : ""), { cause: error });
9246
+ abortController.abort(new Error(ERR_ABORT_EXPORT));
9247
+ try {
9248
+ if (error.entryName === UNDEFINED_VALUE) {
9249
+ error.entryName = child.getRelativeName(zipEntry);
9250
+ error.entryId = child.id;
9251
+ }
9252
+ } catch {
9253
+ // ignored
9254
+ }
9255
+ throw error;
9034
9256
  }
9035
9257
  }
9036
9258
  }
@@ -9204,7 +9426,7 @@ function decodeMimeTypes(data) {
9204
9426
  */
9205
9427
 
9206
9428
 
9207
- l(setDefaultConfiguration);
9429
+ p$1(setDefaultConfiguration);
9208
9430
 
9209
9431
  exports.BlobReader = BlobReader;
9210
9432
  exports.BlobWriter = BlobWriter;
@@ -9233,12 +9455,17 @@ exports.ERR_INVALID_ENTRY_COMMENT = ERR_INVALID_ENTRY_COMMENT;
9233
9455
  exports.ERR_INVALID_ENTRY_NAME = ERR_INVALID_ENTRY_NAME;
9234
9456
  exports.ERR_INVALID_EXTRAFIELD_DATA = ERR_INVALID_EXTRAFIELD_DATA;
9235
9457
  exports.ERR_INVALID_EXTRAFIELD_TYPE = ERR_INVALID_EXTRAFIELD_TYPE;
9458
+ exports.ERR_INVALID_FILENAME_VALIDATION = ERR_INVALID_FILENAME_VALIDATION;
9236
9459
  exports.ERR_INVALID_GID = ERR_INVALID_GID;
9460
+ exports.ERR_INVALID_LEVEL = ERR_INVALID_LEVEL;
9461
+ exports.ERR_INVALID_MAX_APPENDED_DATA_SIZE = ERR_INVALID_MAX_APPENDED_DATA_SIZE;
9237
9462
  exports.ERR_INVALID_MSDOS_ATTRIBUTES = ERR_INVALID_MSDOS_ATTRIBUTES;
9238
9463
  exports.ERR_INVALID_MSDOS_DATA = ERR_INVALID_MSDOS_DATA;
9239
9464
  exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
9465
+ exports.ERR_INVALID_PASSWORD_TYPE = ERR_INVALID_PASSWORD_TYPE;
9240
9466
  exports.ERR_INVALID_SIGNATURE = ERR_INVALID_SIGNATURE;
9241
9467
  exports.ERR_INVALID_SIGNATURE_DATA = ERR_INVALID_SIGNATURE_DATA;
9468
+ exports.ERR_INVALID_STRICTNESS = ERR_INVALID_STRICTNESS;
9242
9469
  exports.ERR_INVALID_UID = ERR_INVALID_UID;
9243
9470
  exports.ERR_INVALID_UNCOMPRESSED_SIZE = ERR_INVALID_UNCOMPRESSED_SIZE;
9244
9471
  exports.ERR_INVALID_UNIX_EXTRA_FIELD_TYPE = ERR_INVALID_UNIX_EXTRA_FIELD_TYPE;
@@ -9253,6 +9480,7 @@ exports.ERR_RESERVED_COMPRESSION_METHOD = ERR_RESERVED_COMPRESSION_METHOD;
9253
9480
  exports.ERR_SPLIT_ZIP_FILE = ERR_SPLIT_ZIP_FILE;
9254
9481
  exports.ERR_UNDEFINED_READER = ERR_UNDEFINED_READER;
9255
9482
  exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
9483
+ exports.ERR_UNSAFE_FILENAME = ERR_UNSAFE_FILENAME;
9256
9484
  exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION$1;
9257
9485
  exports.ERR_UNSUPPORTED_CONTEXT = ERR_UNSUPPORTED_CONTEXT;
9258
9486
  exports.ERR_UNSUPPORTED_CRYPTO_API = ERR_UNSUPPORTED_CRYPTO_API;