@zip.js/zip.js 2.5.3 → 2.5.7

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 (51) hide show
  1. package/dist/z-worker-fflate.js +1 -1
  2. package/dist/z-worker-pako.js +1 -1
  3. package/dist/z-worker.js +1 -1
  4. package/dist/zip-fs-full.js +470 -499
  5. package/dist/zip-fs-full.min.js +1 -1
  6. package/dist/zip-fs.js +470 -499
  7. package/dist/zip-fs.min.js +1 -1
  8. package/dist/zip-full.js +470 -499
  9. package/dist/zip-full.min.js +1 -1
  10. package/dist/zip-no-worker-deflate.min.js +1 -1
  11. package/dist/zip-no-worker-inflate.min.js +1 -1
  12. package/dist/zip-no-worker.min.js +1 -1
  13. package/dist/zip.js +470 -499
  14. package/dist/zip.min.js +1 -1
  15. package/index-fflate.js +1 -1
  16. package/index.d.ts +1 -1
  17. package/index.js +3 -3
  18. package/lib/core/{engine.js → codec-interface.js} +52 -50
  19. package/lib/core/{codecs/codec-pool-worker.js → codec-pool-worker.js} +55 -29
  20. package/lib/core/{codecs/codec-pool.js → codec-pool.js} +28 -9
  21. package/lib/core/configuration.js +10 -1
  22. package/lib/core/io.js +102 -100
  23. package/lib/core/{codecs → streams}/aes-crypto-stream.js +68 -54
  24. package/lib/core/{codecs → streams}/codec-stream.js +6 -6
  25. package/lib/core/{codecs → streams/codecs}/crc32.js +0 -0
  26. package/lib/core/{codecs → streams/codecs}/deflate.js +0 -0
  27. package/lib/core/{codecs → streams/codecs}/inflate.js +0 -0
  28. package/lib/core/{codecs → streams/codecs}/sjcl.js +0 -0
  29. package/lib/core/{codecs → streams}/crc32-stream.js +3 -4
  30. package/lib/core/{codecs → streams}/zip-crypto-stream.js +28 -32
  31. package/lib/core/streams/zip-entry-stream.js +185 -0
  32. package/lib/core/z-worker-core.js +30 -15
  33. package/lib/core/zip-fs-core.js +1 -1
  34. package/lib/core/zip-reader.js +21 -12
  35. package/lib/core/zip-writer.js +33 -25
  36. package/lib/z-worker-fflate.js +4 -1
  37. package/lib/z-worker-inline.js +1 -1
  38. package/lib/z-worker.js +2 -2
  39. package/lib/zip-fflate-shim.js +4 -1
  40. package/lib/zip-fs.js +6 -2
  41. package/lib/zip-full-fflate.js +6 -3
  42. package/lib/zip-full.js +8 -5
  43. package/lib/zip-no-worker-deflate.js +7 -3
  44. package/lib/zip-no-worker-fflate-deflate.js +6 -2
  45. package/lib/zip-no-worker-fflate-inflate.js +6 -3
  46. package/lib/zip-no-worker-fflate.js +6 -3
  47. package/lib/zip-no-worker-inflate.js +7 -4
  48. package/lib/zip-no-worker.js +8 -5
  49. package/lib/zip.js +6 -3
  50. package/package.json +2 -8
  51. package/lib/core/codecs/codec.js +0 -246
@@ -4270,6 +4270,7 @@
4270
4270
 
4271
4271
  /* global navigator */
4272
4272
 
4273
+ const MINIMUM_CHUNK_SIZE = 64;
4273
4274
  const DEFAULT_CONFIGURATION = {
4274
4275
  chunkSize: 512 * 1024,
4275
4276
  maxWorkers: (typeof navigator != "undefined" && navigator.hardwareConcurrency) || 2,
@@ -4284,6 +4285,10 @@
4284
4285
  return config;
4285
4286
  }
4286
4287
 
4288
+ function getChunkSize(config) {
4289
+ return Math.max(config.chunkSize, MINIMUM_CHUNK_SIZE);
4290
+ }
4291
+
4287
4292
  function configure(configuration) {
4288
4293
  if (configuration.baseURL !== undefined) {
4289
4294
  config.baseURL = configuration.baseURL;
@@ -4297,6 +4302,9 @@
4297
4302
  if (configuration.terminateWorkerTimeout !== undefined) {
4298
4303
  config.terminateWorkerTimeout = configuration.terminateWorkerTimeout;
4299
4304
  }
4305
+ if (configuration.useCompressionStream !== undefined) {
4306
+ config.useCompressionStream = configuration.useCompressionStream;
4307
+ }
4300
4308
  if (configuration.useWebWorkers !== undefined) {
4301
4309
  config.useWebWorkers = configuration.useWebWorkers;
4302
4310
  }
@@ -5450,15 +5458,14 @@
5450
5458
  */
5451
5459
 
5452
5460
  class Crc32Stream extends TransformStream {
5461
+
5453
5462
  constructor() {
5454
5463
  super({
5455
5464
  start() {
5456
5465
  this.crc32 = new Crc32();
5457
5466
  },
5458
5467
  transform(chunk) {
5459
- if (chunk) {
5460
- this.crc32.append(chunk);
5461
- }
5468
+ this.crc32.append(chunk);
5462
5469
  },
5463
5470
  flush(controller) {
5464
5471
  const value = new Uint8Array(4);
@@ -6374,14 +6381,19 @@
6374
6381
  const KEY_LENGTH = [16, 24, 32];
6375
6382
  const SIGNATURE_LENGTH = 10;
6376
6383
  const COUNTER_DEFAULT_VALUE = [0, 0, 0, 0];
6377
- const CRYPTO_API_SUPPORTED = typeof crypto != "undefined";
6378
- const SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof crypto.subtle != "undefined";
6384
+ const UNDEFINED_TYPE$1 = "undefined";
6385
+ const FUNCTION_TYPE = "function";
6386
+ const CRYPTO_API_SUPPORTED = typeof crypto != UNDEFINED_TYPE$1;
6387
+ const SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof crypto.subtle != UNDEFINED_TYPE$1;
6388
+ const GET_RANDOM_VALUES_SUPPORTED = CRYPTO_API_SUPPORTED && typeof crypto.getRandomValues == FUNCTION_TYPE;
6389
+ const IMPORT_KEY_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof crypto.subtle.importKey == FUNCTION_TYPE;
6390
+ const DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof crypto.subtle.deriveBits == FUNCTION_TYPE;
6379
6391
  const codecBytes = codec.bytes;
6380
6392
  const Aes = cipher.aes;
6381
6393
  const CtrGladman = mode.ctrGladman;
6382
6394
  const HmacSha1 = misc.hmacSha1;
6383
6395
 
6384
- class AESDecryptStream extends TransformStream {
6396
+ class AESDecryptionStream extends TransformStream {
6385
6397
 
6386
6398
  constructor(password, signed, strength) {
6387
6399
  let stream;
@@ -6396,23 +6408,21 @@
6396
6408
  });
6397
6409
  },
6398
6410
  async transform(chunk, controller) {
6399
- if (chunk && chunk.length) {
6400
- const aesCrypto = this;
6401
- if (aesCrypto.password) {
6402
- const password = aesCrypto.password;
6403
- aesCrypto.password = null;
6404
- const preamble = subarray(chunk, 0, SALT_LENGTH[aesCrypto.strength] + 2);
6405
- await createDecryptionKeys(aesCrypto, preamble, password);
6406
- aesCrypto.aesCtrGladman = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
6407
- aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
6408
- chunk = subarray(chunk, SALT_LENGTH[aesCrypto.strength] + 2);
6409
- aesCrypto.resolveReady();
6410
- } else {
6411
- await aesCrypto.ready;
6412
- }
6413
- const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));
6414
- controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));
6411
+ const aesCrypto = this;
6412
+ if (aesCrypto.password) {
6413
+ const password = aesCrypto.password;
6414
+ aesCrypto.password = null;
6415
+ const preamble = subarray(chunk, 0, SALT_LENGTH[aesCrypto.strength] + 2);
6416
+ await createDecryptionKeys(aesCrypto, preamble, password);
6417
+ aesCrypto.ctr = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
6418
+ aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
6419
+ chunk = subarray(chunk, SALT_LENGTH[aesCrypto.strength] + 2);
6420
+ aesCrypto.resolveReady();
6421
+ } else {
6422
+ await aesCrypto.ready;
6415
6423
  }
6424
+ const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));
6425
+ controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));
6416
6426
  },
6417
6427
  async flush(controller) {
6418
6428
  const aesCrypto = this;
@@ -6422,14 +6432,14 @@
6422
6432
  const originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH);
6423
6433
  let decryptedChunkArray = new Uint8Array(0);
6424
6434
  if (chunkToDecrypt.length) {
6425
- const encryptedChunk = codecBytes.toBits(chunkToDecrypt);
6435
+ const encryptedChunk = toBits(codecBytes, chunkToDecrypt);
6426
6436
  aesCrypto.hmac.update(encryptedChunk);
6427
- const decryptedChunk = aesCrypto.aesCtrGladman.update(encryptedChunk);
6428
- decryptedChunkArray = codecBytes.fromBits(decryptedChunk);
6437
+ const decryptedChunk = aesCrypto.ctr.update(encryptedChunk);
6438
+ decryptedChunkArray = fromBits(codecBytes, decryptedChunk);
6429
6439
  }
6430
6440
  stream.valid = true;
6431
6441
  if (aesCrypto.signed) {
6432
- const signature = subarray(codecBytes.fromBits(aesCrypto.hmac.digest()), 0, SIGNATURE_LENGTH);
6442
+ const signature = subarray(fromBits(codecBytes, aesCrypto.hmac.digest()), 0, SIGNATURE_LENGTH);
6433
6443
  for (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) {
6434
6444
  if (signature[indexSignature] != originalSignature[indexSignature]) {
6435
6445
  stream.valid = false;
@@ -6443,7 +6453,7 @@
6443
6453
  }
6444
6454
  }
6445
6455
 
6446
- class AESEncryptStream extends TransformStream {
6456
+ class AESEncryptionStream extends TransformStream {
6447
6457
 
6448
6458
  constructor(password, strength) {
6449
6459
  let stream;
@@ -6457,34 +6467,32 @@
6457
6467
  });
6458
6468
  },
6459
6469
  async transform(chunk, controller) {
6460
- if (chunk && chunk.length) {
6461
- const aesCrypto = this;
6462
- let preamble = new Uint8Array(0);
6463
- if (aesCrypto.password) {
6464
- const password = aesCrypto.password;
6465
- aesCrypto.password = null;
6466
- preamble = await createEncryptionKeys(aesCrypto, password);
6467
- aesCrypto.aesCtrGladman = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
6468
- aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
6469
- aesCrypto.resolveReady();
6470
- } else {
6471
- await aesCrypto.ready;
6472
- }
6473
- const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
6474
- output.set(preamble, 0);
6475
- controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));
6470
+ const aesCrypto = this;
6471
+ let preamble = new Uint8Array(0);
6472
+ if (aesCrypto.password) {
6473
+ const password = aesCrypto.password;
6474
+ aesCrypto.password = null;
6475
+ preamble = await createEncryptionKeys(aesCrypto, password);
6476
+ aesCrypto.ctr = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
6477
+ aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
6478
+ aesCrypto.resolveReady();
6479
+ } else {
6480
+ await aesCrypto.ready;
6476
6481
  }
6482
+ const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
6483
+ output.set(preamble, 0);
6484
+ controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));
6477
6485
  },
6478
6486
  async flush(controller) {
6479
6487
  const aesCrypto = this;
6480
6488
  await aesCrypto.ready;
6481
6489
  let encryptedChunkArray = new Uint8Array(0);
6482
6490
  if (aesCrypto.pending.length) {
6483
- const encryptedChunk = aesCrypto.aesCtrGladman.update(codecBytes.toBits(aesCrypto.pending));
6491
+ const encryptedChunk = aesCrypto.ctr.update(toBits(codecBytes, aesCrypto.pending));
6484
6492
  aesCrypto.hmac.update(encryptedChunk);
6485
- encryptedChunkArray = codecBytes.fromBits(encryptedChunk);
6493
+ encryptedChunkArray = fromBits(codecBytes, encryptedChunk);
6486
6494
  }
6487
- stream.signature = codecBytes.fromBits(aesCrypto.hmac.digest()).slice(0, SIGNATURE_LENGTH);
6495
+ stream.signature = fromBits(codecBytes, aesCrypto.hmac.digest()).slice(0, SIGNATURE_LENGTH);
6488
6496
  controller.enqueue(concat(encryptedChunkArray, stream.signature));
6489
6497
  }
6490
6498
  });
@@ -6500,15 +6508,15 @@
6500
6508
  }
6501
6509
  let offset;
6502
6510
  for (offset = 0; offset <= inputLength - BLOCK_LENGTH; offset += BLOCK_LENGTH) {
6503
- const inputChunk = codecBytes.toBits(subarray(input, offset, offset + BLOCK_LENGTH));
6511
+ const inputChunk = toBits(codecBytes, subarray(input, offset, offset + BLOCK_LENGTH));
6504
6512
  if (verifySignature) {
6505
6513
  aesCrypto.hmac.update(inputChunk);
6506
6514
  }
6507
- const outputChunk = aesCrypto.aesCtrGladman.update(inputChunk);
6515
+ const outputChunk = aesCrypto.ctr.update(inputChunk);
6508
6516
  if (!verifySignature) {
6509
6517
  aesCrypto.hmac.update(outputChunk);
6510
6518
  }
6511
- output.set(codecBytes.fromBits(outputChunk), offset + paddingStart);
6519
+ output.set(fromBits(codecBytes, outputChunk), offset + paddingStart);
6512
6520
  }
6513
6521
  aesCrypto.pending = subarray(input, offset);
6514
6522
  return output;
@@ -6535,14 +6543,14 @@
6535
6543
  const derivedBits = await deriveBits(Object.assign({ salt }, DERIVED_BITS_ALGORITHM), basekey, 8 * ((KEY_LENGTH[target.strength] * 2) + 2));
6536
6544
  const compositeKey = new Uint8Array(derivedBits);
6537
6545
  target.keys = {
6538
- key: codecBytes.toBits(subarray(compositeKey, 0, KEY_LENGTH[target.strength])),
6539
- authentication: codecBytes.toBits(subarray(compositeKey, KEY_LENGTH[target.strength], KEY_LENGTH[target.strength] * 2)),
6546
+ key: toBits(codecBytes, subarray(compositeKey, 0, KEY_LENGTH[target.strength])),
6547
+ authentication: toBits(codecBytes, subarray(compositeKey, KEY_LENGTH[target.strength], KEY_LENGTH[target.strength] * 2)),
6540
6548
  passwordVerification: subarray(compositeKey, KEY_LENGTH[target.strength] * 2)
6541
6549
  };
6542
6550
  }
6543
6551
 
6544
6552
  function getRandomValues(array) {
6545
- if (CRYPTO_API_SUPPORTED && typeof crypto.getRandomValues == "function") {
6553
+ if (GET_RANDOM_VALUES_SUPPORTED) {
6546
6554
  return crypto.getRandomValues(array);
6547
6555
  } else {
6548
6556
  return random.getRandomValues(array);
@@ -6550,7 +6558,7 @@
6550
6558
  }
6551
6559
 
6552
6560
  function importKey(format, password, algorithm, extractable, keyUsages) {
6553
- if (CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof crypto.subtle.importKey == "function") {
6561
+ if (IMPORT_KEY_SUPPORTED) {
6554
6562
  return crypto.subtle.importKey(format, password, algorithm, extractable, keyUsages);
6555
6563
  } else {
6556
6564
  return misc.importKey(password);
@@ -6558,7 +6566,7 @@
6558
6566
  }
6559
6567
 
6560
6568
  async function deriveBits(algorithm, baseKey, length) {
6561
- if (CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof crypto.subtle.deriveBits == "function") {
6569
+ if (DERIVE_BITS_SUPPORTED) {
6562
6570
  return await crypto.subtle.deriveBits(algorithm, baseKey, length);
6563
6571
  } else {
6564
6572
  return misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length);
@@ -6588,6 +6596,13 @@
6588
6596
  return array.subarray(begin, end);
6589
6597
  }
6590
6598
 
6599
+ function fromBits(codecBytes, chunk) {
6600
+ return codecBytes.fromBits(chunk);
6601
+ }
6602
+ function toBits(codecBytes, chunk) {
6603
+ return codecBytes.toBits(chunk);
6604
+ }
6605
+
6591
6606
  /*
6592
6607
  Copyright (c) 2022 Gildas Lormeau. All rights reserved.
6593
6608
 
@@ -6618,7 +6633,7 @@
6618
6633
 
6619
6634
  const HEADER_LENGTH = 12;
6620
6635
 
6621
- class ZipCryptoDecryptStream extends TransformStream {
6636
+ class ZipCryptoDecryptionStream extends TransformStream {
6622
6637
 
6623
6638
  constructor(password, passwordVerification) {
6624
6639
  let stream;
@@ -6631,18 +6646,16 @@
6631
6646
  createKeys(this, password);
6632
6647
  },
6633
6648
  transform(chunk, controller) {
6634
- if (chunk && chunk.length) {
6635
- const zipCrypto = this;
6636
- if (zipCrypto.password) {
6637
- const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
6638
- zipCrypto.password = null;
6639
- if (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) {
6640
- throw new Error(ERR_INVALID_PASSWORD);
6641
- }
6642
- chunk = chunk.subarray(HEADER_LENGTH);
6649
+ const zipCrypto = this;
6650
+ if (zipCrypto.password) {
6651
+ const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
6652
+ zipCrypto.password = null;
6653
+ if (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) {
6654
+ throw new Error(ERR_INVALID_PASSWORD);
6643
6655
  }
6644
- controller.enqueue(decrypt(zipCrypto, chunk));
6656
+ chunk = chunk.subarray(HEADER_LENGTH);
6645
6657
  }
6658
+ controller.enqueue(decrypt(zipCrypto, chunk));
6646
6659
  },
6647
6660
  flush() {
6648
6661
  stream.valid = true;
@@ -6652,7 +6665,7 @@
6652
6665
  }
6653
6666
  }
6654
6667
 
6655
- class ZipCryptoEncryptStream extends TransformStream {
6668
+ class ZipCryptoEncryptionStream extends TransformStream {
6656
6669
 
6657
6670
  constructor(password, passwordVerification) {
6658
6671
  super({
@@ -6664,24 +6677,22 @@
6664
6677
  createKeys(this, password);
6665
6678
  },
6666
6679
  transform(chunk, controller) {
6667
- if (chunk && chunk.length) {
6668
- const zipCrypto = this;
6669
- let output;
6670
- let offset;
6671
- if (zipCrypto.password) {
6672
- zipCrypto.password = null;
6673
- const header = crypto.getRandomValues(new Uint8Array(HEADER_LENGTH));
6674
- header[HEADER_LENGTH - 1] = zipCrypto.passwordVerification;
6675
- output = new Uint8Array(chunk.length + header.length);
6676
- output.set(encrypt(zipCrypto, header), 0);
6677
- offset = HEADER_LENGTH;
6678
- } else {
6679
- output = new Uint8Array(chunk.length);
6680
- offset = 0;
6681
- }
6682
- output.set(encrypt(zipCrypto, chunk), offset);
6683
- controller.enqueue(output);
6680
+ const zipCrypto = this;
6681
+ let output;
6682
+ let offset;
6683
+ if (zipCrypto.password) {
6684
+ zipCrypto.password = null;
6685
+ const header = crypto.getRandomValues(new Uint8Array(HEADER_LENGTH));
6686
+ header[HEADER_LENGTH - 1] = zipCrypto.passwordVerification;
6687
+ output = new Uint8Array(chunk.length + header.length);
6688
+ output.set(encrypt(zipCrypto, header), 0);
6689
+ offset = HEADER_LENGTH;
6690
+ } else {
6691
+ output = new Uint8Array(chunk.length);
6692
+ offset = 0;
6684
6693
  }
6694
+ output.set(encrypt(zipCrypto, chunk), offset);
6695
+ controller.enqueue(output);
6685
6696
  },
6686
6697
  flush() {
6687
6698
  }
@@ -6776,19 +6787,19 @@
6776
6787
  /* global TransformStream */
6777
6788
 
6778
6789
  class CodecStream extends TransformStream {
6790
+
6779
6791
  constructor(Codec, options) {
6792
+ let codec;
6780
6793
  super({
6781
6794
  start() {
6782
- this.codec = new Codec(options);
6795
+ codec = new Codec(options);
6783
6796
  },
6784
6797
  transform(chunk, controller) {
6785
- chunk = this.codec.append(chunk);
6786
- if (chunk) {
6787
- controller.enqueue(chunk);
6788
- }
6798
+ chunk = codec.append(chunk);
6799
+ controller.enqueue(chunk);
6789
6800
  },
6790
6801
  flush(controller) {
6791
- const chunk = this.codec.flush();
6802
+ const chunk = codec.flush();
6792
6803
  if (chunk) {
6793
6804
  controller.enqueue(chunk);
6794
6805
  }
@@ -6825,199 +6836,205 @@
6825
6836
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
6826
6837
  */
6827
6838
 
6828
- const CODEC_DEFLATE = "deflate";
6829
- const CODEC_INFLATE = "inflate";
6830
6839
  const ERR_INVALID_SIGNATURE = "Invalid signature";
6831
- const MESSAGE_EVENT_TYPE = "message";
6832
- const MESSAGE_START = "start";
6833
- const MESSAGE_PULL = "pull";
6834
- const MESSAGE_DATA = "data";
6835
- const MESSAGE_ABORT = "abort";
6836
-
6837
- class Inflate {
6838
-
6839
- constructor(codecConstructor, {
6840
- signature,
6841
- password,
6842
- signed,
6843
- compressed,
6844
- zipCrypto,
6845
- passwordVerification,
6846
- encryptionStrength,
6847
- useCompressionStream
6848
- }, { chunkSize }) {
6849
- const codec = this;
6850
- codec.start = async () => {
6851
- const encrypted = Boolean(password);
6852
- Object.assign(codec, {
6853
- signature,
6854
- encrypted,
6855
- signed,
6856
- compressed,
6857
- zipCrypto,
6858
- stream: new ReadableStream({
6859
- async pull(controller) {
6860
- const { value, done } = await codec.pull();
6861
- controller.enqueue(value);
6862
- if (done || codec.aborted) {
6863
- controller.close();
6864
- }
6865
- }
6866
- })
6867
- });
6868
- if (encrypted) {
6869
- if (zipCrypto) {
6870
- codec.stream = codec.stream.pipeThrough(new ZipCryptoDecryptStream(password, passwordVerification));
6871
- } else {
6872
- codec.decryptStream = new AESDecryptStream(password, signed, encryptionStrength);
6873
- codec.stream = codec.stream.pipeThrough(codec.decryptStream);
6840
+ const COMPRESSION_FORMAT = "deflate-raw";
6841
+ const UNDEFINED_TYPE = "undefined";
6842
+ const COMPRESSION_STREAM_API_SUPPORTED = typeof CompressionStream == UNDEFINED_TYPE;
6843
+ const DECOMPRESSION_STREAM_API_SUPPORTED = typeof DecompressionStream == UNDEFINED_TYPE;
6844
+ let INFLATE_RAW_SUPPORTED = true;
6845
+ let DEFLATE_RAW_SUPPORTED = true;
6846
+
6847
+ class DeflateStream extends TransformStream {
6848
+
6849
+ constructor(codecConstructor, options, { chunkSize }, ...strategies) {
6850
+ super({}, ...strategies);
6851
+ const { compressed, useCompressionStream, password, passwordVerification, encryptionStrength, zipCrypto, signed } = options;
6852
+ const stream = this;
6853
+ let crc32Stream, encryptionStream;
6854
+ let readable = filterEmptyChunks(super.readable);
6855
+ const encrypted = Boolean(password);
6856
+ if ((!encrypted || zipCrypto) && signed) {
6857
+ [readable, crc32Stream] = readable.tee();
6858
+ crc32Stream = crc32Stream.pipeThrough(new Crc32Stream());
6859
+ }
6860
+ if (compressed) {
6861
+ if ((useCompressionStream !== undefined && !useCompressionStream) || (COMPRESSION_STREAM_API_SUPPORTED && !DEFLATE_RAW_SUPPORTED)) {
6862
+ readable = pipeCodecStream(codecConstructor, readable, chunkSize);
6863
+ } else {
6864
+ try {
6865
+ const compressionStream = new CompressionStream(COMPRESSION_FORMAT);
6866
+ readable = readable.pipeThrough(compressionStream);
6867
+ } catch (_error) {
6868
+ DEFLATE_RAW_SUPPORTED = false;
6869
+ readable = pipeCodecStream(codecConstructor, readable, chunkSize);
6874
6870
  }
6875
6871
  }
6876
- if (compressed) {
6877
- if ((useCompressionStream !== undefined && !useCompressionStream) || typeof DecompressionStream == "undefined") {
6878
- pipeCodecStream();
6879
- } else {
6880
- try {
6881
- codec.stream = codec.stream.pipeThrough(new DecompressionStream("deflate-raw"));
6882
- } catch (_error) {
6883
- pipeCodecStream();
6884
- }
6885
- }
6872
+ }
6873
+ if (encrypted) {
6874
+ if (zipCrypto) {
6875
+ readable = readable.pipeThrough(new ZipCryptoEncryptionStream(password, passwordVerification));
6876
+ } else {
6877
+ encryptionStream = new AESEncryptionStream(password, encryptionStrength);
6878
+ readable = readable.pipeThrough(encryptionStream);
6879
+ }
6880
+ }
6881
+ setReadable(stream, readable, async () => {
6882
+ let signature;
6883
+ if (encrypted && !zipCrypto) {
6884
+ signature = encryptionStream.signature;
6886
6885
  }
6887
6886
  if ((!encrypted || zipCrypto) && signed) {
6888
- const tee = codec.stream.tee();
6889
- codec.stream = tee[0];
6890
- codec.crc32Stream = tee[1].pipeThrough(new Crc32Stream());
6887
+ signature = await crc32Stream.getReader().read();
6888
+ signature = new DataView(signature.value.buffer).getUint32(0);
6891
6889
  }
6892
- codec.reader = codec.stream.getReader();
6893
- await codec.read();
6894
- };
6895
- codec.abort = () => codec.aborted = true;
6896
-
6897
- function pipeCodecStream() {
6898
- codec.stream = codec.stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize }));
6899
- }
6890
+ stream.signature = signature;
6891
+ });
6900
6892
  }
6893
+ }
6894
+
6895
+ class InflateStream extends TransformStream {
6901
6896
 
6902
- async read() {
6903
- const codec = this;
6904
- const { value, done } = await codec.reader.read();
6905
- if (value && value.length) {
6906
- codec.ondata({ value: { data: new Uint8Array(value) } });
6897
+ constructor(codecConstructor, options, { chunkSize }, ...strategies) {
6898
+ super({}, ...strategies);
6899
+ const { zipCrypto, password, passwordVerification, signed, encryptionStrength, compressed, useCompressionStream } = options;
6900
+ const stream = this;
6901
+ let crc32Stream, decryptionStream;
6902
+ let readable = filterEmptyChunks(super.readable);
6903
+ const encrypted = Boolean(password);
6904
+ if (encrypted) {
6905
+ if (zipCrypto) {
6906
+ readable = readable.pipeThrough(new ZipCryptoDecryptionStream(password, passwordVerification));
6907
+ } else {
6908
+ decryptionStream = new AESDecryptionStream(password, signed, encryptionStrength);
6909
+ readable = readable.pipeThrough(decryptionStream);
6910
+ }
6907
6911
  }
6908
- if (done) {
6909
- let signature;
6910
- if (codec.encrypted && !codec.zipCrypto) {
6911
- if (!codec.decryptStream.valid) {
6912
+ if (compressed) {
6913
+ if ((useCompressionStream !== undefined && !useCompressionStream) || (DECOMPRESSION_STREAM_API_SUPPORTED && !INFLATE_RAW_SUPPORTED)) {
6914
+ readable = pipeCodecStream(codecConstructor, readable, chunkSize);
6915
+ } else {
6916
+ try {
6917
+ readable = readable.pipeThrough(new DecompressionStream(COMPRESSION_FORMAT));
6918
+ } catch (_error) {
6919
+ INFLATE_RAW_SUPPORTED = false;
6920
+ readable = pipeCodecStream(codecConstructor, readable, chunkSize);
6921
+ }
6922
+ }
6923
+ }
6924
+ if ((!encrypted || zipCrypto) && signed) {
6925
+ [readable, crc32Stream] = readable.tee();
6926
+ crc32Stream = crc32Stream.pipeThrough(new Crc32Stream());
6927
+ }
6928
+ setReadable(stream, readable, async () => {
6929
+ if (encrypted && !zipCrypto) {
6930
+ if (!decryptionStream.valid) {
6912
6931
  throw new Error(ERR_INVALID_SIGNATURE);
6913
6932
  }
6914
6933
  }
6915
- if ((!codec.encrypted || codec.zipCrypto) && codec.signed) {
6916
- signature = await codec.crc32Stream.getReader().read();
6934
+ if ((!encrypted || zipCrypto) && signed) {
6935
+ const signature = await crc32Stream.getReader().read();
6917
6936
  const dataViewSignature = new DataView(signature.value.buffer);
6918
- if (codec.signature != dataViewSignature.getUint32(0, false)) {
6937
+ if (signature != dataViewSignature.getUint32(0, false)) {
6919
6938
  throw new Error(ERR_INVALID_SIGNATURE);
6920
6939
  }
6921
6940
  }
6922
- codec.ondata({ value: { signature }, done });
6923
- } else {
6924
- await codec.read();
6925
- }
6941
+ });
6926
6942
  }
6927
6943
  }
6928
6944
 
6929
- class Deflate {
6945
+ function pipeCodecStream(codecConstructor, stream, chunkSize) {
6946
+ return stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize }));
6947
+ }
6930
6948
 
6931
- constructor(codecConstructor, {
6932
- encrypted,
6933
- signed,
6934
- compressed,
6935
- level,
6936
- zipCrypto,
6937
- password,
6938
- passwordVerification,
6939
- encryptionStrength,
6940
- useCompressionStream
6941
- }, { chunkSize }) {
6942
- const codec = this;
6943
- codec.start = async () => {
6944
- Object.assign(this, {
6945
- encrypted,
6946
- signed,
6947
- compressed,
6948
- zipCrypto,
6949
- stream: new ReadableStream({
6950
- async pull(controller) {
6951
- const { value, done } = await codec.pull();
6952
- controller.enqueue(value);
6953
- if (done || codec.aborted) {
6954
- controller.close();
6955
- }
6956
- }
6957
- })
6958
- });
6959
- if ((!encrypted || zipCrypto) && signed) {
6960
- const tee = codec.stream.tee();
6961
- codec.stream = tee[0];
6962
- codec.crc32Stream = tee[1].pipeThrough(new Crc32Stream({ chunkSize }));
6963
- }
6964
- if (compressed) {
6965
- if ((useCompressionStream !== undefined && !useCompressionStream) || typeof CompressionStream == "undefined") {
6966
- pipeCodecStream();
6967
- } else {
6968
- try {
6969
- codec.stream = codec.stream.pipeThrough(new CompressionStream("deflate-raw"));
6970
- } catch (_error) {
6971
- pipeCodecStream();
6972
- }
6973
- }
6949
+ function filterEmptyChunks(readable) {
6950
+ return readable.pipeThrough(new TransformStream({
6951
+ transform(chunk, controller) {
6952
+ if (chunk && chunk.length) {
6953
+ controller.enqueue(chunk);
6974
6954
  }
6975
- if (encrypted) {
6976
- if (zipCrypto) {
6977
- codec.stream = codec.stream.pipeThrough(new ZipCryptoEncryptStream(password, passwordVerification));
6978
- } else {
6979
- codec.encryptStream = new AESEncryptStream(password, encryptionStrength);
6980
- codec.stream = codec.stream.pipeThrough(codec.encryptStream);
6981
- }
6982
- }
6983
- codec.reader = codec.stream.getReader();
6984
- await codec.read();
6985
- };
6986
- codec.abort = () => codec.aborted = true;
6987
-
6988
- function pipeCodecStream() {
6989
- codec.stream = codec.stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize, level }));
6990
6955
  }
6991
- }
6956
+ }));
6957
+ }
6992
6958
 
6993
- async read() {
6994
- const codec = this;
6995
- const { value, done } = await codec.reader.read();
6996
- if (value && value.length) {
6997
- codec.ondata({ value: { data: value } });
6998
- }
6999
- if (done) {
7000
- let signature;
7001
- if (codec.encrypted && !codec.zipCrypto) {
7002
- signature = codec.encryptStream.signature;
7003
- }
7004
- if ((!codec.encrypted || codec.zipCrypto) && codec.signed) {
7005
- signature = await codec.crc32Stream.getReader().read();
7006
- signature = new DataView(signature.value.buffer).getUint32(0);
6959
+ function setReadable(stream, readable, flush) {
6960
+ stream.length = 0;
6961
+ readable = readable.pipeThrough(new TransformStream({
6962
+ transform(chunk, controller) {
6963
+ if (chunk && chunk.length) {
6964
+ stream.length += chunk.length;
6965
+ controller.enqueue(chunk);
7007
6966
  }
7008
- codec.ondata({ value: { signature }, done });
7009
- } else {
7010
- await codec.read();
6967
+ }, flush
6968
+ }));
6969
+ Object.defineProperty(stream, "readable", {
6970
+ get() {
6971
+ return readable;
7011
6972
  }
7012
- }
7013
-
6973
+ });
7014
6974
  }
7015
6975
 
7016
- function createCodec$1(codecConstructor, options, config) {
6976
+ /*
6977
+ Copyright (c) 2022 Gildas Lormeau. All rights reserved.
6978
+
6979
+ Redistribution and use in source and binary forms, with or without
6980
+ modification, are permitted provided that the following conditions are met:
6981
+
6982
+ 1. Redistributions of source code must retain the above copyright notice,
6983
+ this list of conditions and the following disclaimer.
6984
+
6985
+ 2. Redistributions in binary form must reproduce the above copyright
6986
+ notice, this list of conditions and the following disclaimer in
6987
+ the documentation and/or other materials provided with the distribution.
6988
+
6989
+ 3. The names of the authors may not be used to endorse or promote products
6990
+ derived from this software without specific prior written permission.
6991
+
6992
+ THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
6993
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
6994
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
6995
+ INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
6996
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
6997
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
6998
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
6999
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
7000
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
7001
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7002
+ */
7003
+
7004
+ const CODEC_DEFLATE = "deflate";
7005
+ const CODEC_INFLATE = "inflate";
7006
+ const MESSAGE_EVENT_TYPE = "message";
7007
+ const MESSAGE_START = "start";
7008
+ const MESSAGE_PULL = "pull";
7009
+ const MESSAGE_DATA = "data";
7010
+ const MESSAGE_ABORT = "abort";
7011
+ const MESSAGE_CLOSE = "close";
7012
+ const ERR_ABORT = "AbortError";
7013
+
7014
+ function createCodec(codecConstructor, readable, writable, options, config) {
7015
+ const controller = new AbortController();
7016
+ const { signal } = controller;
7017
7017
  if (options.codecType.startsWith(CODEC_DEFLATE)) {
7018
- return new Deflate(codecConstructor, options, config);
7018
+ return {
7019
+ run: () => run(DeflateStream),
7020
+ abort
7021
+ };
7019
7022
  } else if (options.codecType.startsWith(CODEC_INFLATE)) {
7020
- return new Inflate(codecConstructor, options, config);
7023
+ return {
7024
+ run: () => run(InflateStream),
7025
+ abort
7026
+ };
7027
+ }
7028
+
7029
+ async function run(StreamConstructor) {
7030
+ const stream = new StreamConstructor(codecConstructor, options, config);
7031
+ await readable.pipeThrough(stream, { signal }).pipeTo(writable);
7032
+ const { length, signature } = stream;
7033
+ return { length, signature };
7034
+ }
7035
+
7036
+ function abort() {
7037
+ controller.abort();
7021
7038
  }
7022
7039
  }
7023
7040
 
@@ -7051,10 +7068,12 @@
7051
7068
 
7052
7069
  let classicWorkersSupported = true;
7053
7070
 
7054
- function getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts) {
7071
+ function getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts) {
7055
7072
  Object.assign(workerData, {
7056
7073
  busy: true,
7057
7074
  codecConstructor,
7075
+ readable,
7076
+ writable,
7058
7077
  options: Object.assign({}, options),
7059
7078
  scripts,
7060
7079
  terminate() {
@@ -7068,27 +7087,50 @@
7068
7087
  onTaskFinished(workerData);
7069
7088
  }
7070
7089
  });
7090
+ const { signal, onprogress, size } = streamOptions;
7091
+ if (signal || onprogress) {
7092
+ let chunkOffset = 0;
7093
+ const transformer = {};
7094
+ if (onprogress) {
7095
+ transformer.transform = (chunk, controller) => {
7096
+ chunkOffset += chunk.length;
7097
+ try {
7098
+ onprogress(chunkOffset, size());
7099
+ } catch (_error) {
7100
+ // ignored
7101
+ }
7102
+ controller.enqueue(chunk);
7103
+ };
7104
+ }
7105
+ workerData.readable = readable.pipeThrough(new TransformStream(transformer), { signal });
7106
+ }
7071
7107
  return webWorker ? createWebWorkerInterface(workerData, config) : createWorkerInterface(workerData, config);
7072
7108
  }
7073
7109
 
7074
7110
  function createWorkerInterface(workerData, config) {
7075
- const interfaceCodec = createCodec$1(workerData.codecConstructor, workerData.options, config);
7111
+ const interfaceCodec = createCodec(workerData.codecConstructor, workerData.readable, workerData.writable, workerData.options, config);
7076
7112
  const codec = {
7077
7113
  abort() {
7078
7114
  interfaceCodec.abort();
7079
7115
  workerData.onTaskFinished();
7080
7116
  },
7081
- start() {
7082
- return interfaceCodec.start();
7117
+ run() {
7118
+ const result = interfaceCodec.run();
7119
+ workerData.onTaskFinished();
7120
+ return result;
7083
7121
  }
7084
7122
  };
7085
- interfaceCodec.pull = () => codec.pull();
7086
- interfaceCodec.ondata = data => ondata(workerData, codec, data);
7087
7123
  return codec;
7088
7124
  }
7089
7125
 
7090
7126
  function createWebWorkerInterface(workerData, { baseURL, chunkSize }) {
7091
7127
  const workerOptions = { type: "module" };
7128
+ workerData.reader = workerData.readable.getReader();
7129
+ workerData.writer = workerData.writable.getWriter();
7130
+ workerData.result = new Promise((resolve, reject) => {
7131
+ workerData.resolveResult = resolve;
7132
+ workerData.rejectResult = reject;
7133
+ });
7092
7134
  if (!workerData.interface) {
7093
7135
  if (!classicWorkersSupported) {
7094
7136
  workerData.worker = getWorker(workerOptions);
@@ -7106,10 +7148,11 @@
7106
7148
  sendMessage({ type: MESSAGE_ABORT });
7107
7149
  workerData.onTaskFinished();
7108
7150
  },
7109
- start() {
7151
+ run() {
7110
7152
  const options = workerData.options;
7111
7153
  const scripts = workerData.scripts.slice(1);
7112
7154
  sendMessage({ type: MESSAGE_START, scripts, options, config: { chunkSize } });
7155
+ return workerData.result;
7113
7156
  }
7114
7157
  };
7115
7158
  }
@@ -7151,43 +7194,35 @@
7151
7194
  async function onMessage(event) {
7152
7195
  const message = event.data;
7153
7196
  const reponseError = message.error;
7154
- const codec = workerData.interface;
7155
7197
  try {
7156
7198
  if (reponseError) {
7157
7199
  const error = new Error(reponseError.message);
7158
7200
  error.stack = reponseError.stack;
7159
- codec.onerror(error);
7201
+ workerData.rejectResult(error);
7160
7202
  workerData.onTaskFinished();
7161
7203
  } else {
7162
7204
  if (message.type == MESSAGE_PULL) {
7163
- const { value, done } = await codec.pull();
7205
+ const { value, done } = await workerData.reader.read();
7164
7206
  sendMessage({ type: MESSAGE_DATA, data: value, done, messageId: message.messageId });
7165
7207
  }
7166
7208
  if (message.type == MESSAGE_DATA) {
7167
- const { value } = message.data;
7168
- if (value && value.data) {
7169
- value.data = new Uint8Array(value.data);
7170
- }
7171
- await ondata(workerData, codec, message.data);
7209
+ let { data } = message;
7210
+ data = new Uint8Array(data);
7211
+ await workerData.writer.ready;
7212
+ workerData.writer.write(data);
7213
+ }
7214
+ if (message.type == MESSAGE_CLOSE) {
7215
+ workerData.resolveResult(message.result);
7216
+ workerData.onTaskFinished();
7172
7217
  }
7173
7218
  }
7174
7219
  } catch (error) {
7175
- codec.onerror(error);
7220
+ workerData.rejectResult(error);
7176
7221
  workerData.onTaskFinished();
7177
7222
  }
7178
7223
  }
7179
7224
  }
7180
7225
 
7181
- async function ondata(workerData, codec, data) {
7182
- let { value, done } = data;
7183
- if (done) {
7184
- await codec.ondata({ value: { data: value.data, signature: value.signature }, done });
7185
- workerData.onTaskFinished();
7186
- } else if (value.data) {
7187
- await codec.ondata({ value: { data: value.data } });
7188
- }
7189
- }
7190
-
7191
7226
  /*
7192
7227
  Copyright (c) 2022 Gildas Lormeau. All rights reserved.
7193
7228
 
@@ -7221,30 +7256,42 @@
7221
7256
 
7222
7257
  let indexWorker = 0;
7223
7258
 
7224
- function createCodec(codecConstructor, options, config) {
7259
+ async function runCodec(codecConstructor, readable, writable, options, config, streamOptions) {
7225
7260
  const streamCopy = !options.compressed && !options.signed && !options.encrypted;
7226
7261
  const webWorker = !streamCopy && (options.useWebWorkers || (options.useWebWorkers === undefined && config.useWebWorkers));
7227
7262
  const scripts = webWorker && config.workerScripts ? config.workerScripts[options.codecType] : [];
7228
7263
  options.useCompressionStream = options.useCompressionStream === undefined ? config.useCompressionStream : options.useCompressionStream;
7264
+ let codec;
7229
7265
  if (pool.length < config.maxWorkers) {
7230
7266
  const workerData = { indexWorker };
7231
7267
  indexWorker++;
7232
7268
  pool.push(workerData);
7233
- return getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts);
7269
+ codec = getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts);
7234
7270
  } else {
7235
7271
  const workerData = pool.find(workerData => !workerData.busy);
7236
7272
  if (workerData) {
7237
7273
  clearTerminateTimeout(workerData);
7238
- return getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts);
7274
+ codec = getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts);
7275
+ } else {
7276
+ codec = await new Promise(resolve => pendingRequests.push({ resolve, codecConstructor, readable, writable, options, webWorker, scripts }));
7277
+ }
7278
+ }
7279
+ const { signal } = streamOptions;
7280
+ try {
7281
+ return await codec.run(signal);
7282
+ } catch (error) {
7283
+ if (signal && signal.aborted && (signal.reason == error || error.name == ERR_ABORT)) {
7284
+ codec.abort();
7285
+ throw new Error(ERR_ABORT);
7239
7286
  } else {
7240
- return new Promise(resolve => pendingRequests.push({ resolve, codecConstructor, options, webWorker, scripts }));
7287
+ throw error;
7241
7288
  }
7242
7289
  }
7243
7290
 
7244
7291
  function onTaskFinished(workerData) {
7245
7292
  if (pendingRequests.length) {
7246
- const [{ resolve, codecConstructor, options, webWorker, scripts }] = pendingRequests.splice(0, 1);
7247
- resolve(getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts));
7293
+ const [{ resolve, codecConstructor, readable, writable, options, webWorker, scripts }] = pendingRequests.splice(0, 1);
7294
+ resolve(getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts));
7248
7295
  } else if (workerData.worker) {
7249
7296
  clearTerminateTimeout(workerData);
7250
7297
  if (Number.isFinite(config.terminateWorkerTimeout) && config.terminateWorkerTimeout >= 0) {
@@ -7273,7 +7320,7 @@
7273
7320
  });
7274
7321
  }
7275
7322
 
7276
- var e=e=>{if("function"==typeof URL.createObjectURL){const t=()=>URL.createObjectURL(new Blob(['const{Array:t,Object:e,Math:n,Error:r,Uint8Array:i,Uint16Array:s,Uint32Array:o,Int32Array:f,DataView:c,TextEncoder:a,crypto:l,postMessage:u,TransformStream:w,ReadableStream:h,WritableStream:d,CompressionStream:p,DecompressionStream:y}=globalThis,b=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;b[t]=e}class m{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,r=0|t.length;r>n;n++)e=e>>>8^b[255&(e^t[n])];this.t=e}get(){return~this.t}}class k extends w{constructor(){super({start(){this.i=new m},transform(t){t&&this.i.append(t)},flush(t){const e=new i(4);new c(e.buffer).setUint32(0,this.i.get()),t.enqueue(e)}})}}const v={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=v.o(n);return 32===r?t.concat(e):v.l(e,r,0|n,t.slice(0,t.length-1))},u(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+v.o(n)},h(t,e){if(32*t.length<e)return t;const r=(t=t.slice(0,n.ceil(e/32))).length;return e&=31,r>0&&e&&(t[r-1]=v.p(e,t[r-1]&2147483648>>e-1,1)),t},p:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>n.round(t/1099511627776)||32,l(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let i=0;i<t.length;i++)r.push(n|t[i]>>>e),n=t[i]<<32-e;const i=t.length?t[t.length-1]:0,s=v.o(i);return r.push(v.p(e+s&31,e+s>32?n:r.pop(),1)),r}},g={m:{k(t){const e=v.u(t)/8,n=new i(e);let r;for(let i=0;e>i;i++)0==(3&i)&&(r=t[i/4]),n[i]=r>>>24,r<<=8;return n},v(t){const e=[];let n,r=0;for(n=0;n<t.length;n++)r=r<<8|t[n],3==(3&n)&&(e.push(r),r=0);return 3&n&&e.push(v.p(8*(3&n),r)),e}}},S={g:function(t){t?(this.S=t.S.slice(0),this._=t._.slice(0),this.C=t.C):this.reset()}};S.g.prototype={blockSize:512,reset:function(){const t=this;return t.S=this.I.slice(0),t._=[],t.C=0,t},update:function(t){const e=this;"string"==typeof t&&(t=g.A.v(t));const n=e._=v.concat(e._,t),i=e.C,s=e.C=i+v.u(t);if(s>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const f=new o(n);let c=0;for(let t=e.blockSize+i-(e.blockSize+i&e.blockSize-1);s>=t;t+=e.blockSize)e.V(f.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),e},P:function(){const t=this;let e=t._;const r=t.S;e=v.concat(e,[v.p(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(n.floor(t.C/4294967296)),e.push(0|t.C);e.length;)t.V(e.splice(0,16));return t.reset(),r},I:[1732584193,4023233417,2562383102,271733878,3285377520],B:[1518500249,1859775393,2400959708,3395469782],D:(t,e,n,r)=>t>19?t>39?t>59?t>79?void 0:e^n^r:e&n|e&r|n&r:e^n^r:e&n|~e&r,M:(t,e)=>e<<t|e>>>32-t,V:function(e){const r=this,i=r.S,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let o=i[0],f=i[1],c=i[2],a=i[3],l=i[4];for(let t=0;79>=t;t++){16>t||(s[t]=r.M(1,s[t-3]^s[t-8]^s[t-14]^s[t-16]));const e=r.M(5,o)+r.D(t,f,c,a)+l+s[t]+r.B[n.floor(t/20)]|0;l=a,a=c,c=r.M(30,f),f=o,o=e}i[0]=i[0]+o|0,i[1]=i[1]+f|0,i[2]=i[2]+c|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0}};const z={getRandomValues(t){const e=new o(t.buffer),r=t=>{let e=987654321;const r=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&r,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r)/4294967296+.5)*(n.random()>.5?1:-1))};for(let i,s=0;s<t.length;s+=4){const t=r(4294967296*(i||n.random()));i=987654071*t(),e[s/4]=4294967296*t()|0}return t}},_={importKey:t=>new _.R(g.m.v(t)),U(t,e,n,i){if(n=n||1e4,0>i||0>n)throw new r("invalid params to pbkdf2");const s=1+(i>>5)<<2;let o,f,a,l,u;const w=new ArrayBuffer(s),h=new c(w);let d=0;const p=v;for(e=g.m.v(e),u=1;(s||1)>d;u++){for(o=f=t.encrypt(p.concat(e,[u])),a=1;n>a;a++)for(f=t.encrypt(f),l=0;l<f.length;l++)o[l]^=f[l];for(a=0;(s||1)>d&&a<o.length;a++)h.setInt32(d,o[a]),d+=4}return w.slice(0,i/8)},R:class{constructor(t){const e=this,n=e.T=S.g,r=[[],[]],i=n.prototype.blockSize/32;e.j=[new n,new n],t.length>i&&(t=n.hash(t));for(let e=0;i>e;e++)r[0][e]=909522486^t[e],r[1][e]=1549556828^t[e];e.j[0].update(r[0]),e.j[1].update(r[1]),e.H=new n(e.j[0])}reset(){const t=this;t.H=new t.T(t.j[0]),t.K=!1}update(t){this.K=!0,this.H.update(t)}digest(){const t=this,e=t.H.P(),n=new t.T(t.j[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.K)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},C={name:"PBKDF2"},I=e.assign({hash:{name:"HMAC"}},C),A=e.assign({iterations:1e3,hash:{name:"SHA-1"}},C),x=["deriveBits"],V=[8,12,16],P=[16,24,32],B=[0,0,0,0],D=void 0!==l,E=D&&void 0!==l.subtle,M=g.m,R=class{constructor(t){const e=this;e.L=[[[],[],[],[],[]],[[],[],[],[],[]]],e.L[0][0][0]||e.W();const n=e.L[0][4],i=e.L[1],s=t.length;let o,f,c,a=1;if(4!==s&&6!==s&&8!==s)throw new r("invalid aes key size");for(e.B=[f=t.slice(0),c=[]],o=s;4*s+28>o;o++){let t=f[o-1];(o%s==0||8===s&&o%s==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%s==0&&(t=t<<8^t>>>24^a<<24,a=a<<1^283*(a>>7))),f[o]=f[o-s]^t}for(let t=0;o;t++,o--){const e=f[3&t?o:o-4];c[t]=4>=o||4>t?e:i[0][n[e>>>24]]^i[1][n[e>>16&255]]^i[2][n[e>>8&255]]^i[3][n[255&e]]}}encrypt(t){return this.F(t,0)}decrypt(t){return this.F(t,1)}W(){const t=this.L[0],e=this.L[1],n=t[4],r=e[4],i=[],s=[];let o,f,c,a;for(let t=0;256>t;t++)s[(i[t]=t<<1^283*(t>>7))^t]=t;for(let l=o=0;!n[l];l^=f||1,o=s[o]||1){let s=o^o<<1^o<<2^o<<3^o<<4;s=s>>8^255&s^99,n[l]=s,r[s]=l,a=i[c=i[f=i[l]]];let u=16843009*a^65537*c^257*f^16843008*l,w=257*i[s]^16843008*s;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][s]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}F(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.B[e],i=n.length/4-2,s=[0,0,0,0],o=this.L[e],f=o[0],c=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=t[0]^n[0],y=t[e?3:1]^n[1],b=t[2]^n[2],m=t[e?1:3]^n[3],k=4;for(let t=0;i>t;t++)w=f[p>>>24]^c[y>>16&255]^a[b>>8&255]^l[255&m]^n[k],h=f[y>>>24]^c[b>>16&255]^a[m>>8&255]^l[255&p]^n[k+1],d=f[b>>>24]^c[m>>16&255]^a[p>>8&255]^l[255&y]^n[k+2],m=f[m>>>24]^c[p>>16&255]^a[y>>8&255]^l[255&b]^n[k+3],k+=4,p=w,y=h,b=d;for(let t=0;4>t;t++)s[e?3&-t:t]=u[p>>>24]<<24^u[y>>16&255]<<16^u[b>>8&255]<<8^u[255&m]^n[k++],w=p,p=y,y=b,b=m,m=w;return s}},U=class{constructor(t,e){this.O=t,this.q=e,this.G=e}reset(){this.G=this.q}update(t){return this.J(this.O,t,this.G)}N(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}X(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}J(t,e,n){let r;if(!(r=e.length))return[];const i=v.u(e);for(let i=0;r>i;i+=4){this.X(n);const r=t.encrypt(n);e[i]^=r[0],e[i+1]^=r[1],e[i+2]^=r[2],e[i+3]^=r[3]}return v.h(e,i)}},T=_.R;class j extends w{constructor(n,s,o){let f;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,signed:s,Z:o-1,pending:new i(0)})},async transform(e,n){if(e&&e.length){const s=this;if(s.password){const n=s.password;s.password=null;const i=F(e,0,V[s.Z]+2);await(async(t,e,n)=>{await L(t,n,F(e,0,V[t.Z]));const i=F(e,V[t.Z]),s=t.keys.passwordVerification;if(s[0]!=i[0]||s[1]!=i[1])throw new r("Invalid pasword")})(s,i,n),s.$=new U(new R(s.keys.key),t.from(B)),s.tt=new T(s.keys.et),e=F(e,V[s.Z]+2),s.Y()}else await s.ready;const o=new i(e.length-10-(e.length-10)%16);n.enqueue(K(s,e,o,0,10,!0))}},async flush(t){const e=this;await e.ready;const n=e.pending,r=F(n,0,n.length-10),s=F(n,n.length-10);let o=new i(0);if(r.length){const t=M.v(r);e.tt.update(t);const n=e.$.update(t);o=M.k(n)}if(f.valid=!0,e.signed){const t=F(M.k(e.tt.digest()),0,10);for(let e=0;10>e;e++)t[e]!=s[e]&&(f.valid=!1)}t.enqueue(o)}}),f=this}}class H extends w{constructor(n,r){let s;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,Z:r-1,pending:new i(0)})},async transform(e,n){if(e&&e.length){const r=this;let s=new i(0);if(r.password){const e=r.password;r.password=null,s=await(async(t,e)=>{const n=(r=new i(V[t.Z]),D&&"function"==typeof l.getRandomValues?l.getRandomValues(r):z.getRandomValues(r));var r;return await L(t,e,n),W(n,t.keys.passwordVerification)})(r,e),r.$=new U(new R(r.keys.key),t.from(B)),r.tt=new T(r.keys.et),r.Y()}else await r.ready;const o=new i(s.length+e.length-e.length%16);o.set(s,0),n.enqueue(K(r,e,o,s.length,0))}},async flush(t){const e=this;await e.ready;let n=new i(0);if(e.pending.length){const t=e.$.update(M.v(e.pending));e.tt.update(t),n=M.k(t)}s.signature=M.k(e.tt.digest()).slice(0,10),t.enqueue(W(n,s.signature))}}),s=this}}function K(t,e,n,r,s,o){const f=e.length-s;let c;for(t.pending.length&&(e=W(t.pending,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new i(e)).set(n,0)}return t})(n,f-f%16)),c=0;f-16>=c;c+=16){const i=M.v(F(e,c,c+16));o&&t.tt.update(i);const s=t.$.update(i);o||t.tt.update(s),n.set(M.k(s),c+r)}return t.pending=F(e,c),n}async function L(t,n,r){const s=(t=>{if(void 0===a){const e=new i((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new a).encode(t)})(n),o=await((t,e,n,r,i)=>D&&E&&"function"==typeof l.subtle.importKey?l.subtle.importKey("raw",e,n,!1,i):_.importKey(e))(0,s,I,0,x),f=await(async(t,e,n)=>D&&E&&"function"==typeof l.subtle.deriveBits?await l.subtle.deriveBits(t,e,n):_.U(e,t.salt,A.iterations,n))(e.assign({salt:r},A),o,8*(2*P[t.Z]+2)),c=new i(f);t.keys={key:M.v(F(c,0,P[t.Z])),et:M.v(F(c,P[t.Z],2*P[t.Z])),passwordVerification:F(c,2*P[t.Z])}}function W(t,e){let n=t;return t.length+e.length&&(n=new i(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function F(t,e,n){return t.subarray(e,n)}class O extends w{constructor(t,n){let i;super({start(){e.assign(this,{password:t,passwordVerification:n}),N(this,t)},transform(t,e){if(t&&t.length){const n=this;if(n.password){const e=G(n,t.subarray(0,12));if(n.password=null,e[11]!=n.passwordVerification)throw new r("Invalid pasword");t=t.subarray(12)}e.enqueue(G(n,t))}},flush(){i.valid=!0}}),i=this}}class q extends w{constructor(t,n){super({start(){e.assign(this,{password:t,passwordVerification:n}),N(this,t)},transform(t,e){if(t&&t.length){const n=this;let r,s;if(n.password){n.password=null;const e=l.getRandomValues(new i(12));e[11]=n.passwordVerification,r=new i(t.length+e.length),r.set(J(n,e),0),s=12}else r=new i(t.length),s=0;r.set(J(n,t),s),e.enqueue(r)}},flush(){}})}}function G(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=X(t)^e[r],Q(t,n[r]);return n}function J(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=X(t)^e[r],Q(t,e[r]);return n}function N(t,e){t.keys=[305419896,591751049,878082192],t.nt=new m(t.keys[0]),t.rt=new m(t.keys[2]);for(let n=0;n<e.length;n++)Q(t,e.charCodeAt(n))}function Q(t,e){t.nt.append([e]),t.keys[0]=~t.nt.get(),t.keys[1]=Z(t.keys[1]+Y(t.keys[0])),t.keys[1]=Z(n.imul(t.keys[1],134775813)+1),t.rt.append([t.keys[1]>>>24]),t.keys[2]=~t.rt.get()}function X(t){const e=2|t.keys[2];return Y(n.imul(e,1^e)>>>8)}function Y(t){return 255&t}function Z(t){return 4294967295&t}class $ extends w{constructor(t,e){super({start(){this.it=new t(e)},transform(t,e){(t=this.it.append(t))&&e.enqueue(t)},flush(t){const e=this.it.flush();e&&t.enqueue(e)}})}}class tt{constructor(t,{signature:n,password:r,signed:i,compressed:s,zipCrypto:o,passwordVerification:f,encryptionStrength:c,st:a},{ot:l}){const u=this;function w(){u.stream=u.stream.pipeThrough(new $(t,{ot:l}))}u.start=async()=>{const t=!!r;if(e.assign(u,{signature:n,encrypted:t,signed:i,compressed:s,zipCrypto:o,stream:new h({async pull(t){const{value:e,done:n}=await u.pull();t.enqueue(e),(n||u.aborted)&&t.close()}})}),t&&(o?u.stream=u.stream.pipeThrough(new O(r,f)):(u.ft=new j(r,i,c),u.stream=u.stream.pipeThrough(u.ft))),s)if(void 0!==a&&!a||void 0===y)w();else try{u.stream=u.stream.pipeThrough(new y("deflate-raw"))}catch(t){w()}if((!t||o)&&i){const t=u.stream.tee();u.stream=t[0],u.ct=t[1].pipeThrough(new k)}u.lt=u.stream.getReader(),await u.read()},u.abort=()=>u.aborted=!0}async read(){const t=this,{value:e,done:n}=await t.lt.read();if(e&&e.length&&t.ut({value:{data:new i(e)}}),n){let e;if(t.encrypted&&!t.zipCrypto&&!t.ft.valid)throw new r("Invalid signature");if((!t.encrypted||t.zipCrypto)&&t.signed){e=await t.ct.getReader().read();const n=new c(e.value.buffer);if(t.signature!=n.getUint32(0,!1))throw new r("Invalid signature")}t.ut({value:{signature:e},done:n})}else await t.read()}}class et{constructor(t,{encrypted:n,signed:r,compressed:i,level:s,zipCrypto:o,password:f,passwordVerification:c,encryptionStrength:a,st:l},{ot:u}){const w=this;function d(){w.stream=w.stream.pipeThrough(new $(t,{ot:u,level:s}))}w.start=async()=>{if(e.assign(this,{encrypted:n,signed:r,compressed:i,zipCrypto:o,stream:new h({async pull(t){const{value:e,done:n}=await w.pull();t.enqueue(e),(n||w.aborted)&&t.close()}})}),(!n||o)&&r){const t=w.stream.tee();w.stream=t[0],w.ct=t[1].pipeThrough(new k({ot:u}))}if(i)if(void 0!==l&&!l||void 0===p)d();else try{w.stream=w.stream.pipeThrough(new p("deflate-raw"))}catch(t){d()}n&&(o?w.stream=w.stream.pipeThrough(new q(f,c)):(w.wt=new H(f,a),w.stream=w.stream.pipeThrough(w.wt))),w.lt=w.stream.getReader(),await w.read()},w.abort=()=>w.aborted=!0}async read(){const t=this,{value:e,done:n}=await t.lt.read();if(e&&e.length&&t.ut({value:{data:e}}),n){let e;t.encrypted&&!t.zipCrypto&&(e=t.wt.signature),t.encrypted&&!t.zipCrypto||!t.signed||(e=await t.ct.getReader().read(),e=new c(e.value.buffer).getUint32(0)),t.ut({value:{signature:e},done:n})}else await t.read()}}const nt=new Map;let rt,it=0;function st(t){if(t.data){const e=t.data.value.data;if(e&&e.length)try{t.data.value.data=e.buffer,u(t,[t.data.value.data])}catch(e){u(t)}else u(t)}else u(t)}addEventListener("message",(async t=>{const e=t.data,n=e.type;try{if("start"==n&&(async t=>{try{t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate),rt=((t,e,n)=>e.codecType.startsWith("deflate")?new et(t,e,n):e.codecType.startsWith("inflate")?new tt(t,e,n):void 0)(n,e,t.config),rt.ut=t=>st({type:"data",data:t}),rt.onerror=t=>u({error:{message:t.message,stack:t.stack}}),rt.pull=()=>{const t=new Promise(((t,e)=>nt.set(it,{resolve:t,reject:e})));return st({type:"pull",messageId:it}),it++,t},await rt.start()}catch(t){u({error:{message:t.message,stack:t.stack}})}})(e),"data"==n){const{resolve:t}=nt.get(e.messageId);nt.delete(e.messageId),t({value:new i(e.data),done:e.done})}"abort"==n&&rt.abort()}catch(t){u({error:{message:t.message,stack:t.stack}})}}));const ot=(()=>{const e=-2;function o(e){return f(e.map((([e,n])=>new t(e).fill(n,0,e))))}function f(e){return e.reduce(((e,n)=>e.concat(t.isArray(n)?f(n):n)),[])}const c=[0,1,2,3].concat(...o([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function a(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.ht=r=>{const i=t.dt,s=t.bt.yt,o=t.bt.kt;let f,c,a,l=-1;for(r.vt=0,r.gt=573,f=0;o>f;f++)0!==i[2*f]?(r.St[++r.vt]=l=f,r.zt[f]=0):i[2*f+1]=0;for(;2>r.vt;)a=r.St[++r.vt]=2>l?++l:0,i[2*a]=1,r.zt[a]=0,r._t--,s&&(r.Ct-=s[2*a+1]);for(t.It=l,f=n.floor(r.vt/2);f>=1;f--)r.At(i,f);a=o;do{f=r.St[1],r.St[1]=r.St[r.vt--],r.At(i,1),c=r.St[1],r.St[--r.gt]=f,r.St[--r.gt]=c,i[2*a]=i[2*f]+i[2*c],r.zt[a]=n.max(r.zt[f],r.zt[c])+1,i[2*f+1]=i[2*c+1]=a,r.St[1]=a++,r.At(i,1)}while(r.vt>=2);r.St[--r.gt]=r.St[1],(e=>{const n=t.dt,r=t.bt.yt,i=t.bt.xt,s=t.bt.Vt,o=t.bt.Pt;let f,c,a,l,u,w,h=0;for(l=0;15>=l;l++)e.Bt[l]=0;for(n[2*e.St[e.gt]+1]=0,f=e.gt+1;573>f;f++)c=e.St[f],l=n[2*n[2*c+1]+1]+1,l>o&&(l=o,h++),n[2*c+1]=l,c>t.It||(e.Bt[l]++,u=0,s>c||(u=i[c-s]),w=n[2*c],e._t+=w*(l+u),r&&(e.Ct+=w*(r[2*c+1]+u)));if(0!==h){do{for(l=o-1;0===e.Bt[l];)l--;e.Bt[l]--,e.Bt[l+1]+=2,e.Bt[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(c=e.Bt[l];0!==c;)a=e.St[--f],a>t.It||(n[2*a+1]!=l&&(e._t+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),c--)}})(r),((t,n,r)=>{const i=[];let s,o,f,c=0;for(s=1;15>=s;s++)i[s]=c=c+r[s-1]<<1;for(o=0;n>=o;o++)f=t[2*o+1],0!==f&&(t[2*o]=e(i[f]++,f))})(i,t.It,r.Bt)}}function l(t,e,n,r,i){const s=this;s.yt=t,s.xt=e,s.Vt=n,s.kt=r,s.Pt=i}a.Dt=[0,1,2,3,4,5,6,7].concat(...o([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),a.Et=[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],a.Mt=[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],a.Rt=t=>256>t?c[t]:c[256+(t>>>7)],a.Ut=[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],a.Tt=[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.jt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],a.Ht=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const u=o([[144,8],[112,9],[24,7],[8,8]]);l.Kt=f([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((t,e)=>[t,u[e]])));const w=o([[30,5]]);function h(t,e,n,r,i){const s=this;s.Lt=t,s.Wt=e,s.Ft=n,s.Ot=r,s.qt=i}l.Gt=f([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((t,e)=>[t,w[e]]))),l.Jt=new l(l.Kt,a.Ut,257,286,15),l.Nt=new l(l.Gt,a.Tt,0,30,15),l.Qt=new l(null,a.jt,0,19,7);const d=[new h(0,0,0,0,0),new h(4,4,8,4,1),new h(4,5,16,8,1),new h(4,6,32,32,1),new h(4,4,16,16,2),new h(8,16,32,32,2),new h(8,16,128,128,2),new h(8,32,128,256,2),new h(32,128,258,1024,2),new h(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],y=113,b=666,m=262;function k(t,e,n,r){const i=t[2*e],s=t[2*n];return s>i||i==s&&r[e]<=r[n]}function v(){const t=this;let r,o,f,c,u,w,h,v,g,S,z,_,C,I,A,x,V,P,B,D,E,M,R,U,T,j,H,K,L,W,F,O,q;const G=new a,J=new a,N=new a;let Q,X,Y,Z,$,tt;function et(){let e;for(e=0;286>e;e++)F[2*e]=0;for(e=0;30>e;e++)O[2*e]=0;for(e=0;19>e;e++)q[2*e]=0;F[512]=1,t._t=t.Ct=0,X=Y=0}function nt(t,e){let n,r=-1,i=t[1],s=0,o=7,f=4;0===i&&(o=138,f=3),t[2*(e+1)+1]=65535;for(let c=0;e>=c;c++)n=i,i=t[2*(c+1)+1],++s<o&&n==i||(f>s?q[2*n]+=s:0!==n?(n!=r&&q[2*n]++,q[32]++):s>10?q[36]++:q[34]++,s=0,r=n,0===i?(o=138,f=3):n==i?(o=6,f=3):(o=7,f=4))}function rt(e){t.Xt[t.pending++]=e}function it(t){rt(255&t),rt(t>>>8&255)}function st(t,e){let n;const r=e;tt>16-r?(n=t,$|=n<<tt&65535,it($),$=n>>>16-tt,tt+=r-16):($|=t<<tt&65535,tt+=r)}function ot(t,e){const n=2*t;st(65535&e[n],65535&e[n+1])}function ft(t,e){let n,r,i=-1,s=t[1],o=0,f=7,c=4;for(0===s&&(f=138,c=3),n=0;e>=n;n++)if(r=s,s=t[2*(n+1)+1],++o>=f||r!=s){if(c>o)do{ot(r,q)}while(0!=--o);else 0!==r?(r!=i&&(ot(r,q),o--),ot(16,q),st(o-3,2)):o>10?(ot(18,q),st(o-11,7)):(ot(17,q),st(o-3,3));o=0,i=r,0===s?(f=138,c=3):r==s?(f=6,c=3):(f=7,c=4)}}function ct(){16==tt?(it($),$=0,tt=0):8>tt||(rt(255&$),$>>>=8,tt-=8)}function at(e,r){let i,s,o;if(t.Yt[X]=e,t.Zt[X]=255&r,X++,0===e?F[2*r]++:(Y++,e--,F[2*(a.Dt[r]+256+1)]++,O[2*a.Rt(e)]++),0==(8191&X)&&H>2){for(i=8*X,s=E-V,o=0;30>o;o++)i+=O[2*o]*(5+a.Tt[o]);if(i>>>=3,Y<n.floor(X/2)&&i<n.floor(s/2))return!0}return X==Q-1}function lt(e,n){let r,i,s,o,f=0;if(0!==X)do{r=t.Yt[f],i=t.Zt[f],f++,0===r?ot(i,e):(s=a.Dt[i],ot(s+256+1,e),o=a.Ut[s],0!==o&&(i-=a.Et[s],st(i,o)),r--,s=a.Rt(r),ot(s,n),o=a.Tt[s],0!==o&&(r-=a.Mt[s],st(r,o)))}while(X>f);ot(256,e),Z=e[513]}function ut(){tt>8?it($):tt>0&&rt(255&$),$=0,tt=0}function wt(e,n,r){st(0+(r?1:0),3),((e,n)=>{ut(),Z=8,it(n),it(~n),t.Xt.set(v.subarray(e,e+n),t.pending),t.pending+=n})(e,n)}function ht(e){((e,n,r)=>{let i,s,o=0;H>0?(G.ht(t),J.ht(t),o=(()=>{let e;for(nt(F,G.It),nt(O,J.It),N.ht(t),e=18;e>=3&&0===q[2*a.Ht[e]+1];e--);return t._t+=14+3*(e+1),e})(),i=t._t+3+7>>>3,s=t.Ct+3+7>>>3,s>i||(i=s)):i=s=n+5,n+4>i||-1==e?s==i?(st(2+(r?1:0),3),lt(l.Kt,l.Gt)):(st(4+(r?1:0),3),((t,e,n)=>{let r;for(st(t-257,5),st(e-1,5),st(n-4,4),r=0;n>r;r++)st(q[2*a.Ht[r]+1],3);ft(F,t-1),ft(O,e-1)})(G.It+1,J.It+1,o+1),lt(F,O)):wt(e,n,r),et(),r&&ut()})(0>V?-1:V,E-V,e),V=E,r.$t()}function dt(){let t,e,n,i;do{if(i=g-R-E,0===i&&0===E&&0===R)i=u;else if(-1==i)i--;else if(E>=u+u-m){v.set(v.subarray(u,u+u),0),M-=u,E-=u,V-=u,t=C,n=t;do{e=65535&z[--n],z[n]=u>e?0:e-u}while(0!=--t);t=u,n=t;do{e=65535&S[--n],S[n]=u>e?0:e-u}while(0!=--t);i+=u}if(0===r.te)return;t=r.ee(v,E+R,i),R+=t,3>R||(_=255&v[E],_=(_<<x^255&v[E+1])&A)}while(m>R&&0!==r.te)}function pt(t){let e,n,r=T,i=E,s=U;const o=E>u-m?E-(u-m):0;let f=W;const c=h,a=E+258;let l=v[i+s-1],w=v[i+s];L>U||(r>>=2),f>R&&(f=R);do{if(e=t,v[e+s]==w&&v[e+s-1]==l&&v[e]==v[i]&&v[++e]==v[i+1]){i+=2,e++;do{}while(v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&v[++i]==v[++e]&&a>i);if(n=258-(a-i),i=a-258,n>s){if(M=t,s=n,n>=f)break;l=v[i+s-1],w=v[i+s]}}}while((t=65535&S[t&c])>o&&0!=--r);return s>R?R:s}t.zt=[],t.Bt=[],t.St=[],F=[],O=[],q=[],t.At=(e,n)=>{const r=t.St,i=r[n];let s=n<<1;for(;s<=t.vt&&(s<t.vt&&k(e,r[s+1],r[s],t.zt)&&s++,!k(e,i,r[s],t.zt));)r[n]=r[s],n=s,s<<=1;r[n]=i},t.ne=(r,a,p,b,m,k)=>(b||(b=8),m||(m=8),k||(k=0),r.re=null,-1==a&&(a=6),1>m||m>9||8!=b||9>p||p>15||0>a||a>9||0>k||k>2?e:(r.ie=t,w=p,u=1<<w,h=u-1,I=m+7,C=1<<I,A=C-1,x=n.floor((I+3-1)/3),v=new i(2*u),S=[],z=[],Q=1<<m+6,t.Xt=new i(4*Q),f=4*Q,t.Yt=new s(Q),t.Zt=new i(Q),H=a,K=k,(e=>(e.se=e.oe=0,e.re=null,t.pending=0,t.fe=0,o=y,c=0,G.dt=F,G.bt=l.Jt,J.dt=O,J.bt=l.Nt,N.dt=q,N.bt=l.Qt,$=0,tt=0,Z=8,et(),(()=>{g=2*u,z[C-1]=0;for(let t=0;C-1>t;t++)z[t]=0;j=d[H].Wt,L=d[H].Lt,W=d[H].Ft,T=d[H].Ot,E=0,V=0,R=0,P=U=2,D=0,_=0})(),0))(r))),t.ce=()=>42!=o&&o!=y&&o!=b?e:(t.Zt=null,t.Yt=null,t.Xt=null,z=null,S=null,v=null,t.ie=null,o==y?-3:0),t.ae=(t,n,r)=>{let i=0;return-1==n&&(n=6),0>n||n>9||0>r||r>2?e:(d[H].qt!=d[n].qt&&0!==t.se&&(i=t.le(1)),H!=n&&(H=n,j=d[H].Wt,L=d[H].Lt,W=d[H].Ft,T=d[H].Ot),K=r,i)},t.ue=(t,n,r)=>{let i,s=r,f=0;if(!n||42!=o)return e;if(3>s)return 0;for(s>u-m&&(s=u-m,f=r-s),v.set(n.subarray(f,f+s),0),E=s,V=s,_=255&v[0],_=(_<<x^255&v[1])&A,i=0;s-3>=i;i++)_=(_<<x^255&v[i+2])&A,S[i&h]=z[_],z[_]=i;return 0},t.le=(n,i)=>{let s,a,k,g,I;if(i>4||0>i)return e;if(!n.we||!n.he&&0!==n.te||o==b&&4!=i)return n.re=p[4],e;if(0===n.de)return n.re=p[7],-5;var T;if(r=n,g=c,c=i,42==o&&(a=8+(w-8<<4)<<8,k=(H-1&255)>>1,k>3&&(k=3),a|=k<<6,0!==E&&(a|=32),a+=31-a%31,o=y,rt((T=a)>>8&255),rt(255&T)),0!==t.pending){if(r.$t(),0===r.de)return c=-1,0}else if(0===r.te&&g>=i&&4!=i)return r.re=p[7],-5;if(o==b&&0!==r.te)return n.re=p[7],-5;if(0!==r.te||0!==R||0!=i&&o!=b){switch(I=-1,d[H].qt){case 0:I=(t=>{let e,n=65535;for(n>f-5&&(n=f-5);;){if(1>=R){if(dt(),0===R&&0==t)return 0;if(0===R)break}if(E+=R,R=0,e=V+n,(0===E||E>=e)&&(R=E-e,E=e,ht(!1),0===r.de))return 0;if(E-V>=u-m&&(ht(!1),0===r.de))return 0}return ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i);break;case 1:I=(t=>{let e,n=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(_=(_<<x^255&v[E+2])&A,n=65535&z[_],S[E&h]=z[_],z[_]=E),0===n||(E-n&65535)>u-m||2!=K&&(P=pt(n)),3>P)e=at(0,255&v[E]),R--,E++;else if(e=at(E-M,P-3),R-=P,P>j||3>R)E+=P,P=0,_=255&v[E],_=(_<<x^255&v[E+1])&A;else{P--;do{E++,_=(_<<x^255&v[E+2])&A,n=65535&z[_],S[E&h]=z[_],z[_]=E}while(0!=--P);E++}if(e&&(ht(!1),0===r.de))return 0}return ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i);break;case 2:I=(t=>{let e,n,i=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(_=(_<<x^255&v[E+2])&A,i=65535&z[_],S[E&h]=z[_],z[_]=E),U=P,B=M,P=2,0!==i&&j>U&&u-m>=(E-i&65535)&&(2!=K&&(P=pt(i)),5>=P&&(1==K||3==P&&E-M>4096)&&(P=2)),3>U||P>U)if(0!==D){if(e=at(0,255&v[E-1]),e&&ht(!1),E++,R--,0===r.de)return 0}else D=1,E++,R--;else{n=E+R-3,e=at(E-1-B,U-3),R-=U-1,U-=2;do{++E>n||(_=(_<<x^255&v[E+2])&A,i=65535&z[_],S[E&h]=z[_],z[_]=E)}while(0!=--U);if(D=0,P=2,E++,e&&(ht(!1),0===r.de))return 0}}return 0!==D&&(e=at(0,255&v[E-1]),D=0),ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i)}if(2!=I&&3!=I||(o=b),0==I||2==I)return 0===r.de&&(c=-1),0;if(1==I){if(1==i)st(2,3),ot(256,l.Kt),ct(),9>1+Z+10-tt&&(st(2,3),ot(256,l.Kt),ct()),Z=7;else if(wt(0,0,!1),3==i)for(s=0;C>s;s++)z[s]=0;if(r.$t(),0===r.de)return c=-1,0}}return 4!=i?0:1}}function g(){const t=this;t.pe=0,t.ye=0,t.te=0,t.se=0,t.de=0,t.oe=0}return g.prototype={ne:function(t,e){const n=this;return n.ie=new v,e||(e=15),n.ie.ne(n,t,e)},le:function(t){const n=this;return n.ie?n.ie.le(n,t):e},ce:function(){const t=this;if(!t.ie)return e;const n=t.ie.ce();return t.ie=null,n},ae:function(t,n){const r=this;return r.ie?r.ie.ae(r,t,n):e},ue:function(t,n){const r=this;return r.ie?r.ie.ue(r,t,n):e},ee:function(t,e,n){const r=this;let i=r.te;return i>n&&(i=n),0===i?0:(r.te-=i,t.set(r.he.subarray(r.pe,r.pe+i),e),r.pe+=i,r.se+=i,i)},$t:function(){const t=this;let e=t.ie.pending;e>t.de&&(e=t.de),0!==e&&(t.we.set(t.ie.Xt.subarray(t.ie.fe,t.ie.fe+e),t.ye),t.ye+=e,t.ie.fe+=e,t.oe+=e,t.de-=e,t.ie.pending-=e,0===t.ie.pending&&(t.ie.fe=0))}},function(t){const e=new g,s=(o=t&&t.ot?t.ot:65536)+5*(n.floor(o/16383)+1);var o;const f=new i(s);let c=t?t.level:-1;void 0===c&&(c=-1),e.ne(c),e.we=f,this.append=(t,n)=>{let o,c,a=0,l=0,u=0;const w=[];if(t.length){e.pe=0,e.he=t,e.te=t.length;do{if(e.ye=0,e.de=s,o=e.le(0),0!=o)throw new r("deflating: "+e.re);e.ye&&(e.ye==s?w.push(new i(f)):w.push(f.slice(0,e.ye))),u+=e.ye,n&&e.pe>0&&e.pe!=a&&(n(e.pe),a=e.pe)}while(e.te>0||0===e.de);return w.length>1?(c=new i(u),w.forEach((t=>{c.set(t,l),l+=t.length}))):c=w[0]||new i(0),c}},this.flush=()=>{let t,n,o=0,c=0;const a=[];do{if(e.ye=0,e.de=s,t=e.le(4),1!=t&&0!=t)throw new r("deflating: "+e.re);s-e.de>0&&a.push(f.slice(0,e.ye)),c+=e.ye}while(e.te>0||0===e.de);return e.ce(),n=new i(c),a.forEach((t=>{n.set(t,o),o+=t.length})),n}}})(),ft=(()=>{const t=-2,e=-3,s=-5,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],a=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],l=[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,0,0],u=[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,112,112],w=[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],h=[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];function d(){let t,n,r,i,o,c;function a(t,n,f,a,l,u,w,h,d,p,y){let b,m,k,v,g,S,z,_,C,I,A,x,V,P,B;I=0,g=f;do{r[t[n+I]]++,I++,g--}while(0!==g);if(r[0]==f)return w[0]=-1,h[0]=0,0;for(_=h[0],S=1;15>=S&&0===r[S];S++);for(z=S,S>_&&(_=S),g=15;0!==g&&0===r[g];g--);for(k=g,_>g&&(_=g),h[0]=_,P=1<<S;g>S;S++,P<<=1)if(0>(P-=r[S]))return e;if(0>(P-=r[g]))return e;for(r[g]+=P,c[1]=S=0,I=1,V=2;0!=--g;)c[V]=S+=r[I],V++,I++;g=0,I=0;do{0!==(S=t[n+I])&&(y[c[S]++]=g),I++}while(++g<f);for(f=c[k],c[0]=g=0,I=0,v=-1,x=-_,o[0]=0,A=0,B=0;k>=z;z++)for(b=r[z];0!=b--;){for(;z>x+_;){if(v++,x+=_,B=k-x,B=B>_?_:B,(m=1<<(S=z-x))>b+1&&(m-=b+1,V=z,B>S))for(;++S<B&&(m<<=1)>r[++V];)m-=r[V];if(B=1<<S,p[0]+B>1440)return e;o[v]=A=p[0],p[0]+=B,0!==v?(c[v]=g,i[0]=S,i[1]=_,S=g>>>x-_,i[2]=A-o[v-1]-S,d.set(i,3*(o[v-1]+S))):w[0]=A}for(i[1]=z-x,f>I?y[I]<a?(i[0]=256>y[I]?0:96,i[2]=y[I++]):(i[0]=u[y[I]-a]+16+64,i[2]=l[y[I++]-a]):i[0]=192,m=1<<z-x,S=g>>>x;B>S;S+=m)d.set(i,3*(A+S));for(S=1<<z-1;0!=(g&S);S>>>=1)g^=S;for(g^=S,C=(1<<x)-1;(g&C)!=c[v];)v--,x-=_,C=(1<<x)-1}return 0!==P&&1!=k?s:0}function d(e){let s;for(t||(t=[],n=[],r=new f(16),i=[],o=new f(15),c=new f(16)),n.length<e&&(n=[]),s=0;e>s;s++)n[s]=0;for(s=0;16>s;s++)r[s]=0;for(s=0;3>s;s++)i[s]=0;o.set(r.subarray(0,15),0),c.set(r.subarray(0,16),0)}this.be=(r,i,o,f,c)=>{let l;return d(19),t[0]=0,l=a(r,0,19,19,null,null,o,i,f,t,n),l==e?c.re="oversubscribed dynamic bit lengths tree":l!=s&&0!==i[0]||(c.re="incomplete dynamic bit lengths tree",l=e),l},this.me=(r,i,o,f,c,p,y,b,m)=>{let k;return d(288),t[0]=0,k=a(o,0,r,257,l,u,p,f,b,t,n),0!=k||0===f[0]?(k==e?m.re="oversubscribed literal/length tree":-4!=k&&(m.re="incomplete literal/length tree",k=e),k):(d(288),k=a(o,r,i,0,w,h,y,c,b,t,n),0!=k||0===c[0]&&r>257?(k==e?m.re="oversubscribed distance tree":k==s?(m.re="incomplete distance tree",k=e):-4!=k&&(m.re="empty distance tree with lengths",k=e),k):0)}}function p(){const n=this;let r,i,s,f,c=0,a=0,l=0,u=0,w=0,h=0,d=0,p=0,y=0,b=0;function m(t,n,r,i,s,f,c,a){let l,u,w,h,d,p,y,b,m,k,v,g,S,z,_,C;y=a.pe,b=a.te,d=c.ke,p=c.ve,m=c.write,k=m<c.read?c.read-m-1:c.end-m,v=o[t],g=o[n];do{for(;20>p;)b--,d|=(255&a.ge(y++))<<p,p+=8;if(l=d&v,u=r,w=i,C=3*(w+l),0!==(h=u[C]))for(;;){if(d>>=u[C+1],p-=u[C+1],0!=(16&h)){for(h&=15,S=u[C+2]+(d&o[h]),d>>=h,p-=h;15>p;)b--,d|=(255&a.ge(y++))<<p,p+=8;for(l=d&g,u=s,w=f,C=3*(w+l),h=u[C];;){if(d>>=u[C+1],p-=u[C+1],0!=(16&h)){for(h&=15;h>p;)b--,d|=(255&a.ge(y++))<<p,p+=8;if(z=u[C+2]+(d&o[h]),d>>=h,p-=h,k-=S,z>m){_=m-z;do{_+=c.end}while(0>_);if(h=c.end-_,S>h){if(S-=h,m-_>0&&h>m-_)do{c.Se[m++]=c.Se[_++]}while(0!=--h);else c.Se.set(c.Se.subarray(_,_+h),m),m+=h,_+=h,h=0;_=0}}else _=m-z,m-_>0&&2>m-_?(c.Se[m++]=c.Se[_++],c.Se[m++]=c.Se[_++],S-=2):(c.Se.set(c.Se.subarray(_,_+2),m),m+=2,_+=2,S-=2);if(m-_>0&&S>m-_)do{c.Se[m++]=c.Se[_++]}while(0!=--S);else c.Se.set(c.Se.subarray(_,_+S),m),m+=S,_+=S,S=0;break}if(0!=(64&h))return a.re="invalid distance code",S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,e;l+=u[C+2],l+=d&o[h],C=3*(w+l),h=u[C]}break}if(0!=(64&h))return 0!=(32&h)?(S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,1):(a.re="invalid literal/length code",S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,e);if(l+=u[C+2],l+=d&o[h],C=3*(w+l),0===(h=u[C])){d>>=u[C+1],p-=u[C+1],c.Se[m++]=u[C+2],k--;break}}else d>>=u[C+1],p-=u[C+1],c.Se[m++]=u[C+2],k--}while(k>=258&&b>=10);return S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ve=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,0}n.init=(t,e,n,o,c,a)=>{r=0,d=t,p=e,s=n,y=o,f=c,b=a,i=null},n.ze=(n,k,v)=>{let g,S,z,_,C,I,A,x=0,V=0,P=0;for(P=k.pe,_=k.te,x=n.ke,V=n.ve,C=n.write,I=C<n.read?n.read-C-1:n.end-C;;)switch(r){case 0:if(I>=258&&_>=10&&(n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,v=m(d,p,s,y,f,b,n,k),P=k.pe,_=k.te,x=n.ke,V=n.ve,C=n.write,I=C<n.read?n.read-C-1:n.end-C,0!=v)){r=1==v?7:9;break}l=d,i=s,a=y,r=1;case 1:for(g=l;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}if(S=3*(a+(x&o[g])),x>>>=i[S+1],V-=i[S+1],z=i[S],0===z){u=i[S+2],r=6;break}if(0!=(16&z)){w=15&z,c=i[S+2],r=2;break}if(0==(64&z)){l=z,a=S/3+i[S+2];break}if(0!=(32&z)){r=7;break}return r=9,k.re="invalid literal/length code",v=e,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);case 2:for(g=w;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}c+=x&o[g],x>>=g,V-=g,l=p,i=f,a=b,r=3;case 3:for(g=l;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}if(S=3*(a+(x&o[g])),x>>=i[S+1],V-=i[S+1],z=i[S],0!=(16&z)){w=15&z,h=i[S+2],r=4;break}if(0==(64&z)){l=z,a=S/3+i[S+2];break}return r=9,k.re="invalid distance code",v=e,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);case 4:for(g=w;g>V;){if(0===_)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,_--,x|=(255&k.ge(P++))<<V,V+=8}h+=x&o[g],x>>=g,V-=g,r=5;case 5:for(A=C-h;0>A;)A+=n.end;for(;0!==c;){if(0===I&&(C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I&&(n.write=C,v=n._e(k,v),C=n.write,I=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I)))return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);n.Se[C++]=n.Se[A++],I--,A==n.end&&(A=0),c--}r=0;break;case 6:if(0===I&&(C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I&&(n.write=C,v=n._e(k,v),C=n.write,I=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I)))return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);v=0,n.Se[C++]=u,I--,r=0;break;case 7:if(V>7&&(V-=8,_++,P--),n.write=C,v=n._e(k,v),C=n.write,I=C<n.read?n.read-C-1:n.end-C,n.read!=n.write)return n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);r=8;case 8:return v=1,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);case 9:return v=e,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v);default:return v=t,n.ke=x,n.ve=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,v)}},n.Ce=()=>{}}d.Ie=(t,e,n,r)=>(t[0]=9,e[0]=5,n[0]=c,r[0]=a,0);const y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function b(n,r){const c=this;let a,l=0,u=0,w=0,h=0;const b=[0],m=[0],k=new p;let v=0,g=new f(4320);const S=new d;c.ve=0,c.ke=0,c.Se=new i(r),c.end=r,c.read=0,c.write=0,c.reset=(t,e)=>{e&&(e[0]=0),6==l&&k.Ce(t),l=0,c.ve=0,c.ke=0,c.read=c.write=0},c.reset(n,null),c._e=(t,e)=>{let n,r,i;return r=t.ye,i=c.read,n=(i>c.write?c.end:c.write)-i,n>t.de&&(n=t.de),0!==n&&e==s&&(e=0),t.de-=n,t.oe+=n,t.we.set(c.Se.subarray(i,i+n),r),r+=n,i+=n,i==c.end&&(i=0,c.write==c.end&&(c.write=0),n=c.write-i,n>t.de&&(n=t.de),0!==n&&e==s&&(e=0),t.de-=n,t.oe+=n,t.we.set(c.Se.subarray(i,i+n),r),r+=n,i+=n),t.ye=r,c.read=i,e},c.ze=(n,r)=>{let i,s,f,p,z,_,C,I;for(p=n.pe,z=n.te,s=c.ke,f=c.ve,_=c.write,C=_<c.read?c.read-_-1:c.end-_;;){let A,x,V,P,B,D,E,M;switch(l){case 0:for(;3>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}switch(i=7&s,v=1&i,i>>>1){case 0:s>>>=3,f-=3,i=7&f,s>>>=i,f-=i,l=1;break;case 1:A=[],x=[],V=[[]],P=[[]],d.Ie(A,x,V,P),k.init(A[0],x[0],V[0],0,P[0],0),s>>>=3,f-=3,l=6;break;case 2:s>>>=3,f-=3,l=3;break;case 3:return s>>>=3,f-=3,l=9,n.re="invalid block type",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r)}break;case 1:for(;32>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if((~s>>>16&65535)!=(65535&s))return l=9,n.re="invalid stored block lengths",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);u=65535&s,s=f=0,l=0!==u?2:0!==v?7:0;break;case 2:if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(0===C&&(_==c.end&&0!==c.read&&(_=0,C=_<c.read?c.read-_-1:c.end-_),0===C&&(c.write=_,r=c._e(n,r),_=c.write,C=_<c.read?c.read-_-1:c.end-_,_==c.end&&0!==c.read&&(_=0,C=_<c.read?c.read-_-1:c.end-_),0===C)))return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(r=0,i=u,i>z&&(i=z),i>C&&(i=C),c.Se.set(n.ee(p,i),_),p+=i,z-=i,_+=i,C-=i,0!=(u-=i))break;l=0!==v?7:0;break;case 3:for(;14>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if(w=i=16383&s,(31&i)>29||(i>>5&31)>29)return l=9,n.re="too many length or distance symbols",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(i=258+(31&i)+(i>>5&31),!a||a.length<i)a=[];else for(I=0;i>I;I++)a[I]=0;s>>>=14,f-=14,h=0,l=4;case 4:for(;4+(w>>>10)>h;){for(;3>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}a[y[h++]]=7&s,s>>>=3,f-=3}for(;19>h;)a[y[h++]]=0;if(b[0]=7,i=S.be(a,b,m,g,n),0!=i)return(r=i)==e&&(a=null,l=9),c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);h=0,l=5;case 5:for(;i=w,258+(31&i)+(i>>5&31)>h;){let t,u;for(i=b[0];i>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if(i=g[3*(m[0]+(s&o[i]))+1],u=g[3*(m[0]+(s&o[i]))+2],16>u)s>>>=i,f-=i,a[h++]=u;else{for(I=18==u?7:u-14,t=18==u?11:3;i+I>f;){if(0===z)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ge(p++))<<f,f+=8}if(s>>>=i,f-=i,t+=s&o[I],s>>>=I,f-=I,I=h,i=w,I+t>258+(31&i)+(i>>5&31)||16==u&&1>I)return a=null,l=9,n.re="invalid bit length repeat",r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);u=16==u?a[I-1]:0;do{a[I++]=u}while(0!=--t);h=I}}if(m[0]=-1,B=[],D=[],E=[],M=[],B[0]=9,D[0]=6,i=w,i=S.me(257+(31&i),1+(i>>5&31),a,B,D,E,M,g,n),0!=i)return i==e&&(a=null,l=9),r=i,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);k.init(B[0],D[0],g,E[0],g,M[0]),l=6;case 6:if(c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,1!=(r=k.ze(c,n,r)))return c._e(n,r);if(r=0,k.Ce(n),p=n.pe,z=n.te,s=c.ke,f=c.ve,_=c.write,C=_<c.read?c.read-_-1:c.end-_,0===v){l=0;break}l=7;case 7:if(c.write=_,r=c._e(n,r),_=c.write,C=_<c.read?c.read-_-1:c.end-_,c.read!=c.write)return c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);l=8;case 8:return r=1,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);case 9:return r=e,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);default:return r=t,c.ke=s,c.ve=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r)}}},c.Ce=t=>{c.reset(t,null),c.Se=null,g=null},c.Ae=(t,e,n)=>{c.Se.set(t.subarray(e,e+n),0),c.read=c.write=n},c.xe=()=>1==l?1:0}const m=13,k=[0,0,255,255];function v(){const n=this;function r(e){return e&&e.Ve?(e.se=e.oe=0,e.re=null,e.Ve.mode=7,e.Ve.Pe.reset(e,null),0):t}n.mode=0,n.method=0,n.Be=[0],n.De=0,n.marker=0,n.Ee=0,n.Me=t=>(n.Pe&&n.Pe.Ce(t),n.Pe=null,0),n.Re=(e,i)=>(e.re=null,n.Pe=null,8>i||i>15?(n.Me(e),t):(n.Ee=i,e.Ve.Pe=new b(e,1<<i),r(e),0)),n.Ue=(n,r)=>{let i,o;if(!n||!n.Ve||!n.he)return t;const f=n.Ve;for(r=4==r?s:0,i=s;;)switch(f.mode){case 0:if(0===n.te)return i;if(i=r,n.te--,n.se++,8!=(15&(f.method=n.ge(n.pe++)))){f.mode=m,n.re="unknown compression method",f.marker=5;break}if(8+(f.method>>4)>f.Ee){f.mode=m,n.re="invalid win size",f.marker=5;break}f.mode=1;case 1:if(0===n.te)return i;if(i=r,n.te--,n.se++,o=255&n.ge(n.pe++),((f.method<<8)+o)%31!=0){f.mode=m,n.re="incorrect header check",f.marker=5;break}if(0==(32&o)){f.mode=7;break}f.mode=2;case 2:if(0===n.te)return i;i=r,n.te--,n.se++,f.De=(255&n.ge(n.pe++))<<24&4278190080,f.mode=3;case 3:if(0===n.te)return i;i=r,n.te--,n.se++,f.De+=(255&n.ge(n.pe++))<<16&16711680,f.mode=4;case 4:if(0===n.te)return i;i=r,n.te--,n.se++,f.De+=(255&n.ge(n.pe++))<<8&65280,f.mode=5;case 5:return 0===n.te?i:(i=r,n.te--,n.se++,f.De+=255&n.ge(n.pe++),f.mode=6,2);case 6:return f.mode=m,n.re="need dictionary",f.marker=0,t;case 7:if(i=f.Pe.ze(n,i),i==e){f.mode=m,f.marker=0;break}if(0==i&&(i=r),1!=i)return i;i=r,f.Pe.reset(n,f.Be),f.mode=12;case 12:return n.te=0,1;case m:return e;default:return t}},n.Te=(e,n,r)=>{let i=0,s=r;if(!e||!e.Ve||6!=e.Ve.mode)return t;const o=e.Ve;return s<1<<o.Ee||(s=(1<<o.Ee)-1,i=r-s),o.Pe.Ae(n,i,s),o.mode=7,0},n.je=n=>{let i,o,f,c,a;if(!n||!n.Ve)return t;const l=n.Ve;if(l.mode!=m&&(l.mode=m,l.marker=0),0===(i=n.te))return s;for(o=n.pe,f=l.marker;0!==i&&4>f;)n.ge(o)==k[f]?f++:f=0!==n.ge(o)?0:4-f,o++,i--;return n.se+=o-n.pe,n.pe=o,n.te=i,l.marker=f,4!=f?e:(c=n.se,a=n.oe,r(n),n.se=c,n.oe=a,l.mode=7,0)},n.He=e=>e&&e.Ve&&e.Ve.Pe?e.Ve.Pe.xe():t}function g(){}return g.prototype={Re:function(t){const e=this;return e.Ve=new v,t||(t=15),e.Ve.Re(e,t)},Ue:function(e){const n=this;return n.Ve?n.Ve.Ue(n,e):t},Me:function(){const e=this;if(!e.Ve)return t;const n=e.Ve.Me(e);return e.Ve=null,n},je:function(){const e=this;return e.Ve?e.Ve.je(e):t},Te:function(e,n){const r=this;return r.Ve?r.Ve.Te(r,e,n):t},ge:function(t){return this.he[t]},ee:function(t,e){return this.he.subarray(t,t+e)}},function(t){const e=new g,o=t&&t.ot?n.floor(2*t.ot):131072,f=new i(o);let c=!1;e.Re(),e.we=f,this.append=(t,n)=>{const a=[];let l,u,w=0,h=0,d=0;if(0!==t.length){e.pe=0,e.he=t,e.te=t.length;do{if(e.ye=0,e.de=o,0!==e.te||c||(e.pe=0,c=!0),l=e.Ue(0),c&&l===s){if(0!==e.te)throw new r("inflating: bad input")}else if(0!==l&&1!==l)throw new r("inflating: "+e.re);if((c||1===l)&&e.te===t.length)throw new r("inflating: bad input");e.ye&&(e.ye===o?a.push(new i(f)):a.push(f.slice(0,e.ye))),d+=e.ye,n&&e.pe>0&&e.pe!=w&&(n(e.pe),w=e.pe)}while(e.te>0||0===e.de);return a.length>1?(u=new i(d),a.forEach((t=>{u.set(t,h),h+=t.length}))):u=a[0]||new i(0),u}},this.flush=()=>{e.Me()}}})();self.initCodec=()=>{self.Deflate=ot,self.Inflate=ft};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}});}};
7323
+ var e=e=>{if("function"==typeof URL.createObjectURL){const t=()=>URL.createObjectURL(new Blob(['const{Array:t,Object:e,Math:n,Error:r,Uint8Array:i,Uint16Array:s,Uint32Array:o,Int32Array:f,DataView:c,TextEncoder:l,crypto:u,postMessage:a,TransformStream:w,ReadableStream:h,WritableStream:d,CompressionStream:p,DecompressionStream:b}=globalThis,y=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;y[t]=e}class m{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,r=0|t.length;r>n;n++)e=e>>>8^y[255&(e^t[n])];this.t=e}get(){return~this.t}}class k extends w{constructor(){super({start(){this.i=new m},transform(t){this.i.append(t)},flush(t){const e=new i(4);new c(e.buffer).setUint32(0,this.i.get()),t.enqueue(e)}})}}const g={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=g.o(n);return 32===r?t.concat(e):g.l(e,r,0|n,t.slice(0,t.length-1))},u(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+g.o(n)},h(t,e){if(32*t.length<e)return t;const r=(t=t.slice(0,n.ceil(e/32))).length;return e&=31,r>0&&e&&(t[r-1]=g.p(e,t[r-1]&2147483648>>e-1,1)),t},p:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>n.round(t/1099511627776)||32,l(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let i=0;i<t.length;i++)r.push(n|t[i]>>>e),n=t[i]<<32-e;const i=t.length?t[t.length-1]:0,s=g.o(i);return r.push(g.p(e+s&31,e+s>32?n:r.pop(),1)),r}},v={m:{k(t){const e=g.u(t)/8,n=new i(e);let r;for(let i=0;e>i;i++)0==(3&i)&&(r=t[i/4]),n[i]=r>>>24,r<<=8;return n},g(t){const e=[];let n,r=0;for(n=0;n<t.length;n++)r=r<<8|t[n],3==(3&n)&&(e.push(r),r=0);return 3&n&&e.push(g.p(8*(3&n),r)),e}}},S={v:function(t){t?(this.S=t.S.slice(0),this._=t._.slice(0),this.C=t.C):this.reset()}};S.v.prototype={blockSize:512,reset:function(){const t=this;return t.S=this.A.slice(0),t._=[],t.C=0,t},update:function(t){const e=this;"string"==typeof t&&(t=v.I.g(t));const n=e._=g.concat(e._,t),i=e.C,s=e.C=i+g.u(t);if(s>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const f=new o(n);let c=0;for(let t=e.blockSize+i-(e.blockSize+i&e.blockSize-1);s>=t;t+=e.blockSize)e.V(f.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),e},P:function(){const t=this;let e=t._;const r=t.S;e=g.concat(e,[g.p(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(n.floor(t.C/4294967296)),e.push(0|t.C);e.length;)t.V(e.splice(0,16));return t.reset(),r},A:[1732584193,4023233417,2562383102,271733878,3285377520],B:[1518500249,1859775393,2400959708,3395469782],D:(t,e,n,r)=>t>19?t>39?t>59?t>79?void 0:e^n^r:e&n|e&r|n&r:e^n^r:e&n|~e&r,M:(t,e)=>e<<t|e>>>32-t,V:function(e){const r=this,i=r.S,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let o=i[0],f=i[1],c=i[2],l=i[3],u=i[4];for(let t=0;79>=t;t++){16>t||(s[t]=r.M(1,s[t-3]^s[t-8]^s[t-14]^s[t-16]));const e=r.M(5,o)+r.D(t,f,c,l)+u+s[t]+r.B[n.floor(t/20)]|0;u=l,l=c,c=r.M(30,f),f=o,o=e}i[0]=i[0]+o|0,i[1]=i[1]+f|0,i[2]=i[2]+c|0,i[3]=i[3]+l|0,i[4]=i[4]+u|0}};const _={getRandomValues(t){const e=new o(t.buffer),r=t=>{let e=987654321;const r=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&r,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r)/4294967296+.5)*(n.random()>.5?1:-1))};for(let i,s=0;s<t.length;s+=4){const t=r(4294967296*(i||n.random()));i=987654071*t(),e[s/4]=4294967296*t()|0}return t}},z={importKey:t=>new z.R(v.m.g(t)),U(t,e,n,i){if(n=n||1e4,0>i||0>n)throw new r("invalid params to pbkdf2");const s=1+(i>>5)<<2;let o,f,l,u,a;const w=new ArrayBuffer(s),h=new c(w);let d=0;const p=g;for(e=v.m.g(e),a=1;(s||1)>d;a++){for(o=f=t.encrypt(p.concat(e,[a])),l=1;n>l;l++)for(f=t.encrypt(f),u=0;u<f.length;u++)o[u]^=f[u];for(l=0;(s||1)>d&&l<o.length;l++)h.setInt32(d,o[l]),d+=4}return w.slice(0,i/8)},R:class{constructor(t){const e=this,n=e.T=S.v,r=[[],[]],i=n.prototype.blockSize/32;e.W=[new n,new n],t.length>i&&(t=n.hash(t));for(let e=0;i>e;e++)r[0][e]=909522486^t[e],r[1][e]=1549556828^t[e];e.W[0].update(r[0]),e.W[1].update(r[1]),e.j=new n(e.W[0])}reset(){const t=this;t.j=new t.T(t.W[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.P(),n=new t.T(t.W[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},C={name:"PBKDF2"},x=e.assign({hash:{name:"HMAC"}},C),A=e.assign({iterations:1e3,hash:{name:"SHA-1"}},C),I=["deriveBits"],V=[8,12,16],P=[16,24,32],B=[0,0,0,0],D=void 0!==u,E=D&&void 0!==u.subtle,M=D&&"function"==typeof u.getRandomValues,R=D&&E&&"function"==typeof u.subtle.importKey,U=D&&E&&"function"==typeof u.subtle.deriveBits,T=v.m,W=class{constructor(t){const e=this;e.K=[[[],[],[],[],[]],[[],[],[],[],[]]],e.K[0][0][0]||e.L();const n=e.K[0][4],i=e.K[1],s=t.length;let o,f,c,l=1;if(4!==s&&6!==s&&8!==s)throw new r("invalid aes key size");for(e.B=[f=t.slice(0),c=[]],o=s;4*s+28>o;o++){let t=f[o-1];(o%s==0||8===s&&o%s==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%s==0&&(t=t<<8^t>>>24^l<<24,l=l<<1^283*(l>>7))),f[o]=f[o-s]^t}for(let t=0;o;t++,o--){const e=f[3&t?o:o-4];c[t]=4>=o||4>t?e:i[0][n[e>>>24]]^i[1][n[e>>16&255]]^i[2][n[e>>8&255]]^i[3][n[255&e]]}}encrypt(t){return this.F(t,0)}decrypt(t){return this.F(t,1)}L(){const t=this.K[0],e=this.K[1],n=t[4],r=e[4],i=[],s=[];let o,f,c,l;for(let t=0;256>t;t++)s[(i[t]=t<<1^283*(t>>7))^t]=t;for(let u=o=0;!n[u];u^=f||1,o=s[o]||1){let s=o^o<<1^o<<2^o<<3^o<<4;s=s>>8^255&s^99,n[u]=s,r[s]=u,l=i[c=i[f=i[u]]];let a=16843009*l^65537*c^257*f^16843008*u,w=257*i[s]^16843008*s;for(let n=0;4>n;n++)t[n][u]=w=w<<24^w>>>8,e[n][s]=a=a<<24^a>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}F(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.B[e],i=n.length/4-2,s=[0,0,0,0],o=this.K[e],f=o[0],c=o[1],l=o[2],u=o[3],a=o[4];let w,h,d,p=t[0]^n[0],b=t[e?3:1]^n[1],y=t[2]^n[2],m=t[e?1:3]^n[3],k=4;for(let t=0;i>t;t++)w=f[p>>>24]^c[b>>16&255]^l[y>>8&255]^u[255&m]^n[k],h=f[b>>>24]^c[y>>16&255]^l[m>>8&255]^u[255&p]^n[k+1],d=f[y>>>24]^c[m>>16&255]^l[p>>8&255]^u[255&b]^n[k+2],m=f[m>>>24]^c[p>>16&255]^l[b>>8&255]^u[255&y]^n[k+3],k+=4,p=w,b=h,y=d;for(let t=0;4>t;t++)s[e?3&-t:t]=a[p>>>24]<<24^a[b>>16&255]<<16^a[y>>8&255]<<8^a[255&m]^n[k++],w=p,p=b,b=y,y=m,m=w;return s}},j=class{constructor(t,e){this.O=t,this.q=e,this.G=e}reset(){this.G=this.q}update(t){return this.J(this.O,t,this.G)}N(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}X(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}J(t,e,n){let r;if(!(r=e.length))return[];const i=g.u(e);for(let i=0;r>i;i+=4){this.X(n);const r=t.encrypt(n);e[i]^=r[0],e[i+1]^=r[1],e[i+2]^=r[2],e[i+3]^=r[3]}return g.h(e,i)}},H=z.R;class K extends w{constructor(n,s,o){let f;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,signed:s,Z:o-1,pending:new i(0)})},async transform(e,n){const s=this;if(s.password){const n=s.password;s.password=null;const i=G(e,0,V[s.Z]+2);await(async(t,e,n)=>{await O(t,n,G(e,0,V[t.Z]));const i=G(e,V[t.Z]),s=t.keys.passwordVerification;if(s[0]!=i[0]||s[1]!=i[1])throw new r("Invalid pasword")})(s,i,n),s.$=new j(new W(s.keys.key),t.from(B)),s.tt=new H(s.keys.et),e=G(e,V[s.Z]+2),s.Y()}else await s.ready;const o=new i(e.length-10-(e.length-10)%16);n.enqueue(F(s,e,o,0,10,!0))},async flush(t){const e=this;await e.ready;const n=e.pending,r=G(n,0,n.length-10),s=G(n,n.length-10);let o=new i(0);if(r.length){const t=N(T,r);e.tt.update(t);const n=e.$.update(t);o=J(T,n)}if(f.valid=!0,e.signed){const t=G(J(T,e.tt.digest()),0,10);for(let e=0;10>e;e++)t[e]!=s[e]&&(f.valid=!1)}t.enqueue(o)}}),f=this}}class L extends w{constructor(n,r){let s;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,Z:r-1,pending:new i(0)})},async transform(e,n){const r=this;let s=new i(0);if(r.password){const e=r.password;r.password=null,s=await(async(t,e)=>{const n=(r=new i(V[t.Z]),M?u.getRandomValues(r):_.getRandomValues(r));var r;return await O(t,e,n),q(n,t.keys.passwordVerification)})(r,e),r.$=new j(new W(r.keys.key),t.from(B)),r.tt=new H(r.keys.et),r.Y()}else await r.ready;const o=new i(s.length+e.length-e.length%16);o.set(s,0),n.enqueue(F(r,e,o,s.length,0))},async flush(t){const e=this;await e.ready;let n=new i(0);if(e.pending.length){const t=e.$.update(N(T,e.pending));e.tt.update(t),n=J(T,t)}s.signature=J(T,e.tt.digest()).slice(0,10),t.enqueue(q(n,s.signature))}}),s=this}}function F(t,e,n,r,s,o){const f=e.length-s;let c;for(t.pending.length&&(e=q(t.pending,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new i(e)).set(n,0)}return t})(n,f-f%16)),c=0;f-16>=c;c+=16){const i=N(T,G(e,c,c+16));o&&t.tt.update(i);const s=t.$.update(i);o||t.tt.update(s),n.set(J(T,s),c+r)}return t.pending=G(e,c),n}async function O(t,n,r){const s=(t=>{if(void 0===l){const e=new i((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new l).encode(t)})(n),o=await((t,e,n,r,i)=>R?u.subtle.importKey("raw",e,n,!1,i):z.importKey(e))(0,s,x,0,I),f=await(async(t,e,n)=>U?await u.subtle.deriveBits(t,e,n):z.U(e,t.salt,A.iterations,n))(e.assign({salt:r},A),o,8*(2*P[t.Z]+2)),c=new i(f);t.keys={key:N(T,G(c,0,P[t.Z])),et:N(T,G(c,P[t.Z],2*P[t.Z])),passwordVerification:G(c,2*P[t.Z])}}function q(t,e){let n=t;return t.length+e.length&&(n=new i(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function G(t,e,n){return t.subarray(e,n)}function J(t,e){return t.k(e)}function N(t,e){return t.g(e)}class Q extends w{constructor(t,n){let i;super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){const n=this;if(n.password){const e=Y(n,t.subarray(0,12));if(n.password=null,e[11]!=n.passwordVerification)throw new r("Invalid pasword");t=t.subarray(12)}e.enqueue(Y(n,t))},flush(){i.valid=!0}}),i=this}}class X extends w{constructor(t,n){super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){const n=this;let r,s;if(n.password){n.password=null;const e=u.getRandomValues(new i(12));e[11]=n.passwordVerification,r=new i(t.length+e.length),r.set(Z(n,e),0),s=12}else r=new i(t.length),s=0;r.set(Z(n,t),s),e.enqueue(r)},flush(){}})}}function Y(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,n[r]);return n}function Z(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,e[r]);return n}function $(t,e){t.keys=[305419896,591751049,878082192],t.nt=new m(t.keys[0]),t.rt=new m(t.keys[2]);for(let n=0;n<e.length;n++)tt(t,e.charCodeAt(n))}function tt(t,e){t.nt.append([e]),t.keys[0]=~t.nt.get(),t.keys[1]=rt(t.keys[1]+nt(t.keys[0])),t.keys[1]=rt(n.imul(t.keys[1],134775813)+1),t.rt.append([t.keys[1]>>>24]),t.keys[2]=~t.rt.get()}function et(t){const e=2|t.keys[2];return nt(n.imul(e,1^e)>>>8)}function nt(t){return 255&t}function rt(t){return 4294967295&t}class it extends w{constructor(t,e){let n;super({start(){n=new t(e)},transform(t,e){t=n.append(t),e.enqueue(t)},flush(t){const e=n.flush();e&&t.enqueue(e)}})}}const st=void 0===p,ot=void 0===b;let ft=!0,ct=!0;class lt extends w{constructor(t,e,{it:n},...r){super({},...r);const{compressed:i,st:s,password:o,passwordVerification:f,encryptionStrength:l,zipCrypto:u,signed:a}=e,w=this;let h,d,b=wt(super.readable);const y=!!o;if(y&&!u||!a||([b,h]=b.tee(),h=h.pipeThrough(new k)),i)if(void 0!==s&&!s||st&&!ct)b=at(t,b,n);else try{const t=new p("deflate-raw");b=b.pipeThrough(t)}catch(e){ct=!1,b=at(t,b,n)}y&&(u?b=b.pipeThrough(new X(o,f)):(d=new L(o,l),b=b.pipeThrough(d))),ht(w,b,(async()=>{let t;y&&!u&&(t=d.signature),y&&!u||!a||(t=await h.getReader().read(),t=new c(t.value.buffer).getUint32(0)),w.signature=t}))}}class ut extends w{constructor(t,e,{it:n},...i){super({},...i);const{zipCrypto:s,password:o,passwordVerification:f,signed:l,encryptionStrength:u,compressed:a,st:w}=e;let h,d,p=wt(super.readable);const y=!!o;if(y&&(s?p=p.pipeThrough(new Q(o,f)):(d=new K(o,l,u),p=p.pipeThrough(d))),a)if(void 0!==w&&!w||ot&&!ft)p=at(t,p,n);else try{p=p.pipeThrough(new b("deflate-raw"))}catch(e){ft=!1,p=at(t,p,n)}y&&!s||!l||([p,h]=p.tee(),h=h.pipeThrough(new k)),ht(this,p,(async()=>{if(y&&!s&&!d.valid)throw new r("Invalid signature");if((!y||s)&&l){const t=await h.getReader().read();if(t!=new c(t.value.buffer).getUint32(0,!1))throw new r("Invalid signature")}}))}}function at(t,e,n){return e.pipeThrough(new it(t,{it:n}))}function wt(t){return t.pipeThrough(new w({transform(t,e){t&&t.length&&e.enqueue(t)}}))}function ht(t,n,r){t.length=0,n=n.pipeThrough(new w({transform(e,n){e&&e.length&&(t.length+=e.length,n.enqueue(e))},flush:r})),e.defineProperty(t,"readable",{get:()=>n})}const dt=new Map;let pt,bt=0;function yt(t){if(t.data){const e=t.data;if(e&&e.length)try{t.data=e.buffer,a(t,[t.data])}catch(e){a(t)}else a(t)}else a(t)}addEventListener("message",(async t=>{const e=t.data,n=e.type;try{if("start"==n&&(async t=>{try{t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate);const r=new h({async pull(t){let e=new Promise(((t,e)=>dt.set(bt,{resolve:t,reject:e})));yt({type:"pull",messageId:bt}),bt++;const{value:n,done:r}=await e;t.enqueue(n),r&&t.close()}},{highWaterMark:1}),i=new d({write(t){yt({type:"data",data:t})}});pt=((t,e,n,r,i)=>{const s=new AbortController,{signal:o}=s;if(r.codecType.startsWith("deflate"))return{ot:()=>f(lt),abort:c};if(r.codecType.startsWith("inflate"))return{ot:()=>f(ut),abort:c};async function f(s){const f=new s(t,r,i);await e.pipeThrough(f,{signal:o}).pipeTo(n);const{length:c,signature:l}=f;return{length:c,signature:l}}function c(){s.abort()}})(n,r,i,e,t.config),yt({type:"close",result:await pt.ot()})}catch(t){a({error:{message:t.message,stack:t.stack}})}})(e),"data"==n){const{resolve:t}=dt.get(e.messageId);dt.delete(e.messageId),t({value:new i(e.data),done:e.done})}"abort"==n&&pt.abort()}catch(t){a({error:{message:t.message,stack:t.stack}})}}));const mt=(()=>{const e=-2;function o(e){return f(e.map((([e,n])=>new t(e).fill(n,0,e))))}function f(e){return e.reduce(((e,n)=>e.concat(t.isArray(n)?f(n):n)),[])}const c=[0,1,2,3].concat(...o([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function l(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.ft=r=>{const i=t.ct,s=t.ut.lt,o=t.ut.wt;let f,c,l,u=-1;for(r.ht=0,r.dt=573,f=0;o>f;f++)0!==i[2*f]?(r.bt[++r.ht]=u=f,r.yt[f]=0):i[2*f+1]=0;for(;2>r.ht;)l=r.bt[++r.ht]=2>u?++u:0,i[2*l]=1,r.yt[l]=0,r.kt--,s&&(r.gt-=s[2*l+1]);for(t.vt=u,f=n.floor(r.ht/2);f>=1;f--)r.St(i,f);l=o;do{f=r.bt[1],r.bt[1]=r.bt[r.ht--],r.St(i,1),c=r.bt[1],r.bt[--r.dt]=f,r.bt[--r.dt]=c,i[2*l]=i[2*f]+i[2*c],r.yt[l]=n.max(r.yt[f],r.yt[c])+1,i[2*f+1]=i[2*c+1]=l,r.bt[1]=l++,r.St(i,1)}while(r.ht>=2);r.bt[--r.dt]=r.bt[1],(e=>{const n=t.ct,r=t.ut.lt,i=t.ut._t,s=t.ut.zt,o=t.ut.Ct;let f,c,l,u,a,w,h=0;for(u=0;15>=u;u++)e.xt[u]=0;for(n[2*e.bt[e.dt]+1]=0,f=e.dt+1;573>f;f++)c=e.bt[f],u=n[2*n[2*c+1]+1]+1,u>o&&(u=o,h++),n[2*c+1]=u,c>t.vt||(e.xt[u]++,a=0,s>c||(a=i[c-s]),w=n[2*c],e.kt+=w*(u+a),r&&(e.gt+=w*(r[2*c+1]+a)));if(0!==h){do{for(u=o-1;0===e.xt[u];)u--;e.xt[u]--,e.xt[u+1]+=2,e.xt[o]--,h-=2}while(h>0);for(u=o;0!==u;u--)for(c=e.xt[u];0!==c;)l=e.bt[--f],l>t.vt||(n[2*l+1]!=u&&(e.kt+=(u-n[2*l+1])*n[2*l],n[2*l+1]=u),c--)}})(r),((t,n,r)=>{const i=[];let s,o,f,c=0;for(s=1;15>=s;s++)i[s]=c=c+r[s-1]<<1;for(o=0;n>=o;o++)f=t[2*o+1],0!==f&&(t[2*o]=e(i[f]++,f))})(i,t.vt,r.xt)}}function u(t,e,n,r,i){const s=this;s.lt=t,s._t=e,s.zt=n,s.wt=r,s.Ct=i}l.At=[0,1,2,3,4,5,6,7].concat(...o([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),l.It=[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],l.Vt=[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],l.Pt=t=>256>t?c[t]:c[256+(t>>>7)],l.Bt=[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],l.Dt=[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],l.Et=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l.Mt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const a=o([[144,8],[112,9],[24,7],[8,8]]);u.Rt=f([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((t,e)=>[t,a[e]])));const w=o([[30,5]]);function h(t,e,n,r,i){const s=this;s.Ut=t,s.Tt=e,s.Wt=n,s.jt=r,s.Ht=i}u.Kt=f([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((t,e)=>[t,w[e]]))),u.Lt=new u(u.Rt,l.Bt,257,286,15),u.Ft=new u(u.Kt,l.Dt,0,30,15),u.Ot=new u(null,l.Et,0,19,7);const d=[new h(0,0,0,0,0),new h(4,4,8,4,1),new h(4,5,16,8,1),new h(4,6,32,32,1),new h(4,4,16,16,2),new h(8,16,32,32,2),new h(8,16,128,128,2),new h(8,32,128,256,2),new h(32,128,258,1024,2),new h(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],b=113,y=666,m=262;function k(t,e,n,r){const i=t[2*e],s=t[2*n];return s>i||i==s&&r[e]<=r[n]}function g(){const t=this;let r,o,f,c,a,w,h,g,v,S,_,z,C,x,A,I,V,P,B,D,E,M,R,U,T,W,j,H,K,L,F,O,q;const G=new l,J=new l,N=new l;let Q,X,Y,Z,$,tt;function et(){let e;for(e=0;286>e;e++)F[2*e]=0;for(e=0;30>e;e++)O[2*e]=0;for(e=0;19>e;e++)q[2*e]=0;F[512]=1,t.kt=t.gt=0,X=Y=0}function nt(t,e){let n,r=-1,i=t[1],s=0,o=7,f=4;0===i&&(o=138,f=3),t[2*(e+1)+1]=65535;for(let c=0;e>=c;c++)n=i,i=t[2*(c+1)+1],++s<o&&n==i||(f>s?q[2*n]+=s:0!==n?(n!=r&&q[2*n]++,q[32]++):s>10?q[36]++:q[34]++,s=0,r=n,0===i?(o=138,f=3):n==i?(o=6,f=3):(o=7,f=4))}function rt(e){t.qt[t.pending++]=e}function it(t){rt(255&t),rt(t>>>8&255)}function st(t,e){let n;const r=e;tt>16-r?(n=t,$|=n<<tt&65535,it($),$=n>>>16-tt,tt+=r-16):($|=t<<tt&65535,tt+=r)}function ot(t,e){const n=2*t;st(65535&e[n],65535&e[n+1])}function ft(t,e){let n,r,i=-1,s=t[1],o=0,f=7,c=4;for(0===s&&(f=138,c=3),n=0;e>=n;n++)if(r=s,s=t[2*(n+1)+1],++o>=f||r!=s){if(c>o)do{ot(r,q)}while(0!=--o);else 0!==r?(r!=i&&(ot(r,q),o--),ot(16,q),st(o-3,2)):o>10?(ot(18,q),st(o-11,7)):(ot(17,q),st(o-3,3));o=0,i=r,0===s?(f=138,c=3):r==s?(f=6,c=3):(f=7,c=4)}}function ct(){16==tt?(it($),$=0,tt=0):8>tt||(rt(255&$),$>>>=8,tt-=8)}function lt(e,r){let i,s,o;if(t.Gt[X]=e,t.Jt[X]=255&r,X++,0===e?F[2*r]++:(Y++,e--,F[2*(l.At[r]+256+1)]++,O[2*l.Pt(e)]++),0==(8191&X)&&j>2){for(i=8*X,s=E-V,o=0;30>o;o++)i+=O[2*o]*(5+l.Dt[o]);if(i>>>=3,Y<n.floor(X/2)&&i<n.floor(s/2))return!0}return X==Q-1}function ut(e,n){let r,i,s,o,f=0;if(0!==X)do{r=t.Gt[f],i=t.Jt[f],f++,0===r?ot(i,e):(s=l.At[i],ot(s+256+1,e),o=l.Bt[s],0!==o&&(i-=l.It[s],st(i,o)),r--,s=l.Pt(r),ot(s,n),o=l.Dt[s],0!==o&&(r-=l.Vt[s],st(r,o)))}while(X>f);ot(256,e),Z=e[513]}function at(){tt>8?it($):tt>0&&rt(255&$),$=0,tt=0}function wt(e,n,r){st(0+(r?1:0),3),((e,n)=>{at(),Z=8,it(n),it(~n),t.qt.set(g.subarray(e,e+n),t.pending),t.pending+=n})(e,n)}function ht(e){((e,n,r)=>{let i,s,o=0;j>0?(G.ft(t),J.ft(t),o=(()=>{let e;for(nt(F,G.vt),nt(O,J.vt),N.ft(t),e=18;e>=3&&0===q[2*l.Mt[e]+1];e--);return t.kt+=14+3*(e+1),e})(),i=t.kt+3+7>>>3,s=t.gt+3+7>>>3,s>i||(i=s)):i=s=n+5,n+4>i||-1==e?s==i?(st(2+(r?1:0),3),ut(u.Rt,u.Kt)):(st(4+(r?1:0),3),((t,e,n)=>{let r;for(st(t-257,5),st(e-1,5),st(n-4,4),r=0;n>r;r++)st(q[2*l.Mt[r]+1],3);ft(F,t-1),ft(O,e-1)})(G.vt+1,J.vt+1,o+1),ut(F,O)):wt(e,n,r),et(),r&&at()})(0>V?-1:V,E-V,e),V=E,r.Nt()}function dt(){let t,e,n,i;do{if(i=v-R-E,0===i&&0===E&&0===R)i=a;else if(-1==i)i--;else if(E>=a+a-m){g.set(g.subarray(a,a+a),0),M-=a,E-=a,V-=a,t=C,n=t;do{e=65535&_[--n],_[n]=a>e?0:e-a}while(0!=--t);t=a,n=t;do{e=65535&S[--n],S[n]=a>e?0:e-a}while(0!=--t);i+=a}if(0===r.Qt)return;t=r.Xt(g,E+R,i),R+=t,3>R||(z=255&g[E],z=(z<<I^255&g[E+1])&A)}while(m>R&&0!==r.Qt)}function pt(t){let e,n,r=T,i=E,s=U;const o=E>a-m?E-(a-m):0;let f=L;const c=h,l=E+258;let u=g[i+s-1],w=g[i+s];K>U||(r>>=2),f>R&&(f=R);do{if(e=t,g[e+s]==w&&g[e+s-1]==u&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2,e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&l>i);if(n=258-(l-i),i=l-258,n>s){if(M=t,s=n,n>=f)break;u=g[i+s-1],w=g[i+s]}}}while((t=65535&S[t&c])>o&&0!=--r);return s>R?R:s}t.yt=[],t.xt=[],t.bt=[],F=[],O=[],q=[],t.St=(e,n)=>{const r=t.bt,i=r[n];let s=n<<1;for(;s<=t.ht&&(s<t.ht&&k(e,r[s+1],r[s],t.yt)&&s++,!k(e,i,r[s],t.yt));)r[n]=r[s],n=s,s<<=1;r[n]=i},t.Yt=(r,l,p,y,m,k)=>(y||(y=8),m||(m=8),k||(k=0),r.Zt=null,-1==l&&(l=6),1>m||m>9||8!=y||9>p||p>15||0>l||l>9||0>k||k>2?e:(r.$t=t,w=p,a=1<<w,h=a-1,x=m+7,C=1<<x,A=C-1,I=n.floor((x+3-1)/3),g=new i(2*a),S=[],_=[],Q=1<<m+6,t.qt=new i(4*Q),f=4*Q,t.Gt=new s(Q),t.Jt=new i(Q),j=l,H=k,(e=>(e.te=e.ee=0,e.Zt=null,t.pending=0,t.ne=0,o=b,c=0,G.ct=F,G.ut=u.Lt,J.ct=O,J.ut=u.Ft,N.ct=q,N.ut=u.Ot,$=0,tt=0,Z=8,et(),(()=>{v=2*a,_[C-1]=0;for(let t=0;C-1>t;t++)_[t]=0;W=d[j].Tt,K=d[j].Ut,L=d[j].Wt,T=d[j].jt,E=0,V=0,R=0,P=U=2,D=0,z=0})(),0))(r))),t.re=()=>42!=o&&o!=b&&o!=y?e:(t.Jt=null,t.Gt=null,t.qt=null,_=null,S=null,g=null,t.$t=null,o==b?-3:0),t.ie=(t,n,r)=>{let i=0;return-1==n&&(n=6),0>n||n>9||0>r||r>2?e:(d[j].Ht!=d[n].Ht&&0!==t.te&&(i=t.se(1)),j!=n&&(j=n,W=d[j].Tt,K=d[j].Ut,L=d[j].Wt,T=d[j].jt),H=r,i)},t.oe=(t,n,r)=>{let i,s=r,f=0;if(!n||42!=o)return e;if(3>s)return 0;for(s>a-m&&(s=a-m,f=r-s),g.set(n.subarray(f,f+s),0),E=s,V=s,z=255&g[0],z=(z<<I^255&g[1])&A,i=0;s-3>=i;i++)z=(z<<I^255&g[i+2])&A,S[i&h]=_[z],_[z]=i;return 0},t.se=(n,i)=>{let s,l,k,v,x;if(i>4||0>i)return e;if(!n.fe||!n.ce&&0!==n.Qt||o==y&&4!=i)return n.Zt=p[4],e;if(0===n.le)return n.Zt=p[7],-5;var T;if(r=n,v=c,c=i,42==o&&(l=8+(w-8<<4)<<8,k=(j-1&255)>>1,k>3&&(k=3),l|=k<<6,0!==E&&(l|=32),l+=31-l%31,o=b,rt((T=l)>>8&255),rt(255&T)),0!==t.pending){if(r.Nt(),0===r.le)return c=-1,0}else if(0===r.Qt&&v>=i&&4!=i)return r.Zt=p[7],-5;if(o==y&&0!==r.Qt)return n.Zt=p[7],-5;if(0!==r.Qt||0!==R||0!=i&&o!=y){switch(x=-1,d[j].Ht){case 0:x=(t=>{let e,n=65535;for(n>f-5&&(n=f-5);;){if(1>=R){if(dt(),0===R&&0==t)return 0;if(0===R)break}if(E+=R,R=0,e=V+n,(0===E||E>=e)&&(R=E-e,E=e,ht(!1),0===r.le))return 0;if(E-V>=a-m&&(ht(!1),0===r.le))return 0}return ht(4==t),0===r.le?4==t?2:0:4==t?3:1})(i);break;case 1:x=(t=>{let e,n=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(z=(z<<I^255&g[E+2])&A,n=65535&_[z],S[E&h]=_[z],_[z]=E),0===n||(E-n&65535)>a-m||2!=H&&(P=pt(n)),3>P)e=lt(0,255&g[E]),R--,E++;else if(e=lt(E-M,P-3),R-=P,P>W||3>R)E+=P,P=0,z=255&g[E],z=(z<<I^255&g[E+1])&A;else{P--;do{E++,z=(z<<I^255&g[E+2])&A,n=65535&_[z],S[E&h]=_[z],_[z]=E}while(0!=--P);E++}if(e&&(ht(!1),0===r.le))return 0}return ht(4==t),0===r.le?4==t?2:0:4==t?3:1})(i);break;case 2:x=(t=>{let e,n,i=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(z=(z<<I^255&g[E+2])&A,i=65535&_[z],S[E&h]=_[z],_[z]=E),U=P,B=M,P=2,0!==i&&W>U&&a-m>=(E-i&65535)&&(2!=H&&(P=pt(i)),5>=P&&(1==H||3==P&&E-M>4096)&&(P=2)),3>U||P>U)if(0!==D){if(e=lt(0,255&g[E-1]),e&&ht(!1),E++,R--,0===r.le)return 0}else D=1,E++,R--;else{n=E+R-3,e=lt(E-1-B,U-3),R-=U-1,U-=2;do{++E>n||(z=(z<<I^255&g[E+2])&A,i=65535&_[z],S[E&h]=_[z],_[z]=E)}while(0!=--U);if(D=0,P=2,E++,e&&(ht(!1),0===r.le))return 0}}return 0!==D&&(e=lt(0,255&g[E-1]),D=0),ht(4==t),0===r.le?4==t?2:0:4==t?3:1})(i)}if(2!=x&&3!=x||(o=y),0==x||2==x)return 0===r.le&&(c=-1),0;if(1==x){if(1==i)st(2,3),ot(256,u.Rt),ct(),9>1+Z+10-tt&&(st(2,3),ot(256,u.Rt),ct()),Z=7;else if(wt(0,0,!1),3==i)for(s=0;C>s;s++)_[s]=0;if(r.Nt(),0===r.le)return c=-1,0}}return 4!=i?0:1}}function v(){const t=this;t.ue=0,t.ae=0,t.Qt=0,t.te=0,t.le=0,t.ee=0}return v.prototype={Yt:function(t,e){const n=this;return n.$t=new g,e||(e=15),n.$t.Yt(n,t,e)},se:function(t){const n=this;return n.$t?n.$t.se(n,t):e},re:function(){const t=this;if(!t.$t)return e;const n=t.$t.re();return t.$t=null,n},ie:function(t,n){const r=this;return r.$t?r.$t.ie(r,t,n):e},oe:function(t,n){const r=this;return r.$t?r.$t.oe(r,t,n):e},Xt:function(t,e,n){const r=this;let i=r.Qt;return i>n&&(i=n),0===i?0:(r.Qt-=i,t.set(r.ce.subarray(r.ue,r.ue+i),e),r.ue+=i,r.te+=i,i)},Nt:function(){const t=this;let e=t.$t.pending;e>t.le&&(e=t.le),0!==e&&(t.fe.set(t.$t.qt.subarray(t.$t.ne,t.$t.ne+e),t.ae),t.ae+=e,t.$t.ne+=e,t.ee+=e,t.le-=e,t.$t.pending-=e,0===t.$t.pending&&(t.$t.ne=0))}},function(t){const e=new v,s=(o=t&&t.it?t.it:65536)+5*(n.floor(o/16383)+1);var o;const f=new i(s);let c=t?t.level:-1;void 0===c&&(c=-1),e.Yt(c),e.fe=f,this.append=(t,n)=>{let o,c,l=0,u=0,a=0;const w=[];if(t.length){e.ue=0,e.ce=t,e.Qt=t.length;do{if(e.ae=0,e.le=s,o=e.se(0),0!=o)throw new r("deflating: "+e.Zt);e.ae&&(e.ae==s?w.push(new i(f)):w.push(f.slice(0,e.ae))),a+=e.ae,n&&e.ue>0&&e.ue!=l&&(n(e.ue),l=e.ue)}while(e.Qt>0||0===e.le);return w.length>1?(c=new i(a),w.forEach((t=>{c.set(t,u),u+=t.length}))):c=w[0]||new i(0),c}},this.flush=()=>{let t,n,o=0,c=0;const l=[];do{if(e.ae=0,e.le=s,t=e.se(4),1!=t&&0!=t)throw new r("deflating: "+e.Zt);s-e.le>0&&l.push(f.slice(0,e.ae)),c+=e.ae}while(e.Qt>0||0===e.le);return e.re(),n=new i(c),l.forEach((t=>{n.set(t,o),o+=t.length})),n}}})(),kt=(()=>{const t=-2,e=-3,s=-5,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],l=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],u=[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,0,0],a=[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,112,112],w=[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],h=[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];function d(){let t,n,r,i,o,c;function l(t,n,f,l,u,a,w,h,d,p,b){let y,m,k,g,v,S,_,z,C,x,A,I,V,P,B;x=0,v=f;do{r[t[n+x]]++,x++,v--}while(0!==v);if(r[0]==f)return w[0]=-1,h[0]=0,0;for(z=h[0],S=1;15>=S&&0===r[S];S++);for(_=S,S>z&&(z=S),v=15;0!==v&&0===r[v];v--);for(k=v,z>v&&(z=v),h[0]=z,P=1<<S;v>S;S++,P<<=1)if(0>(P-=r[S]))return e;if(0>(P-=r[v]))return e;for(r[v]+=P,c[1]=S=0,x=1,V=2;0!=--v;)c[V]=S+=r[x],V++,x++;v=0,x=0;do{0!==(S=t[n+x])&&(b[c[S]++]=v),x++}while(++v<f);for(f=c[k],c[0]=v=0,x=0,g=-1,I=-z,o[0]=0,A=0,B=0;k>=_;_++)for(y=r[_];0!=y--;){for(;_>I+z;){if(g++,I+=z,B=k-I,B=B>z?z:B,(m=1<<(S=_-I))>y+1&&(m-=y+1,V=_,B>S))for(;++S<B&&(m<<=1)>r[++V];)m-=r[V];if(B=1<<S,p[0]+B>1440)return e;o[g]=A=p[0],p[0]+=B,0!==g?(c[g]=v,i[0]=S,i[1]=z,S=v>>>I-z,i[2]=A-o[g-1]-S,d.set(i,3*(o[g-1]+S))):w[0]=A}for(i[1]=_-I,f>x?b[x]<l?(i[0]=256>b[x]?0:96,i[2]=b[x++]):(i[0]=a[b[x]-l]+16+64,i[2]=u[b[x++]-l]):i[0]=192,m=1<<_-I,S=v>>>I;B>S;S+=m)d.set(i,3*(A+S));for(S=1<<_-1;0!=(v&S);S>>>=1)v^=S;for(v^=S,C=(1<<I)-1;(v&C)!=c[g];)g--,I-=z,C=(1<<I)-1}return 0!==P&&1!=k?s:0}function d(e){let s;for(t||(t=[],n=[],r=new f(16),i=[],o=new f(15),c=new f(16)),n.length<e&&(n=[]),s=0;e>s;s++)n[s]=0;for(s=0;16>s;s++)r[s]=0;for(s=0;3>s;s++)i[s]=0;o.set(r.subarray(0,15),0),c.set(r.subarray(0,16),0)}this.we=(r,i,o,f,c)=>{let u;return d(19),t[0]=0,u=l(r,0,19,19,null,null,o,i,f,t,n),u==e?c.Zt="oversubscribed dynamic bit lengths tree":u!=s&&0!==i[0]||(c.Zt="incomplete dynamic bit lengths tree",u=e),u},this.he=(r,i,o,f,c,p,b,y,m)=>{let k;return d(288),t[0]=0,k=l(o,0,r,257,u,a,p,f,y,t,n),0!=k||0===f[0]?(k==e?m.Zt="oversubscribed literal/length tree":-4!=k&&(m.Zt="incomplete literal/length tree",k=e),k):(d(288),k=l(o,r,i,0,w,h,b,c,y,t,n),0!=k||0===c[0]&&r>257?(k==e?m.Zt="oversubscribed distance tree":k==s?(m.Zt="incomplete distance tree",k=e):-4!=k&&(m.Zt="empty distance tree with lengths",k=e),k):0)}}function p(){const n=this;let r,i,s,f,c=0,l=0,u=0,a=0,w=0,h=0,d=0,p=0,b=0,y=0;function m(t,n,r,i,s,f,c,l){let u,a,w,h,d,p,b,y,m,k,g,v,S,_,z,C;b=l.ue,y=l.Qt,d=c.de,p=c.pe,m=c.write,k=m<c.read?c.read-m-1:c.end-m,g=o[t],v=o[n];do{for(;20>p;)y--,d|=(255&l.be(b++))<<p,p+=8;if(u=d&g,a=r,w=i,C=3*(w+u),0!==(h=a[C]))for(;;){if(d>>=a[C+1],p-=a[C+1],0!=(16&h)){for(h&=15,S=a[C+2]+(d&o[h]),d>>=h,p-=h;15>p;)y--,d|=(255&l.be(b++))<<p,p+=8;for(u=d&v,a=s,w=f,C=3*(w+u),h=a[C];;){if(d>>=a[C+1],p-=a[C+1],0!=(16&h)){for(h&=15;h>p;)y--,d|=(255&l.be(b++))<<p,p+=8;if(_=a[C+2]+(d&o[h]),d>>=h,p-=h,k-=S,_>m){z=m-_;do{z+=c.end}while(0>z);if(h=c.end-z,S>h){if(S-=h,m-z>0&&h>m-z)do{c.ye[m++]=c.ye[z++]}while(0!=--h);else c.ye.set(c.ye.subarray(z,z+h),m),m+=h,z+=h,h=0;z=0}}else z=m-_,m-z>0&&2>m-z?(c.ye[m++]=c.ye[z++],c.ye[m++]=c.ye[z++],S-=2):(c.ye.set(c.ye.subarray(z,z+2),m),m+=2,z+=2,S-=2);if(m-z>0&&S>m-z)do{c.ye[m++]=c.ye[z++]}while(0!=--S);else c.ye.set(c.ye.subarray(z,z+S),m),m+=S,z+=S,S=0;break}if(0!=(64&h))return l.Zt="invalid distance code",S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,e;u+=a[C+2],u+=d&o[h],C=3*(w+u),h=a[C]}break}if(0!=(64&h))return 0!=(32&h)?(S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,1):(l.Zt="invalid literal/length code",S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,e);if(u+=a[C+2],u+=d&o[h],C=3*(w+u),0===(h=a[C])){d>>=a[C+1],p-=a[C+1],c.ye[m++]=a[C+2],k--;break}}else d>>=a[C+1],p-=a[C+1],c.ye[m++]=a[C+2],k--}while(k>=258&&y>=10);return S=l.Qt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.de=d,c.pe=p,l.Qt=y,l.te+=b-l.ue,l.ue=b,c.write=m,0}n.init=(t,e,n,o,c,l)=>{r=0,d=t,p=e,s=n,b=o,f=c,y=l,i=null},n.me=(n,k,g)=>{let v,S,_,z,C,x,A,I=0,V=0,P=0;for(P=k.ue,z=k.Qt,I=n.de,V=n.pe,C=n.write,x=C<n.read?n.read-C-1:n.end-C;;)switch(r){case 0:if(x>=258&&z>=10&&(n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,g=m(d,p,s,b,f,y,n,k),P=k.ue,z=k.Qt,I=n.de,V=n.pe,C=n.write,x=C<n.read?n.read-C-1:n.end-C,0!=g)){r=1==g?7:9;break}u=d,i=s,l=b,r=1;case 1:for(v=u;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}if(S=3*(l+(I&o[v])),I>>>=i[S+1],V-=i[S+1],_=i[S],0===_){a=i[S+2],r=6;break}if(0!=(16&_)){w=15&_,c=i[S+2],r=2;break}if(0==(64&_)){u=_,l=S/3+i[S+2];break}if(0!=(32&_)){r=7;break}return r=9,k.Zt="invalid literal/length code",g=e,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);case 2:for(v=w;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}c+=I&o[v],I>>=v,V-=v,u=p,i=f,l=y,r=3;case 3:for(v=u;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}if(S=3*(l+(I&o[v])),I>>=i[S+1],V-=i[S+1],_=i[S],0!=(16&_)){w=15&_,h=i[S+2],r=4;break}if(0==(64&_)){u=_,l=S/3+i[S+2];break}return r=9,k.Zt="invalid distance code",g=e,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);case 4:for(v=w;v>V;){if(0===z)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,z--,I|=(255&k.be(P++))<<V,V+=8}h+=I&o[v],I>>=v,V-=v,r=5;case 5:for(A=C-h;0>A;)A+=n.end;for(;0!==c;){if(0===x&&(C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x&&(n.write=C,g=n.ke(k,g),C=n.write,x=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x)))return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);n.ye[C++]=n.ye[A++],x--,A==n.end&&(A=0),c--}r=0;break;case 6:if(0===x&&(C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x&&(n.write=C,g=n.ke(k,g),C=n.write,x=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,x=C<n.read?n.read-C-1:n.end-C),0===x)))return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);g=0,n.ye[C++]=a,x--,r=0;break;case 7:if(V>7&&(V-=8,z++,P--),n.write=C,g=n.ke(k,g),C=n.write,x=C<n.read?n.read-C-1:n.end-C,n.read!=n.write)return n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);r=8;case 8:return g=1,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);case 9:return g=e,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g);default:return g=t,n.de=I,n.pe=V,k.Qt=z,k.te+=P-k.ue,k.ue=P,n.write=C,n.ke(k,g)}},n.ge=()=>{}}d.ve=(t,e,n,r)=>(t[0]=9,e[0]=5,n[0]=c,r[0]=l,0);const b=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function y(n,r){const c=this;let l,u=0,a=0,w=0,h=0;const y=[0],m=[0],k=new p;let g=0,v=new f(4320);const S=new d;c.pe=0,c.de=0,c.ye=new i(r),c.end=r,c.read=0,c.write=0,c.reset=(t,e)=>{e&&(e[0]=0),6==u&&k.ge(t),u=0,c.pe=0,c.de=0,c.read=c.write=0},c.reset(n,null),c.ke=(t,e)=>{let n,r,i;return r=t.ae,i=c.read,n=(i>c.write?c.end:c.write)-i,n>t.le&&(n=t.le),0!==n&&e==s&&(e=0),t.le-=n,t.ee+=n,t.fe.set(c.ye.subarray(i,i+n),r),r+=n,i+=n,i==c.end&&(i=0,c.write==c.end&&(c.write=0),n=c.write-i,n>t.le&&(n=t.le),0!==n&&e==s&&(e=0),t.le-=n,t.ee+=n,t.fe.set(c.ye.subarray(i,i+n),r),r+=n,i+=n),t.ae=r,c.read=i,e},c.me=(n,r)=>{let i,s,f,p,_,z,C,x;for(p=n.ue,_=n.Qt,s=c.de,f=c.pe,z=c.write,C=z<c.read?c.read-z-1:c.end-z;;){let A,I,V,P,B,D,E,M;switch(u){case 0:for(;3>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}switch(i=7&s,g=1&i,i>>>1){case 0:s>>>=3,f-=3,i=7&f,s>>>=i,f-=i,u=1;break;case 1:A=[],I=[],V=[[]],P=[[]],d.ve(A,I,V,P),k.init(A[0],I[0],V[0],0,P[0],0),s>>>=3,f-=3,u=6;break;case 2:s>>>=3,f-=3,u=3;break;case 3:return s>>>=3,f-=3,u=9,n.Zt="invalid block type",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r)}break;case 1:for(;32>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if((~s>>>16&65535)!=(65535&s))return u=9,n.Zt="invalid stored block lengths",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);a=65535&s,s=f=0,u=0!==a?2:0!==g?7:0;break;case 2:if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);if(0===C&&(z==c.end&&0!==c.read&&(z=0,C=z<c.read?c.read-z-1:c.end-z),0===C&&(c.write=z,r=c.ke(n,r),z=c.write,C=z<c.read?c.read-z-1:c.end-z,z==c.end&&0!==c.read&&(z=0,C=z<c.read?c.read-z-1:c.end-z),0===C)))return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);if(r=0,i=a,i>_&&(i=_),i>C&&(i=C),c.ye.set(n.Xt(p,i),z),p+=i,_-=i,z+=i,C-=i,0!=(a-=i))break;u=0!==g?7:0;break;case 3:for(;14>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if(w=i=16383&s,(31&i)>29||(i>>5&31)>29)return u=9,n.Zt="too many length or distance symbols",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);if(i=258+(31&i)+(i>>5&31),!l||l.length<i)l=[];else for(x=0;i>x;x++)l[x]=0;s>>>=14,f-=14,h=0,u=4;case 4:for(;4+(w>>>10)>h;){for(;3>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}l[b[h++]]=7&s,s>>>=3,f-=3}for(;19>h;)l[b[h++]]=0;if(y[0]=7,i=S.we(l,y,m,v,n),0!=i)return(r=i)==e&&(l=null,u=9),c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);h=0,u=5;case 5:for(;i=w,258+(31&i)+(i>>5&31)>h;){let t,a;for(i=y[0];i>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if(i=v[3*(m[0]+(s&o[i]))+1],a=v[3*(m[0]+(s&o[i]))+2],16>a)s>>>=i,f-=i,l[h++]=a;else{for(x=18==a?7:a-14,t=18==a?11:3;i+x>f;){if(0===_)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);r=0,_--,s|=(255&n.be(p++))<<f,f+=8}if(s>>>=i,f-=i,t+=s&o[x],s>>>=x,f-=x,x=h,i=w,x+t>258+(31&i)+(i>>5&31)||16==a&&1>x)return l=null,u=9,n.Zt="invalid bit length repeat",r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);a=16==a?l[x-1]:0;do{l[x++]=a}while(0!=--t);h=x}}if(m[0]=-1,B=[],D=[],E=[],M=[],B[0]=9,D[0]=6,i=w,i=S.he(257+(31&i),1+(i>>5&31),l,B,D,E,M,v,n),0!=i)return i==e&&(l=null,u=9),r=i,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);k.init(B[0],D[0],v,E[0],v,M[0]),u=6;case 6:if(c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,1!=(r=k.me(c,n,r)))return c.ke(n,r);if(r=0,k.ge(n),p=n.ue,_=n.Qt,s=c.de,f=c.pe,z=c.write,C=z<c.read?c.read-z-1:c.end-z,0===g){u=0;break}u=7;case 7:if(c.write=z,r=c.ke(n,r),z=c.write,C=z<c.read?c.read-z-1:c.end-z,c.read!=c.write)return c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);u=8;case 8:return r=1,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);case 9:return r=e,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r);default:return r=t,c.de=s,c.pe=f,n.Qt=_,n.te+=p-n.ue,n.ue=p,c.write=z,c.ke(n,r)}}},c.ge=t=>{c.reset(t,null),c.ye=null,v=null},c.Se=(t,e,n)=>{c.ye.set(t.subarray(e,e+n),0),c.read=c.write=n},c._e=()=>1==u?1:0}const m=13,k=[0,0,255,255];function g(){const n=this;function r(e){return e&&e.ze?(e.te=e.ee=0,e.Zt=null,e.ze.mode=7,e.ze.Ce.reset(e,null),0):t}n.mode=0,n.method=0,n.xe=[0],n.Ae=0,n.marker=0,n.Ie=0,n.Ve=t=>(n.Ce&&n.Ce.ge(t),n.Ce=null,0),n.Pe=(e,i)=>(e.Zt=null,n.Ce=null,8>i||i>15?(n.Ve(e),t):(n.Ie=i,e.ze.Ce=new y(e,1<<i),r(e),0)),n.Be=(n,r)=>{let i,o;if(!n||!n.ze||!n.ce)return t;const f=n.ze;for(r=4==r?s:0,i=s;;)switch(f.mode){case 0:if(0===n.Qt)return i;if(i=r,n.Qt--,n.te++,8!=(15&(f.method=n.be(n.ue++)))){f.mode=m,n.Zt="unknown compression method",f.marker=5;break}if(8+(f.method>>4)>f.Ie){f.mode=m,n.Zt="invalid win size",f.marker=5;break}f.mode=1;case 1:if(0===n.Qt)return i;if(i=r,n.Qt--,n.te++,o=255&n.be(n.ue++),((f.method<<8)+o)%31!=0){f.mode=m,n.Zt="incorrect header check",f.marker=5;break}if(0==(32&o)){f.mode=7;break}f.mode=2;case 2:if(0===n.Qt)return i;i=r,n.Qt--,n.te++,f.Ae=(255&n.be(n.ue++))<<24&4278190080,f.mode=3;case 3:if(0===n.Qt)return i;i=r,n.Qt--,n.te++,f.Ae+=(255&n.be(n.ue++))<<16&16711680,f.mode=4;case 4:if(0===n.Qt)return i;i=r,n.Qt--,n.te++,f.Ae+=(255&n.be(n.ue++))<<8&65280,f.mode=5;case 5:return 0===n.Qt?i:(i=r,n.Qt--,n.te++,f.Ae+=255&n.be(n.ue++),f.mode=6,2);case 6:return f.mode=m,n.Zt="need dictionary",f.marker=0,t;case 7:if(i=f.Ce.me(n,i),i==e){f.mode=m,f.marker=0;break}if(0==i&&(i=r),1!=i)return i;i=r,f.Ce.reset(n,f.xe),f.mode=12;case 12:return n.Qt=0,1;case m:return e;default:return t}},n.De=(e,n,r)=>{let i=0,s=r;if(!e||!e.ze||6!=e.ze.mode)return t;const o=e.ze;return s<1<<o.Ie||(s=(1<<o.Ie)-1,i=r-s),o.Ce.Se(n,i,s),o.mode=7,0},n.Ee=n=>{let i,o,f,c,l;if(!n||!n.ze)return t;const u=n.ze;if(u.mode!=m&&(u.mode=m,u.marker=0),0===(i=n.Qt))return s;for(o=n.ue,f=u.marker;0!==i&&4>f;)n.be(o)==k[f]?f++:f=0!==n.be(o)?0:4-f,o++,i--;return n.te+=o-n.ue,n.ue=o,n.Qt=i,u.marker=f,4!=f?e:(c=n.te,l=n.ee,r(n),n.te=c,n.ee=l,u.mode=7,0)},n.Me=e=>e&&e.ze&&e.ze.Ce?e.ze.Ce._e():t}function v(){}return v.prototype={Pe:function(t){const e=this;return e.ze=new g,t||(t=15),e.ze.Pe(e,t)},Be:function(e){const n=this;return n.ze?n.ze.Be(n,e):t},Ve:function(){const e=this;if(!e.ze)return t;const n=e.ze.Ve(e);return e.ze=null,n},Ee:function(){const e=this;return e.ze?e.ze.Ee(e):t},De:function(e,n){const r=this;return r.ze?r.ze.De(r,e,n):t},be:function(t){return this.ce[t]},Xt:function(t,e){return this.ce.subarray(t,t+e)}},function(t){const e=new v,o=t&&t.it?n.floor(2*t.it):131072,f=new i(o);let c=!1;e.Pe(),e.fe=f,this.append=(t,n)=>{const l=[];let u,a,w=0,h=0,d=0;if(0!==t.length){e.ue=0,e.ce=t,e.Qt=t.length;do{if(e.ae=0,e.le=o,0!==e.Qt||c||(e.ue=0,c=!0),u=e.Be(0),c&&u===s){if(0!==e.Qt)throw new r("inflating: bad input")}else if(0!==u&&1!==u)throw new r("inflating: "+e.Zt);if((c||1===u)&&e.Qt===t.length)throw new r("inflating: bad input");e.ae&&(e.ae===o?l.push(new i(f)):l.push(f.slice(0,e.ae))),d+=e.ae,n&&e.ue>0&&e.ue!=w&&(n(e.ue),w=e.ue)}while(e.Qt>0||0===e.le);return l.length>1?(a=new i(d),l.forEach((t=>{a.set(t,h),h+=t.length}))):a=l[0]||new i(0),a}},this.flush=()=>{e.Ve()}}})();self.initCodec=()=>{self.Deflate=mt,self.Inflate=kt};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}});}};
7277
7324
 
7278
7325
  /*
7279
7326
  Copyright (c) 2022 Gildas Lormeau. All rights reserved.
@@ -7381,7 +7428,7 @@
7381
7428
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7382
7429
  */
7383
7430
 
7384
- /* global Blob, FileReader, atob, btoa, XMLHttpRequest, document, fetch */
7431
+ /* global Blob, FileReader, atob, btoa, XMLHttpRequest, document, fetch, ReadableStream, WritableStream */
7385
7432
 
7386
7433
  const ERR_HTTP_STATUS = "HTTP error ";
7387
7434
  const ERR_HTTP_RANGE = "HTTP Range not supported";
@@ -7395,6 +7442,7 @@
7395
7442
  const HTTP_METHOD_HEAD = "HEAD";
7396
7443
  const HTTP_METHOD_GET = "GET";
7397
7444
  const HTTP_RANGE_UNIT = "bytes";
7445
+ const DEFAULT_CHUNK_SIZE = 64 * 1024;
7398
7446
 
7399
7447
  class Stream {
7400
7448
 
@@ -7408,9 +7456,39 @@
7408
7456
  }
7409
7457
 
7410
7458
  class Reader extends Stream {
7459
+
7460
+ getStream({ offset, size, chunkSize } = { offset: 0, chunkSize: DEFAULT_CHUNK_SIZE }) {
7461
+ const reader = this;
7462
+ return new ReadableStream({
7463
+ start() {
7464
+ this.chunkOffset = 0;
7465
+ },
7466
+ async pull(controller) {
7467
+ const { chunkOffset } = this;
7468
+ controller.enqueue(await reader.readUint8Array(offset + chunkOffset, Math.min(chunkSize, size() - chunkOffset)));
7469
+ if (chunkOffset + chunkSize > size()) {
7470
+ controller.close();
7471
+ } else {
7472
+ this.chunkOffset += chunkSize;
7473
+ }
7474
+ }
7475
+ });
7476
+ }
7477
+ }
7478
+
7479
+ class WriterStream extends Stream {
7480
+
7481
+ getStream() {
7482
+ const writer = this;
7483
+ return new WritableStream({
7484
+ write(chunk) {
7485
+ return writer.writeUint8Array(chunk);
7486
+ }
7487
+ });
7488
+ }
7411
7489
  }
7412
7490
 
7413
- class Writer extends Stream {
7491
+ class Writer extends WriterStream {
7414
7492
 
7415
7493
  writeUint8Array(array) {
7416
7494
  this.size += array.length;
@@ -7425,9 +7503,10 @@
7425
7503
  }
7426
7504
 
7427
7505
  init() {
7506
+ const reader = this;
7428
7507
  super.init();
7429
- this.blobReader.init();
7430
- this.size = this.blobReader.size;
7508
+ reader.blobReader.init();
7509
+ reader.size = reader.blobReader.size;
7431
7510
  }
7432
7511
 
7433
7512
  readUint8Array(offset, length) {
@@ -7449,14 +7528,15 @@
7449
7528
  }
7450
7529
 
7451
7530
  getData() {
7452
- if (this.blob.text) {
7453
- return this.blob.text();
7531
+ const writer = this;
7532
+ if (writer.blob.text) {
7533
+ return writer.blob.text();
7454
7534
  } else {
7455
7535
  const reader = new FileReader();
7456
7536
  return new Promise((resolve, reject) => {
7457
7537
  reader.onload = event => resolve(event.target.result);
7458
7538
  reader.onerror = () => reject(reader.error);
7459
- reader.readAsText(this.blob, this.encoding);
7539
+ reader.readAsText(writer.blob, writer.encoding);
7460
7540
  });
7461
7541
  }
7462
7542
  }
@@ -7466,19 +7546,21 @@
7466
7546
 
7467
7547
  constructor(dataURI) {
7468
7548
  super();
7469
- this.dataURI = dataURI;
7549
+ const reader = this;
7550
+ reader.dataURI = dataURI;
7470
7551
  let dataEnd = dataURI.length;
7471
7552
  while (dataURI.charAt(dataEnd - 1) == "=") {
7472
7553
  dataEnd--;
7473
7554
  }
7474
- this.dataStart = dataURI.indexOf(",") + 1;
7475
- this.size = Math.floor((dataEnd - this.dataStart) * 0.75);
7555
+ reader.dataStart = dataURI.indexOf(",") + 1;
7556
+ reader.size = Math.floor((dataEnd - reader.dataStart) * 0.75);
7476
7557
  }
7477
7558
 
7478
7559
  readUint8Array(offset, length) {
7479
7560
  const dataArray = new Uint8Array(length);
7480
7561
  const start = Math.floor(offset / 3) * 4;
7481
- const bytes = atob(this.dataURI.substring(start + this.dataStart, Math.ceil((offset + length) / 3) * 4 + this.dataStart));
7562
+ const dataStart = this.dataStart;
7563
+ const bytes = atob(this.dataURI.substring(start + dataStart, Math.ceil((offset + length) / 3) * 4 + dataStart));
7482
7564
  const delta = offset - Math.floor(start / 4) * 3;
7483
7565
  for (let indexByte = delta; indexByte < delta + length; indexByte++) {
7484
7566
  dataArray[indexByte - delta] = bytes.charCodeAt(indexByte);
@@ -7497,20 +7579,21 @@
7497
7579
 
7498
7580
  writeUint8Array(array) {
7499
7581
  super.writeUint8Array(array);
7582
+ const writer = this;
7500
7583
  let indexArray = 0;
7501
- let dataString = this.pending;
7502
- const delta = this.pending.length;
7503
- this.pending = "";
7584
+ let dataString = writer.pending;
7585
+ const delta = writer.pending.length;
7586
+ writer.pending = "";
7504
7587
  for (indexArray = 0; indexArray < (Math.floor((delta + array.length) / 3) * 3) - delta; indexArray++) {
7505
7588
  dataString += String.fromCharCode(array[indexArray]);
7506
7589
  }
7507
7590
  for (; indexArray < array.length; indexArray++) {
7508
- this.pending += String.fromCharCode(array[indexArray]);
7591
+ writer.pending += String.fromCharCode(array[indexArray]);
7509
7592
  }
7510
7593
  if (dataString.length > 2) {
7511
- this.data += btoa(dataString);
7594
+ writer.data += btoa(dataString);
7512
7595
  } else {
7513
- this.pending = dataString;
7596
+ writer.pending = dataString;
7514
7597
  }
7515
7598
  }
7516
7599
 
@@ -7528,14 +7611,15 @@
7528
7611
  }
7529
7612
 
7530
7613
  async readUint8Array(offset, length) {
7531
- if (this.blob.arrayBuffer) {
7532
- return new Uint8Array(await this.blob.slice(offset, offset + length).arrayBuffer());
7614
+ const reader = this;
7615
+ if (reader.blob.arrayBuffer) {
7616
+ return new Uint8Array(await reader.blob.slice(offset, offset + length).arrayBuffer());
7533
7617
  } else {
7534
7618
  const reader = new FileReader();
7535
7619
  return new Promise((resolve, reject) => {
7536
7620
  reader.onload = event => resolve(new Uint8Array(event.target.result));
7537
7621
  reader.onerror = () => reject(reader.error);
7538
- reader.readAsArrayBuffer(this.blob.slice(offset, offset + length));
7622
+ reader.readAsArrayBuffer(reader.blob.slice(offset, offset + length));
7539
7623
  });
7540
7624
  }
7541
7625
  }
@@ -7552,21 +7636,23 @@
7552
7636
 
7553
7637
  writeUint8Array(array) {
7554
7638
  super.writeUint8Array(array);
7555
- if (this.arrayBuffers.length == this.arrayBuffersMaxlength) {
7556
- flushArrayBuffers(this);
7639
+ const writer = this;
7640
+ if (writer.arrayBuffers.length == writer.arrayBuffersMaxlength) {
7641
+ flushArrayBuffers(writer);
7557
7642
  }
7558
- this.arrayBuffers.push(array.buffer);
7643
+ writer.arrayBuffers.push(array.buffer);
7559
7644
  }
7560
7645
 
7561
7646
  getData() {
7562
- if (!this.blob) {
7563
- if (this.arrayBuffers.length) {
7564
- flushArrayBuffers(this);
7647
+ const writer = this;
7648
+ if (!writer.blob) {
7649
+ if (writer.arrayBuffers.length) {
7650
+ flushArrayBuffers(writer);
7565
7651
  }
7566
- this.blob = this.pendingBlob;
7567
- initArrayBuffers(this);
7652
+ writer.blob = writer.pendingBlob;
7653
+ initArrayBuffers(writer);
7568
7654
  }
7569
- return this.blob;
7655
+ return writer.blob;
7570
7656
  }
7571
7657
  }
7572
7658
 
@@ -7584,78 +7670,38 @@
7584
7670
 
7585
7671
  constructor(readableStream) {
7586
7672
  this.readableStream = readableStream;
7587
- this.reader = readableStream.getReader();
7588
7673
  this.size = Infinity;
7589
- this.index = 0;
7590
- this.currentSize = 0;
7591
- this.pendingValue = new Uint8Array();
7592
7674
  }
7593
7675
 
7594
- init() {
7676
+ init(size) {
7677
+ this.size = size;
7595
7678
  this.initialized = true;
7596
7679
  }
7597
7680
 
7598
- async readUint8Array(index, length) {
7599
- if (this.index != index) {
7600
- throw new Error(ERR_NOT_SEEKABLE_READER);
7601
- }
7602
- let data = new Uint8Array(length);
7603
- let size = 0, done;
7604
- do {
7605
- const result = await this.reader.read();
7606
- let { value } = result;
7607
- done = result.done;
7608
- if (value) {
7609
- this.currentSize += value.length;
7610
- } else {
7611
- value = this.pendingValue;
7612
- this.pendingValue = new Uint8Array();
7613
- }
7614
- if (this.pendingValue.length) {
7615
- const newValue = new Uint8Array(this.pendingValue.length + value.length);
7616
- newValue.set(this.pendingValue);
7617
- newValue.set(value, this.pendingValue.length);
7618
- this.pendingValue = new Uint8Array();
7619
- value = newValue;
7620
- }
7621
- if (size + value.length > length) {
7622
- data.set(value.subarray(0, length), size);
7623
- this.pendingValue = value.subarray(length);
7624
- size += length;
7625
- } else {
7626
- data.set(value, size);
7627
- size += value.length;
7628
- }
7629
- } while (size < length && !done);
7630
- if (done && this.size == Infinity) {
7631
- this.size = this.currentSize;
7632
- }
7633
- if (this.size < length) {
7634
- data = data.slice(0, this.size);
7635
- length = this.size;
7636
- }
7637
- this.index += length;
7638
- return data;
7681
+ getStream() {
7682
+ return this.readableStream;
7639
7683
  }
7640
7684
  }
7641
7685
 
7642
7686
  class WritableStreamWriter extends Writer {
7643
7687
 
7644
- constructor(writableStream) {
7688
+ constructor(writable) {
7645
7689
  super();
7646
- this.writableStream = writableStream;
7647
- this.writer = writableStream.getWriter();
7690
+ const writer = this;
7691
+ writer.writable = writable;
7648
7692
  }
7649
7693
 
7650
7694
  async writeUint8Array(array) {
7651
7695
  await this.writer.ready;
7652
- return this.writer.write(array);
7696
+ return this.writable.getWriter().write(array);
7697
+ }
7698
+
7699
+ getStream() {
7700
+ return this.writable;
7653
7701
  }
7654
7702
 
7655
7703
  async getData() {
7656
- await this.writer.ready;
7657
- await this.writer.close();
7658
- return this.writableStream;
7704
+ return this.writable;
7659
7705
  }
7660
7706
  }
7661
7707
 
@@ -7663,15 +7709,16 @@
7663
7709
 
7664
7710
  constructor(url, options) {
7665
7711
  super();
7666
- this.url = url;
7667
- this.preventHeadRequest = options.preventHeadRequest;
7668
- this.useRangeHeader = options.useRangeHeader;
7669
- this.forceRangeRequests = options.forceRangeRequests;
7670
- this.options = Object.assign({}, options);
7671
- delete this.options.preventHeadRequest;
7672
- delete this.options.useRangeHeader;
7673
- delete this.options.forceRangeRequests;
7674
- delete this.options.useXHR;
7712
+ const reader = this;
7713
+ reader.url = url;
7714
+ reader.preventHeadRequest = options.preventHeadRequest;
7715
+ reader.useRangeHeader = options.useRangeHeader;
7716
+ reader.forceRangeRequests = options.forceRangeRequests;
7717
+ reader.options = Object.assign({}, options);
7718
+ delete reader.options.preventHeadRequest;
7719
+ delete reader.options.useRangeHeader;
7720
+ delete reader.options.forceRangeRequests;
7721
+ delete reader.options.useXHR;
7675
7722
  }
7676
7723
 
7677
7724
  async init() {
@@ -7688,11 +7735,12 @@
7688
7735
 
7689
7736
  constructor(url, options) {
7690
7737
  super();
7691
- this.url = url;
7692
- this.preventHeadRequest = options.preventHeadRequest;
7693
- this.useRangeHeader = options.useRangeHeader;
7694
- this.forceRangeRequests = options.forceRangeRequests;
7695
- this.options = options;
7738
+ const reader = this;
7739
+ reader.url = url;
7740
+ reader.preventHeadRequest = options.preventHeadRequest;
7741
+ reader.useRangeHeader = options.useRangeHeader;
7742
+ reader.forceRangeRequests = options.forceRangeRequests;
7743
+ reader.options = options;
7696
7744
  }
7697
7745
 
7698
7746
  async init() {
@@ -7895,10 +7943,11 @@
7895
7943
 
7896
7944
  writeUint8Array(array) {
7897
7945
  super.writeUint8Array(array);
7898
- const previousArray = this.array;
7899
- this.array = new Uint8Array(previousArray.length + array.length);
7900
- this.array.set(previousArray);
7901
- this.array.set(array, previousArray.length);
7946
+ const writer = this;
7947
+ const previousArray = writer.array;
7948
+ writer.array = new Uint8Array(previousArray.length + array.length);
7949
+ writer.array.set(previousArray);
7950
+ writer.array.set(array, previousArray.length);
7902
7951
  }
7903
7952
 
7904
7953
  getData() {
@@ -8067,89 +8116,6 @@
8067
8116
  }
8068
8117
  }
8069
8118
 
8070
- /*
8071
- Copyright (c) 2022 Gildas Lormeau. All rights reserved.
8072
-
8073
- Redistribution and use in source and binary forms, with or without
8074
- modification, are permitted provided that the following conditions are met:
8075
-
8076
- 1. Redistributions of source code must retain the above copyright notice,
8077
- this list of conditions and the following disclaimer.
8078
-
8079
- 2. Redistributions in binary form must reproduce the above copyright
8080
- notice, this list of conditions and the following disclaimer in
8081
- the documentation and/or other materials provided with the distribution.
8082
-
8083
- 3. The names of the authors may not be used to endorse or promote products
8084
- derived from this software without specific prior written permission.
8085
-
8086
- THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
8087
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
8088
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
8089
- INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
8090
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8091
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
8092
- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
8093
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
8094
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
8095
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8096
- */
8097
-
8098
- const MINIMUM_CHUNK_SIZE = 64;
8099
- const ERR_ABORT = "Abort error";
8100
-
8101
- async function processData(codec, reader, writer, offset, inputLengthGetter, config, options) {
8102
- const chunkSize = Math.max(config.chunkSize, MINIMUM_CHUNK_SIZE);
8103
- const signal = options.signal;
8104
- let length = 0;
8105
- let chunkOffset = 0;
8106
-
8107
- const result = new Promise((resolve, reject) => {
8108
- codec.pull = async () => {
8109
- testAborted(signal, codec);
8110
- const inputLength = inputLengthGetter();
8111
- let currentChunkOffset = chunkOffset;
8112
- chunkOffset += chunkSize;
8113
- const value = await reader.readUint8Array(currentChunkOffset + offset, Math.min(chunkSize, inputLength - currentChunkOffset));
8114
- const done = chunkOffset > inputLength;
8115
- return { value, done };
8116
- };
8117
- codec.ondata = async ({ value, done }) => {
8118
- try {
8119
- testAborted(signal, codec);
8120
- const inputLength = inputLengthGetter();
8121
- const { data, signature } = value;
8122
- if (data && data.length) {
8123
- length += data.length;
8124
- await writer.writeUint8Array(data);
8125
- }
8126
- if (options.onprogress) {
8127
- try {
8128
- options.onprogress(chunkOffset, inputLength);
8129
- } catch (error) {
8130
- // ignored
8131
- }
8132
- }
8133
- if (done) {
8134
- resolve({ signature, length });
8135
- }
8136
- } catch (error) {
8137
- reject(error);
8138
- }
8139
- };
8140
- codec.onerror = reject;
8141
- });
8142
- await codec.start();
8143
- return result;
8144
- }
8145
-
8146
- function testAborted(signal, codec) {
8147
- if (signal && signal.aborted) {
8148
- codec.abort();
8149
- throw new Error(ERR_ABORT);
8150
- }
8151
- }
8152
-
8153
8119
  /*
8154
8120
  Copyright (c) 2022 Gildas Lormeau. All rights reserved.
8155
8121
 
@@ -8435,7 +8401,15 @@
8435
8401
  throw new Error(ERR_ENCRYPTED);
8436
8402
  }
8437
8403
  }
8438
- const codec = await createCodec(config.Inflate, {
8404
+ const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;
8405
+ const size = () => compressedSize;
8406
+ const readable = reader.getStream({ offset: dataOffset, size, chunkSize: getChunkSize(config) });
8407
+ const writable = writer.getStream();
8408
+ const signal = getOptionValue$1(zipEntry, options, "signal");
8409
+ if (!writer.initialized) {
8410
+ await writer.init();
8411
+ }
8412
+ await runCodec(config.Inflate, readable, writable, {
8439
8413
  codecType: CODEC_INFLATE,
8440
8414
  password,
8441
8415
  zipCrypto,
@@ -8447,13 +8421,7 @@
8447
8421
  encrypted,
8448
8422
  useWebWorkers: getOptionValue$1(zipEntry, options, "useWebWorkers"),
8449
8423
  useCompressionStream: getOptionValue$1(zipEntry, options, "useCompressionStream")
8450
- }, config);
8451
- if (!writer.initialized) {
8452
- await writer.init();
8453
- }
8454
- const signal = getOptionValue$1(zipEntry, options, "signal");
8455
- const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;
8456
- await processData(codec, reader, writer, dataOffset, () => compressedSize, config, { onprogress: options.onprogress, signal });
8424
+ }, config, { signal, onprogress: options.onprogress, size });
8457
8425
  return writer.getData();
8458
8426
  }
8459
8427
  }
@@ -8869,9 +8837,6 @@
8869
8837
  }
8870
8838
  let maximumCompressedSize = 0;
8871
8839
  let keepOrder = getOptionValue(zipWriter, options, "keepOrder");
8872
- if (keepOrder === undefined) {
8873
- keepOrder = true;
8874
- }
8875
8840
  let uncompressedSize = 0;
8876
8841
  let msDosCompatible = getOptionValue(zipWriter, options, "msDosCompatible");
8877
8842
  if (msDosCompatible === undefined) {
@@ -8945,8 +8910,8 @@
8945
8910
  }
8946
8911
 
8947
8912
  async function getFileEntry(zipWriter, name, reader, options) {
8948
- const files = zipWriter.files;
8949
- const writer = zipWriter.writer;
8913
+ const { files, writer } = zipWriter;
8914
+ const streamWriter = writer.getStream().getWriter();
8950
8915
  const previousFileEntry = Array.from(files.values()).pop();
8951
8916
  let fileEntry = {};
8952
8917
  let bufferedWrite;
@@ -8972,7 +8937,7 @@
8972
8937
  }
8973
8938
  fileWriter = writer;
8974
8939
  }
8975
- fileEntry = await createFileEntry(reader, fileWriter, zipWriter.config, options);
8940
+ fileEntry = await createFileEntry(reader, fileWriter.getStream(), fileWriter.getStream().getWriter(), zipWriter.config, options);
8976
8941
  fileEntry.lock = lockCurrentFileEntry;
8977
8942
  files.set(name, fileEntry);
8978
8943
  fileEntry.filename = name;
@@ -9002,10 +8967,10 @@
9002
8967
  setUint32(arrayBufferView, 18, fileEntry.compressedSize);
9003
8968
  setUint32(arrayBufferView, 22, fileEntry.uncompressedSize);
9004
8969
  }
9005
- await writer.writeUint8Array(new Uint8Array(arrayBuffer));
8970
+ await writeUint8Array(streamWriter, new Uint8Array(arrayBuffer));
9006
8971
  indexWrittenData = headerLength;
9007
8972
  }
9008
- await writeBlob(writer, blob, indexWrittenData);
8973
+ await writeBlob(streamWriter, blob, indexWrittenData);
9009
8974
  delete fileEntry.writingBufferedData;
9010
8975
  }
9011
8976
  fileEntry.offset = zipWriter.offset;
@@ -9034,7 +8999,7 @@
9034
8999
  }
9035
9000
  }
9036
9001
 
9037
- async function createFileEntry(reader, writer, config, options) {
9002
+ async function createFileEntry(reader, writable, streamWriter, config, options) {
9038
9003
  const {
9039
9004
  rawFilename,
9040
9005
  lastAccessDate,
@@ -9181,7 +9146,11 @@
9181
9146
  let result;
9182
9147
  let compressedSize = 0;
9183
9148
  if (reader) {
9184
- const codec = await createCodec(config.Deflate, {
9149
+ await writeUint8Array(streamWriter, localHeaderArray);
9150
+ fileEntry.dataWritten = true;
9151
+ const size = () => reader.size;
9152
+ const readable = reader.getStream({ offset: 0, size, chunkSize: getChunkSize(config) });
9153
+ result = await runCodec(config.Deflate, readable, writable, {
9185
9154
  codecType: CODEC_DEFLATE,
9186
9155
  level,
9187
9156
  password,
@@ -9193,14 +9162,11 @@
9193
9162
  encrypted,
9194
9163
  useWebWorkers,
9195
9164
  useCompressionStream
9196
- }, config);
9197
- await writer.writeUint8Array(localHeaderArray);
9198
- fileEntry.dataWritten = true;
9199
- result = await processData(codec, reader, writer, 0, () => reader.size, config, { onprogress, signal });
9165
+ }, config, { signal, onprogress, size });
9200
9166
  uncompressedSize = fileEntry.uncompressedSize = reader.size;
9201
9167
  compressedSize = result.length;
9202
9168
  } else {
9203
- await writer.writeUint8Array(localHeaderArray);
9169
+ await writeUint8Array(streamWriter, localHeaderArray);
9204
9170
  fileEntry.dataWritten = true;
9205
9171
  }
9206
9172
  let dataDescriptorArray = new Uint8Array(0);
@@ -9244,7 +9210,7 @@
9244
9210
  }
9245
9211
  }
9246
9212
  if (dataDescriptor) {
9247
- await writer.writeUint8Array(dataDescriptorArray);
9213
+ await writeUint8Array(streamWriter, dataDescriptorArray);
9248
9214
  }
9249
9215
  const length = localHeaderArray.length + compressedSize + dataDescriptorArray.length;
9250
9216
  Object.assign(fileEntry, { compressedSize, lastModDate, rawLastModDate, creationDate, lastAccessDate, encrypted, length });
@@ -9252,8 +9218,8 @@
9252
9218
  }
9253
9219
 
9254
9220
  async function closeFile(zipWriter, comment, options) {
9255
- const writer = zipWriter.writer;
9256
- const files = zipWriter.files;
9221
+ const { files } = zipWriter;
9222
+ const streamWriter = zipWriter.writer.getStream().getWriter();
9257
9223
  let offset = 0;
9258
9224
  let directoryDataLength = 0;
9259
9225
  let directoryOffset = zipWriter.offset;
@@ -9368,9 +9334,9 @@
9368
9334
  setUint16(directoryView, offset + 10, filesLength);
9369
9335
  setUint32(directoryView, offset + 12, directoryDataLength);
9370
9336
  setUint32(directoryView, offset + 16, directoryOffset);
9371
- await writer.writeUint8Array(directoryArray);
9337
+ await writeUint8Array(streamWriter, directoryArray);
9372
9338
  if (comment && comment.length) {
9373
- await writer.writeUint8Array(comment);
9339
+ await writeUint8Array(streamWriter, comment);
9374
9340
  }
9375
9341
  }
9376
9342
 
@@ -9391,20 +9357,25 @@
9391
9357
  }
9392
9358
  }
9393
9359
 
9394
- async function writeBlob(writer, blob, start = 0) {
9360
+ async function writeBlob(streamWriter, blob, start = 0) {
9395
9361
  const blockSize = 512 * 1024 * 1024;
9396
9362
  await writeSlice();
9397
9363
 
9398
9364
  async function writeSlice() {
9399
9365
  if (start < blob.size) {
9400
9366
  const arrayBuffer = await sliceAsArrayBuffer(blob, start, start + blockSize);
9401
- await writer.writeUint8Array(new Uint8Array(arrayBuffer));
9367
+ await writeUint8Array(streamWriter, new Uint8Array(arrayBuffer));
9402
9368
  start += blockSize;
9403
9369
  await writeSlice();
9404
9370
  }
9405
9371
  }
9406
9372
  }
9407
9373
 
9374
+ async function writeUint8Array(streamWriter, array) {
9375
+ await streamWriter.ready;
9376
+ await streamWriter.write(array);
9377
+ }
9378
+
9408
9379
  function getTimeNTFS(date) {
9409
9380
  if (date) {
9410
9381
  return ((BigInt(date.getTime()) + BigInt(11644473600000)) * BigInt(10000));