@zip.js/zip.js 2.8.30 → 2.8.31

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 (53) hide show
  1. package/deno.json +5 -4
  2. package/dist/zip-core.js +133 -334
  3. package/dist/zip-core.min.js +1 -1
  4. package/dist/zip-fs-core.js +115 -277
  5. package/dist/zip-fs-core.min.js +1 -1
  6. package/dist/zip-fs-native.js +170 -373
  7. package/dist/zip-fs-native.min.js +1 -1
  8. package/dist/zip-fs.js +169 -372
  9. package/dist/zip-fs.min.js +1 -1
  10. package/dist/zip-legacy.js +138 -339
  11. package/dist/zip-legacy.min.js +1 -1
  12. package/dist/zip-module.wasm +0 -0
  13. package/dist/zip-native.js +141 -342
  14. package/dist/zip-native.min.js +1 -1
  15. package/dist/zip-web-worker-native.js +1 -1
  16. package/dist/zip-web-worker.js +1 -1
  17. package/dist/zip.js +140 -341
  18. package/dist/zip.min.js +1 -1
  19. package/index-native.cjs +170 -373
  20. package/index-native.min.js +1 -1
  21. package/index.cjs +169 -372
  22. package/index.d.cts +2814 -0
  23. package/index.d.ts +238 -0
  24. package/index.min.js +1 -1
  25. package/lib/core/codec-worker.js +0 -10
  26. package/lib/core/configuration.js +21 -33
  27. package/lib/core/constants.js +3 -0
  28. package/lib/core/io.js +11 -19
  29. package/lib/core/streams/aes-crypto-stream.js +16 -20
  30. package/lib/core/streams/common-crypto.js +0 -2
  31. package/lib/core/streams/zip-crypto-stream.js +12 -16
  32. package/lib/core/streams/zip-entry-stream.js +2 -32
  33. package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
  34. package/lib/core/streams/zlib-wasm/zlib-streams-loader.js +1 -3
  35. package/lib/core/streams/zlib-wasm/zlib-streams.wasm +0 -0
  36. package/lib/core/util/base64.js +68 -0
  37. package/lib/core/util/decode-text.js +0 -1
  38. package/lib/core/util/default-mime-type.js +0 -3
  39. package/lib/core/util/inflate.js +194 -0
  40. package/lib/core/util/mime-type.js +26 -22
  41. package/lib/core/util/opfs-temp-stream.js +1 -37
  42. package/lib/core/web-worker-inline-native.js +1 -1
  43. package/lib/core/web-worker-inline-template-native.js +5 -5
  44. package/lib/core/web-worker-inline-wasm.js +1 -1
  45. package/lib/core/zip-fs.js +6 -13
  46. package/lib/core/zip-reader.js +48 -127
  47. package/lib/core/zip-writer.js +27 -45
  48. package/lib/core/zlib-streams-inline-template.js +3 -2
  49. package/lib/core/zlib-streams-inline.js +1 -1
  50. package/lib/zip-core-base.js +3 -1
  51. package/package.json +9 -6
  52. package/reserved-property-names.js +50 -0
  53. package/lib/core/util/mini-lz.js +0 -198
package/index-native.cjs CHANGED
@@ -107,6 +107,8 @@ const UNDEFINED_TYPE = "undefined";
107
107
  const FUNCTION_TYPE = "function";
108
108
  const OBJECT_TYPE = "object";
109
109
 
110
+ const EMPTY_UINT8_ARRAY = new Uint8Array();
111
+
110
112
  /*
111
113
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
112
114
 
@@ -158,6 +160,22 @@ const DEFAULT_CONFIGURATION = {
158
160
  DecompressionStream: typeof DecompressionStream != UNDEFINED_TYPE && DecompressionStream
159
161
  };
160
162
 
163
+ const CONFIGURABLE_PROPERTY_NAMES = [
164
+ "baseURI",
165
+ "wasmURI",
166
+ "workerURI",
167
+ "chunkSize",
168
+ "maxWorkers",
169
+ "terminateWorkerTimeout",
170
+ "workerStarvationTimeout",
171
+ "useCompressionStream",
172
+ "useWebWorkers",
173
+ "CompressionStream",
174
+ "DecompressionStream",
175
+ "CompressionStreamZlib",
176
+ "DecompressionStreamZlib"
177
+ ];
178
+
161
179
  const config = Object.assign({}, DEFAULT_CONFIGURATION);
162
180
 
163
181
  function getConfiguration() {
@@ -169,43 +187,15 @@ function getChunkSize(config) {
169
187
  }
170
188
 
171
189
  function configure(configuration) {
172
- const {
173
- baseURI,
174
- chunkSize,
175
- maxWorkers,
176
- terminateWorkerTimeout,
177
- workerStarvationTimeout,
178
- useCompressionStream,
179
- useWebWorkers,
180
- CompressionStream,
181
- DecompressionStream,
182
- CompressionStreamZlib,
183
- DecompressionStreamZlib,
184
- workerURI,
185
- wasmURI
186
- } = configuration;
187
- setIfDefined("baseURI", baseURI);
188
- setIfDefined("wasmURI", wasmURI);
189
- setIfDefined("workerURI", workerURI);
190
- setIfDefined("chunkSize", chunkSize);
191
- setIfDefined("maxWorkers", maxWorkers);
192
- setIfDefined("terminateWorkerTimeout", terminateWorkerTimeout);
193
- setIfDefined("workerStarvationTimeout", workerStarvationTimeout);
194
- setIfDefined("useCompressionStream", useCompressionStream);
195
- setIfDefined("useWebWorkers", useWebWorkers);
196
- setIfDefined("CompressionStream", CompressionStream);
197
- setIfDefined("DecompressionStream", DecompressionStream);
198
- setIfDefined("CompressionStreamZlib", CompressionStreamZlib);
199
- setIfDefined("DecompressionStreamZlib", DecompressionStreamZlib);
200
- }
201
-
202
- function setIfDefined(propertyName, propertyValue) {
203
- if (propertyValue !== UNDEFINED_VALUE) {
204
- config[propertyName] = propertyValue;
205
- }
206
- }
207
-
208
- const A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function g$1(g){g({workerURI:g=>{const B="text/javascript",I=(g=>{g=(g=>{const B=(g=(g+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,I=[];for(let E=0;B>E;E+=4){const B=A.indexOf(g[E])<<18|A.indexOf(g[E+1])<<12|(63&A.indexOf(g[E+2]))<<6|63&A.indexOf(g[E+3]);I.push(B>>16&255),"="!==g[E+2]&&I.push(B>>8&255),"="!==g[E+3]&&I.push(255&B);}return new Uint8Array(I)})(g);let B=new Uint8Array(1024),I=0;for(let A=0;A<g.length;){const C=g[A++];if(128&C){const Y=3+(127&C),Q=g[A++]<<8|g[A++],F=I-Q;E(I+Y);for(let A=0;Y>A;A++)B[I++]=B[F+A];}else {const Y=C;E(I+Y);for(let E=0;Y>E&&A<g.length;E++)B[I++]=g[A++];}}return (g=>{let B="";const I=g.length;let E=0;for(;I>E+2;E+=3){const I=g[E]<<16|g[E+1]<<8|g[E+2];B+=A[I>>18&63]+A[I>>12&63]+A[I>>6&63]+A[63&I];}const C=I-E;if(1===C){const I=g[E]<<16;B+=A[I>>18&63]+A[I>>12&63]+"==";}else if(2===C){const I=g[E]<<16|g[E+1]<<8;B+=A[I>>18&63]+A[I>>12&63]+A[I>>6&63]+"=";}return B})(new Uint8Array(B.buffer.slice(0,I)));function E(A){if(B.length<A){let g=2*B.length;for(;A>g;)g*=2;const E=new Uint8Array(g);E.set(B.subarray(0,I)),B=E;}}})("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");if(g){const A=atob(I),g=new Blob([A],{type:B});return URL.createObjectURL(g)}return "data:"+B+";base64,"+I}});}
190
+ for (const propertyName of CONFIGURABLE_PROPERTY_NAMES) {
191
+ const propertyValue = configuration[propertyName];
192
+ if (propertyValue !== UNDEFINED_VALUE) {
193
+ config[propertyName] = propertyValue;
194
+ }
195
+ }
196
+ }
197
+
198
+ 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],o=[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],a=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],h=new Uint8Array(288);h.fill(8,0,144),h.fill(9,144,256),h.fill(7,256,280),h.fill(8,280,288);const l=new Uint8Array(30).fill(5);function n(r){const t=new Uint16Array(16);for(const o of r)t[o]++;t[0]=0;const o=new Uint16Array(17);for(let r=1;15>=r;r++)o[r+1]=o[r]+t[r];const e=new Uint16Array(r.length);for(let t=0;t<r.length;t++)r[t]&&(e[o[r[t]]++]=t);return {t:t,symbols:e}}const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function f(f){f({workerURI:f=>{const q="text/javascript",P=(s=>{let f=0,q=0,P=0,V=new Uint8Array(1024),d=0,u=0;for(;!u;){u=H(1);const r=H(2);if(0==r)K();else if(1==r)X(n(h),n(l));else {if(2!=r)throw Error("invalid deflate block type");X(...i());}}return V.subarray(0,d);function G(){if(f>=s.length)throw Error("unexpected end of deflate data");return s[f++]}function H(r){for(;r>P;)q|=G()<<P,P+=8;const t=q&(1<<r)-1;return q>>>=r,P-=r,t}function K(){q=0,P=0;const r=G()|G()<<8;f+=2,y(d+r);for(let t=0;r>t;t++)V[d++]=G();}function X(a,h){let l=b(a);for(;256!=l;){if(256>l)y(d+1),V[d++]=l;else {const a=l-257,n=r[a]+H(t[a]),s=b(h),f=o[s]+H(e[s]);y(d+n);const q=d-f;for(let r=0;n>r;r++)V[d++]=V[q+r];}l=b(a);}}function i(){const r=H(5)+257,t=H(5)+1,o=H(4)+4,e=new Uint8Array(19);for(let r=0;o>r;r++)e[a[r]]=H(3);const h=n(e),l=new Uint8Array(r+t);let s=0;for(;s<l.length;){const r=b(h);if(16>r)l[s++]=r;else if(16==r){const r=l[s-1];let t=H(2)+3;for(;t--;)l[s++]=r;}else s+=17==r?H(3)+3:H(7)+11;}return [n(l.subarray(0,r)),n(l.subarray(r))]}function b(r){const{t:t,symbols:o}=r;let e=0,a=0,h=0;for(let r=1;15>=r;r++){e|=H(1);const l=t[r];if(l>e-a)return o[h+(e-a)];h+=l,a=a+l<<1,e<<=1;}throw Error("invalid huffman code")}function y(r){if(V.length<r){let t=2*V.length;for(;r>t;)t*=2;const o=new Uint8Array(t);o.set(V.subarray(0,d)),V=o;}}})((r=>{const t=(r=(r+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,o=[];for(let e=0;t>e;e+=4){const t=s.indexOf(r[e])<<18|s.indexOf(r[e+1])<<12|(63&s.indexOf(r[e+2]))<<6|63&s.indexOf(r[e+3]);o.push(t>>16&255),"="!==r[e+2]&&o.push(t>>8&255),"="!==r[e+3]&&o.push(255&t);}return new Uint8Array(o)})("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"));if(f){const r=new Blob([P],{type:q});return URL.createObjectURL(r)}return "data:"+q+";base64,"+(r=>{let t="";const o=r.length;let e=0;for(;o>e+2;e+=3){const o=r[e]<<16|r[e+1]<<8|r[e+2];t+=s[o>>18&63]+s[o>>12&63]+s[o>>6&63]+s[63&o];}const a=o-e;if(1===a){const o=r[e]<<16;t+=s[o>>18&63]+s[o>>12&63]+"==";}else if(2===a){const o=r[e]<<16|r[e+1]<<8;t+=s[o>>18&63]+s[o>>12&63]+s[o>>6&63]+"=";}return t})(P)}});}
209
199
 
210
200
  /*
211
201
  Copyright (c) 2022 Gildas Lormeau. All rights reserved.
@@ -1218,8 +1208,6 @@ function getRandomValues(array) {
1218
1208
  if (GET_RANDOM_VALUES_SUPPORTED) {
1219
1209
  return crypto.getRandomValues(array);
1220
1210
  } else {
1221
- // all supported runtimes expose crypto.getRandomValues; failing hard beats
1222
- // silently generating predictable encryption salts
1223
1211
  throw new Error(ERR_UNSUPPORTED_CRYPTO_API);
1224
1212
  }
1225
1213
  }
@@ -1282,12 +1270,7 @@ class AESDecryptionStream extends TransformStream {
1282
1270
  constructor({ password, rawPassword, encryptionStrength, checkPasswordOnly }) {
1283
1271
  super({
1284
1272
  start() {
1285
- Object.assign(this, {
1286
- ready: new Promise(resolve => this.resolveReady = resolve),
1287
- password: encodePassword(password, rawPassword),
1288
- strength: encryptionStrength - 1,
1289
- pending: new Uint8Array()
1290
- });
1273
+ initAesCrypto(this, password, rawPassword, encryptionStrength);
1291
1274
  },
1292
1275
  async transform(chunk, controller) {
1293
1276
  const aesCrypto = this;
@@ -1322,7 +1305,7 @@ class AESDecryptionStream extends TransformStream {
1322
1305
  await ready;
1323
1306
  const chunkToDecrypt = subarray(pending, 0, pending.length - SIGNATURE_LENGTH);
1324
1307
  const originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH);
1325
- let decryptedChunkArray = new Uint8Array();
1308
+ let decryptedChunkArray = EMPTY_UINT8_ARRAY;
1326
1309
  if (chunkToDecrypt.length) {
1327
1310
  const encryptedChunk = toBits(codecBytes, chunkToDecrypt);
1328
1311
  hmac.update(encryptedChunk);
@@ -1330,8 +1313,6 @@ class AESDecryptionStream extends TransformStream {
1330
1313
  decryptedChunkArray = fromBits(codecBytes, decryptedChunk);
1331
1314
  }
1332
1315
  const signature = subarray(fromBits(codecBytes, hmac.digest()), 0, SIGNATURE_LENGTH);
1333
- // branch-free comparison: accumulate the differences instead of
1334
- // short-circuiting on the first mismatching byte
1335
1316
  let invalidSignature = pending.length < SIGNATURE_LENGTH ? 1 : 0;
1336
1317
  for (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) {
1337
1318
  invalidSignature |= signature[indexSignature] ^ originalSignature[indexSignature];
@@ -1353,12 +1334,7 @@ class AESEncryptionStream extends TransformStream {
1353
1334
  let stream;
1354
1335
  super({
1355
1336
  start() {
1356
- Object.assign(this, {
1357
- ready: new Promise(resolve => this.resolveReady = resolve),
1358
- password: encodePassword(password, rawPassword),
1359
- strength: encryptionStrength - 1,
1360
- pending: new Uint8Array()
1361
- });
1337
+ initAesCrypto(this, password, rawPassword, encryptionStrength);
1362
1338
  },
1363
1339
  async transform(chunk, controller) {
1364
1340
  const aesCrypto = this;
@@ -1368,7 +1344,7 @@ class AESEncryptionStream extends TransformStream {
1368
1344
  resolveReady,
1369
1345
  ready
1370
1346
  } = aesCrypto;
1371
- let preamble = new Uint8Array();
1347
+ let preamble = EMPTY_UINT8_ARRAY;
1372
1348
  if (password) {
1373
1349
  preamble = await createEncryptionKeys(aesCrypto, strength, password);
1374
1350
  resolveReady();
@@ -1388,7 +1364,7 @@ class AESEncryptionStream extends TransformStream {
1388
1364
  } = this;
1389
1365
  if (hmac && ctr) {
1390
1366
  await ready;
1391
- let encryptedChunkArray = new Uint8Array();
1367
+ let encryptedChunkArray = EMPTY_UINT8_ARRAY;
1392
1368
  if (pending.length) {
1393
1369
  const encryptedChunk = ctr.update(toBits(codecBytes, pending));
1394
1370
  hmac.update(encryptedChunk);
@@ -1403,6 +1379,15 @@ class AESEncryptionStream extends TransformStream {
1403
1379
  }
1404
1380
  }
1405
1381
 
1382
+ function initAesCrypto(aesCrypto, password, rawPassword, encryptionStrength) {
1383
+ Object.assign(aesCrypto, {
1384
+ ready: new Promise(resolve => aesCrypto.resolveReady = resolve),
1385
+ password: encodePassword(password, rawPassword),
1386
+ strength: encryptionStrength - 1,
1387
+ pending: EMPTY_UINT8_ARRAY
1388
+ });
1389
+ }
1390
+
1406
1391
  function append(aesCrypto, input, output, paddingStart, paddingEnd, verifySignature) {
1407
1392
  const {
1408
1393
  ctr,
@@ -1564,20 +1549,13 @@ class ZipCryptoDecryptionStream extends TransformStream {
1564
1549
  constructor({ password, rawPassword, passwordVerification, checkPasswordOnly }) {
1565
1550
  super({
1566
1551
  start() {
1567
- Object.assign(this, {
1568
- password,
1569
- rawPassword,
1570
- passwordVerification
1571
- });
1572
- createKeys(this, password, rawPassword);
1552
+ initZipCrypto(this, password, rawPassword, passwordVerification);
1573
1553
  },
1574
1554
  transform(chunk, controller) {
1575
1555
  const zipCrypto = this;
1576
1556
  if (zipCrypto.password || zipCrypto.rawPassword) {
1577
1557
  const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
1578
1558
  zipCrypto.password = zipCrypto.rawPassword = null;
1579
- // verify the password with a branch-free comparison of the verification byte, mirroring
1580
- // the constant-time AES HMAC signature check
1581
1559
  if ((decryptedHeader.at(-1) ^ zipCrypto.passwordVerification) != 0) {
1582
1560
  throw new Error(ERR_INVALID_PASSWORD);
1583
1561
  }
@@ -1598,12 +1576,7 @@ class ZipCryptoEncryptionStream extends TransformStream {
1598
1576
  constructor({ password, rawPassword, passwordVerification }) {
1599
1577
  super({
1600
1578
  start() {
1601
- Object.assign(this, {
1602
- password,
1603
- rawPassword,
1604
- passwordVerification
1605
- });
1606
- createKeys(this, password, rawPassword);
1579
+ initZipCrypto(this, password, rawPassword, passwordVerification);
1607
1580
  },
1608
1581
  transform(chunk, controller) {
1609
1582
  const zipCrypto = this;
@@ -1627,6 +1600,15 @@ class ZipCryptoEncryptionStream extends TransformStream {
1627
1600
  }
1628
1601
  }
1629
1602
 
1603
+ function initZipCrypto(zipCrypto, password, rawPassword, passwordVerification) {
1604
+ Object.assign(zipCrypto, {
1605
+ password,
1606
+ rawPassword,
1607
+ passwordVerification
1608
+ });
1609
+ createKeys(zipCrypto, password, rawPassword);
1610
+ }
1611
+
1630
1612
  function decrypt(target, input) {
1631
1613
  const output = new Uint8Array(input.length);
1632
1614
  for (let index = 0; index < input.length; index++) {
@@ -1731,14 +1713,6 @@ class DeflateStream extends TransformStream {
1731
1713
  const stream = this;
1732
1714
  let crc32Stream, encryptionStream, gzipCrc32Stream;
1733
1715
  let readable = super.readable;
1734
- // The gzip trailer carries a CRC-32 of the uncompressed data (same polynomial as zip),
1735
- // computed in native code for free during compression. On the native CompressionStream,
1736
- // harvest it instead of running a separate CRC pass: compress as gzip, then strip the
1737
- // fixed 10-byte header and 8-byte trailer to recover the exact raw-deflate payload
1738
- // (byte-identical to a deflate-raw compression) while capturing the CRC. The CRC becomes
1739
- // available at end-of-stream, exactly like Crc32Stream, so nothing downstream (data
1740
- // descriptor, central directory, ZipCrypto) needs it any earlier. Not applied for the
1741
- // pure-JS/WASM ports (a separate slice-by-8 CRC pass is as fast or faster there).
1742
1716
  const useGzipCrc32 = signed && compressed && !deflate64 && (!encrypted || zipCrypto) &&
1743
1717
  Boolean(useCompressionStream && CompressionStream);
1744
1718
  if ((!encrypted || zipCrypto) && signed && !useGzipCrc32) {
@@ -1775,12 +1749,6 @@ class DeflateStream extends TransformStream {
1775
1749
  }
1776
1750
  }
1777
1751
 
1778
- // Converts a gzip stream into its raw-deflate payload while capturing the CRC-32 from the gzip
1779
- // trailer. The CompressionStream gzip header is always the fixed 10-byte form (FLG=0, no optional
1780
- // fields) per the Compression Streams spec, so it is stripped by length; the trailer is the last
1781
- // 8 bytes (CRC-32 LE, then ISIZE LE). Bounded memory: at most GZIP_TRAILER_LENGTH bytes are held
1782
- // back across chunks. The signature is read big-endian-agnostically as a number, matching the
1783
- // value Crc32Stream produces, so the writer path is unchanged.
1784
1752
  class GzipToRawDeflateStream extends TransformStream {
1785
1753
 
1786
1754
  constructor() {
@@ -1806,10 +1774,6 @@ class GzipToRawDeflateStream extends TransformStream {
1806
1774
  tail = pending;
1807
1775
  return;
1808
1776
  }
1809
- // Emit everything except the trailing GZIP_TRAILER_LENGTH bytes as a standalone,
1810
- // right-sized Uint8Array. Consumers may read chunk.buffer directly (e.g. custom
1811
- // writers), so an aliased subarray of a larger buffer would leak the held-back
1812
- // trailer bytes. Bytes are copied exactly once, into `output` or `tail`.
1813
1777
  const emitLength = available - GZIP_TRAILER_LENGTH;
1814
1778
  const output = new Uint8Array(emitLength);
1815
1779
  const fromTail = Math.min(emitLength, tail.length);
@@ -1898,11 +1862,6 @@ function pipeThroughCommpressionStream(readable, useCompressionStream, options,
1898
1862
  throw error;
1899
1863
  }
1900
1864
  }
1901
- // The native CompressionStream/DecompressionStream and the pure-JS zlib port do not signal
1902
- // backpressure on their writable side (their `ready` never pends), so a plain pipeThrough drains
1903
- // the whole source into them and peak memory grows with the entry size. Awaiting each write()
1904
- // paces the source to the codec's consumption rate, keeping streaming memory bounded. The WASM
1905
- // codec already backpressures, so this is a no-op cost for it.
1906
1865
  return pipeThroughBackpressured(readable, codecStream);
1907
1866
  }
1908
1867
 
@@ -1910,10 +1869,6 @@ function pipeThrough(readable, transformStream) {
1910
1869
  return readable.pipeThrough(transformStream);
1911
1870
  }
1912
1871
 
1913
- // Like readable.pipeThrough(transformStream), but drives the writable side manually and awaits each
1914
- // write() so that a codec which under-reports backpressure cannot pull the whole source into memory.
1915
- // Errors propagate in both directions: a source error aborts the codec; a downstream cancel/error
1916
- // (surfaced through the codec's writable rejecting) cancels the source.
1917
1872
  function pipeThroughBackpressured(readable, transformStream) {
1918
1873
  const writer = transformStream.writable.getWriter();
1919
1874
  const reader = readable.getReader();
@@ -1942,7 +1897,7 @@ async function abort(writer, error) {
1942
1897
  try {
1943
1898
  await writer.abort(error);
1944
1899
  } catch {
1945
- // the writable may already be errored/closed
1900
+ // ignored: the writable may already be errored/closed
1946
1901
  }
1947
1902
  }
1948
1903
 
@@ -1950,13 +1905,10 @@ async function cancel(reader, error) {
1950
1905
  try {
1951
1906
  await reader.cancel(error);
1952
1907
  } catch {
1953
- // the readable may already be errored/closed
1908
+ // ignored: the readable may already be errored/closed
1954
1909
  }
1955
1910
  }
1956
1911
 
1957
- // DecompressionStream implementations can fail with a message-less TypeError on malformed
1958
- // input; give these errors an identifiable message (errors raised by the other stages of
1959
- // the pipeline, e.g. ERR_INVALID_PASSWORD, always carry a message and pass through as-is)
1960
1912
  function mapInflateStreamError(readable) {
1961
1913
  const reader = readable.getReader();
1962
1914
  return new ReadableStream({
@@ -2281,9 +2233,6 @@ async function runWorker$1({ options, readable, writable, onTaskFinished }, conf
2281
2233
  try {
2282
2234
  await initModule(config);
2283
2235
  } catch {
2284
- // The WASM module failed to load. Fall back to the native CompressionStream only if the
2285
- // zlib codec that would otherwise run depends on that module; a self-contained codec
2286
- // supplied through config (e.g. the pure-JS port) stays usable and is kept as requested.
2287
2236
  const ZlibStream = options.codecType.startsWith(CODEC_DEFLATE) ?
2288
2237
  config.CompressionStreamZlib :
2289
2238
  config.DecompressionStreamZlib;
@@ -2361,7 +2310,6 @@ async function runWebWorker(workerData, config) {
2361
2310
  return resultValue;
2362
2311
  } catch (error) {
2363
2312
  await closeWritable();
2364
- // unblock the pipe watcher if the worker died before closing its end of the stream
2365
2313
  abortPipe();
2366
2314
  try {
2367
2315
  await closed;
@@ -2386,8 +2334,6 @@ function watchClosedStream(writableSource) {
2386
2334
  const abortController = new AbortController();
2387
2335
  const { writable, readable } = new TransformStream();
2388
2336
  const closed = readable.pipeTo(writableSource, { preventClose: true, preventAbort: true, signal: abortController.signal });
2389
- // the pipe can fail before `closed` is awaited (e.g. the destination write fails);
2390
- // mark the rejection as handled so it cannot kill the process in the meantime
2391
2337
  closed.catch(() => { });
2392
2338
  return { writable, closed, abortPipe: () => abortController.abort() };
2393
2339
  }
@@ -2480,8 +2426,6 @@ function onWorkerError(event, workerData) {
2480
2426
  event.preventDefault();
2481
2427
  }
2482
2428
  const { rejectResult, writer, onTaskFinished } = workerData;
2483
- // the worker is unusable (e.g. its script failed to load); terminate it and
2484
- // fail the current task instead of letting it hang forever
2485
2429
  terminateWorker$1(workerData);
2486
2430
  if (rejectResult) {
2487
2431
  rejectResult(event.error || new Error(event.message || ERROR_EVENT_TYPE));
@@ -2533,8 +2477,6 @@ function sendMessage(message, { worker, writer, transferStreams }) {
2533
2477
  async function onMessage({ data }, workerData) {
2534
2478
  const { type, value, messageId, result, error } = data;
2535
2479
  const { reader, writer, resolveResult, rejectResult, onTaskFinished, generation } = workerData;
2536
- // continuations below can settle after the worker slot has been reassigned to a new
2537
- // task (e.g. a pending pull read failing late); they must not touch the new task
2538
2480
  const stale = () => workerData.generation != generation;
2539
2481
  try {
2540
2482
  if (error) {
@@ -2790,26 +2732,24 @@ class Stream {
2790
2732
  class Reader extends Stream {
2791
2733
 
2792
2734
  get readable() {
2735
+ return this.createReadable();
2736
+ }
2737
+
2738
+ createReadable({ offset = 0, size, diskNumberStart, chunkSize = DEFAULT_CHUNK_SIZE } = {}) {
2793
2739
  const reader = this;
2794
- const { chunkSize = DEFAULT_CHUNK_SIZE } = reader;
2795
- const readable = new ReadableStream({
2796
- start() {
2797
- this.chunkOffset = 0;
2798
- },
2740
+ let chunkOffset = 0;
2741
+ return new ReadableStream({
2799
2742
  async pull(controller) {
2800
- const { offset = 0, size, diskNumberStart } = readable;
2801
- const { chunkOffset } = this;
2802
2743
  const dataSize = size === UNDEFINED_VALUE ? chunkSize : Math.min(chunkSize, size - chunkOffset);
2803
2744
  const data = await readUint8Array(reader, offset + chunkOffset, dataSize, diskNumberStart);
2804
2745
  controller.enqueue(data);
2805
2746
  if ((chunkOffset + chunkSize > size) || (size === UNDEFINED_VALUE && !data.length && dataSize)) {
2806
2747
  controller.close();
2807
2748
  } else {
2808
- this.chunkOffset += chunkSize;
2749
+ chunkOffset += chunkSize;
2809
2750
  }
2810
2751
  }
2811
2752
  });
2812
- return readable;
2813
2753
  }
2814
2754
  }
2815
2755
 
@@ -2948,8 +2888,6 @@ class BlobWriter extends Stream {
2948
2888
  }
2949
2889
  });
2950
2890
  writer.blob = new Response(transformStream.readable, { headers }).blob();
2951
- // mark early rejections (e.g. aborted pipe) as handled; awaiting getData() still
2952
- // surfaces them
2953
2891
  writer.blob.catch(() => { });
2954
2892
  }
2955
2893
 
@@ -3111,7 +3049,7 @@ async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest,
3111
3049
  return eocdCache;
3112
3050
  }
3113
3051
  if (index >= size || length === 0) {
3114
- return new Uint8Array();
3052
+ return EMPTY_UINT8_ARRAY;
3115
3053
  } else {
3116
3054
  if (index + length > size) {
3117
3055
  length = size - index;
@@ -3168,8 +3106,6 @@ async function getXMLHttpRequestData(httpReader) {
3168
3106
  async function getRequestData(httpReader, sendRequest) {
3169
3107
  const response = await sendRequest(HTTP_METHOD_GET, httpReader, getHeaders(httpReader));
3170
3108
  httpReader.data = new Uint8Array(await response.arrayBuffer());
3171
- // the downloaded content is authoritative, e.g. the Content-Length response header
3172
- // of the HEAD request can be the encoded size when the content is compressed
3173
3109
  httpReader.size = httpReader.data.length;
3174
3110
  }
3175
3111
 
@@ -3234,7 +3170,6 @@ class HttpReader extends Reader {
3234
3170
  super();
3235
3171
  Object.assign(this, {
3236
3172
  url,
3237
- // an explicit fetch implementation takes precedence over useXHR
3238
3173
  reader: options.useXHR && !options.fetch ? new XHRReader(url, options) : new FetchReader(url, options)
3239
3174
  });
3240
3175
  }
@@ -3373,7 +3308,7 @@ class SplitDataReader extends Reader {
3373
3308
  }
3374
3309
  }
3375
3310
  } else {
3376
- result = new Uint8Array();
3311
+ result = EMPTY_UINT8_ARRAY;
3377
3312
  }
3378
3313
  reader.lastDiskNumber = Math.max(currentDiskNumber, reader.lastDiskNumber);
3379
3314
  return result;
@@ -3418,8 +3353,6 @@ class SplitDataWriter extends Stream {
3418
3353
  writer.diskOffset += diskSourceWriter.size;
3419
3354
  writer.diskNumber++;
3420
3355
  diskWriter = null;
3421
- // the next disk is not opened yet but its space is available; leaving a
3422
- // stale value here would force a new disk for every subsequent write
3423
3356
  writer.availableSize = writer.maxSize;
3424
3357
  if (chunk.length > availableSize) {
3425
3358
  await this.write(chunk.subarray(availableSize));
@@ -3599,7 +3532,6 @@ function decodeText(value, encoding) {
3599
3532
  if (encoding && encoding.trim().toLowerCase() == "cp437") {
3600
3533
  return decodeCP437(value);
3601
3534
  } else {
3602
- // ignoreBOM keeps a leading U+FEFF in filenames/comments instead of dropping it
3603
3535
  return new TextDecoder(encoding, { ignoreBOM: true }).decode(value);
3604
3536
  }
3605
3537
  }
@@ -3847,8 +3779,6 @@ const ERR_AMBIGUOUS_ARCHIVE = "Ambiguous archive";
3847
3779
  const CHARSET_UTF8 = "utf-8";
3848
3780
  const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
3849
3781
  const CHARSET_CP437 = "cp437";
3850
- // bits of the general purpose flag that change how an entry is interpreted; the level bits (1-2) are excluded
3851
- // because they are informative only
3852
3782
  const BITFLAG_AMBIGUITY_MASK = BITFLAG_ENCRYPTED | BITFLAG_DATA_DESCRIPTOR | BITFLAG_LANG_ENCODING_FLAG;
3853
3783
  const ZIP64_PROPERTIES = [
3854
3784
  [PROPERTY_NAME_UNCOMPRESSED_SIZE, MAX_32_BITS],
@@ -3890,7 +3820,6 @@ class ZipReader {
3890
3820
  if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
3891
3821
  throw new Error(ERR_BAD_FORMAT);
3892
3822
  }
3893
- reader.chunkSize = getChunkSize(config);
3894
3823
  const strictness = getStrictness(getOptionValue$1(zipReader, options, OPTION_STRICTNESS), getOptionValue$1(zipReader, options, OPTION_CHECK_AMBIGUITY));
3895
3824
  const checkAmbiguity = strictness == STRICTNESS_STRICT;
3896
3825
  const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
@@ -3905,8 +3834,6 @@ class ZipReader {
3905
3834
  throw new Error(ERR_EOCDR_NOT_FOUND);
3906
3835
  }
3907
3836
  }
3908
- // two or more end-anchored records that each dereference to a valid central directory cannot be told
3909
- // apart (see comment_length ⟺ EOF): the archive is genuinely ambiguous, so refuse rather than guess
3910
3837
  if (rejectAmbiguousEndOfDirectory && endOfDirectoryReachingEndCount > 1) {
3911
3838
  throwAmbiguousArchive("multiple end of central directory records");
3912
3839
  }
@@ -3929,7 +3856,7 @@ class ZipReader {
3929
3856
  if (directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || filesLength == MAX_16_BITS || diskNumber == MAX_16_BITS) {
3930
3857
  const endOfDirectoryLocatorArray = endOfDirectoryInfo.offset >= ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH ?
3931
3858
  await readUint8Array(reader, endOfDirectoryInfo.offset - ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH) :
3932
- new Uint8Array();
3859
+ EMPTY_UINT8_ARRAY;
3933
3860
  const endOfDirectoryLocatorView = getDataView$1(endOfDirectoryLocatorArray);
3934
3861
  if (endOfDirectoryLocatorArray.length == ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH &&
3935
3862
  getUint32(endOfDirectoryLocatorView, 0) == ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE) {
@@ -3996,12 +3923,6 @@ class ZipReader {
3996
3923
  }
3997
3924
  const expectedDirectoryDataOffset = centralDirectoryEndOffset - directoryDataLength - (reader.lastDiskOffset || 0);
3998
3925
  if (directoryDataOffset != expectedDirectoryDataOffset && diskNumber == lastDiskNumber) {
3999
- // the reconciled offset (the directory ends exactly where the canonical record begins) is anchored
4000
- // to the unforgeable end of the archive; the stored offset is not. Prefer the reconciled offset
4001
- // unless the stored one points at a directory and the reconciled one does not — that exception
4002
- // keeps a corrupt declared directory length from sending the read astray, while still moving off a
4003
- // stored offset that only looks valid because an append remnant left the previous (identically
4004
- // laid out) directory sitting there.
4005
3926
  const storedPointsAtDirectory = getUint32(directoryView, offset) == CENTRAL_FILE_HEADER_SIGNATURE;
4006
3927
  let reconcile = !storedPointsAtDirectory;
4007
3928
  if (!reconcile && expectedDirectoryDataOffset >= 0 && expectedDirectoryDataOffset + 4 <= reader.size) {
@@ -4158,11 +4079,11 @@ class ZipReader {
4158
4079
  const extractPrependedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_PREPENDED_DATA);
4159
4080
  const extractAppendedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_APPENDED_DATA);
4160
4081
  if (extractPrependedData) {
4161
- zipReader.prependedData = startOffset > 0 ? await readUint8Array(reader, 0, startOffset) : new Uint8Array();
4082
+ zipReader.prependedData = startOffset > 0 ? await readUint8Array(reader, 0, startOffset) : EMPTY_UINT8_ARRAY;
4162
4083
  }
4163
- zipReader.comment = commentLength ? await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength) : new Uint8Array();
4084
+ zipReader.comment = commentLength ? await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength) : EMPTY_UINT8_ARRAY;
4164
4085
  if (extractAppendedData) {
4165
- zipReader.appendedData = appendedDataOffset < reader.size ? await readUint8Array(reader, appendedDataOffset, reader.size - appendedDataOffset) : new Uint8Array();
4086
+ zipReader.appendedData = appendedDataOffset < reader.size ? await readUint8Array(reader, appendedDataOffset, reader.size - appendedDataOffset) : EMPTY_UINT8_ARRAY;
4166
4087
  }
4167
4088
  return true;
4168
4089
  }
@@ -4274,7 +4195,7 @@ let ZipEntry$1 = class ZipEntry {
4274
4195
  filenameLength
4275
4196
  } = localDirectory;
4276
4197
  const checkAmbiguity = getStrictness(getOptionValue$1(zipEntry, options, OPTION_STRICTNESS), getOptionValue$1(zipEntry, options, OPTION_CHECK_AMBIGUITY)) == STRICTNESS_STRICT;
4277
- let rawLocalFilename = new Uint8Array();
4198
+ let rawLocalFilename = EMPTY_UINT8_ARRAY;
4278
4199
  if (checkAmbiguity && (filenameLength || extraFieldLength)) {
4279
4200
  const trailingDataArray = await readUint8Array(reader, offset + HEADER_SIZE, filenameLength + extraFieldLength, diskNumberStart);
4280
4201
  rawLocalFilename = trailingDataArray.subarray(0, filenameLength);
@@ -4282,7 +4203,7 @@ let ZipEntry$1 = class ZipEntry {
4282
4203
  } else {
4283
4204
  localDirectory.rawExtraField = extraFieldLength ?
4284
4205
  await readUint8Array(reader, offset + HEADER_SIZE + filenameLength, extraFieldLength, diskNumberStart) :
4285
- new Uint8Array();
4206
+ EMPTY_UINT8_ARRAY;
4286
4207
  }
4287
4208
  readCommonFooter(zipEntry, localDirectory, dataView, 4, true);
4288
4209
  if (checkAmbiguity) {
@@ -4309,12 +4230,7 @@ let ZipEntry$1 = class ZipEntry {
4309
4230
  }
4310
4231
  const dataOffset = offset + HEADER_SIZE + filenameLength + extraFieldLength;
4311
4232
  const size = compressedSize;
4312
- const readable = reader.readable;
4313
- Object.assign(readable, {
4314
- diskNumberStart,
4315
- offset: dataOffset,
4316
- size
4317
- });
4233
+ const readable = reader.createReadable({ offset: dataOffset, size, diskNumberStart, chunkSize: getChunkSize(config) });
4318
4234
  const signal = getOptionValue$1(zipEntry, options, OPTION_SIGNAL);
4319
4235
  const checkPasswordOnly = getOptionValue$1(zipEntry, options, OPTION_CHECK_PASSWORD_ONLY);
4320
4236
  let checkOverlappingEntry = getOptionValue$1(zipEntry, options, OPTION_CHECK_OVERLAPPING_ENTRY);
@@ -4585,7 +4501,6 @@ function readExtraFieldUnix(extraField, directory, isInfoZip) {
4585
4501
  const view = getDataView$1(new Uint8Array(extraField.data));
4586
4502
  let uid, gid;
4587
4503
  if (isInfoZip) {
4588
- // Info-ZIP New Unix "ux" field (0x7875): version + variable-length uid/gid
4589
4504
  let offset = 0;
4590
4505
  const version = getUint8(view, offset++);
4591
4506
  const uidSize = getUint8(view, offset++);
@@ -4595,8 +4510,6 @@ function readExtraFieldUnix(extraField, directory, isInfoZip) {
4595
4510
  gid = unpackUnixId(extraField.data.subarray(offset, offset + gidSize));
4596
4511
  Object.assign(extraField, { version, uid, gid });
4597
4512
  } else if (extraField.data.length >= 4) {
4598
- // Info-ZIP Unix "Ux" field (0x7855): fixed 2-byte uid + gid (the file mode, if any, is
4599
- // carried in the external file attributes, not here)
4600
4513
  uid = getUint16(view, 0);
4601
4514
  gid = getUint16(view, 2);
4602
4515
  Object.assign(extraField, { uid, gid });
@@ -4648,7 +4561,6 @@ function readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory,
4648
4561
  timeProperties.forEach((propertyName, indexProperty) => {
4649
4562
  if (extraFieldExtendedTimestamp.data.length >= offset + 4) {
4650
4563
  const time = getUint32(extraFieldView, offset);
4651
- // the extended timestamp is a signed 32-bit time_t value
4652
4564
  directory[propertyName] = extraFieldExtendedTimestamp[propertyName] = new Date((time | 0) * 1000);
4653
4565
  const rawPropertyName = timeRawProperties[indexProperty];
4654
4566
  extraFieldExtendedTimestamp[rawPropertyName] = time;
@@ -4725,7 +4637,6 @@ async function detectOverlappingEntry({
4725
4637
 
4726
4638
  function getStrictness(strictness, checkAmbiguity) {
4727
4639
  if (strictness === UNDEFINED_VALUE) {
4728
- // `checkAmbiguity: true` is kept as a backward-compatible alias for the strictest mode
4729
4640
  return checkAmbiguity ? STRICTNESS_STRICT : STRICTNESS_BALANCED;
4730
4641
  }
4731
4642
  return strictness;
@@ -4736,81 +4647,45 @@ function getMaxAppendedDataSize(maxAppendedDataSize, strictness) {
4736
4647
  return maxAppendedDataSize;
4737
4648
  }
4738
4649
  if (strictness == STRICTNESS_STRICT) {
4739
- // the comment must reach the end of the file: no trailing data tolerated
4740
4650
  return 0;
4741
4651
  }
4742
4652
  if (strictness == STRICTNESS_TOLERANT) {
4743
4653
  return Infinity;
4744
4654
  }
4745
- // balanced: tolerate up to a legal comment's worth of trailing data (a 16-bit length); beyond that the
4746
- // trailing bytes cannot hide inside a comment, so they are treated as a second thing bolted onto the file
4747
4655
  return MAX_16_BITS;
4748
4656
  }
4749
4657
 
4750
- // cap on how many out-of-window central directory probes the scan below may issue. A legitimate archive needs
4751
- // at most a couple (the canonical record, plus one more to detect genuine ambiguity); every other reachability
4752
- // check is served from the tail window already in memory. The cap keeps an archive whose comment is stuffed
4753
- // with unreachable end-anchored records from forcing an unbounded number of (potentially remote) reads.
4754
4658
  const MAX_END_OF_CENTRAL_DIR_PROBES = 64;
4755
4659
 
4756
- // reachability rankings for an end-anchored candidate record (see getCentralDirectoryReachability)
4757
4660
  const CENTRAL_DIRECTORY_UNREACHABLE = 0;
4758
4661
  const CENTRAL_DIRECTORY_PLAUSIBLE = 1;
4759
4662
  const CENTRAL_DIRECTORY_REACHABLE = 2;
4760
4663
 
4761
- // Locates the authoritative end of central directory record. The canonical record is the last one whose
4762
- // declared comment reaches exactly the end of the file ("end-anchored") and that points to a central directory
4763
- // ("reachable"); earlier signatures (stale append remnants, bytes embedded in a comment) are ignored. When two
4764
- // or more end-anchored records point to a central directory the archive is ambiguous, and the count is returned
4765
- // so the caller can refuse it. A record that reaches the end of the file but points to no central directory (an
4766
- // empty archive) is only "plausible": it cannot be corroborated, so it never counts towards ambiguity and is
4767
- // chosen only when no reachable record exists — otherwise an empty record forged in a comment could outrank the
4768
- // genuine directory. When no record is end-anchored (appended data or an oversized comment), falls back to the
4769
- // last record within the tolerated window that points to a directory (see seekEndOfCentralDirectory).
4770
4664
  async function findEndOfCentralDirectory(reader, rejectAmbiguous, maxAppendedDataSize) {
4771
4665
  const { size } = reader;
4772
- // an end-anchored record can only live within the last END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS bytes,
4773
- // since the comment length that ties it to the end of the file is a 16-bit field
4774
4666
  const anchoredLength = Math.min(size, END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS);
4775
- const anchoredOffset = size - anchoredLength;
4776
- const anchoredArray = await readUint8Array(reader, anchoredOffset, anchoredLength);
4777
- const anchoredView = getDataView$1(anchoredArray);
4778
4667
  const remoteProbeBudget = { count: MAX_END_OF_CENTRAL_DIR_PROBES };
4779
4668
  let endOfDirectoryInfo;
4780
4669
  let plausibleEndOfDirectoryInfo;
4781
4670
  let endOfDirectoryReachingEndCount = 0;
4782
- for (let indexByte = anchoredArray.length - END_OF_CENTRAL_DIR_LENGTH; indexByte >= 0; indexByte--) {
4783
- if (getUint32(anchoredView, indexByte) == END_OF_CENTRAL_DIR_SIGNATURE) {
4784
- const offset = anchoredOffset + indexByte;
4785
- const commentLength = getUint16(anchoredView, indexByte + 20);
4786
- // end-anchored: the declared comment extends exactly to the end of the file. The comment length is
4787
- // attacker-controlled, but the reconciliation against the (unforgeable) end of file is not.
4788
- if (offset + END_OF_CENTRAL_DIR_LENGTH + commentLength == size) {
4789
- const reachability = await getCentralDirectoryReachability(reader, anchoredView, anchoredOffset, indexByte, offset, size, remoteProbeBudget);
4790
- if (reachability == CENTRAL_DIRECTORY_REACHABLE) {
4791
- if (!endOfDirectoryInfo) {
4792
- endOfDirectoryInfo = {
4793
- offset,
4794
- buffer: anchoredArray.slice(indexByte, indexByte + END_OF_CENTRAL_DIR_LENGTH).buffer
4795
- };
4796
- }
4797
- endOfDirectoryReachingEndCount++;
4798
- // the canonical record (highest offset) is found first; a second one is enough to flag ambiguity
4799
- if (!rejectAmbiguous || endOfDirectoryReachingEndCount > 1) {
4800
- break;
4801
- }
4802
- } else if (reachability == CENTRAL_DIRECTORY_PLAUSIBLE && !plausibleEndOfDirectoryInfo) {
4803
- plausibleEndOfDirectoryInfo = {
4804
- offset,
4805
- buffer: anchoredArray.slice(indexByte, indexByte + END_OF_CENTRAL_DIR_LENGTH).buffer
4806
- };
4671
+ for await (const [anchoredView, anchoredOffset, anchoredArray, indexByte, offset] of scanEndOfCentralDirectory(reader, anchoredLength)) {
4672
+ const commentLength = getUint16(anchoredView, indexByte + 20);
4673
+ if (offset + END_OF_CENTRAL_DIR_LENGTH + commentLength == size) {
4674
+ const reachability = await getCentralDirectoryReachability(reader, anchoredView, anchoredOffset, indexByte, offset, size, remoteProbeBudget);
4675
+ if (reachability == CENTRAL_DIRECTORY_REACHABLE) {
4676
+ if (!endOfDirectoryInfo) {
4677
+ endOfDirectoryInfo = getEndOfCentralDirectoryInfo(anchoredArray, indexByte, offset);
4678
+ }
4679
+ endOfDirectoryReachingEndCount++;
4680
+ if (!rejectAmbiguous || endOfDirectoryReachingEndCount > 1) {
4681
+ break;
4807
4682
  }
4683
+ } else if (reachability == CENTRAL_DIRECTORY_PLAUSIBLE && !plausibleEndOfDirectoryInfo) {
4684
+ plausibleEndOfDirectoryInfo = getEndOfCentralDirectoryInfo(anchoredArray, indexByte, offset);
4808
4685
  }
4809
4686
  }
4810
4687
  }
4811
4688
  if (!endOfDirectoryInfo) {
4812
- // no record points to a directory: prefer a plausible (empty) end-anchored record before scanning the
4813
- // tolerated window for a bare signature
4814
4689
  endOfDirectoryInfo = plausibleEndOfDirectoryInfo;
4815
4690
  }
4816
4691
  if (!endOfDirectoryInfo) {
@@ -4819,69 +4694,53 @@ async function findEndOfCentralDirectory(reader, rejectAmbiguous, maxAppendedDat
4819
4694
  return { endOfDirectoryInfo, endOfDirectoryReachingEndCount };
4820
4695
  }
4821
4696
 
4822
- // Fallback for findEndOfCentralDirectory when no record is end-anchored: appended data or an oversized comment
4823
- // pushed the record's declared comment past the end of the file, so its position can no longer be reconciled
4824
- // against the end of the file. Scans the tolerated window from the end and returns the first record that points
4825
- // to a central directory, so a stray signature embedded in appended data cannot hijack discovery (which the
4826
- // anchored scan already prevents for anchored records). Falls back to the first plausible (empty) record, then
4827
- // to the last bare signature, so a degenerate archive still opens as before. The window ends at the file, so the
4828
- // same in-window / metered reads as the anchored scan apply.
4829
4697
  async function seekEndOfCentralDirectory(reader, maxAppendedDataSize, remoteProbeBudget) {
4830
4698
  const { size } = reader;
4831
4699
  const searchLength = Math.min(size, maxAppendedDataSize == Infinity ? size :
4832
4700
  END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS + maxAppendedDataSize);
4833
- const searchOffset = size - searchLength;
4834
- const searchArray = await readUint8Array(reader, searchOffset, searchLength);
4835
- const searchView = getDataView$1(searchArray);
4836
4701
  let firstSignatureInfo, plausibleInfo;
4837
- for (let indexByte = searchArray.length - END_OF_CENTRAL_DIR_LENGTH; indexByte >= 0; indexByte--) {
4838
- if (getUint32(searchView, indexByte) == END_OF_CENTRAL_DIR_SIGNATURE) {
4839
- const offset = searchOffset + indexByte;
4840
- const record = { offset, buffer: searchArray.slice(indexByte, indexByte + END_OF_CENTRAL_DIR_LENGTH).buffer };
4841
- if (!firstSignatureInfo) {
4842
- firstSignatureInfo = record;
4843
- }
4844
- const reachability = await getCentralDirectoryReachability(reader, searchView, searchOffset, indexByte, offset, size, remoteProbeBudget);
4845
- if (reachability == CENTRAL_DIRECTORY_REACHABLE) {
4846
- return record;
4847
- }
4848
- if (reachability == CENTRAL_DIRECTORY_PLAUSIBLE && !plausibleInfo) {
4849
- plausibleInfo = record;
4850
- }
4702
+ for await (const [searchView, searchOffset, searchArray, indexByte, offset] of scanEndOfCentralDirectory(reader, searchLength)) {
4703
+ const record = getEndOfCentralDirectoryInfo(searchArray, indexByte, offset);
4704
+ if (!firstSignatureInfo) {
4705
+ firstSignatureInfo = record;
4706
+ }
4707
+ const reachability = await getCentralDirectoryReachability(reader, searchView, searchOffset, indexByte, offset, size, remoteProbeBudget);
4708
+ if (reachability == CENTRAL_DIRECTORY_REACHABLE) {
4709
+ return record;
4710
+ }
4711
+ if (reachability == CENTRAL_DIRECTORY_PLAUSIBLE && !plausibleInfo) {
4712
+ plausibleInfo = record;
4851
4713
  }
4852
4714
  }
4853
4715
  return plausibleInfo || firstSignatureInfo;
4854
4716
  }
4855
4717
 
4856
- // Ranks how strongly an end-anchored candidate record is backed by an actual central directory, used to decide
4857
- // which record is canonical and which count towards ambiguity. It is intentionally conservative and does not
4858
- // fully parse the directory (the caller does that for the canonical record):
4859
- // - REACHABLE: the record dereferences a central directory (a central file header signature at the
4860
- // reconciled offset), or, for a zip64 record, the zip64 locator that a genuine zip64 archive places
4861
- // immediately before it. Only these count towards ambiguity.
4862
- // - PLAUSIBLE: the record describes an empty archive, which has no central directory to dereference. Its
4863
- // fields are indistinguishable from an empty end of central directory record forged inside a comment, so it
4864
- // is accepted only as a last resort and never inflates the ambiguity count.
4865
- // - UNREACHABLE: neither — stale append remnant or signature bytes embedded in a comment.
4866
- // Signatures are read from the tail window (`view`, spanning `[anchoredOffset, size)`) when they fall inside it;
4867
- // only a target below the window costs a (possibly remote) read, metered by `remoteProbeBudget` so a stuffed
4868
- // comment cannot amplify into an unbounded number of requests.
4718
+ async function* scanEndOfCentralDirectory(reader, scanLength) {
4719
+ const scanOffset = reader.size - scanLength;
4720
+ const scanArray = await readUint8Array(reader, scanOffset, scanLength);
4721
+ const scanView = getDataView$1(scanArray);
4722
+ for (let indexByte = scanArray.length - END_OF_CENTRAL_DIR_LENGTH; indexByte >= 0; indexByte--) {
4723
+ if (getUint32(scanView, indexByte) == END_OF_CENTRAL_DIR_SIGNATURE) {
4724
+ yield [scanView, scanOffset, scanArray, indexByte, scanOffset + indexByte];
4725
+ }
4726
+ }
4727
+ }
4728
+
4729
+ function getEndOfCentralDirectoryInfo(scanArray, indexByte, offset) {
4730
+ return { offset, buffer: scanArray.slice(indexByte, indexByte + END_OF_CENTRAL_DIR_LENGTH).buffer };
4731
+ }
4732
+
4869
4733
  async function getCentralDirectoryReachability(reader, view, anchoredOffset, indexByte, offset, size, remoteProbeBudget) {
4870
4734
  const filesLength = getUint16(view, indexByte + 10);
4871
4735
  const directoryDataLength = getUint32(view, indexByte + 12);
4872
4736
  const directoryDataOffset = getUint32(view, indexByte + 16);
4873
4737
  if (filesLength == MAX_16_BITS || directoryDataLength == MAX_32_BITS || directoryDataOffset == MAX_32_BITS) {
4874
- // saturated fields imply a zip64 record; corroborate it with the zip64 end of central directory locator
4875
- // that sits immediately before it, so saturated bytes inside a comment cannot masquerade as one
4876
4738
  const locatorSignature = await readSignature(reader, view, anchoredOffset, offset - ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH, size, remoteProbeBudget);
4877
4739
  return locatorSignature == ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE ? CENTRAL_DIRECTORY_REACHABLE : CENTRAL_DIRECTORY_UNREACHABLE;
4878
4740
  }
4879
4741
  if (!filesLength && !directoryDataLength) {
4880
- // a valid empty archive has no central directory to dereference
4881
4742
  return CENTRAL_DIRECTORY_PLAUSIBLE;
4882
4743
  }
4883
- // the central directory ends where this record starts; reconcile the stored offset against that actual
4884
- // position (see stored_cd_offset ⟺ eocd_pos − cd_size) so prepended data does not hide the directory
4885
4744
  for (const centralDirectoryOffset of [offset - directoryDataLength, directoryDataOffset]) {
4886
4745
  if (await readSignature(reader, view, anchoredOffset, centralDirectoryOffset, size, remoteProbeBudget) == CENTRAL_FILE_HEADER_SIGNATURE) {
4887
4746
  return CENTRAL_DIRECTORY_REACHABLE;
@@ -4890,15 +4749,11 @@ async function getCentralDirectoryReachability(reader, view, anchoredOffset, ind
4890
4749
  return CENTRAL_DIRECTORY_UNREACHABLE;
4891
4750
  }
4892
4751
 
4893
- // Reads a 4-byte little-endian signature at `signatureOffset`, served from the tail window (`view`, spanning
4894
- // `[anchoredOffset, size)`) when it falls inside it and otherwise from a metered (possibly remote) read. Returns
4895
- // UNDEFINED_VALUE when the position is out of range or the out-of-window read budget is exhausted.
4896
4752
  async function readSignature(reader, view, anchoredOffset, signatureOffset, size, remoteProbeBudget) {
4897
4753
  if (signatureOffset < 0 || signatureOffset + 4 > size) {
4898
4754
  return UNDEFINED_VALUE;
4899
4755
  }
4900
4756
  if (signatureOffset >= anchoredOffset) {
4901
- // the target sits inside the tail window already in memory: no extra read needed
4902
4757
  return getUint32(view, signatureOffset - anchoredOffset);
4903
4758
  }
4904
4759
  if (remoteProbeBudget.count > 0) {
@@ -4906,7 +4761,6 @@ async function readSignature(reader, view, anchoredOffset, signatureOffset, size
4906
4761
  const signatureArray = await readUint8Array(reader, signatureOffset, 4);
4907
4762
  return getUint32(getDataView$1(signatureArray), 0);
4908
4763
  }
4909
- // out of budget: leave this candidate unverified rather than issue another read
4910
4764
  return UNDEFINED_VALUE;
4911
4765
  }
4912
4766
 
@@ -4922,8 +4776,6 @@ function checkLocalDirectory(zipEntry, localDirectory, rawLocalFilename) {
4922
4776
  if (localDirectory.compressionMethod != zipEntry.compressionMethod) {
4923
4777
  throwAmbiguousArchive("mismatched local file header (compression method)");
4924
4778
  }
4925
- // when the data descriptor flag is set, the local signature and sizes are zeroed out; all-zero values are
4926
- // also tolerated when the flag is clear because some tools produce them (streaming writers predating bit 3)
4927
4779
  if (!localDirectory.bitFlag.dataDescriptor &&
4928
4780
  (localDirectory.signature || localDirectory.compressedSize || localDirectory.uncompressedSize) &&
4929
4781
  (localDirectory.signature != zipEntry.signature ||
@@ -5013,7 +4865,6 @@ const ERR_INVALID_VERSION = "Version exceeds 65535";
5013
4865
  const ERR_INVALID_ENCRYPTION_STRENGTH = "The strength must equal 1, 2, or 3";
5014
4866
  const ERR_INVALID_EXTRAFIELD_TYPE = "Extra field type exceeds 65535";
5015
4867
  const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
5016
- // same message as the constant exported by zip-reader.js
5017
4868
  const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
5018
4869
  const MIN_UNIX_TIME = -2147483648;
5019
4870
  const MAX_UNIX_TIME = 2147483647;
@@ -5096,12 +4947,12 @@ class ZipWriter {
5096
4947
  rawExtraField,
5097
4948
  } = entry;
5098
4949
  const { level, languageEncodingFlag, dataDescriptor } = bitFlag;
5099
- rawExtraFieldZip64 = rawExtraFieldZip64 || new Uint8Array();
5100
- rawExtraFieldAES = rawExtraFieldAES || new Uint8Array();
5101
- rawExtraFieldExtendedTimestamp = rawExtraFieldExtendedTimestamp || new Uint8Array();
5102
- rawExtraFieldNTFS = rawExtraFieldNTFS || new Uint8Array();
5103
- rawExtraFieldUnix = rawExtraFieldUnix || new Uint8Array();
5104
- rawExtraField = rawExtraField || new Uint8Array();
4950
+ rawExtraFieldZip64 = rawExtraFieldZip64 || EMPTY_UINT8_ARRAY;
4951
+ rawExtraFieldAES = rawExtraFieldAES || EMPTY_UINT8_ARRAY;
4952
+ rawExtraFieldExtendedTimestamp = rawExtraFieldExtendedTimestamp || EMPTY_UINT8_ARRAY;
4953
+ rawExtraFieldNTFS = rawExtraFieldNTFS || EMPTY_UINT8_ARRAY;
4954
+ rawExtraFieldUnix = rawExtraFieldUnix || EMPTY_UINT8_ARRAY;
4955
+ rawExtraField = rawExtraField || EMPTY_UINT8_ARRAY;
5105
4956
  if (entry.extraFieldAES) {
5106
4957
  compressionMethod = COMPRESSION_METHOD_AES;
5107
4958
  }
@@ -5207,7 +5058,7 @@ class ZipWriter {
5207
5058
  return false;
5208
5059
  }
5209
5060
 
5210
- async close(comment = new Uint8Array(), options = {}) {
5061
+ async close(comment = EMPTY_UINT8_ARRAY, options = {}) {
5211
5062
  const zipWriter = this;
5212
5063
  const { pendingAddFileCalls, writer } = this;
5213
5064
  const { writable } = writer;
@@ -5506,7 +5357,7 @@ function resolveMetadata(zipWriter, name, options) {
5506
5357
  if (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(encryptionStrength >= 1 && encryptionStrength <= 3)) {
5507
5358
  throw new Error(ERR_INVALID_ENCRYPTION_STRENGTH);
5508
5359
  }
5509
- let rawExtraField = new Uint8Array();
5360
+ let rawExtraField = EMPTY_UINT8_ARRAY;
5510
5361
  const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
5511
5362
  if (extraField) {
5512
5363
  let extraFieldSize = 0;
@@ -5567,8 +5418,6 @@ async function resolveSizes(zipWriter, reader, { resolvedOptions: metadata }, op
5567
5418
  let maximumCompressedSize = 0;
5568
5419
  let uncompressedSize = 0;
5569
5420
  if (passThrough) {
5570
- // the headers of a passThrough entry describe the payload verbatim: without a
5571
- // reader they would declare content that is not there
5572
5421
  if (!reader) {
5573
5422
  throw new Error(ERR_UNDEFINED_READER);
5574
5423
  }
@@ -5579,8 +5428,6 @@ async function resolveSizes(zipWriter, reader, { resolvedOptions: metadata }, op
5579
5428
  }
5580
5429
  const zip64Enabled = zip64 === true;
5581
5430
  const encrypted = getOptionValue(zipWriter, options, PROPERTY_NAME_ENCRYPTED);
5582
- // entries without a reader have no payload: write them as empty stored files instead of
5583
- // declaring a compressed or encrypted content that does not exist
5584
5431
  const encryptedEntry = Boolean(reader) && (Boolean((password && getLength(password)) || (rawPassword && getLength(rawPassword))) || (passThrough && encrypted));
5585
5432
  if (!reader) {
5586
5433
  level = 0;
@@ -5718,7 +5565,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
5718
5565
  fileEntry.diskNumberStart = writer.diskNumber;
5719
5566
  fileEntry.offset = getSegmentOffset(zipWriter, writer);
5720
5567
  if (usdz) {
5721
- // the padding depends on the entry offset, only known now that the writer is locked
5722
5568
  const previousMetadataSize = entryInfo.metadataSize;
5723
5569
  appendExtraFieldUSDZ(entryInfo, zipWriter.offset - writer.diskOffset);
5724
5570
  fileEntry.size += entryInfo.metadataSize - previousMetadataSize;
@@ -5761,10 +5607,6 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
5761
5607
  if (releaseLockWriter) {
5762
5608
  releaseLockWriter();
5763
5609
  }
5764
- // A buffered entry uses a temporary stream (see `createTempStream`). When that stream is
5765
- // backed by a resource (a file, an OPFS handle, ...) it must be released on every exit path,
5766
- // including the error path where the stream is otherwise abandoned without being closed or
5767
- // cancelled. `dispose()` is optional and best-effort so it never masks the original outcome.
5768
5610
  if (bufferedWrite && fileWriter && fileWriter.dispose) {
5769
5611
  try {
5770
5612
  await fileWriter.dispose();
@@ -5791,7 +5633,7 @@ async function getFileEntry(zipWriter, name, reader, entryInfo, options) {
5791
5633
  async function skipDiskIfNeeded() {
5792
5634
  if (getLength(headerInfo.localHeaderArray) > writer.availableSize) {
5793
5635
  writer.availableSize = 0;
5794
- await writeData(writer, new Uint8Array());
5636
+ await writeData(writer, EMPTY_UINT8_ARRAY);
5795
5637
  }
5796
5638
  }
5797
5639
  }
@@ -5902,8 +5744,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
5902
5744
  }
5903
5745
  const { writable } = writer;
5904
5746
  if (reader) {
5905
- reader.chunkSize = getChunkSize(config);
5906
- const readable = reader.readable;
5747
+ const readable = reader.createReadable ? reader.createReadable({ chunkSize: getChunkSize(config) }) : reader.readable;
5907
5748
  const size = reader.size;
5908
5749
  const workerOptions = {
5909
5750
  options: {
@@ -6003,13 +5844,9 @@ function getHeaderInfo(options) {
6003
5844
  : compressionMethod !== COMPRESSION_METHOD_STORE);
6004
5845
  let rawLocalExtraFieldZip64;
6005
5846
  const uncompressedFile = passThrough || !compressed;
6006
- // entries without a data descriptor are always buffered (cf. getFileEntry), so the
6007
- // zip64 extra field values can be patched into the local header before flushing it
6008
5847
  const zip64ExtraFieldComplete = zip64 && (options.bufferedWrite || !dataDescriptor || ((!zip64UncompressedSize && !zip64CompressedSize) || uncompressedFile));
6009
5848
  const writeLocalExtraFieldZip64 = zip64ExtraFieldComplete || (zip64 && dataDescriptor && (zip64UncompressedSize || zip64CompressedSize));
6010
5849
  if (zip64 && (zip64UncompressedSize || zip64CompressedSize)) {
6011
- // APPNOTE 4.5.3: the zip64 extra field of a local header must include both the
6012
- // uncompressed and compressed size fields
6013
5850
  const length = 4 + 16;
6014
5851
  const extraFieldZip64 = createRecordWriter(length);
6015
5852
  extraFieldZip64.uint16(EXTRAFIELD_TYPE_ZIP64);
@@ -6023,7 +5860,7 @@ function getHeaderInfo(options) {
6023
5860
  }
6024
5861
  }
6025
5862
  } else {
6026
- rawLocalExtraFieldZip64 = new Uint8Array();
5863
+ rawLocalExtraFieldZip64 = EMPTY_UINT8_ARRAY;
6027
5864
  }
6028
5865
  let rawExtraFieldAES;
6029
5866
  if (encrypted && !zipCrypto) {
@@ -6033,7 +5870,7 @@ function getHeaderInfo(options) {
6033
5870
  rawExtraFieldAES = extraFieldAES.array;
6034
5871
  rawExtraFieldAES[8] = encryptionStrength;
6035
5872
  } else {
6036
- rawExtraFieldAES = new Uint8Array();
5873
+ rawExtraFieldAES = EMPTY_UINT8_ARRAY;
6037
5874
  }
6038
5875
  let rawExtraFieldNTFS;
6039
5876
  let rawExtraFieldExtendedTimestamp;
@@ -6056,8 +5893,7 @@ function getHeaderInfo(options) {
6056
5893
  }
6057
5894
  rawExtraFieldExtendedTimestamp = extraFieldTimestamp.array;
6058
5895
  } else {
6059
- // the date cannot be stored as a 32-bit time_t; the NTFS field replaces it
6060
- rawExtraFieldExtendedTimestamp = new Uint8Array();
5896
+ rawExtraFieldExtendedTimestamp = EMPTY_UINT8_ARRAY;
6061
5897
  }
6062
5898
  try {
6063
5899
  const lastModTimeNTFS = getTimeNTFS(lastModDate);
@@ -6072,10 +5908,10 @@ function getHeaderInfo(options) {
6072
5908
  extraFieldNTFS.uint64(getTimeNTFS(creationDate) || lastModTimeNTFS);
6073
5909
  rawExtraFieldNTFS = extraFieldNTFS.array;
6074
5910
  } catch {
6075
- rawExtraFieldNTFS = new Uint8Array();
5911
+ rawExtraFieldNTFS = EMPTY_UINT8_ARRAY;
6076
5912
  }
6077
5913
  } else {
6078
- rawExtraFieldNTFS = rawExtraFieldExtendedTimestamp = new Uint8Array();
5914
+ rawExtraFieldNTFS = rawExtraFieldExtendedTimestamp = EMPTY_UINT8_ARRAY;
6079
5915
  }
6080
5916
  let rawExtraFieldUnix;
6081
5917
  try {
@@ -6101,10 +5937,10 @@ function getHeaderInfo(options) {
6101
5937
  extraFieldUnix.uint16((gid === UNDEFINED_VALUE ? 0 : gid) & MAX_16_BITS);
6102
5938
  rawExtraFieldUnix = extraFieldUnix.array;
6103
5939
  } else {
6104
- rawExtraFieldUnix = new Uint8Array();
5940
+ rawExtraFieldUnix = EMPTY_UINT8_ARRAY;
6105
5941
  }
6106
5942
  } catch {
6107
- rawExtraFieldUnix = new Uint8Array();
5943
+ rawExtraFieldUnix = EMPTY_UINT8_ARRAY;
6108
5944
  }
6109
5945
  if (compressionMethod === UNDEFINED_VALUE) {
6110
5946
  compressionMethod = compressed ? COMPRESSION_METHOD_DEFLATE : COMPRESSION_METHOD_STORE;
@@ -6171,7 +6007,7 @@ function getHeaderInfo(options) {
6171
6007
  version,
6172
6008
  compressionMethod,
6173
6009
  extraFieldExtendedTimestampFlag,
6174
- rawExtraFieldZip64: new Uint8Array(),
6010
+ rawExtraFieldZip64: EMPTY_UINT8_ARRAY,
6175
6011
  localExtraFieldZip64Length,
6176
6012
  rawExtraFieldExtendedTimestamp,
6177
6013
  rawExtraFieldNTFS,
@@ -6184,7 +6020,6 @@ function getHeaderInfo(options) {
6184
6020
  function appendExtraFieldUSDZ(entryInfo, zipWriterOffset) {
6185
6021
  const { headerInfo } = entryInfo;
6186
6022
  let { localHeaderArray, extraFieldLength } = headerInfo;
6187
- let localHeaderArrayView;
6188
6023
  let extraBytesLength = 64 - ((zipWriterOffset + getLength(localHeaderArray)) % 64);
6189
6024
  if (extraBytesLength < 4) {
6190
6025
  extraBytesLength += 64;
@@ -6197,7 +6032,7 @@ function appendExtraFieldUSDZ(entryInfo, zipWriterOffset) {
6197
6032
  headerInfo.localHeaderArray = localHeaderArray = new Uint8Array(getLength(previousLocalHeaderArray) + extraBytesLength);
6198
6033
  arraySet(localHeaderArray, previousLocalHeaderArray);
6199
6034
  arraySet(localHeaderArray, rawExtraFieldUSDZ, getLength(previousLocalHeaderArray));
6200
- localHeaderArrayView = getDataView(localHeaderArray);
6035
+ const localHeaderArrayView = getDataView(localHeaderArray);
6201
6036
  setUint16(localHeaderArrayView, 28, extraFieldLength + extraBytesLength);
6202
6037
  headerInfo.localHeaderView = localHeaderArrayView;
6203
6038
  entryInfo.metadataSize += extraBytesLength;
@@ -6205,7 +6040,7 @@ function appendExtraFieldUSDZ(entryInfo, zipWriterOffset) {
6205
6040
 
6206
6041
  function packUnixId(id) {
6207
6042
  if (id === UNDEFINED_VALUE) {
6208
- return new Uint8Array();
6043
+ return EMPTY_UINT8_ARRAY;
6209
6044
  } else {
6210
6045
  const dataArray = new Uint8Array(4);
6211
6046
  const dataView = getDataView(dataArray);
@@ -6248,7 +6083,7 @@ function getDataDescriptorInfo({
6248
6083
  dataDescriptor,
6249
6084
  dataDescriptorSignature
6250
6085
  }) {
6251
- let dataDescriptorArray = new Uint8Array();
6086
+ let dataDescriptorArray = EMPTY_UINT8_ARRAY;
6252
6087
  let dataDescriptorView, dataDescriptorOffset = 0;
6253
6088
  let dataDescriptorLength = zip64 ? DATA_DESCRIPTOR_RECORD_ZIP_64_LENGTH : DATA_DESCRIPTOR_RECORD_LENGTH;
6254
6089
  if (dataDescriptorSignature) {
@@ -6332,7 +6167,6 @@ function updateLocalHeader({
6332
6167
  }
6333
6168
  }
6334
6169
  if (zip64 && localExtraFieldZip64Length) {
6335
- // the local zip64 extra field always contains both size slots
6336
6170
  const localHeaderOffset = HEADER_SIZE + getLength(rawFilename) + 4;
6337
6171
  setBigUint64(localHeaderView, localHeaderOffset, BigInt(uncompressedSize));
6338
6172
  setBigUint64(localHeaderView, localHeaderOffset + 8, BigInt(compressedSize));
@@ -6386,7 +6220,7 @@ function createDirectoryRecords(files) {
6386
6220
  }
6387
6221
  rawExtraFieldZip64 = extraFieldZip64.array;
6388
6222
  } else {
6389
- rawExtraFieldZip64 = new Uint8Array();
6223
+ rawExtraFieldZip64 = EMPTY_UINT8_ARRAY;
6390
6224
  }
6391
6225
  fileEntry.rawExtraFieldZip64 = rawExtraFieldZip64;
6392
6226
  fileEntry.zip64Offset = zip64Offset;
@@ -6401,7 +6235,7 @@ function createDirectoryRecords(files) {
6401
6235
  extraFieldTimestamp.uint32(lastModTimeUnix);
6402
6236
  rawExtraFieldTimestamp = extraFieldTimestamp.array;
6403
6237
  } else {
6404
- rawExtraFieldTimestamp = new Uint8Array();
6238
+ rawExtraFieldTimestamp = EMPTY_UINT8_ARRAY;
6405
6239
  }
6406
6240
  fileEntry.rawExtraFieldExtendedTimestamp = rawExtraFieldTimestamp;
6407
6241
  const extraFieldLength = getLength(
@@ -6457,7 +6291,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
6457
6291
  await writeData(writer, directoryArray.slice(directoryDiskOffset, offset));
6458
6292
  directoryDiskOffset = offset;
6459
6293
  writer.availableSize = 0;
6460
- await writeData(writer, new Uint8Array());
6294
+ await writeData(writer, EMPTY_UINT8_ARRAY);
6461
6295
  }
6462
6296
  if (indexFileEntry == 0) {
6463
6297
  cdStartDiskNumber = writer.diskNumber;
@@ -6530,7 +6364,7 @@ async function writeEndOfDirectoryRecord(zipWriter, comment, options, cdInfo) {
6530
6364
  const endOfdirectoryRecord = createRecordWriter(zip64 ? ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH : END_OF_CENTRAL_DIR_LENGTH);
6531
6365
  if (getLength(endOfdirectoryRecord.array) + commentLength > writer.availableSize) {
6532
6366
  writer.availableSize = 0;
6533
- await writeData(writer, new Uint8Array());
6367
+ await writeData(writer, EMPTY_UINT8_ARRAY);
6534
6368
  }
6535
6369
  lastDiskNumber = writer.diskNumber;
6536
6370
  if (zip64) {
@@ -6627,7 +6461,6 @@ function getTimeUnix(date) {
6627
6461
  return Math.floor(date.getTime() / 1000);
6628
6462
  }
6629
6463
 
6630
- // the extended timestamp extra field stores dates as signed 32-bit time_t values
6631
6464
  function inUnixTimeRange(timeUnix) {
6632
6465
  return timeUnix >= MIN_UNIX_TIME && timeUnix <= MAX_UNIX_TIME;
6633
6466
  }
@@ -6812,36 +6645,12 @@ function getMimeType$1() {
6812
6645
  const DEFAULT_THRESHOLD = 1024 * 1024;
6813
6646
  const DEFAULT_DIRECTORY_NAME = ".zip.js-temp";
6814
6647
 
6815
- // Builds a `createTempStream` factory (see `ZipWriter`'s option of the same name) that spills the
6816
- // data of a buffered entry to the Origin Private File System (OPFS) instead of keeping it in memory.
6817
- //
6818
- // It is meant for the buffered-write path (keep-order concurrent `add()`, non-seekable output, ...),
6819
- // where the compressed data of an entry has to be held until the writer is free. In memory that data
6820
- // grows with the entry size; here it is written to an OPFS file and streamed back, so peak memory
6821
- // stays bounded.
6822
- //
6823
- // It is hybrid on purpose: an entry stays fully in memory until it exceeds `thresholdBytes`, and only
6824
- // then spills to a file. Small entries never touch the disk, so a workload made of many tiny entries
6825
- // keeps the speed of the in-memory default; only genuinely large entries pay for (and benefit from)
6826
- // the file round-trip.
6827
- //
6828
- // OPFS is a browser/worker feature; there is no fallback here. Feature-detect
6829
- // `navigator.storage.getDirectory` (or inject `getDirectory`) before using it, and let the writer use
6830
- // its in-memory default elsewhere.
6831
- //
6832
- // Options:
6833
- // thresholdBytes spill to a file once a buffered entry exceeds this size (default 1 MiB).
6834
- // directoryName name of the OPFS sub-directory holding the temp files (default ".zip.js-temp").
6835
- // getDirectory returns (or resolves to) the root `FileSystemDirectoryHandle`. Defaults to
6836
- // `navigator.storage.getDirectory()`. Inject it to run inside a worker with a
6837
- // pre-obtained handle, or to test against a mock.
6838
6648
  function createOPFSTempStream(options = {}) {
6839
6649
  const {
6840
6650
  thresholdBytes = DEFAULT_THRESHOLD,
6841
6651
  directoryName = DEFAULT_DIRECTORY_NAME,
6842
6652
  getDirectory = () => navigator.storage.getDirectory()
6843
6653
  } = options;
6844
- // The temp directory is resolved once and shared by every entry of this factory.
6845
6654
  let directoryHandlePromise;
6846
6655
  function getTempDirectory() {
6847
6656
  if (!directoryHandlePromise) {
@@ -6850,15 +6659,12 @@ function createOPFSTempStream(options = {}) {
6850
6659
  }
6851
6660
  return directoryHandlePromise;
6852
6661
  }
6853
- return async function () {
6662
+ return function () {
6854
6663
  const memoryChunks = [];
6855
6664
  let bufferedSize = 0;
6856
6665
  let spilled = false;
6857
6666
  let fileName, fileHandle, fileWriter, fileReader;
6858
6667
 
6859
- // Move whatever is buffered in memory to a fresh OPFS file, then keep writing to that file.
6860
- // `FileSystemWritableFileStream` is a `WritableStream`, so it is driven through the standard
6861
- // writer API rather than its non-standard `write()`/`seek()` convenience methods.
6862
6668
  async function spillToFile() {
6863
6669
  const directoryHandle = await getTempDirectory();
6864
6670
  fileName = crypto.randomUUID();
@@ -6868,7 +6674,6 @@ function createOPFSTempStream(options = {}) {
6868
6674
  for (const chunk of memoryChunks) {
6869
6675
  await fileWriter.write(chunk);
6870
6676
  }
6871
- // Release the in-memory copy; from now on data lives in the file.
6872
6677
  memoryChunks.length = 0;
6873
6678
  }
6874
6679
 
@@ -6892,9 +6697,6 @@ function createOPFSTempStream(options = {}) {
6892
6697
  }
6893
6698
  });
6894
6699
 
6895
- // The writer always closes `writable` before reading `readable`, so `spilled` is final by the
6896
- // time `pull` runs. It is read lazily here (not in `start`, which runs at construction time,
6897
- // before anything is written and before `spilled` is known).
6898
6700
  let memoryIndex = 0;
6899
6701
  const readable = new ReadableStream({
6900
6702
  async pull(controller) {
@@ -6921,11 +6723,6 @@ function createOPFSTempStream(options = {}) {
6921
6723
  }
6922
6724
  }
6923
6725
  }, { highWaterMark: 0 });
6924
- // highWaterMark 0: do not pull (and possibly close on an empty buffer) until the consumer
6925
- // actually reads, which the writer only does once the data has been fully written.
6926
-
6927
- // Called by the writer on every exit path (success, error, abort). Best-effort: it must never
6928
- // throw. Closes any still-open file writer, then deletes the temp file.
6929
6726
  async function dispose() {
6930
6727
  if (fileWriter) {
6931
6728
  try {
@@ -6986,7 +6783,7 @@ try {
6986
6783
  // ignored
6987
6784
  }
6988
6785
 
6989
- var{Uint8Array:x,Uint16Array:E,Int32Array:H,TransformStream:U,Math:N,Error:z,Array:v}=globalThis,Se=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new x(0),Ve=new E(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Ee=[];for(let e=0;e<14;e++)Ee.push(e,0==e?4:2);var ge=new E([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]),Te=new E([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 x?e:new x(e.buffer,e.byteOffset,e.byteLength),_=n instanceof x?n.subarray(r,r+i):new x(n.buffer,n.byteOffset+r,i);f.set(_,t);}function je(e,t,n){0!=n&&(e instanceof x?e:new x(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 Qe(e,t){let n=1<<t;return {o:e,u:new x(n),h:n,k:t,v:0,m:0,p:0,L: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 E(t)}var ne=class{constructor(e,t){this.M=e,this.Z=t,this.N=0;}},re=class{constructor(e,t,n,r,i){this.W=e,this.j=t,this.D=n,this.S=r,this.$=i;}};function T_(e){return J_[e<-6||e>2?9:2-e]||""}function Ae(e,t){try{e.msg=T_(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 g(e,t){e.q[e.T++]=t;}function De(e,t){g(e,255&t),g(e,t>>>8&255);}function __(e,t,n){let r=255&n,i=65535&t,f=e.A+e.I;return e.q[f]=255&i,e.q[f+1]=i>>>8&255,e.q[f+2]=r,e.I+=3,i=i-1&65535,e.B[t_[r]+ie+1].U++,e.C[w_(i)].U++,e.I==e.X}function ye(e,t){let n=255&t,r=e.A+e.I;return e.q[r]=0,e.q[r+1]=0,e.q[r+2]=n,e.I+=3,e.B[n].U++,e.I==e.X}function ve(e){return e.h-ae}function w_(e){return e<256?g_[e]:g_[256+(e>>7)]}function A_(e){let t=He+7,n=1<<t,r=(1<<t)-1,i=N.floor((t+k-1)/k),f=1<<8+He;return {...Qe(e,15),o:e,F:42,H:0,Y:void 0,O:32767,P:t,R:n,J:r,K:i,V:new E(32768),G:new E(n),ee:f,q:new x(32768),te:0,ne:32768,T:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,de:0,he:0,we:0,ke:0,be:0,ge:0,ve:0,me:0,xe:0,ye:0,pe:new H(2*we+1),Le:new x(2*we+1),Me:new E(be+1),I:0,X:0,Ee:Z,A:0,ze:0,Ze:0,Ne:8,We:32768,je:0,Qe:0,De:0,B:new v(le).fill(0).map(()=>Q()),C:new v(2*me+1).fill(0).map(()=>Q()),Se:new v(2*oe+1).fill(0).map(()=>Q()),$e:E_(),qe:E_(),Te:E_()}}function D_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Ae=r,f.Ie=i,t.push(f);}return t}function Q(){return {U:0,Ae:0,Ue:0,Ie:0}}function E_(){return new ne([],un(null,Z,0,0,0))}function un(e,t,n,r,i){return new re(e,t,n,r,i)}function Q_(){let e=new v(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 y_(e){let{code:t,length:n}=cn(e),r=new E(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 E(r)}function $_(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 x(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}}return i}function et(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 x(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 _t(e){let t=new x(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 cn(e){let t=N.max(...e),n=new v(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new v(e.length).fill(0),i=new v(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 He=8,k=3,_e=258,ae=_e+k+1,Ue=16,Be=_e,dn=29,ie=256,we=ie+1+dn,me=30,oe=19,le=2*we+1,be=15,tt=9,nt=255,rt=32,at=4,Ie=256,n_=16,r_=17,a_=18,it=0,v_=1,ot=2,$=-1,J_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],i_=te(de),o_=te(Ee),Fe=new E(19);Fe[16]=2,Fe[17]=3,Fe[18]=7;var mn=y_(Q_()),bn=y_(new v(30).fill(5)),Ze=D_(mn),I_=D_(bn),t_=$_(Te,i_,_e),g_=_t(et(ge,o_));function Pe(e){return e%65521>>>0}function se(e,t,n){if(void 0===t||void 0===n)return 1;let r=e>>>16&65535;if(e&=65535,1==n)return (e+=t[0])>=65521&&(e-=65521),r+=e,r>=65521&&(r-=65521),(r<<16|e)>>>0;if(n<16){for(let i=0;i<n;i++)r+=e+=t[i];return e>=65521&&(e-=65521),r=Pe(r),(r<<16|e)>>>0}for(;n>=5552;){n-=5552;let i=N.floor(347);do{for(let n=0;n<16;n++)r+=e+=t[n];t=t.subarray(16);}while(--i);e=Pe(e),r=Pe(r);}if(n){for(;n>=16;){n-=16;for(let n=0;n<16;n++)r+=e+=t[n];t=t.subarray(16);}for(let i=0;i<n;i++)r+=e+=t[i];e=Pe(e),r=Pe(r);}return (r<<16|e)>>>0}var Me=[[],[],[],[],[],[],[],[]];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;Me[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Me[t-1][e];Me[t][e]=n>>>8^Me[0][255&n];}var[lt,sn,hn,xn,pn,Sn,En,gn]=Me;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=N.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=gn[255&t]^En[t>>>8&255]^Sn[t>>>16&255]^pn[t>>>24&255]^xn[255&n]^hn[n>>>8&255]^sn[n>>>16&255]^lt[n>>>24&255];}}for(;i<n;i++)r=r>>>8^lt[255&(r^t[i])];return (4294967295^r)>>>0}function st(e){16==e.L?(De(e,e.p),e.p=0,e.L=0):e.L>=8&&(g(e,e.p),e.p>>=8,e.L-=8);}function ht(e){e.L>8?De(e,e.p):e.L>0&&g(e,e.p),e.ze=1+(e.L-1&7),e.p=0,e.L=0;}function Tn(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].Ie;0!=t&&(e[i].Ae=e_(f[t]++,t));}}function L(e,t,n){e.L>Ue-n?(e.p=65535&(e.p|t<<e.L),De(e,e.p),e.p=t>>Ue-e.L&65535,e.L+=n-Ue):(e.p=65535&(e.p|t<<e.L),e.L+=n);}function xt(e){for(let t=0;t<e.B.length;t++)e.B[t].U=0;for(let t=0;t<e.C.length;t++)e.C[t].U=0;for(let t=0;t<e.Se.length;t++)e.Se[t].U=0;e.B[Ie].U=1,e.ie=e.fe=0,e.I=e._e=0;}function pt(e){if(e.B&&e.B.length>=le)for(let t=0;t<le;t++)e.B[t]=Q();else {e.B=[];for(let t=0;t<le;t++)e.B.push(Q());}if(e.C&&e.C.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.C[t]=Q();else {e.C=[];for(let t=0;t<2*me+1;t++)e.C.push(Q());}if(e.Se&&e.Se.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.Se[t]=Q();else {e.Se=[];for(let t=0;t<2*oe+1;t++)e.Se.push(Q());}e.$e=new ne(e.B,new re(Ze,i_,ie+1,we,be)),e.qe=new ne(e.C,new re(I_,o_,0,me,be)),e.Te=new ne(e.Se,new re(null,Fe,0,oe,7)),e.p=0,e.L=0,e.ze=0,xt(e);}var he=1;function wn(e,t,n){return n=e.pe[he],e.pe[he]=e.pe[e.Qe--],k_(e,t,he),n}function ct(e,t,n,r){return e[t].U<e[n].U||e[t].U==e[n].U&&r[t]<=r[n]}function k_(e,t,n){let r=e.pe[n],i=n<<1;for(;i<=e.Qe&&(i<e.Qe&&ct(t,e.pe[i+1],e.pe[i],e.Le)&&i++,!ct(t,r,e.pe[i],e.Le));)e.pe[n]=e.pe[i],n=i,i<<=1;e.pe[n]=r;}function An(e,t){let n,r,i,f,_,l,o=t.M,u=t.N,a=t.Z.W,c=t.Z.j,s=t.Z.D,d=t.Z.$,h=0;for(f=0;f<=be;f++)e.Me[f]=0;for(o[e.pe[e.De]].Ie=0,n=e.De+1;n<le;n++)r=e.pe[n],f=o[o[r].Ue].Ie+1,f>d&&(f=d,h++),o[r].Ie=f,!(r>u)&&(e.Me[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].U,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].Ie+_)));if(0!=h){do{for(f=d-1;0==e.Me[f];)f--;e.Me[f]--,e.Me[f+1]+=2,e.Me[d]--,h-=2;}while(h>0);for(f=d;0!=f;f--)for(r=e.Me[f];0!=r;)i=e.pe[--n],!(i>u)&&(o[i].Ie!=f&&(e.ie+=(f-o[i].Ie)*o[i].U,o[i].Ie=f),r--);}}function N_(e,t){let n,r,i,f=t.M,_=t.Z.W,l=t.Z.S,o=-1;for(e.Qe=0,e.De=le,n=0;n<l;n++)0!=f[n].U?(e.pe[++e.Qe]=o=n,e.Le[n]=0):f[n].Ie=0;for(;e.Qe<2;)i=e.pe[++e.Qe]=o<2?++o:0,f[i].U=1,e.Le[i]=0,e.ie--,_&&(e.fe-=_[i].Ie);for(t.N=o,n=N.floor(e.Qe/2);n>=1;n--)k_(e,f,n);i=l;do{n=wn(e,f,n),r=e.pe[he],e.pe[--e.De]=n,e.pe[--e.De]=r,f[i].U=f[n].U+f[r].U,e.Le[i]=(e.Le[n]>=e.Le[r]?e.Le[n]:e.Le[r])+1,f[n].Ue=f[r].Ue=i,e.pe[he]=i++,k_(e,f,he);}while(e.Qe>=2);e.pe[--e.De]=e.pe[he],An(e,t),Tn(f,t.N,e.Me);}function dt(e,t,n){let r,i,f=-1,_=t[0].Ie,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].Ie=65535,r=0;r<=n;r++)i=_,_=t[r+1].Ie,!(++l<o&&i==_)&&(l<u?e.Se[i].U+=l:0!=i?(i!=f&&e.Se[i].U++,e.Se[n_].U++):l<=10?e.Se[r_].U++:e.Se[a_].U++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function mt(e,t,n){let r,i=-1,f=t[0].Ie,_=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].Ie,!(++_<l&&r==f)){if(_<o)do{L(e,e.Se[r].Ae,e.Se[r].Ie);}while(0!=--_);else 0!=r?(r!=i&&(L(e,e.Se[r].Ae,e.Se[r].Ie),_--),L(e,e.Se[n_].Ae,e.Se[n_].Ie),L(e,_-3,2)):_<=10?(L(e,e.Se[r_].Ae,e.Se[r_].Ie),L(e,_-3,3)):(L(e,e.Se[a_].Ae,e.Se[a_].Ie),L(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function Dn(e){let t;for(dt(e,e.B,e.$e.N),dt(e,e.C,e.qe.N),N_(e,e.Te),t=oe-1;t>=3&&0==e.Se[Se[t]].Ie;t--);return e.ie+=3*(t+1)+5+5+4,t}function yn(e,t,n,r){let i;for(L(e,t-257,5),L(e,n-1,5),L(e,r-4,4),i=0;i<r;i++)L(e,e.Se[Se[i]].Ie,3);mt(e,e.B,t-1),mt(e,e.C,n-1);}function Xe(e,t,n,r,i=0){L(e,(it<<1)+r,3),ht(e),De(e,n),De(e,~n),n&&t&&M(e.q,e.T,t,i,n),e.T+=n;}function St(e){st(e);}function Et(e){L(e,v_<<1,3),L(e,Ze[Ie].Ae,Ze[Ie].Ie),st(e);}function bt(e,t,n){let r,i,f,_,l=0;if(0!=e.I)do{r=255&e.Ee[l],r+=(255&e.Ee[l+1])<<8,i=e.Ee[l+2],l+=3,0==r?L(e,t[i].Ae,t[i].Ie):(f=t_[i],L(e,t[f+ie+1].Ae,t[f+ie+1].Ie),_=i_[f],0!=_&&(i-=Te[f],L(e,i,_)),r--,f=w_(r),L(e,n[f].Ae,n[f].Ie),_=o_[f],0!=_&&(r-=ge[f],L(e,r,_)));}while(l<e.I);L(e,t[Ie].Ae,t[Ie].Ie);}function vn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.B[t].U)return 0;if(0!=e.B[9].U||0!=e.B[10].U||0!=e.B[13].U)return 1;for(t=32;t<ie;t++)if(0!=e.B[t].U)return 1;return 0}function gt(e,t,n,r,i=0){let f,_,l=0;e.be>0?(2==e.o.t&&(e.o.t=vn(e)),N_(e,e.$e),N_(e,e.qe),l=Dn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ge)&&(f=_)):f=_=n+5,n+4<=f&&t?Xe(e,t,n,r,i):_==f?(L(e,(v_<<1)+r,3),bt(e,Ze,I_)):(L(e,(ot<<1)+r,3),yn(e,e.$e.N+1,e.qe.N+1,l+1),bt(e,e.B,e.C)),xt(e),r&&ht(e);}function Dt(){let e=Je();return e.l=A_(e),e}var We=[{Be:Rt,Ce:0,Xe:0,Fe:0,He:0},{Be:C_,Ce:4,Xe:4,Fe:8,He:4},{Be:C_,Ce:5,Xe:5,Fe:16,He:8},{Be:C_,Ce:6,Xe:16,Fe:32,He:32},{Be:Re,Ce:4,Xe:4,Fe:16,He:16},{Be:Re,Ce:16,Xe:8,Fe:16,He:32},{Be:Re,Ce:16,Xe:16,Fe:32,He:128},{Be:Re,Ce:32,Xe:32,Fe:128,He:256},{Be:Re,Ce:128,Xe:128,Fe:256,He:1024},{Be:Re,Ce:258,Xe:258,Fe:258,He:4096}];function Tt(e){return 2*e-(e>4?9:0)}function u_(e,t,n){return ((t<<e.K^n)&e.J)>>>0}function c_(e,t){e.ke=u_(e,e.ke,e.u[t+(k-1)]);let n=e.V[t&e.O]=e.G[e.ke];return e.G[e.ke]=t,n}function yt(e){e.G[e.R-1]=0,je(e.G,0,(e.R-1)*e.G.BYTES_PER_ELEMENT);}function Cn(e){let t,n,r=e.h;for(t=e.R;t>0;)t--,n=e.G[t],e.G[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.V[t],e.V[t]=n>=r?n-r:0;}function L_(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.H?e.i=se(e.i,new x(t.buffer,t.byteOffset+n,i),i):2==e.l.H&&(e.i=W(e.i,new x(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function d_(e){let t,n,r=e.h;do{if(n=e.We-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ve(e)&&(M(e.u,0,e.u,r,r-n),e.je-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Cn(e),n+=r),0==e.o.avail_in)break;if(t=L_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=k){let t=e.ae-e.le;for(e.ke=e.u[t],e.ke=u_(e,e.ke,e.u[t+1]);e.le&&(e.ke=u_(e,e.ke,e.u[t+k-1]),e.V[t&e.O]=e.G[e.ke],e.G[e.ke]=t,t++,e.le--,!(e.ce+e.le<k)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.v<e.We){let t,n=e.ae+e.ce;e.v<n?(t=e.We-n,t>Be&&(t=Be),je(e.u,n,t),e.v=n+t):e.v<n+Be&&(t=n+Be-e.v,t>e.We-e.v&&(t=e.We-e.v),je(e.u,e.v,t),e.v+=t);}}function vt(e,t,n=8,r=15,i=He,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>tt||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=A_(e);return l?(e.l=l,l.o=e,l.F=42,l.H=_,l.Y=void 0,l.k=r,l.h=1<<l.k,l.O=l.h-1,l.P=i+7,l.R=1<<l.P,l.J=l.R-1,l.K=(l.P+k-1)/k,l.u=new x(2*l.h),l.V=new E(l.h),l.G=new E(l.R),l.v=0,l.ee=1<<i+6,l.q=new x(l.ee*at),l.ne=4*l.ee,l.u&&l.V&&l.G&&l.q?(l.Ee=l.q.subarray(l.ee),l.A=l.te+l.ee,l.X=3*(l.ee-1),l.be=t,l.ge=f,l.Ne=n,Hn(e)):(l.F=666,e.msg=T_(-4),F_(e),-4)):-4}function B_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.F&&57!=t.F&&69!=t.F&&73!=t.F&&91!=t.F&&103!=t.F&&113!=t.F&&666!=t.F}function Ln(e){let t;return B_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.T=0,t.re=t.te,t.H<0&&(t.H=-t.H),t.F=2==t.H?57:42,e.i=2==t.H?W(0):se(0),t.oe=-2,pt(t),0)}function On(e){e.We=2*e.h,yt(e),e.ye=We[e.be].Ce,e.ve=We[e.be].Xe,e.me=We[e.be].Fe,e.xe=We[e.be].He,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.de=k-1,e.we=0,e.ke=0;}function Hn(e){let t=Ln(e);return 0==t&&On(e.l),t}function Ye(e,t){g(e,t>>8),g(e,255&t);}function q(e){let t,n=e.l;St(n),t=n.T,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.q,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.T-=t,0==n.T&&(n.re=n.te));}function ke(e,t){let n=e.l;n.Y&&n.Y.Ye&&(e.i=W(e.i,new x(n.q.buffer,n.te+t,n.T-t),n.T-t));}function It(e,t){let n,r=e.l;if(B_(e)||t>5||t<0)return Ae(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.F&&4!=t)return Ae(e,-2);if(0==e.avail_out)return Ae(e,-5);if(n=r.oe,r.oe=t,0!=r.T){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&Tt(t)<=Tt(n)&&4!=t)return Ae(e,-5);if(666==r.F&&0!=e.avail_in)return Ae(e,-5);if(42==r.F&&0==r.H&&(r.F=113),42==r.F){let t,n=8+(r.k-8<<4)<<8;if(t=r.ge>=2||r.be<2?0:r.be<6?1:6==r.be?2:3,n|=t<<6,0!=r.ae&&(n|=rt),n+=31-n%31,Ye(r,n),0!=r.ae&&(Ye(r,e.i>>16),Ye(r,65535&e.i)),e.i=1,r.F=113,q(e),0!=r.T)return r.oe=$,0}if(57==r.F)if(e.i=W(0),g(r,31),g(r,139),g(r,8),r.Y)g(r,(r.Y.Oe?1:0)+(r.Y.Ye?2:0)+(null==r.Y.Pe?0:4)+(null==r.Y.Re?0:8)+(null==r.Y.Je?0:16)),g(r,255&r.Y.Ke),g(r,r.Y.Ke>>>8&255),g(r,r.Y.Ke>>>16&255),g(r,r.Y.Ke>>>24&255),g(r,9==r.be?2:r.ge>=2||r.be<2?4:0),g(r,255&r.Y.Ve),null!=r.Y.Pe&&(g(r,255&r.Y.Ge),g(r,r.Y.Ge>>>8&255)),r.Y.Ye&&(e.i=W(e.i,r.q,r.T)),r.Ze=0,r.F=69;else if(g(r,0),g(r,0),g(r,0),g(r,0),g(r,0),g(r,9==r.be?2:r.ge>=2||r.be<2?4:0),g(r,nt),r.F=113,q(e),0!=r.T)return r.oe=$,0;if(69==r.F){if(r.Y&&null!=r.Y.Pe){let t=r.T,n=(65535&r.Y.Ge)-r.Ze;for(;r.T+n>r.ne;){let i=r.ne-r.T;if(M(r.q,r.T,r.Y.Pe,r.Ze,i),r.T=r.ne,ke(e,t),r.Ze+=i,q(e),0!=r.T)return r.oe=$,0;t=0,n-=i;}M(r.q,r.T,r.Y.Pe,r.Ze,n),r.T+=n,ke(e,t),r.Ze=0;}r.F=73;}if(73==r.F){if(r.Y&&r.Y.Re&&r.Y.Re.length){let t,n=r.T;do{if(r.T==r.ne){if(ke(e,n),q(e),0!=r.T)return r.oe=$,0;n=0;}t=r.Y.Re[r.Ze++],g(r,t);}while(0!=t);ke(e,n),r.Ze=0;}r.F=91;}if(91==r.F){if(r.Y&&r.Y.Je&&r.Y.Je.length){let t,n=r.T;do{if(r.T==r.ne){if(ke(e,n),q(e),0!=r.T)return r.oe=$,0;n=0;}t=r.Y.Je[r.Ze++],g(r,t);}while(0!=t);ke(e,n);}r.F=103;}if(103==r.F){if(r.Y&&r.Y.Ye){if(r.T+2>r.ne&&(q(e),0!=r.T))return r.oe=$,0;g(r,255&e.i),g(r,e.i>>>8&255),e.i=W(0);}if(r.F=113,q(e),0!=r.T)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.F){let n=0==r.be?Rt(r,t):2==r.ge?Bn(r,t):3==r.ge?Un(r,t):We[r.be].Be(r,t);if((2==n||3==n)&&(r.F=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Et(r):5!=t&&(Xe(r,null,0,0),3==t&&(yt(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.H<=0?1:(2==r.H?(g(r,255&e.i),g(r,e.i>>>8&255),g(r,e.i>>>16&255),g(r,e.i>>>24&255),g(r,255&e.total_in),g(r,e.total_in>>>8&255),g(r,e.total_in>>>16&255),g(r,e.total_in>>>24&255)):(Ye(r,e.i>>>16&65535),Ye(r,65535&e.i)),q(e),r.H>0&&(r.H=-r.H),0!=r.T?0:1)}function F_(e){if(B_(e))return -2;let t=e.l,n=t.F;return t.u=Z,t.V=Ve,t.G=Ve,t.q=Z,t.Ee=Z,t.pe=new H(0),t.Le=Z,t.Me=Ve,t.B.length=0,t.C.length=0,t.Se.length=0,t.Y=void 0,t.te=0,t.re=0,t.A=0,113==n?-3:0}function kt(e,t){let n,r,i=e.xe,f=e.ae,_=e.de,l=e.me,o=e.ae>ve(e)?e.ae-ve(e):0,u=e.V,a=e.O,c=e.u[f],s=e.u[f+1],d=e.u[f+_-1],h=e.u[f+_];e.de>=e.ve&&(i>>=2),l>e.ce&&(l=e.ce);do{if(n=t,e.u[n+_]!=h||e.u[n+_-1]!=d||e.u[n]!=c||e.u[n+1]!=s)continue;let i=N.min(_e,e.ce),o=2;for(;o<i&&e.u[f+o]==e.u[n+o];)o++;if(r=o,r>_){if(e.je=t,_=r,r>=l)break;d=e.u[f+_-1],h=e.u[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=e.ce?_:e.ce}function Nt(e,t){gt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return Nt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var wt=65535;function Ne(e,t){return e<t?e:t}function Rt(e,t){let n,r,i,f=Ne(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=wt,i=e.L+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,Xe(e,null,0,_),e.q[e.T-4]=n,e.q[e.T-3]=n>>8,e.q[e.T-2]=~n,e.q[e.T-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&&(L_(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.We-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+=Ne(l,e.h-e.le);e.ue=e.ae;}return e.v<e.ae&&(e.v=e.ae),_?(e.ze=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.We-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&&(L_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=Ne(i,e.h-e.le)),e.v<e.ae&&(e.v=e.ae),i=e.L+42>>3,i=Ne(e.ne-i,wt),f=Ne(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=Ne(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Xe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.ze=8),_?2:0)}function C_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(d_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=k&&(n=c_(e,e.ae)),0!=n&&e.ae-n<=ve(e)&&(e.se=kt(e,n)),e.se>=k)if(e.ae,e.je,e.se,r=__(e,e.ae-e.je,e.se-k),e.ce-=e.se,e.se<=e.ye&&e.ce>=k){e.se--;do{e.ae++,n=c_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.ke=e.u[e.ae],e.ke=u_(e,e.ke,e.u[e.ae+1]);else r=ye(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<k-1?e.ae:k-1,4==t){return j(e,true)??3}if(e.I){let t=j(e,false);if(null!=t)return t}return 1}function Re(e,t){let n,r=false;for(;;){if(e.ce<ae){if(d_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=k&&(n=c_(e,e.ae)),e.de=e.se,e.he=e.je,e.se=k-1,0!=n&&e.de<e.ye&&e.ae-n<=ve(e)&&(e.se=kt(e,n),e.se<=5&&1==e.ge&&(e.se=k-1)),e.de>=k&&e.se<=e.de){let t=e.ae+e.ce-k;e.ae,e.he,e.de,r=__(e,e.ae-1-e.he,e.de-k),e.ce-=e.de-1,e.de-=2;do{++e.ae<=t&&(n=c_(e,e.ae));}while(0!=--e.de);if(e.we=0,e.se=k-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=ye(e,e.u[e.ae-1]),r&&Nt(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=ye(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<k-1?e.ae:k-1,4==t){return j(e,true)??3}if(e.I){let t=j(e,false);if(null!=t)return t}return 1}function Un(e,t){let n,r,i,f;for(;;){if(e.ce<=_e){if(d_(e),e.ce<=_e&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=k&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+_e;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=_e-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=k?(e.ae,e.ae,e.se,n=__(e,1,e.se-k),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=ye(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.I){let t=j(e,false);if(null!=t)return t}return 1}function Bn(e,t){let n=false;for(;;){if(0==e.ce&&(d_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=ye(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.I){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,m_=592,b_=594,zt=ge.map(e=>e+1),Ct=Te.subarray(0,-1).map(e=>e+3),Fn=[16,1,73,1,200,1],Zn=[144,1,72,1,78,1],Lt=Ee.map(Gt),Ot=Ee.map(Kt);Lt.push(64,2),Ot.push(142,2);var Ht=de.slice(0,-2).map(Gt),Ut=de.slice(0,-2).map(Kt);Ht.push(...Fn),Ut.push(...Zn);var Bt=new E([...Ct,258,0,0]),Ft=new E([...Ct,3,0,0]),Zt=te(Ht),Pt=te(Ut),Mt=new E([...zt,0,0]),Xt=new E([...zt,32769,49153]),Yt=te(Lt),Wt=te(Ot);function Gt(e,t){return t%2?e:e+16}function Kt(e,t){return t%2?e:e+128}function Vt(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.L>>>0,c=r.et,s=r.tt,d=(1<<r.nt)-1,h=(1<<r.rt)-1,w=r.h>>>0,k=r.v>>>0,b=r.m>>>0,g=r.it,v=f-(t-e.avail_out),m=f+(e.avail_out-257),x=i+(e.avail_in-5),y=0,p=0,L=0,M=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&d];t:for(;;){if(L=n.ft,u>>>=L,a-=L,L=n._t,0==L){l[f++]=n.lt;break}if(16&L){if(y=n.lt,L&=15,L){for(;a<L;){if(!(i<_.length)){r.ot=16200;break e}u+=_[i++]<<a,a+=8;}y+=u&(1<<L)-1,u>>>=L,a-=L;}for(;a<15;){if(!(i<_.length)){r.ot=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&h];n:for(;;){if(L=n.ft,u>>>=L,a-=L,L=n._t,16&L){if(p=n.lt,L&=15,L){for(;a<L;){if(!(i<_.length)){r.ot=16200;break e}u+=_[i++]<<a,a+=8;}p+=u&(1<<L)-1,u>>>=L,a-=L;}let t=y,c=f-v;if(p>c){let n=p-c;if(n>k&&g){e.msg="invalid distance too far back",r.ot=16209;break e}if(0==b){if(M=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[M++];continue e}for(let e=0;e<n;++e)l[f++]=o[M++];t-=n,M=f-p;}else if(b<n){M=w+b-n;let e=n-b;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[M++];continue e}for(let t=0;t<e;++t)l[f++]=o[M++];if(t-=e,M=0,b<t){for(let e=0;e<b;++e)l[f++]=o[M++];t-=b,M=f-p;}}else {if(M=b-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[M++];continue e}for(let e=0;e<n;++e)l[f++]=o[M++];t-=n,M=f-p;}for(;t>2;)l[f++]=l[M++],l[f++]=l[M++],l[f++]=l[M++],t-=3;t&&(l[f++]=l[M++],t>1&&(l[f++]=l[M++]));}else {for(M=f-p;t>2;)l[f++]=l[M++],l[f++]=l[M++],l[f++]=l[M++],t-=3;t&&(l[f++]=l[M++],t>1&&(l[f++]=l[M++]));}break}if(64&L){e.msg="invalid distance code",r.ot=16209;break e}n=s[n.lt+(u&(1<<L)-1)];continue n}break}if(64&L){if(32&L){r.ot=16191;break e}e.msg="invalid literal/length code",r.ot=16209;break e}n=c[n.lt+(u&(1<<L)-1)];continue t}}while(i<x&&f<m);let E=a>>3;i-=E,a-=E<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<x?x-i+5:5-(i-x),e.avail_out=f<m?m-f+257:257-(f-m),r.p=u>>>0,r.L=a>>>0;}function Z_(e,t){let n=[],r=t?ue+b_:ue+m_;return {...Qe(e,0),o:e,ot:16180,ut:false,H:0,ct:false,st:0,dt:0,ht:0,wt:0,u:Z,kt:0,bt:0,Pe:0,et:n,tt:n,nt:0,rt:0,gt:0,vt:0,xt:0,yt:0,Lt:n,Mt:new E(320),Et:new E(288),zt:new v(r).fill(null).map(()=>pe()),Zt:0,it:true,Nt:0,Wt:0,jt:t}}function pe(e=0,t=0,n=0){return {_t:e,ft:t,lt:n}}function P_(e=1){return {_t:64,ft:e,lt:0}}function jt(e=0){return {_t:96,ft:e,lt:0}}function M_(e){return (255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255}var Le=15,Mn={jt:false,Qt:Bt,Dt:Zt,St:Mt,$t:Yt,qt:20,Tt:257,At:0,It:m_,Ut:false,Bt:true},Xn={jt:true,Qt:Ft,Dt:Pt,St:Xt,$t:Wt,qt:19,Tt:256,At:-1,It:b_,Ut:true,Bt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,d,h,w,k,b,g,v,m,x,y,p,L,M,z,Z=new E(Le+1),N=new E(Le+1),W=l?Xn:Mn;for(o=0;o<=Le;o++)Z[o]=0;for(u=0;u<n;u++)Z[t[u]]++;for(s=i.Ct,c=Le;c>=1&&0==Z[c];c--);if(s>c&&(s=c),0==c)return W.Bt?(y=P_(1),r.Ct[0]=y,r.Ct[1]=y,i.Ct=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(N[1]=0,o=1;o<Le;o++)N[o+1]=N[o]+Z[o];for(u=0;u<n;u++)0!=t[u]&&(f[N[t[u]]++]=u);switch(e){case 0:L=M=f,z=W.qt;break;case 1:L=W.Qt,M=W.Dt,z=W.Tt;break;default:L=W.St,M=W.$t,z=W.At;}if(b=0,u=0,o=a,p=_.Ct,d=s,h=0,m=-1,k=1<<s,x=k-1,1==e&&(W.Ut?k>=ue:k>ue)||2==e&&(W.Ut?k>=W.It:k>W.It))return 1;for(;;){y=Yn(f,u,o,h,e,L,M,z,W.jt),g=1<<o-h,v=1<<d,a=v;do{v-=g;let e=(b>>h)+v;r.Ct[p+e]={...y};}while(0!=v);for(g=1<<o-1;b&g;)g>>=1;if(0!=g?(b&=g-1,b+=g):b=0,u++,0==--Z[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(b&x)!=m){for(0==h&&(h=s),p+=1<<d,d=o-h,w=1<<d;d+h<c&&(w-=Z[d+h],!(w<=0));)d++,w<<=1;if(k+=1<<d,1==e&&(W.Ut?k>=ue:k>ue)||2==e&&(W.Ut?k>=W.It:k>W.It))return 1;m=b&x,r.Ct[_.Ct+m]={_t:d,ft:s,lt:p-_.Ct};}}if(0!=b)for(y=P_(o-h);0!=b;){for(0!=h&&(b&x)!=m&&(h=0,o=s,p=_.Ct,d=s,y.ft=o),r.Ct[p+(b>>h)]={...y},g=1<<o-1;b&g;)g>>=1;0!=g?(b&=g-1,b+=g):b=0;}return _.Ct+=k,i.Ct=s,0}function Yn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=pe(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=pe(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=pe(_[i],n-r,f[i]);}else u=jt(n-r);return u}var Vn={Xt:true,Ft:new v(544),Ht:[],Yt:[]},jn={Xt:true,Ft:new v(544),Ht:[],Yt:[]};function Jt(e){let t=Je();return t.l=Z_(t,!!e),t}function Ke(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.jt&&(t.ot<16191||t.ot>16209)||!t.jt&&(t.ot<16180||t.ot>16211))))}function Jn(e){let t;return Ke(e)?-2:(t=e.l,e.total_in=e.total_out=t.wt=0,e.msg="",t.H&&(e.i=1&t.H),t.ot=t.jt?16191:16180,t.ut=false,t.ct=false,t.st=-1,t.dt=t.jt?65536:32768,delete t.Y,t.p=0,t.L=0,t.et=t.zt,t.tt=t.zt,t.Lt=t.zt,t.it=true,t.Nt=-1,0)}function Qn(e){let t;return Ke(e)?-2:(t=e.l,t.h=0,t.v=0,t.m=0,Jn(e))}function $n(e,t){let n,r,i;if(Ke(e))return -2;if(r=e.l,r.jt?(t=-16,i=16):i=15,t<0){if(t<-i)return -2;n=0,t=-t;}else n=5+(t>>4),!r.jt&&t<48&&(t&=15);return t&&(t<8||t>i)?-2:(r.u.length>0&&r.k!=t&&(r.u=Z),r.H=n,r.k=t,Qn(e))}function Qt(e,t){let n,r;if(!e)return -2;e.msg="";let i=!!e.l.jt;return r=Z_(e,i),i&&(t=-16),e.l=r,r.o=e,r.ot=r.jt?16191:16180,n=$n(e,t),n}function er(e){let t=e.jt?jn:Vn,n={Ct:0};if(t.Xt){let r,i,f;for(r=0;r<144;)e.Mt[r++]=8;for(;r<256;)e.Mt[r++]=9;for(;r<280;)e.Mt[r++]=7;for(;r<288;)e.Mt[r++]=8;for(let e=0;e<544;e++)t.Ft[e]=pe();f=t.Ft,t.Ht=f,i=9;let _={Ct:f},l={Ct:i},o={Ct:0};for(Oe(1,e.Mt,288,_,l,e.Et,o,e.jt),f=_.Ct,i=l.Ct,e.Zt=o.Ct,r=0;r<32;)e.Mt[r++]=5;i=5;let u=o.Ct,a={Ct:f},c={Ct:i};n.Ct=u,Oe(2,e.Mt,32,a,c,e.Et,n,e.jt),t.Yt=f.slice(u),t.Xt=false;}e.et=t.Ht,e.nt=9,e.tt=t.Yt,e.rt=5,e.Zt=n.Ct;}function _r(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new x(1<<r.k),r.u)))return 1;if(0==r.h&&(r.h=1<<r.k,r.m=0,r.v=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.m=0,r.v=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.v=r.h):(r.m+=e,r.m==r.h&&(r.m=0),r.v<r.h&&(r.v+=e));}return 0}var h_=class extends z{constructor(){super("Need more input");}};function $t(e,t){let n,r,i,f,_,l,o,u,a,c,s,d,h,w,k,b,g,v=new x(4);if(Ke(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.ot&&(n.ot=16192),E(),c=l,s=o,g=0;try{for(;;)switch(n.ot){case 16180:if(0==n.H){n.ot=16192;break}if(Q(16),2&n.H&&35615==u){0==n.k&&(n.k=15),n.ht=W(0),n.ht=p(n.ht,u),N(),n.ot=16181;break}if(n.Y&&(n.Y.Ot=-1),!(1&n.H)||((D(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ot=16209;break}if(8!=D(4)){e.msg="unknown compression method",n.ot=16209;break}if(S(4),b=D(4)+8,0==n.k&&(n.k=b),b>15||b>n.k){e.msg="invalid window size",n.ot=16209;break}n.dt=1<<b,n.st=0,e.i=n.ht=se(0),n.ot=512&u?16189:16191,N();break;case 16181:if(Q(16),n.st=u,8!=(255&n.st)){e.msg="unknown compression method",n.ot=16209;break}if(57344&n.st){e.msg="unknown header flags set",n.ot=16209;break}n.Y&&(n.Y.Oe=u>>8&1),512&n.st&&4&n.H&&(n.ht=p(n.ht,u)),N(),n.ot=16182;case 16182:Q(32),n.Y&&(n.Y.Ke=u),512&n.st&&4&n.H&&(n.ht=L(n.ht,u)),N(),n.ot=16183;case 16183:Q(16),n.Y&&(n.Y.Pt=255&u,n.Y.Ve=u>>8),512&n.st&&4&n.H&&(n.ht=p(n.ht,u)),N(),n.ot=16184;case 16184:1024&n.st?(Q(16),n.kt=u,n.Y&&(n.Y.Ge=u),512&n.st&&4&n.H&&(n.ht=p(n.ht,u)),N()):n.Y&&(n.Y.Pe=Z),n.ot=16185;case 16185:if(1024&n.st&&(d=n.kt,d>l&&(d=l),d&&(n.Y&&n.Y.Pe&&n.Y.Rt&&(b=n.Y.Ge-n.kt)<n.Y.Rt&&M(n.Y.Pe,b,r,i,d),512&n.st&&4&n.H&&(n.ht=W(n.ht,r.subarray(i,i+d),d)),l-=d,i+=d,n.kt-=d),n.kt))return m();n.kt=0,n.ot=16186;case 16186:if(2048&n.st){if(0==l)return m();d=0;do{b=r[i+d++],n.Y&&n.Y.Jt&&n.kt<n.Y.Jt&&(n.Y.Re[n.kt++]=b);}while(b&&d<l);if(512&n.st&&4&n.H&&(n.ht=W(n.ht,r.subarray(i,i+d),d)),l-=d,i+=d,b)return m()}else n.Y&&(n.Y.Re=Z);n.kt=0,n.ot=16187;case 16187:if(4096&n.st){if(0==l)return m();d=0;do{b=r[i+d++],n.Y&&n.Y.Kt&&n.kt<n.Y.Kt&&(n.Y.Je[n.kt++]=b);}while(b&&d<l);if(512&n.st&&4&n.H&&(n.ht=W(n.ht,r.subarray(i,i+d),d)),l-=d,i+=d,b)return m()}else n.Y&&(n.Y.Je=Z);n.ot=16188;case 16188:if(512&n.st){if(Q(16),4&n.H&&u!=(65535&n.ht)){e.msg="header crc mismatch",n.ot=16209;break}N();}n.Y&&(n.Y.Ye=n.st>>9&1,n.Y.Ot=1),e.i=n.ht=W(0),n.ot=16191;break;case 16189:Q(32),e.i=n.ht=M_(u),N(),n.ot=16190;case 16190:if(!n.ct)return z(),2;e.i=n.ht=se(0),n.ot=16191;case 16191:if(5==t||6==t)return m();case 16192:if(n.ut){$(),n.ot=16206;break}switch(Q(3),n.ut=!!D(1),S(1),D(2)){case 0:n.ot=16193;break;case 1:if(er(n),n.ot=16199,6==t)return S(2),m();break;case 2:n.ot=16196;break;case 3:e.msg="invalid block type",n.ot=16209;}S(2);break;case 16193:if($(),Q(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ot=16209;break}if(n.kt=65535&u,N(),n.ot=16194,6==t)return m();case 16194:n.ot=16195;case 16195:if(d=n.kt,d){if(d>l&&(d=l),d>o&&(d=o),0==d)return m();M(f,_,r,i,d),l-=d,i+=d,o-=d,_+=d,n.kt-=d;break}n.ot=16191;break;case 16196:if(Q(14),n.vt=D(5)+257,S(5),n.xt=D(5)+1,S(5),n.gt=D(4)+4,S(4),n.vt>286||!n.jt&&n.xt>30){e.msg=n.jt?"too many length":"too many length or distance symbols",n.ot=16209;break}n.yt=0,n.ot=16197;case 16197:for(;n.yt<n.gt;)Q(3),n.Mt[Se[n.yt++]]=D(3),S(3);for(;n.yt<19;)n.Mt[Se[n.yt++]]=0;n.Lt=n.zt,n.et=n.tt=n.Lt,n.nt=7;let c={Ct:n.Lt},v={Ct:n.nt},x={Ct:0};if(g=Oe(0,n.Mt,19,c,v,n.Et,x,n.jt),n.Lt=c.Ct,n.nt=v.Ct,g){e.msg="invalid code lengths set",n.ot=16209;break}n.yt=0,n.ot=16198;case 16198:for(;n.yt<n.vt+n.xt;){for(;w=n.et[D(n.nt)],!(w.ft<=a);)j();if(w.lt<16)S(w.ft),n.Mt[n.yt++]=w.lt;else {if(16==w.lt){if(Q(w.ft+2),S(w.ft),0==n.yt){e.msg="invalid bit length repeat",n.ot=16209;break}b=n.Mt[n.yt-1],d=3+D(2),S(2);}else 17==w.lt?(Q(w.ft+3),S(w.ft),b=0,d=3+D(3),S(3)):(Q(w.ft+7),S(w.ft),b=0,d=11+D(7),S(7));if(n.yt+d>n.vt+n.xt){e.msg="invalid bit length repeat",n.ot=16209;break}for(;d--;)n.Mt[n.yt++]=b;}}if(16209==n.ot)break;if(0==n.Mt[256]){e.msg="invalid code -- missing end-of-block",n.ot=16209;break}n.Lt=n.zt,n.nt=9;let q={Ct:n.Lt},T={Ct:n.nt},A={Ct:0};g=Oe(1,n.Mt,n.vt,q,T,n.Et,A,n.jt),n.Lt=q.Ct,n.nt=T.Ct;let I=A.Ct;if(n.et=n.Lt.slice(0,I),g){e.msg="invalid literal/lengths set",n.ot=16209;break}n.rt=6;let U=n.Mt.subarray(n.vt,n.vt+n.xt),B={Ct:n.Lt},C={Ct:n.rt},X={Ct:I};if(g=Oe(2,U,n.xt,B,C,n.Et,X,n.jt),n.Lt=B.Ct,n.rt=C.Ct,n.tt=n.Lt.slice(I),g){e.msg="invalid distances set",n.ot=16209;break}if(n.ot=16199,6==t)return m();case 16199:n.ot=16200;case 16200:if(!n.jt&&l>=6&&o>=258){z(),Vt(e,s),E(),16191==n.ot&&(n.Nt=-1);break}for(n.Nt=0;w=n.et[D(n.nt)],!(w.ft<=a);)j();if(w._t&&!(240&w._t)){for(k=w;w=n.et[k.lt+(D(k.ft+k._t)>>k.ft)],!(k.ft+w.ft<=a);)j();S(k.ft),n.Nt+=k.ft;}if(S(w.ft),n.Nt+=w.ft,n.kt=w.lt,0==w._t){n.ot=16205;break}if(32&w._t){n.Nt=-1,n.ot=16191;break}if(64&w._t){e.msg="invalid literal/length code",n.ot=16209;break}n.Pe=w._t&(n.jt?31:15),n.ot=16201;case 16201:n.Pe&&(Q(n.Pe),n.kt+=D(n.Pe),S(n.Pe),n.Nt+=n.Pe),n.Wt=n.kt,n.ot=16202;case 16202:for(;w=n.tt[D(n.rt)],!(w.ft<=a);)j();if(!(240&w._t)){for(k=w;w=n.tt[k.lt+(D(k.ft+k._t)>>k.ft)],!(k.ft+w.ft<=a);)j();S(k.ft),n.Nt+=k.ft;}if(S(w.ft),n.Nt+=w.ft,64&w._t){e.msg="invalid distance code",n.ot=16209;break}n.bt=w.lt,n.Pe=15&w._t,n.ot=16203;case 16203:n.Pe&&(Q(n.Pe),n.bt+=D(n.Pe),S(n.Pe),n.Nt+=n.Pe),n.ot=16204;case 16204:if(0==o)return m();if(d=s-o,n.bt>d){if(d=n.bt-d,d>n.v&&n.it){e.msg="invalid distance too far back",n.ot=16209;break}d>n.m?(d-=n.m,h=n.h-d):h=n.m-d,d>n.kt&&(d=n.kt),d>o&&(d=o);for(let e=0;e<d;++e)f[_]=255&n.u[h],++_,++h;}else {h=_-n.bt,d=n.kt,d>o&&(d=o);for(let e=0;e<d;++e)f[_]=f[h],++_,++h;}d>o&&(d=o),o-=d,n.kt-=d,0==n.kt&&(n.ot=16200);break;case 16205:if(0==o)return m();f[_++]=n.kt,o--,n.ot=16200;break;case 16206:if(n.H){if(Q(32),s-=o,e.total_out+=s,n.wt+=s,4&n.H&&s){let t=f.subarray(_-s,_);e.i=n.ht=y(n.ht,t,s);}if(s=o,4&n.H&&(n.st?u:M_(u)>>>0)!=n.ht){e.msg="incorrect data check",n.ot=16209;break}N();}n.ot=16207;case 16207:if(n.H&&n.st){if(Q(32),4&n.H&&u!=(4294967295&n.wt)){e.msg="incorrect length check",n.ot=16209;break}N();}n.ot=16208;case 16208:return g=1,m();case 16209:return g=-3,m();case 16210:return -4;default:return -2}}catch(e){if(e instanceof h_)return m();throw e}function m(){if(z(),n.h||s!=e.avail_out&&n.ot<16209&&(n.jt?n.ot<16208:n.ot<16206)||4!=t){let t=s-e.avail_out;if(_r(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ot=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.wt+=s,4&n.H&&s&&(e.i=n.ht=y(n.ht,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.L+(n.ut?64:0)+(16191==n.ot?128:0)+(16199==n.ot||16194==n.ot?256:0),(0==c&&0==s&&0==g||4==t&&0==g)&&(g=-5),g}function y(e,t,r){return n.st?W(e,t,r):se(e,t,r)}function p(e,t){return v[0]=255&t,v[1]=t>>>8&255,W(e,v,2)>>>0}function L(e,t){return v[0]=255&t,v[1]=t>>>8&255,v[2]=t>>>16&255,v[3]=t>>>24&255,W(e,v,4)>>>0}function E(){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.L;}function z(){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.L=a;}function N(){u=0,a=0;}function j(){if(0==l)throw new h_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function Q(e){for(;a<e;)j();}function D(e){return u&(1<<e)-1}function S(e){u>>>=e,a-=e;}function $(){u>>>=7&a,a-=7&a;}}function en(e){return Ke(e)?-2:0}var X_=65536,tr=32768,Y_=class{constructor(e=16,t=X_){this.Vt=[],this.Gt=e;for(let n=0;n<N.min(e,4);n++)this.Vt.push(new x(t));}acquire(e=X_){for(let t=this.Vt.length-1;t>=0;t--){let n=this.Vt[t];if(n.length>=e)return this.Vt.splice(t,1),n}return new x(e)}release(e){this.Vt.length<this.Gt&&this.Vt.push(e);}};function _n(e){let t=new Y_(32,X_),n=null;function r(e){try{t.release(e);}catch{}}return new U({start(){},transform(i,f){if(!n){let t=e.en(),r=e.tn(t);if(0!=r&&0!=r)throw new z("init failed: "+r);n={o:t};}let _=n.o,l=0;for(;l<i.length;){let n=N.min(i.length-l,tr),o=i.subarray(l,l+n);for(_.next_in=o,_.next_in_index=0,_.avail_in=o.length;_.avail_in>0;){let n=t.acquire(),i=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let r=e.nn(_,0),l=n.length-_.avail_out;if(l>0){let e=!1,r={rn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};i=!0,f.enqueue(r);}if(0!=r&&1!=r)throw new z("process error: "+r)}finally{i||r(n);}}l+=n;}},flush(i){if(!n)return;let f=n.o;for(;;){let n=t.acquire(),_=false;try{f.next_out=n,f.next_out_index=0,f.avail_out=n.length;let r=e.nn(f,4),l=n.length-f.avail_out;if(l>0){let e=!1,r={rn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};_=!0,i.enqueue(r);}if(1==r)break;if(0!=r)throw new z("finalization error: "+r)}finally{_||r(n);}}let _=e.fn(f);if(0!=_&&0!=_)throw new z("end failed: "+_)}})}function tn(){return new U({start(){},transform(e,t){try{t.enqueue(e.rn.slice(0));}finally{e.release();}},flush(){}})}function nr(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return _n({en:()=>Dt(),tn:e=>vt(e,r,8,n,8,0),nn:It,fn:F_})}function rr(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:15;return _n({en:()=>Jt("deflate64-raw"==e),tn:e=>Qt(e,t),nn:$t,fn:en})}var x_=class{constructor(e="deflate",t){let n=nr(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(tn());}},p_=class{constructor(e="deflate"){let t=rr(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(tn());}};
6786
+ var{Uint8Array:x,Uint16Array:E,Int32Array:H,TransformStream:U,Math:N,Error:R,Array:v}=globalThis,Se=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new x(0),Ve=new E(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Ee=[];for(let e=0;e<14;e++)Ee.push(e,0==e?4:2);var ge=new E([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]),Te=new E([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 x?e:new x(e.buffer,e.byteOffset,e.byteLength),_=n instanceof x?n.subarray(r,r+i):new x(n.buffer,n.byteOffset+r,i);f.set(_,t);}function je(e,t,n){0!=n&&(e instanceof x?e:new x(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 Qe(e,t){let n=1<<t;return {o:e,u:new x(n),h:n,k:t,v:0,m:0,p:0,L: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 E(t)}var ne=class{constructor(e,t){this.M=e,this.Z=t,this.W=0;}},re=class{constructor(e,t,n,r,i){this.N=e,this.j=t,this.S=n,this.D=r,this.$=i;}};function w_(e){return J_[e<-6||e>2?9:2-e]||""}function Ae(e,t){try{e.msg=w_(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 g(e,t){e.q[e.T++]=t;}function De(e,t){g(e,255&t),g(e,t>>>8&255);}function __(e,t,n){let r=255&n,i=65535&t,f=e.A+e.O;return e.q[f]=255&i,e.q[f+1]=i>>>8&255,e.q[f+2]=r,e.O+=3,i=i-1&65535,e.U[t_[r]+ie+1].I++,e.B[A_(i)].I++,e.O==e.P}function ye(e,t){let n=255&t,r=e.A+e.O;return e.q[r]=0,e.q[r+1]=0,e.q[r+2]=n,e.O+=3,e.U[n].I++,e.O==e.P}function ve(e){return e.h-ae}function A_(e){return e<256?T_[e]:T_[256+(e>>7)]}function D_(e){let t=He+7,n=1<<t,r=(1<<t)-1,i=N.floor((t+k-1)/k),f=1<<8+He;return {...Qe(e,15),o:e,X:42,F:0,H:void 0,Y:32767,J:t,K:n,R:r,V:i,C:new E(32768),G:new E(n),ee:f,q:new x(32768),te:0,ne:32768,T:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,de:0,he:0,we:0,ke:0,be:0,ge:0,ve:0,me:0,xe:0,ye:0,pe:new H(2*we+1),Le:new x(2*we+1),ze:new E(be+1),O:0,P:0,Me:Z,A:0,Ee:0,Ze:0,We:8,Ne:32768,je:0,Qe:0,Se:0,U:new v(le).fill(0).map(()=>Q()),B:new v(2*me+1).fill(0).map(()=>Q()),De:new v(2*oe+1).fill(0).map(()=>Q()),$e:g_(),qe:g_(),Te:g_()}}function y_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Ae=r,f.Oe=i,t.push(f);}return t}function Q(){return {I:0,Ae:0,Ie:0,Oe:0}}function g_(){return new ne([],un(null,Z,0,0,0))}function un(e,t,n,r,i){return new re(e,t,n,r,i)}function Q_(){let e=new v(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 v_(e){let{code:t,length:n}=cn(e),r=new E(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 E(r)}function $_(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 x(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}}return i}function et(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 x(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 _t(e){let t=new x(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 cn(e){let t=N.max(...e),n=new v(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new v(e.length).fill(0),i=new v(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 He=8,k=3,_e=258,ae=_e+k+1,Ue=16,Be=_e,dn=29,ie=256,we=ie+1+dn,me=30,oe=19,le=2*we+1,be=15,tt=9,nt=255,rt=32,at=4,Ie=256,n_=16,r_=17,a_=18,it=0,I_=1,ot=2,$=-1,J_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],i_=te(de),o_=te(Ee),Fe=new E(19);Fe[16]=2,Fe[17]=3,Fe[18]=7;var mn=v_(Q_()),bn=v_(new v(30).fill(5)),Ze=y_(mn),k_=y_(bn),t_=$_(Te,i_,_e),T_=_t(et(ge,o_));function Pe(e){return e%65521>>>0}function se(e,t,n){if(void 0===t||void 0===n)return 1;let r=e>>>16&65535;if(e&=65535,1==n)return (e+=t[0])>=65521&&(e-=65521),r+=e,r>=65521&&(r-=65521),(r<<16|e)>>>0;if(n<16){for(let i=0;i<n;i++)r+=e+=t[i];return e>=65521&&(e-=65521),r=Pe(r),(r<<16|e)>>>0}for(;n>=5552;){n-=5552;let i=N.floor(347);do{for(let n=0;n<16;n++)r+=e+=t[n];t=t.subarray(16);}while(--i);e=Pe(e),r=Pe(r);}if(n){for(;n>=16;){n-=16;for(let n=0;n<16;n++)r+=e+=t[n];t=t.subarray(16);}for(let i=0;i<n;i++)r+=e+=t[i];e=Pe(e),r=Pe(r);}return (r<<16|e)>>>0}var Me=[[],[],[],[],[],[],[],[]];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;Me[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Me[t-1][e];Me[t][e]=n>>>8^Me[0][255&n];}var[lt,sn,hn,xn,pn,Sn,En,gn]=Me;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=N.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=gn[255&t]^En[t>>>8&255]^Sn[t>>>16&255]^pn[t>>>24&255]^xn[255&n]^hn[n>>>8&255]^sn[n>>>16&255]^lt[n>>>24&255];}}for(;i<n;i++)r=r>>>8^lt[255&(r^t[i])];return (4294967295^r)>>>0}function st(e){16==e.L?(De(e,e.p),e.p=0,e.L=0):e.L>=8&&(g(e,e.p),e.p>>=8,e.L-=8);}function ht(e){e.L>8?De(e,e.p):e.L>0&&g(e,e.p),e.Ee=1+(e.L-1&7),e.p=0,e.L=0;}function Tn(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].Oe;0!=t&&(e[i].Ae=e_(f[t]++,t));}}function L(e,t,n){e.L>Ue-n?(e.p=65535&(e.p|t<<e.L),De(e,e.p),e.p=t>>Ue-e.L&65535,e.L+=n-Ue):(e.p=65535&(e.p|t<<e.L),e.L+=n);}function xt(e){for(let t=0;t<e.U.length;t++)e.U[t].I=0;for(let t=0;t<e.B.length;t++)e.B[t].I=0;for(let t=0;t<e.De.length;t++)e.De[t].I=0;e.U[Ie].I=1,e.ie=e.fe=0,e.O=e._e=0;}function pt(e){if(e.U&&e.U.length>=le)for(let t=0;t<le;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<le;t++)e.U.push(Q());}if(e.B&&e.B.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.B[t]=Q();else {e.B=[];for(let t=0;t<2*me+1;t++)e.B.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.$e=new ne(e.U,new re(Ze,i_,ie+1,we,be)),e.qe=new ne(e.B,new re(k_,o_,0,me,be)),e.Te=new ne(e.De,new re(null,Fe,0,oe,7)),e.p=0,e.L=0,e.Ee=0,xt(e);}var he=1;function wn(e,t,n){return n=e.pe[he],e.pe[he]=e.pe[e.Qe--],N_(e,t,he),n}function ct(e,t,n,r){return e[t].I<e[n].I||e[t].I==e[n].I&&r[t]<=r[n]}function N_(e,t,n){let r=e.pe[n],i=n<<1;for(;i<=e.Qe&&(i<e.Qe&&ct(t,e.pe[i+1],e.pe[i],e.Le)&&i++,!ct(t,r,e.pe[i],e.Le));)e.pe[n]=e.pe[i],n=i,i<<=1;e.pe[n]=r;}function An(e,t){let n,r,i,f,_,l,o=t.M,u=t.W,a=t.Z.N,c=t.Z.j,s=t.Z.S,d=t.Z.$,h=0;for(f=0;f<=be;f++)e.ze[f]=0;for(o[e.pe[e.Se]].Oe=0,n=e.Se+1;n<le;n++)r=e.pe[n],f=o[o[r].Ie].Oe+1,f>d&&(f=d,h++),o[r].Oe=f,!(r>u)&&(e.ze[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].I,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].Oe+_)));if(0!=h){do{for(f=d-1;0==e.ze[f];)f--;e.ze[f]--,e.ze[f+1]+=2,e.ze[d]--,h-=2;}while(h>0);for(f=d;0!=f;f--)for(r=e.ze[f];0!=r;)i=e.pe[--n],!(i>u)&&(o[i].Oe!=f&&(e.ie+=(f-o[i].Oe)*o[i].I,o[i].Oe=f),r--);}}function z_(e,t){let n,r,i,f=t.M,_=t.Z.N,l=t.Z.D,o=-1;for(e.Qe=0,e.Se=le,n=0;n<l;n++)0!=f[n].I?(e.pe[++e.Qe]=o=n,e.Le[n]=0):f[n].Oe=0;for(;e.Qe<2;)i=e.pe[++e.Qe]=o<2?++o:0,f[i].I=1,e.Le[i]=0,e.ie--,_&&(e.fe-=_[i].Oe);for(t.W=o,n=N.floor(e.Qe/2);n>=1;n--)N_(e,f,n);i=l;do{n=wn(e,f,n),r=e.pe[he],e.pe[--e.Se]=n,e.pe[--e.Se]=r,f[i].I=f[n].I+f[r].I,e.Le[i]=(e.Le[n]>=e.Le[r]?e.Le[n]:e.Le[r])+1,f[n].Ie=f[r].Ie=i,e.pe[he]=i++,N_(e,f,he);}while(e.Qe>=2);e.pe[--e.Se]=e.pe[he],An(e,t),Tn(f,t.W,e.ze);}function dt(e,t,n){let r,i,f=-1,_=t[0].Oe,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].Oe=65535,r=0;r<=n;r++)i=_,_=t[r+1].Oe,!(++l<o&&i==_)&&(l<u?e.De[i].I+=l:0!=i?(i!=f&&e.De[i].I++,e.De[n_].I++):l<=10?e.De[r_].I++:e.De[a_].I++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function mt(e,t,n){let r,i=-1,f=t[0].Oe,_=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].Oe,!(++_<l&&r==f)){if(_<o)do{L(e,e.De[r].Ae,e.De[r].Oe);}while(0!=--_);else 0!=r?(r!=i&&(L(e,e.De[r].Ae,e.De[r].Oe),_--),L(e,e.De[n_].Ae,e.De[n_].Oe),L(e,_-3,2)):_<=10?(L(e,e.De[r_].Ae,e.De[r_].Oe),L(e,_-3,3)):(L(e,e.De[a_].Ae,e.De[a_].Oe),L(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function Dn(e){let t;for(dt(e,e.U,e.$e.W),dt(e,e.B,e.qe.W),z_(e,e.Te),t=oe-1;t>=3&&0==e.De[Se[t]].Oe;t--);return e.ie+=3*(t+1)+5+5+4,t}function yn(e,t,n,r){let i;for(L(e,t-257,5),L(e,n-1,5),L(e,r-4,4),i=0;i<r;i++)L(e,e.De[Se[i]].Oe,3);mt(e,e.U,t-1),mt(e,e.B,n-1);}function Xe(e,t,n,r,i=0){L(e,(it<<1)+r,3),ht(e),De(e,n),De(e,~n),n&&t&&M(e.q,e.T,t,i,n),e.T+=n;}function St(e){st(e);}function Et(e){L(e,I_<<1,3),L(e,Ze[Ie].Ae,Ze[Ie].Oe),st(e);}function bt(e,t,n){let r,i,f,_,l=0;if(0!=e.O)do{r=255&e.Me[l],r+=(255&e.Me[l+1])<<8,i=e.Me[l+2],l+=3,0==r?L(e,t[i].Ae,t[i].Oe):(f=t_[i],L(e,t[f+ie+1].Ae,t[f+ie+1].Oe),_=i_[f],0!=_&&(i-=Te[f],L(e,i,_)),r--,f=A_(r),L(e,n[f].Ae,n[f].Oe),_=o_[f],0!=_&&(r-=ge[f],L(e,r,_)));}while(l<e.O);L(e,t[Ie].Ae,t[Ie].Oe);}function vn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.U[t].I)return 0;if(0!=e.U[9].I||0!=e.U[10].I||0!=e.U[13].I)return 1;for(t=32;t<ie;t++)if(0!=e.U[t].I)return 1;return 0}function gt(e,t,n,r,i=0){let f,_,l=0;e.be>0?(2==e.o.t&&(e.o.t=vn(e)),z_(e,e.$e),z_(e,e.qe),l=Dn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ge)&&(f=_)):f=_=n+5,n+4<=f&&t?Xe(e,t,n,r,i):_==f?(L(e,(I_<<1)+r,3),bt(e,Ze,k_)):(L(e,(ot<<1)+r,3),yn(e,e.$e.W+1,e.qe.W+1,l+1),bt(e,e.U,e.B)),xt(e),r&&ht(e);}function Dt(){let e=Je();return e.l=D_(e),e}var We=[{Ue:zt,Be:0,Pe:0,Xe:0,Fe:0},{Ue:L_,Be:4,Pe:4,Xe:8,Fe:4},{Ue:L_,Be:5,Pe:5,Xe:16,Fe:8},{Ue:L_,Be:6,Pe:16,Xe:32,Fe:32},{Ue:ze,Be:4,Pe:4,Xe:16,Fe:16},{Ue:ze,Be:16,Pe:8,Xe:16,Fe:32},{Ue:ze,Be:16,Pe:16,Xe:32,Fe:128},{Ue:ze,Be:32,Pe:32,Xe:128,Fe:256},{Ue:ze,Be:128,Pe:128,Xe:256,Fe:1024},{Ue:ze,Be:258,Pe:258,Xe:258,Fe:4096}];function Tt(e){return 2*e-(e>4?9:0)}function u_(e,t,n){return ((t<<e.V^n)&e.R)>>>0}function c_(e,t){e.ke=u_(e,e.ke,e.u[t+(k-1)]);let n=e.C[t&e.Y]=e.G[e.ke];return e.G[e.ke]=t,n}function yt(e){e.G[e.K-1]=0,je(e.G,0,(e.K-1)*e.G.BYTES_PER_ELEMENT);}function Ln(e){let t,n,r=e.h;for(t=e.K;t>0;)t--,n=e.G[t],e.G[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.C[t],e.C[t]=n>=r?n-r:0;}function O_(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.F?e.i=se(e.i,new x(t.buffer,t.byteOffset+n,i),i):2==e.l.F&&(e.i=W(e.i,new x(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function d_(e){let t,n,r=e.h;do{if(n=e.Ne-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ve(e)&&(M(e.u,0,e.u,r,r-n),e.je-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Ln(e),n+=r),0==e.o.avail_in)break;if(t=O_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=k){let t=e.ae-e.le;for(e.ke=e.u[t],e.ke=u_(e,e.ke,e.u[t+1]);e.le&&(e.ke=u_(e,e.ke,e.u[t+k-1]),e.C[t&e.Y]=e.G[e.ke],e.G[e.ke]=t,t++,e.le--,!(e.ce+e.le<k)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.v<e.Ne){let t,n=e.ae+e.ce;e.v<n?(t=e.Ne-n,t>Be&&(t=Be),je(e.u,n,t),e.v=n+t):e.v<n+Be&&(t=n+Be-e.v,t>e.Ne-e.v&&(t=e.Ne-e.v),je(e.u,e.v,t),e.v+=t);}}function vt(e,t,n=8,r=15,i=He,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>tt||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=D_(e);return l?(e.l=l,l.o=e,l.X=42,l.F=_,l.H=void 0,l.k=r,l.h=1<<l.k,l.Y=l.h-1,l.J=i+7,l.K=1<<l.J,l.R=l.K-1,l.V=(l.J+k-1)/k,l.u=new x(2*l.h),l.C=new E(l.h),l.G=new E(l.K),l.v=0,l.ee=1<<i+6,l.q=new x(l.ee*at),l.ne=4*l.ee,l.u&&l.C&&l.G&&l.q?(l.Me=l.q.subarray(l.ee),l.A=l.te+l.ee,l.P=3*(l.ee-1),l.be=t,l.ge=f,l.We=n,Un(e)):(l.X=666,e.msg=w_(-4),F_(e),-4)):-4}function B_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.X&&57!=t.X&&69!=t.X&&73!=t.X&&91!=t.X&&103!=t.X&&113!=t.X&&666!=t.X}function On(e){let t;return B_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.T=0,t.re=t.te,t.F<0&&(t.F=-t.F),t.X=2==t.F?57:42,e.i=2==t.F?W(0):se(0),t.oe=-2,pt(t),0)}function Hn(e){e.Ne=2*e.h,yt(e),e.ye=We[e.be].Be,e.ve=We[e.be].Pe,e.me=We[e.be].Xe,e.xe=We[e.be].Fe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.de=k-1,e.we=0,e.ke=0;}function Un(e){let t=On(e);return 0==t&&Hn(e.l),t}function Ye(e,t){g(e,t>>8),g(e,255&t);}function q(e){let t,n=e.l;St(n),t=n.T,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.q,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.T-=t,0==n.T&&(n.re=n.te));}function ke(e,t){let n=e.l;n.H&&n.H.He&&(e.i=W(e.i,new x(n.q.buffer,n.te+t,n.T-t),n.T-t));}function It(e,t){let n,r=e.l;if(B_(e)||t>5||t<0)return Ae(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.X&&4!=t)return Ae(e,-2);if(0==e.avail_out)return Ae(e,-5);if(n=r.oe,r.oe=t,0!=r.T){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&Tt(t)<=Tt(n)&&4!=t)return Ae(e,-5);if(666==r.X&&0!=e.avail_in)return Ae(e,-5);if(42==r.X&&0==r.F&&(r.X=113),42==r.X){let t,n=8+(r.k-8<<4)<<8;if(t=r.ge>=2||r.be<2?0:r.be<6?1:6==r.be?2:3,n|=t<<6,0!=r.ae&&(n|=rt),n+=31-n%31,Ye(r,n),0!=r.ae&&(Ye(r,e.i>>16),Ye(r,65535&e.i)),e.i=1,r.X=113,q(e),0!=r.T)return r.oe=$,0}if(57==r.X)if(e.i=W(0),g(r,31),g(r,139),g(r,8),r.H)g(r,(r.H.Ye?1:0)+(r.H.He?2:0)+(null==r.H.Je?0:4)+(null==r.H.Ke?0:8)+(null==r.H.Re?0:16)),g(r,255&r.H.Ve),g(r,r.H.Ve>>>8&255),g(r,r.H.Ve>>>16&255),g(r,r.H.Ve>>>24&255),g(r,9==r.be?2:r.ge>=2||r.be<2?4:0),g(r,255&r.H.Ce),null!=r.H.Je&&(g(r,255&r.H.Ge),g(r,r.H.Ge>>>8&255)),r.H.He&&(e.i=W(e.i,r.q,r.T)),r.Ze=0,r.X=69;else if(g(r,0),g(r,0),g(r,0),g(r,0),g(r,0),g(r,9==r.be?2:r.ge>=2||r.be<2?4:0),g(r,nt),r.X=113,q(e),0!=r.T)return r.oe=$,0;if(69==r.X){if(r.H&&null!=r.H.Je){let t=r.T,n=(65535&r.H.Ge)-r.Ze;for(;r.T+n>r.ne;){let i=r.ne-r.T;if(M(r.q,r.T,r.H.Je,r.Ze,i),r.T=r.ne,ke(e,t),r.Ze+=i,q(e),0!=r.T)return r.oe=$,0;t=0,n-=i;}M(r.q,r.T,r.H.Je,r.Ze,n),r.T+=n,ke(e,t),r.Ze=0;}r.X=73;}if(73==r.X){if(r.H&&r.H.Ke&&r.H.Ke.length){let t,n=r.T;do{if(r.T==r.ne){if(ke(e,n),q(e),0!=r.T)return r.oe=$,0;n=0;}t=r.H.Ke[r.Ze++],g(r,t);}while(0!=t);ke(e,n),r.Ze=0;}r.X=91;}if(91==r.X){if(r.H&&r.H.Re&&r.H.Re.length){let t,n=r.T;do{if(r.T==r.ne){if(ke(e,n),q(e),0!=r.T)return r.oe=$,0;n=0;}t=r.H.Re[r.Ze++],g(r,t);}while(0!=t);ke(e,n);}r.X=103;}if(103==r.X){if(r.H&&r.H.He){if(r.T+2>r.ne&&(q(e),0!=r.T))return r.oe=$,0;g(r,255&e.i),g(r,e.i>>>8&255),e.i=W(0);}if(r.X=113,q(e),0!=r.T)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.X){let n=0==r.be?zt(r,t):2==r.ge?Fn(r,t):3==r.ge?Bn(r,t):We[r.be].Ue(r,t);if((2==n||3==n)&&(r.X=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Et(r):5!=t&&(Xe(r,null,0,0),3==t&&(yt(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.F<=0?1:(2==r.F?(g(r,255&e.i),g(r,e.i>>>8&255),g(r,e.i>>>16&255),g(r,e.i>>>24&255),g(r,255&e.total_in),g(r,e.total_in>>>8&255),g(r,e.total_in>>>16&255),g(r,e.total_in>>>24&255)):(Ye(r,e.i>>>16&65535),Ye(r,65535&e.i)),q(e),r.F>0&&(r.F=-r.F),0!=r.T?0:1)}function F_(e){if(B_(e))return -2;let t=e.l,n=t.X;return t.u=Z,t.C=Ve,t.G=Ve,t.q=Z,t.Me=Z,t.pe=new H(0),t.Le=Z,t.ze=Ve,t.U.length=0,t.B.length=0,t.De.length=0,t.H=void 0,t.te=0,t.re=0,t.A=0,113==n?-3:0}function kt(e,t){let n,r,i=e.xe,f=e.ae,_=e.de,l=e.me,o=e.ae>ve(e)?e.ae-ve(e):0,u=e.C,a=e.Y,c=e.u[f],s=e.u[f+1],d=e.u[f+_-1],h=e.u[f+_];e.de>=e.ve&&(i>>=2),l>e.ce&&(l=e.ce);do{if(n=t,e.u[n+_]!=h||e.u[n+_-1]!=d||e.u[n]!=c||e.u[n+1]!=s)continue;let i=N.min(_e,e.ce),o=2;for(;o<i&&e.u[f+o]==e.u[n+o];)o++;if(r=o,r>_){if(e.je=t,_=r,r>=l)break;d=e.u[f+_-1],h=e.u[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=e.ce?_:e.ce}function Nt(e,t){gt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return Nt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var wt=65535;function Ne(e,t){return e<t?e:t}function zt(e,t){let n,r,i,f=Ne(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=wt,i=e.L+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,Xe(e,null,0,_),e.q[e.T-4]=n,e.q[e.T-3]=n>>8,e.q[e.T-2]=~n,e.q[e.T-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&&(O_(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.Ne-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+=Ne(l,e.h-e.le);e.ue=e.ae;}return e.v<e.ae&&(e.v=e.ae),_?(e.Ee=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.Ne-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&&(O_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=Ne(i,e.h-e.le)),e.v<e.ae&&(e.v=e.ae),i=e.L+42>>3,i=Ne(e.ne-i,wt),f=Ne(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=Ne(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Xe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Ee=8),_?2:0)}function L_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(d_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=k&&(n=c_(e,e.ae)),0!=n&&e.ae-n<=ve(e)&&(e.se=kt(e,n)),e.se>=k)if(e.ae,e.je,e.se,r=__(e,e.ae-e.je,e.se-k),e.ce-=e.se,e.se<=e.ye&&e.ce>=k){e.se--;do{e.ae++,n=c_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.ke=e.u[e.ae],e.ke=u_(e,e.ke,e.u[e.ae+1]);else r=ye(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<k-1?e.ae:k-1,4==t){return j(e,true)??3}if(e.O){let t=j(e,false);if(null!=t)return t}return 1}function ze(e,t){let n,r=false;for(;;){if(e.ce<ae){if(d_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=k&&(n=c_(e,e.ae)),e.de=e.se,e.he=e.je,e.se=k-1,0!=n&&e.de<e.ye&&e.ae-n<=ve(e)&&(e.se=kt(e,n),e.se<=5&&1==e.ge&&(e.se=k-1)),e.de>=k&&e.se<=e.de){let t=e.ae+e.ce-k;e.ae,e.he,e.de,r=__(e,e.ae-1-e.he,e.de-k),e.ce-=e.de-1,e.de-=2;do{++e.ae<=t&&(n=c_(e,e.ae));}while(0!=--e.de);if(e.we=0,e.se=k-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=ye(e,e.u[e.ae-1]),r&&Nt(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=ye(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<k-1?e.ae:k-1,4==t){return j(e,true)??3}if(e.O){let t=j(e,false);if(null!=t)return t}return 1}function Bn(e,t){let n,r,i,f;for(;;){if(e.ce<=_e){if(d_(e),e.ce<=_e&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=k&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+_e;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=_e-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=k?(e.ae,e.ae,e.se,n=__(e,1,e.se-k),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=ye(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.O){let t=j(e,false);if(null!=t)return t}return 1}function Fn(e,t){let n=false;for(;;){if(0==e.ce&&(d_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=ye(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.O){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,m_=592,b_=594,Rt=ge.map(e=>e+1),Ct=Te.subarray(0,-1).map(e=>e+3),Zn=[16,1,73,1,200,1],Pn=[144,1,72,1,78,1],Lt=Ee.map(Gt),Ot=Ee.map(Kt);Lt.push(64,2),Ot.push(142,2);var Ht=de.slice(0,-2).map(Gt),Ut=de.slice(0,-2).map(Kt);Ht.push(...Zn),Ut.push(...Pn);var Bt=new E([...Ct,258,0,0]),Ft=new E([...Ct,3,0,0]),Zt=te(Ht),Pt=te(Ut),Mt=new E([...Rt,0,0]),Xt=new E([...Rt,32769,49153]),Yt=te(Lt),Wt=te(Ot);function Gt(e,t){return t%2?e:e+16}function Kt(e,t){return t%2?e:e+128}function Vt(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.L>>>0,c=r.et,s=r.tt,d=(1<<r.nt)-1,h=(1<<r.rt)-1,w=r.h>>>0,k=r.v>>>0,b=r.m>>>0,g=r.it,v=f-(t-e.avail_out),m=f+(e.avail_out-257),x=i+(e.avail_in-5),y=0,p=0,L=0,z=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&d];t:for(;;){if(L=n.ft,u>>>=L,a-=L,L=n._t,0==L){l[f++]=n.lt;break}if(16&L){if(y=n.lt,L&=15,L){for(;a<L;){if(!(i<_.length)){r.ot=16200;break e}u+=_[i++]<<a,a+=8;}y+=u&(1<<L)-1,u>>>=L,a-=L;}for(;a<15;){if(!(i<_.length)){r.ot=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&h];n:for(;;){if(L=n.ft,u>>>=L,a-=L,L=n._t,16&L){if(p=n.lt,L&=15,L){for(;a<L;){if(!(i<_.length)){r.ot=16200;break e}u+=_[i++]<<a,a+=8;}p+=u&(1<<L)-1,u>>>=L,a-=L;}let t=y,c=f-v;if(p>c){let n=p-c;if(n>k&&g){e.msg="invalid distance too far back",r.ot=16209;break e}if(0==b){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-p;}else if(b<n){z=w+b-n;let e=n-b;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,b<t){for(let e=0;e<b;++e)l[f++]=o[z++];t-=b,z=f-p;}}else {if(z=b-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-p;}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-p;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&L){e.msg="invalid distance code",r.ot=16209;break e}n=s[n.lt+(u&(1<<L)-1)];continue n}break}if(64&L){if(32&L){r.ot=16191;break e}e.msg="invalid literal/length code",r.ot=16209;break e}n=c[n.lt+(u&(1<<L)-1)];continue t}}while(i<x&&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<x?x-i+5:5-(i-x),e.avail_out=f<m?m-f+257:257-(f-m),r.p=u>>>0,r.L=a>>>0;}function Z_(e,t){let n=[],r=t?ue+b_:ue+m_;return {...Qe(e,0),o:e,ot:16180,ut:false,F:0,ct:false,st:0,dt:0,ht:0,wt:0,u:Z,kt:0,bt:0,Je:0,et:n,tt:n,nt:0,rt:0,gt:0,vt:0,xt:0,yt:0,Lt:n,zt:new E(320),Mt:new E(288),Et:new v(r).fill(null).map(()=>pe()),Zt:0,it:true,Wt:0,Nt:0,jt:t}}function pe(e=0,t=0,n=0){return {_t:e,ft:t,lt:n}}function P_(e=1){return {_t:64,ft:e,lt:0}}function jt(e=0){return {_t:96,ft:e,lt:0}}function M_(e){return (255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255}var Le=15,Xn={jt:false,Qt:Bt,St:Zt,Dt:Mt,$t:Yt,qt:20,Tt:257,At:0,Ot:m_,It:false,Ut:true},Yn={jt:true,Qt:Ft,St:Pt,Dt:Xt,$t:Wt,qt:19,Tt:256,At:-1,Ot:b_,It:true,Ut:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,d,h,w,k,b,g,v,m,x,y,p,L,z,M,Z=new E(Le+1),W=new E(Le+1),N=l?Yn:Xn;for(o=0;o<=Le;o++)Z[o]=0;for(u=0;u<n;u++)Z[t[u]]++;for(s=i.Bt,c=Le;c>=1&&0==Z[c];c--);if(s>c&&(s=c),0==c)return N.Ut?(y=P_(1),r.Bt[0]=y,r.Bt[1]=y,i.Bt=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:L=z=f,M=N.qt;break;case 1:L=N.Qt,z=N.St,M=N.Tt;break;default:L=N.Dt,z=N.$t,M=N.At;}if(b=0,u=0,o=a,p=_.Bt,d=s,h=0,m=-1,k=1<<s,x=k-1,1==e&&(N.It?k>=ue:k>ue)||2==e&&(N.It?k>=N.Ot:k>N.Ot))return 1;for(;;){y=Wn(f,u,o,h,e,L,z,M,N.jt),g=1<<o-h,v=1<<d,a=v;do{v-=g;let e=(b>>h)+v;r.Bt[p+e]={...y};}while(0!=v);for(g=1<<o-1;b&g;)g>>=1;if(0!=g?(b&=g-1,b+=g):b=0,u++,0==--Z[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(b&x)!=m){for(0==h&&(h=s),p+=1<<d,d=o-h,w=1<<d;d+h<c&&(w-=Z[d+h],!(w<=0));)d++,w<<=1;if(k+=1<<d,1==e&&(N.It?k>=ue:k>ue)||2==e&&(N.It?k>=N.Ot:k>N.Ot))return 1;m=b&x,r.Bt[_.Bt+m]={_t:d,ft:s,lt:p-_.Bt};}}if(0!=b)for(y=P_(o-h);0!=b;){for(0!=h&&(b&x)!=m&&(h=0,o=s,p=_.Bt,d=s,y.ft=o),r.Bt[p+(b>>h)]={...y},g=1<<o-1;b&g;)g>>=1;0!=g?(b&=g-1,b+=g):b=0;}return _.Bt+=k,i.Bt=s,0}function Wn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=pe(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=pe(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=pe(_[i],n-r,f[i]);}else u=jt(n-r);return u}var Vn={Pt:true,Xt:new v(544),Ft:[],Ht:[]},jn={Pt:true,Xt:new v(544),Ft:[],Ht:[]};function Jt(){let e=Je();return e.l=Z_(e,false),e}function Ke(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.jt&&(t.ot<16191||t.ot>16209)||!t.jt&&(t.ot<16180||t.ot>16211))))}function Jn(e){let t;return Ke(e)?-2:(t=e.l,e.total_in=e.total_out=t.wt=0,e.msg="",t.F&&(e.i=1&t.F),t.ot=t.jt?16191:16180,t.ut=false,t.ct=false,t.st=-1,t.dt=t.jt?65536:32768,delete t.H,t.p=0,t.L=0,t.et=t.Et,t.tt=t.Et,t.Lt=t.Et,t.it=true,t.Wt=-1,0)}function Qn(e){let t;return Ke(e)?-2:(t=e.l,t.h=0,t.v=0,t.m=0,Jn(e))}function $n(e,t){let n,r;if(Ke(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.jt=-16==t,t=-t;}else n=5+(t>>4),r.jt=false,t<48&&(t&=15);let i=r.jt?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.k!=t&&(r.u=Z),r.F=n,r.k=t,Qn(e))}function Qt(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=Z_(e,i),e.l=r,r.o=e,r.ot=i?16191:16180,n=$n(e,t),n}function er(e){let t=e.jt?jn:Vn,n={Bt:0};if(t.Pt){let r,i,f;for(r=0;r<144;)e.zt[r++]=8;for(;r<256;)e.zt[r++]=9;for(;r<280;)e.zt[r++]=7;for(;r<288;)e.zt[r++]=8;for(let e=0;e<544;e++)t.Xt[e]=pe();f=t.Xt,t.Ft=f,i=9;let _={Bt:f},l={Bt:i},o={Bt:0};for(Oe(1,e.zt,288,_,l,e.Mt,o,e.jt),f=_.Bt,i=l.Bt,e.Zt=o.Bt,r=0;r<32;)e.zt[r++]=5;i=5;let u=o.Bt,a={Bt:f},c={Bt:i};n.Bt=u,Oe(2,e.zt,32,a,c,e.Mt,n,e.jt),t.Ht=f.slice(u),t.Pt=false;}e.et=t.Ft,e.nt=9,e.tt=t.Ht,e.rt=5,e.Zt=n.Bt;}function _r(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new x(1<<r.k),r.u)))return 1;if(0==r.h&&(r.h=1<<r.k,r.m=0,r.v=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.m=0,r.v=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.v=r.h):(r.m+=e,r.m==r.h&&(r.m=0),r.v<r.h&&(r.v+=e));}return 0}var x_=class extends R{constructor(){super("Need more input");}};function $t(e,t){let n,r,i,f,_,l,o,u,a,c,s,d,h,w,k,b,g,v=new x(4);if(Ke(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.ot&&(n.ot=16192),z(),c=l,s=o,g=0;try{for(;;)switch(n.ot){case 16180:if(0==n.F){n.ot=16192;break}if(Q(16),2&n.F&&35615==u){0==n.k&&(n.k=15),n.ht=W(0),n.ht=p(n.ht,u),N(),n.ot=16181;break}if(n.H&&(n.H.Yt=-1),!(1&n.F)||((S(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ot=16209;break}if(8!=S(4)){e.msg="unknown compression method",n.ot=16209;break}if(D(4),b=S(4)+8,0==n.k&&(n.k=b),b>15||b>n.k){e.msg="invalid window size",n.ot=16209;break}n.dt=1<<b,n.st=0,e.i=n.ht=se(0),n.ot=512&u?16189:16191,N();break;case 16181:if(Q(16),n.st=u,8!=(255&n.st)){e.msg="unknown compression method",n.ot=16209;break}if(57344&n.st){e.msg="unknown header flags set",n.ot=16209;break}n.H&&(n.H.Ye=u>>8&1),512&n.st&&4&n.F&&(n.ht=p(n.ht,u)),N(),n.ot=16182;case 16182:Q(32),n.H&&(n.H.Ve=u),512&n.st&&4&n.F&&(n.ht=L(n.ht,u)),N(),n.ot=16183;case 16183:Q(16),n.H&&(n.H.Jt=255&u,n.H.Ce=u>>8),512&n.st&&4&n.F&&(n.ht=p(n.ht,u)),N(),n.ot=16184;case 16184:1024&n.st?(Q(16),n.kt=u,n.H&&(n.H.Ge=u),512&n.st&&4&n.F&&(n.ht=p(n.ht,u)),N()):n.H&&(n.H.Je=Z),n.ot=16185;case 16185:if(1024&n.st&&(d=n.kt,d>l&&(d=l),d&&(n.H&&n.H.Je&&n.H.Kt&&(b=n.H.Ge-n.kt)<n.H.Kt&&M(n.H.Je,b,r,i,d),512&n.st&&4&n.F&&(n.ht=W(n.ht,r.subarray(i,i+d),d)),l-=d,i+=d,n.kt-=d),n.kt))return m();n.kt=0,n.ot=16186;case 16186:if(2048&n.st){if(0==l)return m();d=0;do{b=r[i+d++],n.H&&n.H.Rt&&n.kt<n.H.Rt&&(n.H.Ke[n.kt++]=b);}while(b&&d<l);if(512&n.st&&4&n.F&&(n.ht=W(n.ht,r.subarray(i,i+d),d)),l-=d,i+=d,b)return m()}else n.H&&(n.H.Ke=Z);n.kt=0,n.ot=16187;case 16187:if(4096&n.st){if(0==l)return m();d=0;do{b=r[i+d++],n.H&&n.H.Vt&&n.kt<n.H.Vt&&(n.H.Re[n.kt++]=b);}while(b&&d<l);if(512&n.st&&4&n.F&&(n.ht=W(n.ht,r.subarray(i,i+d),d)),l-=d,i+=d,b)return m()}else n.H&&(n.H.Re=Z);n.ot=16188;case 16188:if(512&n.st){if(Q(16),4&n.F&&u!=(65535&n.ht)){e.msg="header crc mismatch",n.ot=16209;break}N();}n.H&&(n.H.He=n.st>>9&1,n.H.Yt=1),e.i=n.ht=W(0),n.ot=16191;break;case 16189:Q(32),e.i=n.ht=M_(u),N(),n.ot=16190;case 16190:if(!n.ct)return E(),2;e.i=n.ht=se(0),n.ot=16191;case 16191:if(5==t||6==t)return m();case 16192:if(n.ut){$(),n.ot=16206;break}switch(Q(3),n.ut=!!S(1),D(1),S(2)){case 0:n.ot=16193;break;case 1:if(er(n),n.ot=16199,6==t)return D(2),m();break;case 2:n.ot=16196;break;case 3:e.msg="invalid block type",n.ot=16209;}D(2);break;case 16193:if($(),Q(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ot=16209;break}if(n.kt=65535&u,N(),n.ot=16194,6==t)return m();case 16194:n.ot=16195;case 16195:if(d=n.kt,d){if(d>l&&(d=l),d>o&&(d=o),0==d)return m();M(f,_,r,i,d),l-=d,i+=d,o-=d,_+=d,n.kt-=d;break}n.ot=16191;break;case 16196:if(Q(14),n.vt=S(5)+257,D(5),n.xt=S(5)+1,D(5),n.gt=S(4)+4,D(4),n.vt>286||!n.jt&&n.xt>30){e.msg=n.jt?"too many length":"too many length or distance symbols",n.ot=16209;break}n.yt=0,n.ot=16197;case 16197:for(;n.yt<n.gt;)Q(3),n.zt[Se[n.yt++]]=S(3),D(3);for(;n.yt<19;)n.zt[Se[n.yt++]]=0;n.Lt=n.Et,n.et=n.tt=n.Lt,n.nt=7;let c={Bt:n.Lt},v={Bt:n.nt},x={Bt:0};if(g=Oe(0,n.zt,19,c,v,n.Mt,x,n.jt),n.Lt=c.Bt,n.nt=v.Bt,g){e.msg="invalid code lengths set",n.ot=16209;break}n.yt=0,n.ot=16198;case 16198:for(;n.yt<n.vt+n.xt;){for(;w=n.et[S(n.nt)],!(w.ft<=a);)j();if(w.lt<16)D(w.ft),n.zt[n.yt++]=w.lt;else {if(16==w.lt){if(Q(w.ft+2),D(w.ft),0==n.yt){e.msg="invalid bit length repeat",n.ot=16209;break}b=n.zt[n.yt-1],d=3+S(2),D(2);}else 17==w.lt?(Q(w.ft+3),D(w.ft),b=0,d=3+S(3),D(3)):(Q(w.ft+7),D(w.ft),b=0,d=11+S(7),D(7));if(n.yt+d>n.vt+n.xt){e.msg="invalid bit length repeat",n.ot=16209;break}for(;d--;)n.zt[n.yt++]=b;}}if(16209==n.ot)break;if(0==n.zt[256]){e.msg="invalid code -- missing end-of-block",n.ot=16209;break}n.Lt=n.Et,n.nt=9;let q={Bt:n.Lt},T={Bt:n.nt},A={Bt:0};g=Oe(1,n.zt,n.vt,q,T,n.Mt,A,n.jt),n.Lt=q.Bt,n.nt=T.Bt;let O=A.Bt;if(n.et=n.Lt.slice(0,O),g){e.msg="invalid literal/lengths set",n.ot=16209;break}n.rt=6;let I=n.zt.subarray(n.vt,n.vt+n.xt),U={Bt:n.Lt},B={Bt:n.rt},P={Bt:O};if(g=Oe(2,I,n.xt,U,B,n.Mt,P,n.jt),n.Lt=U.Bt,n.rt=B.Bt,n.tt=n.Lt.slice(O),g){e.msg="invalid distances set",n.ot=16209;break}if(n.ot=16199,6==t)return m();case 16199:n.ot=16200;case 16200:if(!n.jt&&l>=6&&o>=258){E(),Vt(e,s),z(),16191==n.ot&&(n.Wt=-1);break}for(n.Wt=0;w=n.et[S(n.nt)],!(w.ft<=a);)j();if(w._t&&!(240&w._t)){for(k=w;w=n.et[k.lt+(S(k.ft+k._t)>>k.ft)],!(k.ft+w.ft<=a);)j();D(k.ft),n.Wt+=k.ft;}if(D(w.ft),n.Wt+=w.ft,n.kt=w.lt,0==w._t){n.ot=16205;break}if(32&w._t){n.Wt=-1,n.ot=16191;break}if(64&w._t){e.msg="invalid literal/length code",n.ot=16209;break}n.Je=w._t&(n.jt?31:15),n.ot=16201;case 16201:n.Je&&(Q(n.Je),n.kt+=S(n.Je),D(n.Je),n.Wt+=n.Je),n.Nt=n.kt,n.ot=16202;case 16202:for(;w=n.tt[S(n.rt)],!(w.ft<=a);)j();if(!(240&w._t)){for(k=w;w=n.tt[k.lt+(S(k.ft+k._t)>>k.ft)],!(k.ft+w.ft<=a);)j();D(k.ft),n.Wt+=k.ft;}if(D(w.ft),n.Wt+=w.ft,64&w._t){e.msg="invalid distance code",n.ot=16209;break}n.bt=w.lt,n.Je=15&w._t,n.ot=16203;case 16203:n.Je&&(Q(n.Je),n.bt+=S(n.Je),D(n.Je),n.Wt+=n.Je),n.ot=16204;case 16204:if(0==o)return m();if(d=s-o,n.bt>d){if(d=n.bt-d,d>n.v&&n.it){e.msg="invalid distance too far back",n.ot=16209;break}d>n.m?(d-=n.m,h=n.h-d):h=n.m-d,d>n.kt&&(d=n.kt),d>o&&(d=o);for(let e=0;e<d;++e)f[_]=255&n.u[h],++_,++h;}else {h=_-n.bt,d=n.kt,d>o&&(d=o);for(let e=0;e<d;++e)f[_]=f[h],++_,++h;}d>o&&(d=o),o-=d,n.kt-=d,0==n.kt&&(n.ot=16200);break;case 16205:if(0==o)return m();f[_++]=n.kt,o--,n.ot=16200;break;case 16206:if(n.F){if(Q(32),s-=o,e.total_out+=s,n.wt+=s,4&n.F&&s){let t=f.subarray(_-s,_);e.i=n.ht=y(n.ht,t,s);}if(s=o,4&n.F&&(n.st?u:M_(u)>>>0)!=n.ht){e.msg="incorrect data check",n.ot=16209;break}N();}n.ot=16207;case 16207:if(n.F&&n.st){if(Q(32),4&n.F&&u!=(4294967295&n.wt)){e.msg="incorrect length check",n.ot=16209;break}N();}n.ot=16208;case 16208:return g=1,m();case 16209:return g=-3,m();case 16210:return -4;default:return -2}}catch(e){if(e instanceof x_)return m();throw e}function m(){if(E(),n.h||s!=e.avail_out&&n.ot<16209&&(n.jt?n.ot<16208:n.ot<16206)||4!=t){let t=s-e.avail_out;if(_r(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ot=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.wt+=s,4&n.F&&s&&(e.i=n.ht=y(n.ht,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.L+(n.ut?64:0)+(16191==n.ot?128:0)+(16199==n.ot||16194==n.ot?256:0),(0==c&&0==s&&0==g||4==t&&0==g)&&(g=-5),g}function y(e,t,r){return n.st?W(e,t,r):se(e,t,r)}function p(e,t){return v[0]=255&t,v[1]=t>>>8&255,W(e,v,2)>>>0}function L(e,t){return v[0]=255&t,v[1]=t>>>8&255,v[2]=t>>>16&255,v[3]=t>>>24&255,W(e,v,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.L;}function E(){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.L=a;}function N(){u=0,a=0;}function j(){if(0==l)throw new x_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function Q(e){for(;a<e;)j();}function S(e){return u&(1<<e)-1}function D(e){u>>>=e,a-=e;}function $(){u>>>=7&a,a-=7&a;}}function en(e){return Ke(e)?-2:0}var X_=65536,tr=32768,Y_=class{constructor(e=16,t=X_){this.Ct=[],this.Gt=e;for(let n=0;n<N.min(e,4);n++)this.Ct.push(new x(t));}acquire(e=X_){for(let t=this.Ct.length-1;t>=0;t--){let n=this.Ct[t];if(n.length>=e)return this.Ct.splice(t,1),n}return new x(e)}release(e){this.Ct.length<this.Gt&&this.Ct.push(e);}};function _n(e){let t=new Y_(32,X_),n=null;function r(e){try{t.release(e);}catch{}}return new U({start(){},transform(i,f){if(!n){let t=e.en(),r=e.tn(t);if(0!=r&&0!=r)throw new R("init failed: "+r);n={o:t};}let _=n.o,l=0;for(;l<i.length;){let n=N.min(i.length-l,tr),o=i.subarray(l,l+n);for(_.next_in=o,_.next_in_index=0,_.avail_in=o.length;_.avail_in>0;){let n=t.acquire(),i=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let r=e.nn(_,0),l=n.length-_.avail_out;if(l>0){let e=!1,r={rn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};i=!0,f.enqueue(r);}if(0!=r&&1!=r)throw new R("process error: "+r)}finally{i||r(n);}}l+=n;}},flush(i){if(!n)return;let f=n.o;for(;;){let n=t.acquire(),_=false;try{f.next_out=n,f.next_out_index=0,f.avail_out=n.length;let r=e.nn(f,4),l=n.length-f.avail_out;if(l>0){let e=!1,r={rn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};_=!0,i.enqueue(r);}if(1==r)break;if(0!=r)throw new R("finalization error: "+r)}finally{_||r(n);}}let _=e.fn(f);if(0!=_&&0!=_)throw new R("end failed: "+_)}})}function tn(){return new U({start(){},transform(e,t){try{t.enqueue(e.rn.slice(0));}finally{e.release();}},flush(){}})}function nr(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return _n({en:()=>Dt(),tn:e=>vt(e,r,8,n,8,0),nn:It,fn:F_})}function rr(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return _n({en:()=>Jt(),tn:e=>Qt(e,t),nn:$t,fn:en})}var p_=class{constructor(e="deflate",t){let n=nr(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(tn());}},S_=class{constructor(e="deflate"){let t=rr(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(tn());}};
6990
6787
 
6991
6788
  /*
6992
6789
  Copyright (c) 2025 Gildas Lormeau. All rights reserved.
@@ -7020,8 +6817,8 @@ var{Uint8Array:x,Uint16Array:E,Int32Array:H,TransformStream:U,Math:N,Error:z,Arr
7020
6817
  configure({
7021
6818
  workerURI: "./core/web-worker-native.js",
7022
6819
  wasmURI: null,
7023
- CompressionStreamZlib: x_,
7024
- DecompressionStreamZlib: p_
6820
+ CompressionStreamZlib: p_,
6821
+ DecompressionStreamZlib: S_
7025
6822
  });
7026
6823
 
7027
6824
  /*
@@ -7077,8 +6874,6 @@ class ZipEntry {
7077
6874
  uncompressedSize: params.uncompressedSize || 0,
7078
6875
  passThrough: params.passThrough
7079
6876
  });
7080
- // detached entries (e.g. clones) are not registered until they are attached,
7081
- // otherwise they could never be garbage collected
7082
6877
  if (parent || !fs.root) {
7083
6878
  fs.entries[zipEntry.id] = zipEntry;
7084
6879
  }
@@ -7147,7 +6942,7 @@ class ZipFileEntry extends ZipEntry {
7147
6942
  if (!writer || (writer.constructor == zipEntry.Writer && zipEntry.data)) {
7148
6943
  return zipEntry.data;
7149
6944
  } else {
7150
- const reader = zipEntry.reader = new zipEntry.Reader(zipEntry.data, options);
6945
+ const reader = zipEntry.reader = createReader(zipEntry.Reader, zipEntry.data, options);
7151
6946
  const uncompressedSize = zipEntry.data ? zipEntry.data.uncompressedSize : reader.size;
7152
6947
  await Promise.all([initStream(reader), initStream(writer, uncompressedSize)]);
7153
6948
  const { readable } = reader;
@@ -7203,11 +6998,7 @@ class ZipFileEntry extends ZipEntry {
7203
6998
  }
7204
6999
 
7205
7000
  async getArrayBuffer(options) {
7206
- // this.data may be a string, a Uint8Array, a data URI or a Blob depending on how the entry
7207
- // was created, so retrieve the bytes through getUint8Array rather than assuming a Blob; this
7208
- // also applies the options (password, signal, onprogress...) like the other getData() getters
7209
7001
  const array = await this.getUint8Array(options);
7210
- // return the backing buffer directly when the array spans it, slicing the exact bytes otherwise
7211
7002
  return array.byteOffset || array.byteLength != array.buffer.byteLength
7212
7003
  ? array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength)
7213
7004
  : array.buffer;
@@ -7577,7 +7368,6 @@ class FS {
7577
7368
  node = node.getChildByName(path[index]);
7578
7369
  }
7579
7370
  if (!node) {
7580
- // exclude detached entries, e.g. clones registered in `entries` but not attached
7581
7371
  node = this.entries.find(entry => entry && (entry == this.root || entry.isDescendantOf(this.root)) &&
7582
7372
  entry.getRelativeName() == fullname);
7583
7373
  }
@@ -7749,10 +7539,13 @@ function getZipBlobReader(options) {
7749
7539
  };
7750
7540
  }
7751
7541
 
7542
+ function createReader(Reader, data, options) {
7543
+ return Reader.prototype ? new Reader(data, options) : Reader(data, options);
7544
+ }
7545
+
7752
7546
  async function initReaders(entry, options) {
7753
7547
  const fileEntries = [];
7754
7548
  const pendingEntries = [entry];
7755
- // per-export map so concurrent exports do not share (and lock) the same readers
7756
7549
  const readers = new Map();
7757
7550
  while (pendingEntries.length) {
7758
7551
  const pendingEntry = pendingEntries.pop();
@@ -7765,7 +7558,7 @@ async function initReaders(entry, options) {
7765
7558
  }
7766
7559
  }
7767
7560
  await Promise.all(fileEntries.map(async child => {
7768
- const reader = child.reader = new child.Reader(child.data, options);
7561
+ const reader = child.reader = createReader(child.Reader, child.data, options);
7769
7562
  readers.set(child, reader);
7770
7563
  try {
7771
7564
  await initStream(reader);
@@ -7930,7 +7723,6 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
7930
7723
  return directoryHandle;
7931
7724
 
7932
7725
  async function exportChildren(entry, parentHandle) {
7933
- // Separate files have no ordering constraint, so they can be written concurrently on demand.
7934
7726
  if (options.concurrent) {
7935
7727
  const results = await Promise.allSettled(entry.children.map(child => exportChild(child, parentHandle)));
7936
7728
  const failedResult = results.find(result => result.status == "rejected");
@@ -7952,8 +7744,6 @@ async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
7952
7744
  } else {
7953
7745
  const fileHandle = await parentHandle.getFileHandle(child.name, { create: true });
7954
7746
  const writable = await fileHandle.createWritable();
7955
- // getData() streams the entry's data into `writable` and closes it (a FileSystemWritableFileStream
7956
- // only commits the file on close), applying options such as password, signal and onprogress.
7957
7747
  await child.getData({ writable }, Object.assign({}, options, {
7958
7748
  onprogress: async progress => {
7959
7749
  if (options.onprogress) {
@@ -8272,7 +8062,6 @@ const table = {
8272
8062
  "x-doom": "wad",
8273
8063
  "x-dvi": "dvi",
8274
8064
  "x-httpd-eruby": "rhtml",
8275
- "x-font": "pcf.Z",
8276
8065
  "x-freemind": "mm",
8277
8066
  "x-gnumeric": "gnumeric",
8278
8067
  "x-go-sgf": "sgf",
@@ -8959,7 +8748,7 @@ const table = {
8959
8748
  "x-msbinder": "obd",
8960
8749
  "x-mscardfile": "crd",
8961
8750
  "x-msclip": "clp",
8962
- "application/x-ms-installer": "msi",
8751
+ "x-ms-installer": "msi",
8963
8752
  "x-msmediaview": [
8964
8753
  "mvb",
8965
8754
  "m13",
@@ -9322,7 +9111,10 @@ const table = {
9322
9111
  ],
9323
9112
  "x-tga": "tga",
9324
9113
  "cis-cod": "cod",
9325
- "avif": "avifs",
9114
+ "avif": [
9115
+ "avif",
9116
+ "avifs"
9117
+ ],
9326
9118
  "heic": [
9327
9119
  "heif",
9328
9120
  "heic"
@@ -9541,7 +9333,6 @@ const table = {
9541
9333
  "vnd.wap.sl": "sl"
9542
9334
  },
9543
9335
  "video": {
9544
- "avif": "avif",
9545
9336
  "3gpp": "3gp",
9546
9337
  "annodex": "axv",
9547
9338
  "dl": "dl",
@@ -9660,25 +9451,29 @@ const table = {
9660
9451
  }
9661
9452
  };
9662
9453
 
9663
- const mimeTypes = (() => {
9664
- const mimeTypes = {};
9665
- for (const type of Object.keys(table)) {
9666
- for (const subtype of Object.keys(table[type])) {
9667
- const value = table[type][subtype];
9668
- if (typeof value == "string") {
9669
- mimeTypes[value] = type + "/" + subtype;
9670
- } else {
9671
- for (let indexMimeType = 0; indexMimeType < value.length; indexMimeType++) {
9672
- mimeTypes[value[indexMimeType]] = type + "/" + subtype;
9454
+ let mimeTypes;
9455
+
9456
+ function getMimeType(filename) {
9457
+ return filename && getMimeTypes()[filename.split(".").pop().toLowerCase()] || getMimeType$1();
9458
+ }
9459
+
9460
+ function getMimeTypes() {
9461
+ if (!mimeTypes) {
9462
+ mimeTypes = {};
9463
+ for (const type of Object.keys(table)) {
9464
+ for (const subtype of Object.keys(table[type])) {
9465
+ const value = table[type][subtype];
9466
+ if (typeof value == "string") {
9467
+ mimeTypes[value] = type + "/" + subtype;
9468
+ } else {
9469
+ for (let indexMimeType = 0; indexMimeType < value.length; indexMimeType++) {
9470
+ mimeTypes[value[indexMimeType]] = type + "/" + subtype;
9471
+ }
9673
9472
  }
9674
9473
  }
9675
9474
  }
9676
9475
  }
9677
9476
  return mimeTypes;
9678
- })();
9679
-
9680
- function getMimeType(filename) {
9681
- return filename && mimeTypes[filename.split(".").pop().toLowerCase()] || getMimeType$1();
9682
9477
  }
9683
9478
 
9684
9479
  /*
@@ -9710,7 +9505,7 @@ function getMimeType(filename) {
9710
9505
  */
9711
9506
 
9712
9507
 
9713
- g$1(configure);
9508
+ f(configure);
9714
9509
 
9715
9510
  exports.BlobReader = BlobReader;
9716
9511
  exports.BlobWriter = BlobWriter;
@@ -9736,6 +9531,7 @@ exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
9736
9531
  exports.ERR_INVALID_SIGNATURE = ERR_INVALID_SIGNATURE;
9737
9532
  exports.ERR_INVALID_UNCOMPRESSED_SIZE = ERR_INVALID_UNCOMPRESSED_SIZE;
9738
9533
  exports.ERR_INVALID_VERSION = ERR_INVALID_VERSION;
9534
+ exports.ERR_ITERATOR_COMPLETED_TOO_SOON = ERR_ITERATOR_COMPLETED_TOO_SOON;
9739
9535
  exports.ERR_LOCAL_FILE_HEADER_NOT_FOUND = ERR_LOCAL_FILE_HEADER_NOT_FOUND;
9740
9536
  exports.ERR_OVERLAPPING_ENTRY = ERR_OVERLAPPING_ENTRY;
9741
9537
  exports.ERR_SPLIT_ZIP_FILE = ERR_SPLIT_ZIP_FILE;
@@ -9744,6 +9540,7 @@ exports.ERR_UNDEFINED_UNCOMPRESSED_SIZE = ERR_UNDEFINED_UNCOMPRESSED_SIZE;
9744
9540
  exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION$1;
9745
9541
  exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
9746
9542
  exports.ERR_UNSUPPORTED_FORMAT = ERR_UNSUPPORTED_FORMAT;
9543
+ exports.ERR_WRITER_NOT_INITIALIZED = ERR_WRITER_NOT_INITIALIZED;
9747
9544
  exports.ERR_ZIP_NOT_EMPTY = ERR_ZIP_NOT_EMPTY;
9748
9545
  exports.HttpRangeReader = HttpRangeReader;
9749
9546
  exports.HttpReader = HttpReader;