@zip.js/zip.js 2.8.22 → 2.8.24
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.
- package/deno.json +1 -1
- package/dist/zip-core.js +38 -93
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +38 -93
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +38 -93
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +38 -93
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +38 -93
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +38 -93
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +38 -93
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +38 -93
- package/index-native.min.js +1 -1
- package/index.cjs +38 -93
- package/index.d.ts +1 -2
- package/index.min.js +1 -1
- package/lib/core/zip-writer.js +38 -93
- package/package.json +2 -2
package/dist/zip-fs-core.js
CHANGED
|
@@ -4293,7 +4293,7 @@
|
|
|
4293
4293
|
const ERR_INVALID_ENCRYPTION_STRENGTH = "The strength must equal 1, 2, or 3";
|
|
4294
4294
|
const ERR_INVALID_EXTRAFIELD_TYPE = "Extra field type exceeds 65535";
|
|
4295
4295
|
const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
|
|
4296
|
-
const ERR_UNSUPPORTED_FORMAT = "Zip64 is not supported (
|
|
4296
|
+
const ERR_UNSUPPORTED_FORMAT = "Zip64 is not supported (set the 'zip64' option to 'true')";
|
|
4297
4297
|
const ERR_UNDEFINED_UNCOMPRESSED_SIZE = "Undefined uncompressed size";
|
|
4298
4298
|
const ERR_ZIP_NOT_EMPTY = "Zip file not empty";
|
|
4299
4299
|
const ERR_INVALID_UID = "Invalid uid (must be integer 0..2^32-1)";
|
|
@@ -4682,14 +4682,11 @@
|
|
|
4682
4682
|
maximumCompressedSize = getMaximumCompressedSize(uncompressedSize);
|
|
4683
4683
|
}
|
|
4684
4684
|
}
|
|
4685
|
-
const { diskOffset, diskNumber
|
|
4685
|
+
const { diskOffset, diskNumber } = zipWriter.writer;
|
|
4686
4686
|
const zip64UncompressedSize = zip64Enabled || uncompressedSize > MAX_32_BITS;
|
|
4687
4687
|
const zip64CompressedSize = zip64Enabled || maximumCompressedSize > MAX_32_BITS;
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
const zip64DiskNumberStart = (supportZip64SplitFile && zip64Enabled) || diskNumber + Math.ceil(zipWriter.pendingEntriesSize / maxSize) > MAX_16_BITS;
|
|
4691
|
-
if (zip64Offset || zip64UncompressedSize || zip64CompressedSize || zip64DiskNumberStart) {
|
|
4692
|
-
if (zip64 === false || !keepOrder) {
|
|
4688
|
+
if (zip64UncompressedSize || zip64CompressedSize) {
|
|
4689
|
+
if (zip64 === false) {
|
|
4693
4690
|
throw new Error(ERR_UNSUPPORTED_FORMAT);
|
|
4694
4691
|
} else {
|
|
4695
4692
|
zip64 = true;
|
|
@@ -4709,8 +4706,6 @@
|
|
|
4709
4706
|
zip64,
|
|
4710
4707
|
zip64UncompressedSize,
|
|
4711
4708
|
zip64CompressedSize,
|
|
4712
|
-
zip64Offset,
|
|
4713
|
-
zip64DiskNumberStart,
|
|
4714
4709
|
password,
|
|
4715
4710
|
rawPassword,
|
|
4716
4711
|
level,
|
|
@@ -4838,7 +4833,6 @@
|
|
|
4838
4833
|
await writeData(fileWriter, localHeaderArray);
|
|
4839
4834
|
}
|
|
4840
4835
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
4841
|
-
const { zip64 } = fileEntry;
|
|
4842
4836
|
if (!bufferedWrite) {
|
|
4843
4837
|
writingEntryData = false;
|
|
4844
4838
|
}
|
|
@@ -4850,9 +4844,6 @@
|
|
|
4850
4844
|
writingBufferedEntryData = true;
|
|
4851
4845
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
4852
4846
|
fileEntry.offset = zipWriter.offset - writer.diskOffset;
|
|
4853
|
-
if (zip64) {
|
|
4854
|
-
updateZip64ExtraField(fileEntry);
|
|
4855
|
-
}
|
|
4856
4847
|
updateLocalHeader(fileEntry, localHeaderView, options);
|
|
4857
4848
|
await skipDiskIfNeeded(writable);
|
|
4858
4849
|
await writeData(writer, localHeaderArray);
|
|
@@ -4861,12 +4852,6 @@
|
|
|
4861
4852
|
writingBufferedEntryData = false;
|
|
4862
4853
|
} else {
|
|
4863
4854
|
fileEntry.offset = zipWriter.offset - diskOffset;
|
|
4864
|
-
if (zip64) {
|
|
4865
|
-
updateZip64ExtraField(fileEntry);
|
|
4866
|
-
}
|
|
4867
|
-
}
|
|
4868
|
-
if (fileEntry.offset > MAX_32_BITS && !zip64) {
|
|
4869
|
-
throw new Error(ERR_UNSUPPORTED_FORMAT);
|
|
4870
4855
|
}
|
|
4871
4856
|
zipWriter.offset += fileEntry.size;
|
|
4872
4857
|
return fileEntry;
|
|
@@ -4956,8 +4941,6 @@
|
|
|
4956
4941
|
zip64,
|
|
4957
4942
|
zip64UncompressedSize,
|
|
4958
4943
|
zip64CompressedSize,
|
|
4959
|
-
zip64Offset,
|
|
4960
|
-
zip64DiskNumberStart,
|
|
4961
4944
|
zipCrypto,
|
|
4962
4945
|
dataDescriptor,
|
|
4963
4946
|
directory,
|
|
@@ -5095,9 +5078,7 @@
|
|
|
5095
5078
|
signature,
|
|
5096
5079
|
extraFieldExtendedTimestampFlag,
|
|
5097
5080
|
zip64UncompressedSize,
|
|
5098
|
-
zip64CompressedSize
|
|
5099
|
-
zip64Offset,
|
|
5100
|
-
zip64DiskNumberStart
|
|
5081
|
+
zip64CompressedSize
|
|
5101
5082
|
});
|
|
5102
5083
|
return fileEntry;
|
|
5103
5084
|
}
|
|
@@ -5121,74 +5102,41 @@
|
|
|
5121
5102
|
encrypted,
|
|
5122
5103
|
zip64UncompressedSize,
|
|
5123
5104
|
zip64CompressedSize,
|
|
5124
|
-
|
|
5125
|
-
zip64DiskNumberStart,
|
|
5126
|
-
uncompressedSize,
|
|
5127
|
-
offset,
|
|
5128
|
-
diskNumberStart
|
|
5105
|
+
uncompressedSize
|
|
5129
5106
|
} = options;
|
|
5130
5107
|
let { version, compressionMethod } = options;
|
|
5131
5108
|
const compressed = !directory && (level > 0 || (level === UNDEFINED_VALUE && compressionMethod !== 0));
|
|
5132
|
-
let rawExtraFieldZip64;
|
|
5133
5109
|
let rawLocalExtraFieldZip64;
|
|
5134
5110
|
const uncompressedFile = passThrough || !compressed;
|
|
5135
5111
|
const zip64ExtraFieldComplete = zip64 && (options.bufferedWrite || ((!zip64UncompressedSize && !zip64CompressedSize) || uncompressedFile));
|
|
5136
5112
|
if (zip64) {
|
|
5137
|
-
let rawExtraFieldZip64Length = 4;
|
|
5138
5113
|
let rawLocalExtraFieldZip64Length = 4;
|
|
5139
5114
|
if (zip64UncompressedSize) {
|
|
5140
|
-
rawExtraFieldZip64Length += 8;
|
|
5141
5115
|
rawLocalExtraFieldZip64Length += 8;
|
|
5142
5116
|
}
|
|
5143
5117
|
if (zip64CompressedSize) {
|
|
5144
|
-
rawExtraFieldZip64Length += 8;
|
|
5145
5118
|
rawLocalExtraFieldZip64Length += 8;
|
|
5146
5119
|
}
|
|
5147
|
-
if (zip64Offset) {
|
|
5148
|
-
rawExtraFieldZip64Length += 8;
|
|
5149
|
-
}
|
|
5150
|
-
if (zip64DiskNumberStart) {
|
|
5151
|
-
rawExtraFieldZip64Length += 4;
|
|
5152
|
-
}
|
|
5153
|
-
rawExtraFieldZip64 = new Uint8Array(rawExtraFieldZip64Length);
|
|
5154
|
-
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5155
5120
|
rawLocalExtraFieldZip64 = new Uint8Array(rawLocalExtraFieldZip64Length);
|
|
5156
5121
|
const rawLocalExtraFieldZip64View = getDataView(rawLocalExtraFieldZip64);
|
|
5157
|
-
setUint16(rawExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5158
|
-
setUint16(rawExtraFieldZip64View, 2, getLength(rawExtraFieldZip64) - 4);
|
|
5159
5122
|
setUint16(rawLocalExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5160
5123
|
setUint16(rawLocalExtraFieldZip64View, 2, getLength(rawLocalExtraFieldZip64) - 4);
|
|
5161
5124
|
if (zip64ExtraFieldComplete) {
|
|
5162
|
-
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5163
5125
|
const rawLocalExtraFieldZip64View = getDataView(rawLocalExtraFieldZip64);
|
|
5164
|
-
let rawExtraFieldZip64Offset = 4;
|
|
5165
5126
|
let rawLocalExtraFieldZip64Offset = 4;
|
|
5166
5127
|
if (zip64UncompressedSize) {
|
|
5167
|
-
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5168
|
-
rawExtraFieldZip64Offset += 8;
|
|
5169
5128
|
setBigUint64(rawLocalExtraFieldZip64View, rawLocalExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5170
5129
|
rawLocalExtraFieldZip64Offset += 8;
|
|
5171
5130
|
}
|
|
5172
5131
|
if (zip64CompressedSize && uncompressedFile) {
|
|
5173
|
-
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5174
|
-
rawExtraFieldZip64Offset += 8;
|
|
5175
5132
|
setBigUint64(rawLocalExtraFieldZip64View, rawLocalExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5176
5133
|
rawLocalExtraFieldZip64Offset += 8;
|
|
5177
5134
|
}
|
|
5178
|
-
if (zip64Offset) {
|
|
5179
|
-
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(offset));
|
|
5180
|
-
rawExtraFieldZip64Offset += 8;
|
|
5181
|
-
}
|
|
5182
|
-
if (zip64DiskNumberStart) {
|
|
5183
|
-
setUint32(rawExtraFieldZip64View, rawExtraFieldZip64Offset, diskNumberStart);
|
|
5184
|
-
rawExtraFieldZip64Offset += 4;
|
|
5185
|
-
}
|
|
5186
5135
|
if (rawLocalExtraFieldZip64Offset == 4) {
|
|
5187
5136
|
rawLocalExtraFieldZip64 = new Uint8Array();
|
|
5188
5137
|
}
|
|
5189
5138
|
}
|
|
5190
5139
|
} else {
|
|
5191
|
-
rawExtraFieldZip64 = new Uint8Array();
|
|
5192
5140
|
rawLocalExtraFieldZip64 = new Uint8Array();
|
|
5193
5141
|
}
|
|
5194
5142
|
let rawExtraFieldAES;
|
|
@@ -5345,7 +5293,7 @@
|
|
|
5345
5293
|
version,
|
|
5346
5294
|
compressionMethod,
|
|
5347
5295
|
extraFieldExtendedTimestampFlag,
|
|
5348
|
-
rawExtraFieldZip64,
|
|
5296
|
+
rawExtraFieldZip64: new Uint8Array(),
|
|
5349
5297
|
localExtraFieldZip64Length,
|
|
5350
5298
|
rawExtraFieldExtendedTimestamp,
|
|
5351
5299
|
rawExtraFieldNTFS,
|
|
@@ -5517,35 +5465,6 @@
|
|
|
5517
5465
|
}
|
|
5518
5466
|
}
|
|
5519
5467
|
|
|
5520
|
-
function updateZip64ExtraField({
|
|
5521
|
-
compressedSize,
|
|
5522
|
-
uncompressedSize,
|
|
5523
|
-
offset,
|
|
5524
|
-
diskNumberStart,
|
|
5525
|
-
zip64UncompressedSize,
|
|
5526
|
-
zip64CompressedSize,
|
|
5527
|
-
zip64Offset,
|
|
5528
|
-
zip64DiskNumberStart,
|
|
5529
|
-
rawExtraFieldZip64
|
|
5530
|
-
}) {
|
|
5531
|
-
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5532
|
-
let rawExtraFieldZip64Offset = 4;
|
|
5533
|
-
if (zip64UncompressedSize) {
|
|
5534
|
-
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5535
|
-
rawExtraFieldZip64Offset += 8;
|
|
5536
|
-
}
|
|
5537
|
-
if (zip64CompressedSize) {
|
|
5538
|
-
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(compressedSize));
|
|
5539
|
-
rawExtraFieldZip64Offset += 8;
|
|
5540
|
-
}
|
|
5541
|
-
if (zip64Offset) {
|
|
5542
|
-
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(offset));
|
|
5543
|
-
rawExtraFieldZip64Offset += 8;
|
|
5544
|
-
}
|
|
5545
|
-
if (zip64DiskNumberStart) {
|
|
5546
|
-
setUint32(rawExtraFieldZip64View, rawExtraFieldZip64Offset, diskNumberStart);
|
|
5547
|
-
}
|
|
5548
|
-
}
|
|
5549
5468
|
|
|
5550
5469
|
async function closeFile(zipWriter, comment, options) {
|
|
5551
5470
|
const { files, writer } = zipWriter;
|
|
@@ -5558,7 +5477,6 @@
|
|
|
5558
5477
|
for (const [, fileEntry] of files) {
|
|
5559
5478
|
const {
|
|
5560
5479
|
rawFilename,
|
|
5561
|
-
rawExtraFieldZip64,
|
|
5562
5480
|
rawExtraFieldAES,
|
|
5563
5481
|
rawComment,
|
|
5564
5482
|
rawExtraFieldNTFS,
|
|
@@ -5566,8 +5484,36 @@
|
|
|
5566
5484
|
rawExtraField,
|
|
5567
5485
|
extendedTimestamp,
|
|
5568
5486
|
extraFieldExtendedTimestampFlag,
|
|
5569
|
-
lastModDate
|
|
5487
|
+
lastModDate,
|
|
5488
|
+
zip64UncompressedSize,
|
|
5489
|
+
zip64CompressedSize,
|
|
5490
|
+
uncompressedSize,
|
|
5491
|
+
compressedSize
|
|
5570
5492
|
} = fileEntry;
|
|
5493
|
+
const zip64Offset = fileEntry.offset > MAX_32_BITS;
|
|
5494
|
+
const zip64DiskNumberStart = fileEntry.diskNumberStart > MAX_16_BITS;
|
|
5495
|
+
let rawExtraFieldZip64;
|
|
5496
|
+
if (zip64Offset || zip64DiskNumberStart || zip64UncompressedSize || zip64CompressedSize) {
|
|
5497
|
+
let length = 4;
|
|
5498
|
+
if (zip64UncompressedSize) length += 8;
|
|
5499
|
+
if (zip64CompressedSize) length += 8;
|
|
5500
|
+
if (zip64Offset) length += 8;
|
|
5501
|
+
if (zip64DiskNumberStart) length += 4;
|
|
5502
|
+
rawExtraFieldZip64 = new Uint8Array(length);
|
|
5503
|
+
const zip64View = getDataView(rawExtraFieldZip64);
|
|
5504
|
+
setUint16(zip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5505
|
+
setUint16(zip64View, 2, length - 4);
|
|
5506
|
+
let zip64FieldOffset = 4;
|
|
5507
|
+
if (zip64UncompressedSize) { setBigUint64(zip64View, zip64FieldOffset, BigInt(uncompressedSize)); zip64FieldOffset += 8; }
|
|
5508
|
+
if (zip64CompressedSize) { setBigUint64(zip64View, zip64FieldOffset, BigInt(compressedSize)); zip64FieldOffset += 8; }
|
|
5509
|
+
if (zip64Offset) { setBigUint64(zip64View, zip64FieldOffset, BigInt(fileEntry.offset)); zip64FieldOffset += 8; }
|
|
5510
|
+
if (zip64DiskNumberStart) { setUint32(zip64View, zip64FieldOffset, fileEntry.diskNumberStart); }
|
|
5511
|
+
} else {
|
|
5512
|
+
rawExtraFieldZip64 = new Uint8Array();
|
|
5513
|
+
}
|
|
5514
|
+
fileEntry.rawExtraFieldZip64 = rawExtraFieldZip64;
|
|
5515
|
+
fileEntry.zip64Offset = zip64Offset;
|
|
5516
|
+
fileEntry.zip64DiskNumberStart = zip64DiskNumberStart;
|
|
5571
5517
|
let rawExtraFieldTimestamp;
|
|
5572
5518
|
if (extendedTimestamp) {
|
|
5573
5519
|
rawExtraFieldTimestamp = new Uint8Array(9);
|
|
@@ -5609,7 +5555,6 @@
|
|
|
5609
5555
|
versionMadeBy,
|
|
5610
5556
|
headerArray,
|
|
5611
5557
|
headerView,
|
|
5612
|
-
zip64,
|
|
5613
5558
|
zip64UncompressedSize,
|
|
5614
5559
|
zip64CompressedSize,
|
|
5615
5560
|
zip64DiskNumberStart,
|
|
@@ -5635,7 +5580,7 @@
|
|
|
5635
5580
|
directoryOffset += 2;
|
|
5636
5581
|
setUint16(directoryView, directoryOffset, getLength(rawComment));
|
|
5637
5582
|
directoryOffset += 2;
|
|
5638
|
-
setUint16(directoryView, directoryOffset,
|
|
5583
|
+
setUint16(directoryView, directoryOffset, zip64DiskNumberStart ? MAX_16_BITS : diskNumberStart);
|
|
5639
5584
|
directoryOffset += 2;
|
|
5640
5585
|
setUint16(directoryView, directoryOffset, internalFileAttributes);
|
|
5641
5586
|
directoryOffset += 2;
|
|
@@ -5643,7 +5588,7 @@
|
|
|
5643
5588
|
setUint32(directoryView, directoryOffset, externalFileAttributes);
|
|
5644
5589
|
}
|
|
5645
5590
|
directoryOffset += 4;
|
|
5646
|
-
setUint32(directoryView, directoryOffset,
|
|
5591
|
+
setUint32(directoryView, directoryOffset, zip64Offset ? MAX_32_BITS : fileEntryOffset);
|
|
5647
5592
|
directoryOffset += 4;
|
|
5648
5593
|
arraySet(directoryArray, rawFilename, directoryOffset);
|
|
5649
5594
|
directoryOffset += getLength(rawFilename);
|
package/dist/zip-fs-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:h,Uint32Array:w,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:F,TransformStream:k,ReadableStream:D,WritableStream:E,CompressionStream:v,DecompressionStream:A,navigator:U,Worker:R}="undefined"!=typeof globalThis?globalThis:this||self,T=4294967295,C=65535,M=255,W=67324752,_=134695760,B=_,N=33639248,I=101010256,O=101075792,L=117853008,H=22,Z=21589,P=2048,V=16384,q=2048,K=1024,j=512,X="/",G=30,Y=new o(2107,11,31),J=new o(1980,0,1),Q=void 0,$=1/0,ee="undefined",te="function";let re=2;try{typeof U!=ee&&U.hardwareConcurrency&&(re=U.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof v!=ee&&v,DecompressionStream:typeof A!=ee&&A},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}const oe="HTTP error ",ce="HTTP Range not supported",le="Range",de="GET",ue="bytes",pe=65536,fe="writable";class he{constructor(){this.size=0}init(){this.initialized=!0}}class we extends he{get readable(){const e=this,{chunkSize:t=pe}=e,r=new D({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===Q?t:i.min(t,a-c),d=await Ve(e,n+c,l,o);s.enqueue(d),c+t>a||a===Q&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class me extends he{constructor(){super();const e=this,t=new E({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,fe,{get:()=>t})}writeUint8Array(){}}class ge extends we{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}}class ye extends me{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=F(n):t.pending+=n)}getData(){return this.data+F(this.pending)}}class be extends we{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class ze extends he{constructor(e){super();const t=new k,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,fe,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class Se extends be{constructor(e){super(new g([e],{type:"text/plain"}))}}class xe extends ze{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}}class Fe extends we{constructor(e,t){super(),De(this,e,t)}async init(){await Ee(this,We,Re),super.init()}readUint8Array(e,t){return ve(this,e,t,We,Re)}}class ke extends we{constructor(e,t){super(),De(this,e,t)}async init(){await Ee(this,_e,Te),super.init()}readUint8Array(e,t){return ve(this,e,t,_e,Te)}}function De(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function Ee(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(de,e,Ae(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==ue))throw new p(ce);{let a;c&&(e.eocdCache=new f(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===Q?await Me(e,t,r):e.size=a}}else await Me(e,t,r)}async function ve(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(de,e,Ae(e,t,r));if(206!=n.status)throw new p(ce);return new f(await n.arrayBuffer())}return new f}{const{data:s}=e;return s||await n(e,l),new f(e.data.subarray(t,t+r))}}function Ae(e,t=0,s=1){return r.assign({},Ue(e),{[le]:ue+"="+(0>t?t:t+"-"+(t+s-1))})}function Ue({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Re(e){await Ce(e,We)}async function Te(e){await Ce(e,_e)}async function Ce(e,t){const r=await t(de,e,Ue(e));e.data=new f(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function Me(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,Ue(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function We(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new p(ce):new p(oe+(a.statusText||a.status))}function _e(e,{url:t},s){return new y((n,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(ce):new p(oe+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class Be extends we{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new ke(e,t):new Fe(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Ne extends we{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class Ie extends me{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const s=t.array;t.array=new f(e),t.array.set(s)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}}class Oe extends we{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await Ve(l,c,i);a.set(o,0);const d=await s.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Ve(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class Le extends he{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new E({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Pe(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,fe,{get:()=>o})}}class He{constructor(e){return t.isArray(e)&&(e=new Oe(e)),e instanceof D&&(e={readable:e}),e}}class Ze{constructor(e){return e.writable===Q&&typeof e.next==te&&(e=new Le(e)),e instanceof E&&(e={writable:e}),e.size===Q&&(e.size=0),e instanceof Le||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:$,maxSize:$}),e}}async function Pe(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Ve(e,t,r,s){return e.readUint8Array(t,r,s)}const qe=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;qe[e]=t}class Ke{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^qe[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class je extends k{constructor(){let e;const t=new Ke;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function Xe(e){if(typeof b==ee){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const Ge={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=Ge.getPartial(r);return 32===s?e.concat(t):Ge._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Ge.getPartial(r)},clamp(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=Ge.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=Ge.getPartial(n);return s.push(Ge.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},Ye={bytes:{fromBits(e){const t=Ge.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(Ge.partial(8*(3&r),s)),t}}},Je=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=Ye.utf8String.toBits(e));const r=t._buffer=Ge.concat(t._buffer,e),s=t._length,n=t._length=s+Ge.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new w(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=Ge.concat(t,[Ge.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},Qe={getRandomValues(e){const t=new w(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},$e={importKey:e=>new $e.hmacSha1(Ye.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const h=Ge;for(t=Ye.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(h.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=Je,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},et=typeof x!=ee&&typeof x.getRandomValues==te,tt="Invalid password",rt="Invalid signature",st="zipjs-abort-check-password";function nt(e){return et?x.getRandomValues(e):Qe.getRandomValues(e)}const at=16,it={name:"PBKDF2"},ot=r.assign({hash:{name:"HMAC"}},it),ct=r.assign({iterations:1e3,hash:{name:"SHA-1"}},it),lt=["deriveBits"],dt=[8,12,16],ut=[16,24,32],pt=10,ft=[0,0,0,0],ht=typeof x!=ee,wt=ht&&x.subtle,mt=ht&&typeof wt!=ee,gt=Ye.bytes,yt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,h,w=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[w>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&w]^r[b+1],h=i[g>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[w>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,w=u,m=f,g=h;for(let e=0;4>e;e++)n[t?3&-e:e]=d[w>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=w,w=m,m=g,g=y,y=u;return n}},bt=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=Ge.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return Ge.clamp(t,n)}},zt=$e.hmacSha1;let St=ht&&mt&&typeof wt.importKey==te,xt=ht&&mt&&typeof wt.deriveBits==te;class Ft extends k{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),signed:s,strength:n-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Et(e,t,r,Ut(s,0,dt[t])),a=Ut(s,dt[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(tt)})(r,n,s,Ut(e,0,dt[n]+2)),e=Ut(e,dt[n]+2),a?t.error(new p(st)):i()):await o;const c=new f(e.length-pt-(e.length-pt)%at);t.enqueue(Dt(r,e,c,0,pt,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=Ut(n,0,n.length-pt),o=Ut(n,n.length-pt);let c=new f;if(i.length){const e=Tt(gt,i);s.update(e);const t=r.update(e);c=Rt(gt,t)}if(t){const e=Ut(Rt(gt,s.digest()),0,pt);for(let t=0;pt>t;t++)if(e[t]!=o[t])throw new p(rt)}e.enqueue(c)}}})}}class kt extends k{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=nt(new f(dt[t]));return At(s,await Et(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%at);c.set(o,0),t.enqueue(Dt(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Tt(gt,s));r.update(e),i=Rt(gt,e)}n.signature=Rt(gt,r.digest()).slice(0,pt),e.enqueue(At(i,n.signature))}}}),n=this}}function Dt(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=At(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,l-l%at)),d=0;l-at>=d;d+=at){const e=Tt(gt,Ut(t,d,d+at));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Rt(gt,n),d+s)}return e.pending=Ut(t,d),r}async function Et(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!St)return $e.importKey(t);try{return await wt.importKey("raw",t,r,!1,n)}catch{return St=!1,$e.importKey(t)}})(0,n,ot,0,lt),o=await(async(e,t,r)=>{if(!xt)return $e.pbkdf2(t,e.salt,ct.iterations,r);try{return await wt.deriveBits(e,t,r)}catch{return xt=!1,$e.pbkdf2(t,e.salt,ct.iterations,r)}})(r.assign({salt:a},ct),i,8*(2*ut[s]+2)),c=new f(o),l=Tt(gt,Ut(c,0,ut[s])),d=Tt(gt,Ut(c,ut[s],2*ut[s])),u=Ut(c,2*ut[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new bt(new yt(l),t.from(ft)),hmac:new zt(d)}),u}function vt(e,t){return t===Q?Xe(e):t}function At(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function Ut(e,t,r){return e.subarray(t,r)}function Rt(e,t){return e.fromBits(t)}function Tt(e,t){return e.toBits(t)}class Ct extends k{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),Bt(this,e)},transform(e,t){const r=this;if(r.password){const t=Wt(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new p(tt);e=e.subarray(12)}s?t.error(new p(st)):t.enqueue(Wt(r,e))}})}}class Mt extends k{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),Bt(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=nt(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set(_t(r,t),0),n=12}else s=new f(e.length),n=0;s.set(_t(r,e),n),t.enqueue(s)}})}}function Wt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=It(e)^t[s],Nt(e,r[s]);return r}function _t(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=It(e)^t[s],Nt(e,t[s]);return r}function Bt(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new Ke(s[0]),crcKey2:new Ke(s[2])});for(let r=0;r<t.length;r++)Nt(e,t.charCodeAt(r))}function Nt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=Lt(i.imul(Lt(s+Ot(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function It(e){const t=2|e.keys[2];return Ot(i.imul(t,1^t)>>>8)}function Ot(e){return 255&e}function Lt(e){return 4294967295&e}const Ht="Invalid uncompressed size";class Zt extends k{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new je,f=Kt(f,u)),n&&(f=qt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=Kt(f,new Mt(e)):(p=new kt(e),f=Kt(f,p))),Vt(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class Pt extends k{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,h=super.readable;a&&(n?h=Kt(h,new Ct(e)):(f=new Ft(e),h=Kt(h,f))),c&&(h=qt(h,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new je,h=Kt(h,u)),Vt(this,h,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(rt)}})}}function Vt(e,t,s){t=Kt(t,new k({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function qt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=Kt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=Kt(e,new n(o,r));else{if(!a)throw s;e=Kt(e,new a(o,r))}}return e}function Kt(e,t){return e.pipeThrough(t)}const jt="data",Xt="close",Gt="deflate",Yt="inflate";class Jt extends k{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(Gt)?a=Zt:n.startsWith(Yt)&&(a=Pt),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new k({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new k({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==Q&&s.outputSize>e.outputSize))throw new p(Ht)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Qt extends k{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new f(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}const $t={type:"module"};let er,tr,rr,sr=!0;try{sr=typeof structuredClone==te&&structuredClone(new DOMException("","AbortError")).code!==Q}catch{}class nr{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new Qt(a.chunkSize)).pipeThrough(new ar(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),er===Q&&(er=typeof R!=ee),(o&&er?cr:or)(e,a)}}class ar extends k{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await ir(e,r)},async transform(e,s){n+=e.length,t&&await ir(t,n,r),s.enqueue(e)},async flush(){s&&await ir(s,n)}})}}async function ir(e,...t){try{await e(...t)}catch{}}function or(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new Jt(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function cr(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=lr(e.workerURI,s,e)}catch{return er=!1,or(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{const{writable:t,readable:r}=new k;return{writable:t,closed:r.pipeTo(e,{preventClose:!0})}})(e.writable),d=dr({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function lr(e,t,s,n,a=!0){let i,o,c;if(tr===Q){const r=typeof e==te;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===Q&&(n=!1),n&&(c=$t);try{i=new R(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return lr(e,t,s,n,!1);if(n)throw a;return lr(e,t,s,!0,!1)}}else{n===Q&&(n=!0),n&&(c=$t);try{o=new u(o,t)}catch{}try{i=new R(o,c)}catch(r){if(n)throw r;return lr(e,t,s,!1,a)}}tr=o,rr=c}else i=new R(tr,rr);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:h}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),w(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();dr({type:jt,value:e,done:r,messageId:a},t)}s==jt&&(await l.ready,await l.write(new f(n)),dr({type:"ack",messageId:a},t)),s==Xt&&w(null,i)}}catch(o){dr({type:Xt,messageId:a},t),w(o)}function w(e,t){e?u(e):d(t),l&&l.releaseLock(),h()}})(e,s)),i}function dr(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&sr?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{sr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let ur=[];const pr=[];let fr=0;async function hr(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===Q;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===Q&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:Q,r.useCompressionStream=o||o===Q&&s.useCompressionStream,(await(async()=>{const r=ur.find(e=>!e.busy);if(r)return wr(r),new nr(r,e,t,h);if(ur.length<p){const r={indexWorker:fr};return fr++,ur.push(r),new nr(r,e,t,h)}return new y(r=>pr.push({resolve:r,stream:e,workerOptions:t}))})()).run();function h(e){if(pr.length){const[{resolve:t,stream:r,workerOptions:s}]=pr.splice(0,1);t(new nr(e,r,s,h))}else e.worker?(wr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{ur=ur.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):ur=ur.filter(t=>t!=e)}}function wr(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const mr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function gr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=mr[e[r]];return t}})(e):new z(t).decode(e)}const yr="filename",br="rawFilename",zr="comment",Sr="rawComment",xr="uncompressedSize",Fr="compressedSize",kr="offset",Dr="diskNumberStart",Er="lastModDate",vr="rawLastModDate",Ar="lastAccessDate",Ur="creationDate",Rr="rawCreationDate",Tr="internalFileAttributes",Cr="externalFileAttributes",Mr="msdosAttributesRaw",Wr="msdosAttributes",_r="msDosCompatible",Br="zip64",Nr="encrypted",Ir="version",Or="versionMadeBy",Lr="zipCrypto",Hr="directory",Zr="executable",Pr="compressionMethod",Vr="signature",qr="extraField",Kr="unixMode",jr="setuid",Xr="setgid",Gr="sticky",Yr=[yr,br,xr,Fr,Er,vr,zr,Sr,Ar,Ur,Rr,kr,Dr,Tr,Cr,Mr,Wr,_r,Br,Nr,Ir,Or,Lr,Hr,Zr,Pr,Vr,qr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Kr,jr,Xr,Gr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Jr{constructor(e){Yr.forEach(t=>this[t]=e[t])}}const Qr="password",$r="rawPassword",es="passThrough",ts="signal",rs="useWebWorkers",ss="useCompressionStream",ns="transferStreams",as="preventClose",is="supportZip64SplitFile",os="offset",cs="usdz",ls="File format is not recognized",ds="Compression method not supported",us="Split zip file",ps="utf-8",fs="cp437",hs=[[xr,T],[Fr,T],[kr,T],[Dr,C]],ws={[C]:{getValue:As,bytes:4},[T]:{getValue:Us,bytes:8}};class ms{constructor(e,t={}){r.assign(this,{reader:new He(e),options:t,config:ae(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Pe(s),s.size!==Q&&s.readUint8Array||(s=new be(await new d(s.readable).blob()),await Pe(s)),s.size<H)throw new p(ls);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,Rs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await Ve(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,I,s.size);if(!a)throw As(Rs(await Ve(s,0,4)))==_?new p(us):new p("End of central directory not found");const o=Rs(a);let c=As(o,12),l=As(o,16);const u=a.offset,h=vs(o,20),w=u+H+h;let m=vs(o,4);const g=s.lastDiskNumber||0;let b=vs(o,6),z=vs(o,8),S=0,x=0;if(l==T||c==T||z==C||b==C){const e=Rs(await Ve(s,a.offset-20,20));if(As(e,0)==L){l=Us(e,8);let t=await Ve(s,l,56,-1),r=Rs(t);const n=a.offset-20-56;if(As(r,0)!=O&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await Ve(s,l,56,-1),r=Rs(t)}if(As(r,0)!=O)throw new p("End of Zip64 central directory locator not found");m==C&&(m=As(r,16)),b==C&&(b=As(r,20)),z==C&&(z=Us(r,32)),c==T&&(c=Us(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new p(us);if(0>l)throw new p(ls);let F=0,D=await Ve(s,l,c,b),E=Rs(D);if(c){const e=a.offset-c;if(As(E,F)!=N&&l!=e){const t=l;l=e,l>t&&(S+=l-t),D=await Ve(s,l,c,b),E=Rs(D)}}const v=a.offset-l-(s.lastDiskOffset||0);if(c==v||0>v||(c=v,D=await Ve(s,l,c,b),E=Rs(D)),0>l||l>=s.size)throw new p(ls);const A=Fs(t,e,"filenameEncoding"),U=Fs(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new gs(s,n,t.options);if(As(E,F)!=N)throw new p("Central directory header not found");ys(o,E,F+6);const c=!!o.bitFlag.languageEncodingFlag,l=F+46,u=l+o.filenameLength,f=u+o.extraFieldLength,h=vs(E,F+4),w=!(h>>8),m=h>>8==3,g=D.subarray(l,u),b=vs(E,F+32),v=f+b,R=D.subarray(f,v),T=c,W=c,_=As(E,F+38),B=_&M,I={readOnly:!!(1&B),hidden:!!(2&B),system:!!(4&B),directory:!!(16&B),archive:!!(32&B)},O=As(E,F+42)+S,L=Fs(t,e,"decodeText")||gr,H=T?ps:A||fs,Z=W?ps:U||fs;let P=L(g,H);P===Q&&(P=gr(g,H));let G=L(R,Z);G===Q&&(G=gr(R,Z)),r.assign(o,{versionMadeBy:h,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:b,offset:O,diskNumberStart:vs(E,F+34),internalFileAttributes:vs(E,F+36),externalFileAttributes:_,msdosAttributesRaw:B,msdosAttributes:I,rawFilename:g,filenameUTF8:T,commentUTF8:W,rawExtraField:D.subarray(u,f),rawComment:R,filename:P,comment:G}),x=i.max(O,x),bs(o,o,E,F+6);const Y=o.externalFileAttributes>>16&C;o.unixMode===Q&&16877&Y&&(o.unixMode=Y);const J=!!(o.unixMode&q),$=!!(o.unixMode&K),ee=!!(o.unixMode&j),te=o.unixMode!==Q?!!(73&o.unixMode):m&&!!(73&Y),re=o.unixMode!==Q&&(61440&o.unixMode)==V,se=(61440&Y)==V;r.assign(o,{setuid:J,setgid:$,sticky:ee,unixExternalUpper:Y,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||w&&I.directory||P.endsWith(X)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Jr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new k,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},F=v;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Jr(o))}catch{}yield ne}const R=Fs(t,e,"extractPrependedData"),W=Fs(t,e,"extractAppendedData");return R&&(t.prependedData=x>0?await Ve(s,0,x):new f),t.comment=h?await Ve(s,u+H,h):new f,W&&(t.appendedData=w<s.size?await Ve(s,w,s.size-w):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let gs=class{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:h,bitFlag:w,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=w,S=t.localDirectory={},x=Rs(await Ve(i,o,G,c));let F=Fs(a,n,Qr),k=Fs(a,n,$r);const D=Fs(a,n,es);if(F=F&&F.length&&F,k=k&&k.length&&k,l&&99!=l.originalCompressionMethod)throw new p(ds);if(0!=u&&8!=u&&9!=u&&!D)throw new p(ds);if(As(x,0)!=W)throw new p("Local file header not found");ys(S,x,4);const{extraFieldLength:v,filenameLength:A,lastAccessDate:U,creationDate:R}=S;S.rawExtraField=v?await Ve(i,o+G+A,v,c):new f,bs(a,S,x,4,!0),r.assign(t,{lastAccessDate:U,creationDate:R});const T=a.encrypted&&S.encrypted&&!D,C=T&&!l;if(D||(t.zipCrypto=C),T){if(!C&&l.strength===Q)throw new p("Encryption method not supported");if(!F&&!k)throw new p("File contains encrypted entry")}const _=o+G+A+v,N=b,I=i.readable;r.assign(I,{diskNumberStart:c,offset:_,size:N});const O=Fs(a,n,ts),L=Fs(a,n,"checkPasswordOnly");let H=Fs(a,n,"checkOverlappingEntry");const Z=Fs(a,n,"checkOverlappingEntryOnly");Z&&(H=!0);const{onstart:P,onprogress:V,onend:q}=n,K=9==u;let j=Fs(a,n,ss);K&&(j=!1);const X={options:{codecType:Yt,password:F,rawPassword:k,zipCrypto:C,encryptionStrength:l&&l.strength,signed:Fs(a,n,"checkSignature")&&!D,passwordVerification:C&&(z?g>>>8&M:m>>>24&M),outputSize:D?b:y,signature:m,compressed:0!=u&&!D,encrypted:a.encrypted&&!D,useWebWorkers:Fs(a,n,rs),useCompressionStream:j,transferStreams:Fs(a,n,ns),deflate64:K,checkPasswordOnly:L},config:h,streamOptions:{signal:O,size:N,onstart:P,onprogress:V,onend:q}};let Y;H&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let f=0;if(c&&(f=l?20:12),f){const r=await Ve(e,o+a,f+4,s);if(As(Rs(r),0)==B){const e=As(Rs(r),4);let s,o;l?(s=Us(Rs(r),8),o=Us(Rs(r),16)):(s=As(Rs(r),8),o=As(Rs(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(f+=4)}}const h={start:u+r,end:u+o+a+f,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&h.start>=e.start&&h.start<e.end){const t=new p("Overlapping entry found");throw t.overlappingEntry=e.fileEntry,t}d.push(h)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:_,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!Z){L&&(e=new E),e=new Ze(e),await Pe(e,D?b:y),({writable:Y}=e);const{outputSize:t}=await hr({readable:I,writable:Y},X);if(e.size+=t,t!=(D?b:y))throw new p(Ht)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!L||t.message!=st)throw t}finally{Fs(a,n,as)||!Y||Y.locked||await Y.getWriter().close()}return L||Z?Q:e.getData?e.getData():Y}};function ys(e,t,s){const n=e.rawBitFlag=vs(t,s+2),a=!(1&~n),i=As(t,s+6);r.assign(e,{encrypted:a,version:vs(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&P)==P},rawLastModDate:i,lastModDate:ks(i),filenameLength:vs(t,s+22),extraFieldLength:vs(t,s+24)})}function bs(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Rs(new f(i));let u=0;try{for(;u<i.length;){const e=vs(d,u),t=vs(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const h=vs(s,n+4);r.assign(t,{signature:As(s,n+10),compressedSize:As(s,n+14),uncompressedSize:As(s,n+18)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const r=Rs(e.data),s=hs.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=ws[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new p("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const m=l.get(28789);m&&(zs(m,yr,br,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(zs(g,zr,Sr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=Rs(e.data),a=Es(n,4);r.assign(e,{vendorVersion:Es(n,0),vendorId:Es(n,2),strength:a,originalCompressionMethod:s,compressionMethod:vs(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,h),t.extraFieldAES=y):t.compressionMethod=h;const b=l.get(10);b&&(((e,t)=>{const s=Rs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=vs(s,a),r=vs(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=Rs(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Ds(a),lastAccessDate:Ds(i),creationDate:Ds(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)Ss(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(Ss(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(Z);S&&(((e,t,r)=>{const s=Rs(e.data),n=Es(s,0),a=[],i=[];r?(1&~n||(a.push(Er),i.push(vr)),2&~n||(a.push(Ar),i.push("rawLastAccessDate")),4&~n||(a.push(Ur),i.push(Rr))):5>e.data.length||(a.push(Er),i.push(vr));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=As(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function zs(e,t,s,n,a){const i=Rs(e.data),o=new Ke;o.append(a[s]);const c=Rs(new f(4));c.setUint32(0,o.get(),!0);const l=As(i,1);r.assign(e,{version:Es(i,0),[t]:gr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==As(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function Ss(e,t,s){try{const n=Rs(new f(e.data));let a=0;const i=Es(n,a++),o=Es(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=xs(c),d=Es(n,a++),u=e.data.subarray(a,a+d);a+=d;const p=xs(u);let h=Q;if(!s&&a+2<=e.data.length){const t=e.data;h=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:p,unixMode:h}),l!==Q&&(t.uid=l),p!==Q&&(t.gid=p),h!==Q&&(t.unixMode=h)}catch{}}function xs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Fs(e,t,r){return t[r]===Q?e.options[r]:t[r]}function ks(e){const t=(4294901760&e)>>16,r=e&C;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function Ds(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Es(e,t){return e.getUint8(t)}function vs(e,t){return e.getUint16(t,!0)}function As(e,t){return e.getUint32(t,!0)}function Us(e,t){return n(e.getBigUint64(t,!0))}function Rs(e){return new m(e.buffer)}const Ts="Version exceeds 65535",Cs="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Ms=new f([7,0,2,0,65,69,3,0,0]),Ws="infozip",_s="unix";let Bs=0;const Ns=[];class Is{constructor(e,t={}){const s=(e=new Ze(e)).availableSize!==Q&&e.availableSize>0&&e.availableSize!==$&&e.maxSize!==Q&&e.maxSize>0&&e.maxSize!==$;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[os]===Q?e.size||e.writable.size||0:t[os],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new p("Zip file not empty");e=new He(e);const t=new ms(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:p,diskNumber:h,zip64:w}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:F,dataDescriptor:k}=c;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=e.rawExtraFieldUnix||new f,S=S||new f;const D=Js(m,g,y,b,z,S),E=w&&d>T,v=w&&u>T,{headerArray:A,headerView:U}=Qs({version:t,bitFlag:$s(x,F,k,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:v,zip64UncompressedSize:E,extraFieldLength:D});return r.assign(e,{zip64UncompressedSize:E,zip64CompressedSize:v,zip64Offset:w&&this.offset-p>T,zip64DiskNumberStart:w&&h>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:A,headerView:U}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:d}=c;let u;Bs<d.maxWorkers?Bs++:await new y(e=>Ns.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new p("File already exists");return c.filenames.add(e),u=(async(e,s,n,c)=>{s=s.trim();let l=Ps(e,c,_r),d=Ps(e,c,Or,l?20:768);const u=Ps(e,c,Zr),w=Ps(e,c,"uid"),g=Ps(e,c,"gid");let b=Ps(e,c,Kr);const z=Ps(e,c,"unixExtraFieldType");let S=Ps(e,c,jr),x=Ps(e,c,Xr),F=Ps(e,c,Gr);if(w!==Q&&(0>w||w>T))throw new p("Invalid uid (must be integer 0..2^32-1)");if(g!==Q&&(0>g||g>T))throw new p("Invalid gid (must be integer 0..2^32-1)");if(b!==Q&&(0>b||b>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(z!==Q&&z!==Ws&&z!==_s)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let D=Ps(e,c,Mr),E=Ps(e,c,Wr);const v=D!==Q||E!==Q;if(w!==Q||g!==Q||b!==Q||z?(l=!1,d=d&C|768):v&&(l=!0,d&=M),D!==Q&&(0>D||D>M))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(E&&"object"!=typeof E)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(d>C)throw new p(Ts);let A=Ps(e,c,Cr,0);!c[Hr]&&s.endsWith(X)&&(c[Hr]=!0);const U=Ps(e,c,Hr);let R;U?(s.endsWith(X)||(s+=X),0===A&&(A=16,l||(A|=16877<<16))):l||0!==A||(A=u?493<<16:27525120),l||(R=A>>16&C,b=b===Q?R:b&C,S?b|=q:S=!!(b&q),x?b|=K:x=!!(b&K),F?b|=j:F=!!(b&j),U&&(b|=V),A=(b&C)<<16|A&M),({msdosAttributesRaw:D,msdosAttributes:E}=((e,t)=>{if(e!==Q)e&=M;else if(t!==Q){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&M}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(D,E)),v&&(A=A&T|D&M);const N=Ps(e,c,"encodeText",Xe);let I=N(s);if(I===Q&&(I=Xe(s)),Js(I)>C)throw new p("File entry name exceeds 64KB");const O=c[zr]||"";let L=N(O);if(L===Q&&(L=Xe(O)),Js(L)>C)throw new p("File entry comment exceeds 64KB");const H=Ps(e,c,Ir,20);if(H>C)throw new p(Ts);const P=Ps(e,c,Er,new o),ee=Ps(e,c,Ar),te=Ps(e,c,Ur),re=Ps(e,c,Tr,0),se=Ps(e,c,es);let ne,ae;se||(ne=Ps(e,c,Qr),ae=Ps(e,c,$r));const oe=Ps(e,c,"encryptionStrength",3),ce=Ps(e,c,Lr),le=Ps(e,c,"extendedTimestamp",!0),de=Ps(e,c,"keepOrder",!0),ue=Ps(e,c,rs),pe=Ps(e,c,ns,!0),fe=Ps(e,c,"bufferedWrite"),he=Ps(e,c,"createTempStream"),we=Ps(e,c,"dataDescriptorSignature",!1),me=Ps(e,c,ts),ge=Ps(e,c,"useUnicodeFileNames",!0),ye=Ps(e,c,Pr);let be=Ps(e,c,"level"),ze=Ps(e,c,ss),Se=Ps(e,c,"dataDescriptor");fe&&Se===Q&&(Se=!1),(Se===Q||ce)&&(Se=!0),be!==Q&&6!=be&&(ze=!1),ze||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(be=0);let xe=Ps(e,c,Br);if(!ce&&(ne!==Q||ae!==Q)&&(1>oe||oe>3))throw new p("The strength must equal 1, 2, or 3");let Fe=new f;const ke=c[qr];if(ke){let e=0,t=0;ke.forEach(t=>e+=4+Js(t)),Fe=new f(e),ke.forEach((e,r)=>{if(r>C)throw new p("Extra field type exceeds 65535");if(Js(e)>C)throw new p("Extra field data exceeds 64KB");Gs(Fe,new h([r]),t),Gs(Fe,new h([Js(e)]),t+2),Gs(Fe,e,t+4),t+=4+Js(e)})}let De=0,Ee=0,ve=0;if(se&&(ve=c[xr],ve===Q))throw new p("Undefined uncompressed size");const Ae=!0===xe;n&&(n=new He(n),await Pe(n),se?(c.uncompressedSize=ve,De=Vs(ve)):n.size===Q?(Se=!0,(xe||xe===Q)&&(xe=!0,ve=De=4294967296)):(c.uncompressedSize=ve=n.size,De=Vs(ve)));const{diskOffset:Ue,diskNumber:Re,maxSize:Te}=e.writer,Ce=Ae||ve>T,Me=Ae||De>T,We=Ae||e.offset+e.pendingEntriesSize-Ue>T,_e=Ps(e,c,is,!0)&&Ae||Re+i.ceil(e.pendingEntriesSize/Te)>C;if(We||Ce||Me||_e){if(!1===xe||!de)throw new p(Cs);xe=!0}xe=xe||!1;const Be=Ps(e,c,Nr),Ne=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:p,rawExtraField:h,encryptionStrength:w,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:F,uncompressedSize:k,offset:D,diskNumberStart:E}=e;let{version:v,compressionMethod:A}=e;const U=!p&&(o>0||o===Q&&0!==A);let R,T;const M=y||!U,_=c&&(e.bufferedWrite||!z&&!S||M);if(c){let e=4,t=4;z&&(e+=8,t+=8),S&&(e+=8,t+=8),x&&(e+=8),F&&(e+=4),R=new f(e);const r=Ys(R);T=new f(t);const s=Ys(T);if(Ks(r,0,1),Ks(r,2,Js(R)-4),Ks(s,0,1),Ks(s,2,Js(T)-4),_){const e=Ys(R),t=Ys(T);let r=4,s=4;z&&(Xs(e,r,a(k)),r+=8,Xs(t,s,a(k)),s+=8),S&&M&&(Xs(e,r,a(k)),r+=8,Xs(t,s,a(k)),s+=8),x&&(Xs(e,r,a(D)),r+=8),F&&(js(e,r,E),r+=4),4==s&&(T=new f)}}else R=new f,T=new f;let B,N,I,O,L;if(b&&!l){B=new f(Js(Ms)+2);const e=Ys(B);Ks(e,0,39169),Gs(B,Ms,2),qs(e,8,w)}else B=new f;if(g){I=new f(9+(s?4:0)+(n?4:0));const e=Ys(I);Ks(e,0,Z),Ks(e,2,Js(I)-4),O=1+(s?2:0)+(n?4:0),qs(e,4,O);let t=5;js(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(js(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&js(e,t,i.floor(n.getTime()/1e3));try{N=new f(36);const e=Ys(N),t=Zs(r);Ks(e,0,10),Ks(e,2,32),Ks(e,8,1),Ks(e,10,24),Xs(e,12,t),Xs(e,20,Zs(s)||t),Xs(e,28,Zs(n)||t)}catch{N=new f}}else N=I=new f;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===Q&&r===Q&&s===Q)L=new f;else{const e=Os(t),c=Os(r);let l=new f;if(o==_s&&s!==Q){let e=s&C;n&&(e|=q),a&&(e|=K),i&&(e|=j),l=new f(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;L=new f(4+d);const u=Ys(L);Ks(u,0,o==Ws?30837:30805),Ks(u,2,d),qs(u,4,1),qs(u,5,e.length);let p=6;Gs(L,e,p),p+=e.length,qs(u,p,c.length),p++,Gs(L,c,p),p+=c.length,Gs(L,l,p)}}catch{L=new f}A===Q&&(A=U?8:0),c&&(v=v>45?v:45),b&&!l&&(v=v>51?v:51,B[9]=A,A=99);const H=_?Js(T):0,P=H+Js(B,I,N,L,h),{headerArray:V,headerView:X,rawLastModDate:$}=Qs({version:v,bitFlag:$s(o,d,u,b,A),compressionMethod:A,uncompressedSize:k,lastModDate:J>r?J:r>Y?Y:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:P});let ee=G;const te=new f(ee+Js(t)+P),re=Ys(te);return js(re,0,W),Gs(te,V,4),Gs(te,t,ee),ee+=Js(t),_&&Gs(te,T,ee),ee+=H,Gs(te,B,ee),ee+=Js(B),Gs(te,I,ee),ee+=Js(I),Gs(te,N,ee),ee+=Js(N),Gs(te,L,ee),ee+=Js(L),Gs(te,h,ee),u&&(js(re,18,0),js(re,22,0)),{localHeaderArray:te,localHeaderView:re,headerArray:V,headerView:X,lastModDate:r,rawLastModDate:$,encrypted:b,compressed:U,version:v,compressionMethod:A,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:R,localExtraFieldZip64Length:H,rawExtraFieldExtendedTimestamp:I,rawExtraFieldNTFS:N,rawExtraFieldUnix:L,rawExtraFieldAES:B,extraFieldLength:P}})(c=r.assign({},c,{rawFilename:I,rawComment:L,version:H,versionMadeBy:d,lastModDate:P,lastAccessDate:ee,creationDate:te,rawExtraField:Fe,zip64:xe,zip64UncompressedSize:Ce,zip64CompressedSize:Me,zip64Offset:We,zip64DiskNumberStart:_e,password:ne,rawPassword:ae,level:be,useWebWorkers:ue,transferStreams:pe,encryptionStrength:oe,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:fe,createTempStream:he,keepOrder:de,useUnicodeFileNames:ge,dataDescriptor:Se,dataDescriptorSignature:we,signal:me,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:A,externalFileAttributes:A,useCompressionStream:ze,passThrough:se,encrypted:!!(ne&&Js(ne)||ae&&Js(ae))||se&&Be,signature:c[Vr],compressionMethod:ye,uncompressedSize:ve,offset:e.offset-Ue,diskNumberStart:Re,uid:w,gid:g,setuid:S,setgid:x,sticky:F,unixMode:b,msdosAttributesRaw:D,msdosAttributes:E,unixExternalUpper:R})),Ie=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=Ys(n),r&&(a=4,js(s,0,B))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Oe=Js(Ne.localHeaderArray,Ie.dataDescriptorArray);let Le;Ee=Oe+De,e.options[cs]&&(Ee+=Ee+64),e.pendingEntriesSize+=Ee;try{Le=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:d,dataDescriptor:u,signal:h}=o,{headerInfo:w}=i,m=e.options[cs],g=t.from(c.values()).pop();let b,z,S,x,F,D,E={};c.set(s,E);try{let t;d&&(t=g&&g.lock,E.lock=new y(e=>S=e)),!o.bufferedWrite&&d&&!e.writerLocked&&!e.bufferedWrites&&u||m?(D=l,await v()):(D=o.createTempStream?await o.createTempStream():new k(Q,Q,{highWaterMark:$}),D.size=0,b=!0,e.bufferedWrites++,await Pe(l)),await Pe(D);const{writable:z,diskOffset:U}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);js(Ys(t),0,_),await Hs(l,t),e.offset+=4}m&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=Ys(s),i=64-(t+Js(s))%64;4>i&&(i+=64);const o=new f(i),c=Ys(o);Ks(c,0,6534),Ks(c,2,i-2);const l=s;r.localHeaderArray=s=new f(Js(l)+i),Gs(s,l),Gs(s,o,Js(l)),a=Ys(s),Ks(a,28,n+i),e.metadataSize+=i})(i,e.offset-U);const{localHeaderView:R,localHeaderArray:C}=w;b||(await t,await A(z));const{diskNumber:W}=l;E.diskNumberStart=W,b||(F=!0,await Hs(D,C)),E=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:f,lastModDate:h,rawLastModDate:w,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:F,rawExtraFieldNTFS:k,rawExtraFieldUnix:D,rawExtraFieldAES:E}=l,{dataDescriptorArray:v}=d,{rawFilename:A,lastAccessDate:U,creationDate:R,password:T,rawPassword:C,level:W,zip64:_,zip64UncompressedSize:B,zip64CompressedSize:N,zip64Offset:I,zip64DiskNumberStart:O,zipCrypto:L,dataDescriptor:H,directory:Z,executable:P,versionMadeBy:V,rawComment:q,rawExtraField:K,useWebWorkers:j,transferStreams:X,onstart:G,onprogress:Y,onend:J,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,uid:ae,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:pe,msdosAttributesRaw:fe,msdosAttributes:he,useCompressionStream:we,passThrough:me}=c,ge={lock:n,versionMadeBy:V,zip64:_,directory:!!Z,executable:!!P,filenameUTF8:!0,rawFilename:A,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:k,rawExtraFieldUnix:D,rawExtraFieldAES:E,rawExtraField:K,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:se,externalFileAttributes:ne,diskNumberStart:s,uid:ae,gid:oe,unixMode:ce,setuid:le,setgid:de,sticky:ue,unixExternalUpper:pe,msdosAttributesRaw:fe,msdosAttributes:he};let{signature:ye,uncompressedSize:be}=c,ze=0;me||(be=0);const{writable:Se}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:Gt,level:W,rawPassword:C,password:T,encryptionStrength:ee,zipCrypto:m&&L,passwordVerification:m&&L&&w>>8&M,signed:!me,compressed:g&&!me,encrypted:m&&!me,useWebWorkers:j,useCompressionStream:we,transferStreams:X},config:o,streamOptions:{signal:$,size:s,onstart:G,onprogress:Y,onend:J}};try{const e=await hr({readable:r,writable:Se},n);ze=e.outputSize,t.size+=ze,me||(be=e.inputSize,ye=e.signature)}catch(e){throw e.outputSize!==Q&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===Q||(js(l,10,e),c&&js(u,p,e)),i?c&&(Xs(u,p+4,a(t)),Xs(u,p+12,a(r))):(js(l,14,t),js(l,18,r),c&&(js(u,p+4,t),js(u,p+8,r)))})({signature:ye,compressedSize:ze,uncompressedSize:be,headerInfo:l,dataDescriptorInfo:d},c),H&&await Hs(t,v),r.assign(ge,{uncompressedSize:be,compressedSize:ze,lastModDate:h,rawLastModDate:w,creationDate:R,lastAccessDate:U,encrypted:m,zipCrypto:L,size:u+ze,compressionMethod:b,version:y,headerArray:p,headerView:f,signature:ye,extraFieldExtendedTimestampFlag:F,zip64UncompressedSize:B,zip64CompressedSize:N,zip64Offset:I,zip64DiskNumberStart:O}),ge})(n,D,E,i,e.config,o);const{zip64:B}=E;if(b||(F=!1),c.set(s,E),E.filename=s,b?(await y.all([D.writable.getWriter().close(),t]),await v(),x=!0,E.diskNumberStart=l.diskNumber,E.offset=e.offset-l.diskOffset,B&&Ls(E),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||js(d,14,n),l||js(d,18,i),c||js(d,22,o)),r&&s){let t=G+Js(e)+4;c&&(Xs(d,t,a(o)),t+=8),l&&(Xs(d,t,a(i)),t+=8)}})(E,R,o),await A(z),await Hs(l,C),await D.readable.pipeTo(z,{preventClose:!0,preventAbort:!0,signal:h}),l.size+=D.size,x=!1):(E.offset=e.offset-U,B&&Ls(E)),E.offset>T&&!B)throw new p(Cs);return e.offset+=E.size,E}catch(t){if(x||F){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}b?e.offset+=D.size:e.offset=D.size}throw c.delete(s),t}finally{b&&e.bufferedWrites--,S&&S(),z&&z()}async function v(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>z=()=>{e.writerLocked=!1,t()}),await t}async function A(e){Js(w.localHeaderArray)>l.availableSize&&(l.availableSize=0,await Hs(e,new f))}})(e,s,n,{headerInfo:Ne,dataDescriptorInfo:Ie,metadataSize:Oe},c)}finally{e.pendingEntriesSize-=Ee}return r.assign(Le,{name:s,comment:O,extraField:ke}),new Jr(Le)})(c,e,s,n),l.add(u),await u}catch(t){throw c.filenames.delete(e),t}finally{l.delete(u);const e=Ns.shift();e?e():Bs--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,h=e.offset-c,w=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:p}=e;let h;if(l){h=new f(9);const e=Ys(h);Ks(e,0,Z),Ks(e,2,5),qs(e,4,d),js(e,5,i.floor(p.getTime()/1e3))}else h=new f;e.rawExtraFieldExtendedTimestamp=h,u+=46+Js(t,n,r,s,a,o,h,c)}const m=new f(u),g=Ys(m);await Pe(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:p,rawExtraField:f,rawComment:h,versionMadeBy:w,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:F,zip64DiskNumberStart:k,zip64Offset:D,internalFileAttributes:E,externalFileAttributes:v,diskNumberStart:A,uncompressedSize:U,compressedSize:R}=r,M=Js(i,c,l,u,p,f);js(g,d,N),Ks(g,d+4,w),x||js(z,18,U),F||js(z,14,R),Gs(m,b,d+6);let W=d+G;if(Ks(g,W,M),W+=2,Ks(g,W,Js(h)),W+=2,Ks(g,W,S&&k?C:A),W+=2,Ks(g,W,E),W+=2,v&&js(g,W,v),W+=4,js(g,W,S&&D?T:t),W+=4,Gs(m,a,W),W+=Js(a),Gs(m,i,W),W+=Js(i),Gs(m,c,W),W+=Js(c),Gs(m,l,W),W+=Js(l),Gs(m,u,W),W+=Js(u),Gs(m,p,W),W+=Js(p),Gs(m,f,W),W+=Js(f),Gs(m,h,W),W+=Js(h),d-y>o.availableSize&&(o.availableSize=0,await Hs(o,m.slice(y,d)),y=d),d=W,s.onprogress)try{await s.onprogress(e+1,n.size,new Jr(r))}catch{}}await Hs(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=Ps(e,s,Br);if(h>T||u>T||w>C||b>C){if(!1===S)throw new p(Cs);S=!0}const x=new f(S?98:H),F=Ys(x);d=0,S&&(js(F,0,O),Xs(F,4,a(44)),Ks(F,12,45),Ks(F,14,45),js(F,16,b),js(F,20,l),Xs(F,24,a(w)),Xs(F,32,a(w)),Xs(F,40,a(u)),Xs(F,48,a(h)),js(F,56,L),Xs(F,64,a(h)+a(u)),js(F,72,b+1),Ps(e,s,is,!0)&&(b=C,l=C),w=C,h=T,u=T,d+=76),js(F,d,I),Ks(F,d+4,b),Ks(F,d+6,l),Ks(F,d+8,w),Ks(F,d+10,w),js(F,d+12,u),js(F,d+16,h);const k=Js(r);if(k){if(k>C)throw new p("Zip file comment exceeds 64KB");Ks(F,d+20,k)}await Hs(o,x),k&&await Hs(o,r)})(this,e,r),Ps(this,r,as)||await o.getWriter().close(),n.getData?n.getData():o}}function Os(e){if(e===Q)return new f;{const t=new f(4);Ys(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Ls({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=Ys(l);let u=4;n&&(Xs(d,u,a(t)),u+=8),i&&(Xs(d,u,a(e)),u+=8),o&&(Xs(d,u,a(r)),u+=8),c&&js(d,u,s)}async function Hs(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=Js(t),await s.write(t)}finally{s.releaseLock()}}function Zs(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Ps(e,t,r,s){const n=t[r]===Q?e.options[r]:t[r];return n===Q?s:n}function Vs(e){return e+5*(i.floor(e/16383)+1)}function qs(e,t,r){e.setUint8(t,r)}function Ks(e,t,r){e.setUint16(t,r,!0)}function js(e,t,r){e.setUint32(t,r,!0)}function Xs(e,t,r){e.setBigUint64(t,r,!0)}function Gs(e,t,r){e.set(t,r)}function Ys(e){return new m(e.buffer)}function Js(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function Qs({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new f(26),u=Ys(d);Ks(u,0,e),Ks(u,2,t),Ks(u,4,r);const p=new w(1),h=Ys(p);Ks(h,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),Ks(h,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=p[0];return js(u,6,m),(o||n!==Q)&&js(u,14,o?T:n),(c||s!==Q)&&js(u,18,c?T:s),Ks(u,22,Js(i)),Ks(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function $s(e,t,r,s,n){let a=0;return t&&(a|=P),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}class en{constructor(e,t,s,n){const a=this;if(e.root&&n&&n.getChildByName(t))throw new p("Entry filename already exists");s||(s={}),r.assign(a,{fs:e,name:t,data:s.data,options:s.options,id:e.entries.length,parent:n,children:[],uncompressedSize:s.uncompressedSize||0,passThrough:s.passThrough}),e.entries.push(a),n&&a.parent.children.push(a)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new p("Entry filename already exists");this.name=e}}class tn extends en{constructor(e,t,r,s){super(e,t,r,s);const n=this;n.Reader=r.Reader,n.Writer=r.Writer,r.getData&&(n.getData=r.getData)}clone(){return new tn(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const s=r.reader=new r.Reader(r.data,t),n=r.data?r.data.uncompressedSize:s.size;await y.all([Pe(s),Pe(e,n)]);const{readable:a}=s;return r.uncompressedSize=s.size,await a.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return this.data.encrypted}async checkPassword(e,t={}){const r=this;if(!r.isPasswordProtected())return!0;t.password=e,t.checkPasswordOnly=!0;try{return await r.data.getData(null,t),!0}catch(e){if(e.message==tt)return!1;throw e}}getText(e,t){return this.getData(new xe(e),t)}getBlob(e,t){return this.getData(new ze(e),t)}getData64URI(e,t){return this.getData(new ye(e),t)}getUint8Array(e){return this.getData(new Ie,e)}getWritable(e=new E,t){return this.getData({writable:e},t)}getArrayBuffer(e){return this.data.arrayBuffer(e)}replaceBlob(e){r.assign(this,{data:e,Reader:be,Writer:ze,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:Se,Writer:xe,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:ge,Writer:ye,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Ne,Writer:Ie,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:()=>({readable:e}),Writer:null,reader:null})}}class rn extends en{constructor(e,t,r,s){super(e,t,r,s),this.directory=!0}clone(e){const t=this,r=new rn(t.fs,t.name);return e&&(r.children=t.children.map(t=>{const s=t.clone(e);return s.parent=r,s})),r}addDirectory(e,t){return un(this,e,{options:t},!0)}addText(e,t,r={}){return un(this,e,{data:t,Reader:Se,Writer:xe,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return un(this,e,{data:t,Reader:be,Writer:ze,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let s=t.length;for(;"="==t.charAt(s-1);)s--;const n=t.indexOf(",")+1;return un(this,e,{data:t,Reader:ge,Writer:ye,options:r,uncompressedSize:i.floor(.75*(s-n))})}addUint8Array(e,t,r={}){return un(this,e,{data:t,Reader:Ne,Writer:Ie,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return un(this,e,{data:t,Reader:class extends Be{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return un(this,e,{Reader:()=>({readable:t}),options:r})}addFileSystemEntry(e,t={}){return cn(this,e,t)}addFileSystemHandle(e,t={}){return cn(this,e,t)}addFile(e,t={}){return t.lastModDate||(t.lastModDate=new o(e.lastModified)),un(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}addData(e,t){return un(this,e,t)}importBlob(e,t){return this.importZip(new be(e),t)}importData64URI(e,t){return this.importZip(new ge(e),t)}importUint8Array(e,t){return this.importZip(new Ne(e),t)}importHttpContent(e,t){return this.importZip(new Be(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new ze(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new ye(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Ie,e)}async exportWritable(e=new E,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await Pe(e);const s=new ms(e,t),n=[],a=await s.getEntries();for(const e of a){let s=this;try{const a=e.filename.split("/"),i=a.pop();a.forEach((t,r)=>{const i=s;s=s.getChildByName(t),s||(s=new rn(this.fs,t,{data:r==a.length-1?e:null},i),n.push(s))}),e.directory||n.push(un(s,i,{data:e,Reader:nn(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return n}async exportZip(e,s){const n=this;s.bufferedWrite===Q&&(s.bufferedWrite=!0),await y.all([an(n,s.readerOptions),Pe(e)]);const a=new Is(e,s);return await(async(e,s,n,a)=>{const i=s,o=new c;await async function e(s,c){async function l(c){const l=a.relativePath?c.getRelativeName(i):c.getFullname(),d=c.options||{};let u={};if(c.data instanceof Jr){const{externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i,uncompressedSize:o,encrypted:l,zipCrypto:d,signature:p,compressionMethod:f,extraFieldAES:h}=c.data;if(u={externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i},c.passThrough){let e,t;0===f&&(e=0),h&&(t=h.strength),u=r.assign(u,{passThrough:!0,encrypted:l,zipCrypto:d,signature:p,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await s.add(l,c.reader,r.assign({},a,u,d,{directory:c.directory,onprogress:async e=>{if(a.onprogress){o.set(l,e);try{await a.onprogress(t.from(o.values()).reduce((e,t)=>e+t),n)}catch{}}}})),await e(s,c)}await(async()=>{if(a.bufferedWrite)await y.allSettled(c.children.map(l));else for(const e of c.children)await l(e)})()}(e,s)})(a,n,(e=>{let t=0;return e.forEach(function e(r){t+=r.uncompressedSize,r.children&&r.children.forEach(e)}),t})([n]),s),await a.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const s=t[r];if(s.name==e)return s}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await y.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const sn={FS:class{constructor(){dn(this)}get children(){return this.root.children}remove(e){on(e),this.entries[e.id]=null}move(e,t){if(e==this.root)throw new p("Root directory cannot be moved");if(!t.directory)throw new p("Target entry is not a directory");if(t.isDescendantOf(e))throw new p("Entry is a ancestor of target entry");if(e!=t){if(t.getChildByName(e.name))throw new p("Entry filename already exists");on(e),e.parent=t,t.children.push(e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return dn(this),this.root.importBlob(e,t)}importData64URI(e,t){return dn(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return dn(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return dn(this),this.root.importHttpContent(e,t)}importReadable(e,t){return dn(this),this.root.importReadable(e,t)}importZip(e,t){return this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:rn,ZipFileEntry:tn};function nn(e){return class extends we{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const s=await t.entry.getData(new ze,r.assign({},t.options,e));t.data=s,t.blobReader=new be(s),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function an(e,t){e.children.length&&await y.all(e.children.map(async e=>{if(e.directory)await an(e,t);else{const r=e.reader=new e.Reader(e.data,t);try{await Pe(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}e.uncompressedSize=r.size}}))}function on(e){if(e.parent){const t=e.parent.children;t.forEach((r,s)=>{r.id==e.id&&t.splice(s,1)})}}function cn(e,t,s){return async function e(t,n,a){if(n)try{if((n.isFile||n.isDirectory)&&(n=await ln(n)),"file"==n.kind){const e=await n.getFile();a.push(t.addData(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},s),uncompressedSize:e.size}))}else if("directory"==n.kind){const r=t.addDirectory(n.name);a.push(r);for await(const t of n.values())await e(r,t,a)}}catch(e){const t=e.message+(n?" ("+n.name+")":"");throw new p(t)}return a}(e,t,[])}async function ln(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new y((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,s,n){e.readEntries(async a=>{if(a.length){for(const e of a)t.push(await ln(e));r(e,s,n)}else s(t)},n)}return await new y((t,s)=>r(e.createReader(),t,s)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function dn(e){e.entries=[],e.root=new rn(e)}function un(e,t,r,s){if(e.directory)return s?new rn(e.fs,t,r,e):new tn(e.fs,t,r,e);throw new p("Parent entry is not a directory")}e.fs=sn});
|
|
1
|
+
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:h,Uint32Array:w,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:F,TransformStream:D,ReadableStream:k,WritableStream:E,CompressionStream:v,DecompressionStream:A,navigator:U,Worker:R}="undefined"!=typeof globalThis?globalThis:this||self,T=4294967295,C=65535,M=255,W=67324752,_=134695760,B=_,I=33639248,N=101010256,O=101075792,L=117853008,H=22,Z=21589,P=2048,V=16384,q=2048,K=1024,j=512,X="/",G=30,Y=new o(2107,11,31),J=new o(1980,0,1),Q=void 0,$=1/0,ee="undefined",te="function";let re=2;try{typeof U!=ee&&U.hardwareConcurrency&&(re=U.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof v!=ee&&v,DecompressionStream:typeof A!=ee&&A},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}const oe="HTTP error ",ce="HTTP Range not supported",le="Range",de="GET",ue="bytes",pe=65536,fe="writable";class he{constructor(){this.size=0}init(){this.initialized=!0}}class we extends he{get readable(){const e=this,{chunkSize:t=pe}=e,r=new k({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===Q?t:i.min(t,a-c),d=await Ve(e,n+c,l,o);s.enqueue(d),c+t>a||a===Q&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class me extends he{constructor(){super();const e=this,t=new E({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,fe,{get:()=>t})}writeUint8Array(){}}class ge extends we{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}}class ye extends me{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=F(n):t.pending+=n)}getData(){return this.data+F(this.pending)}}class be extends we{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class ze extends he{constructor(e){super();const t=new D,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,fe,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class Se extends be{constructor(e){super(new g([e],{type:"text/plain"}))}}class xe extends ze{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}}class Fe extends we{constructor(e,t){super(),ke(this,e,t)}async init(){await Ee(this,We,Re),super.init()}readUint8Array(e,t){return ve(this,e,t,We,Re)}}class De extends we{constructor(e,t){super(),ke(this,e,t)}async init(){await Ee(this,_e,Te),super.init()}readUint8Array(e,t){return ve(this,e,t,_e,Te)}}function ke(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function Ee(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(de,e,Ae(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==ue))throw new p(ce);{let a;c&&(e.eocdCache=new f(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===Q?await Me(e,t,r):e.size=a}}else await Me(e,t,r)}async function ve(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(de,e,Ae(e,t,r));if(206!=n.status)throw new p(ce);return new f(await n.arrayBuffer())}return new f}{const{data:s}=e;return s||await n(e,l),new f(e.data.subarray(t,t+r))}}function Ae(e,t=0,s=1){return r.assign({},Ue(e),{[le]:ue+"="+(0>t?t:t+"-"+(t+s-1))})}function Ue({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Re(e){await Ce(e,We)}async function Te(e){await Ce(e,_e)}async function Ce(e,t){const r=await t(de,e,Ue(e));e.data=new f(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function Me(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,Ue(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function We(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new p(ce):new p(oe+(a.statusText||a.status))}function _e(e,{url:t},s){return new y((n,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(ce):new p(oe+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class Be extends we{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new De(e,t):new Fe(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Ie extends we{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class Ne extends me{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const s=t.array;t.array=new f(e),t.array.set(s)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}}class Oe extends we{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await Ve(l,c,i);a.set(o,0);const d=await s.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Ve(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class Le extends he{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new E({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await Pe(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,fe,{get:()=>o})}}class He{constructor(e){return t.isArray(e)&&(e=new Oe(e)),e instanceof k&&(e={readable:e}),e}}class Ze{constructor(e){return e.writable===Q&&typeof e.next==te&&(e=new Le(e)),e instanceof E&&(e={writable:e}),e.size===Q&&(e.size=0),e instanceof Le||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:$,maxSize:$}),e}}async function Pe(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Ve(e,t,r,s){return e.readUint8Array(t,r,s)}const qe=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;qe[e]=t}class Ke{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^qe[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class je extends D{constructor(){let e;const t=new Ke;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function Xe(e){if(typeof b==ee){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const Ge={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=Ge.getPartial(r);return 32===s?e.concat(t):Ge._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+Ge.getPartial(r)},clamp(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=Ge.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=Ge.getPartial(n);return s.push(Ge.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},Ye={bytes:{fromBits(e){const t=Ge.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(Ge.partial(8*(3&r),s)),t}}},Je=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=Ye.utf8String.toBits(e));const r=t._buffer=Ge.concat(t._buffer,e),s=t._length,n=t._length=s+Ge.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new w(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=Ge.concat(t,[Ge.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},Qe={getRandomValues(e){const t=new w(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},$e={importKey:e=>new $e.hmacSha1(Ye.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const h=Ge;for(t=Ye.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(h.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=Je,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},et=typeof x!=ee&&typeof x.getRandomValues==te,tt="Invalid password",rt="Invalid signature",st="zipjs-abort-check-password";function nt(e){return et?x.getRandomValues(e):Qe.getRandomValues(e)}const at=16,it={name:"PBKDF2"},ot=r.assign({hash:{name:"HMAC"}},it),ct=r.assign({iterations:1e3,hash:{name:"SHA-1"}},it),lt=["deriveBits"],dt=[8,12,16],ut=[16,24,32],pt=10,ft=[0,0,0,0],ht=typeof x!=ee,wt=ht&&x.subtle,mt=ht&&typeof wt!=ee,gt=Ye.bytes,yt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,h,w=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[w>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&w]^r[b+1],h=i[g>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[w>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,w=u,m=f,g=h;for(let e=0;4>e;e++)n[t?3&-e:e]=d[w>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=w,w=m,m=g,g=y,y=u;return n}},bt=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=Ge.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return Ge.clamp(t,n)}},zt=$e.hmacSha1;let St=ht&&mt&&typeof wt.importKey==te,xt=ht&&mt&&typeof wt.deriveBits==te;class Ft extends D{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),signed:s,strength:n-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Et(e,t,r,Ut(s,0,dt[t])),a=Ut(s,dt[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(tt)})(r,n,s,Ut(e,0,dt[n]+2)),e=Ut(e,dt[n]+2),a?t.error(new p(st)):i()):await o;const c=new f(e.length-pt-(e.length-pt)%at);t.enqueue(kt(r,e,c,0,pt,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=Ut(n,0,n.length-pt),o=Ut(n,n.length-pt);let c=new f;if(i.length){const e=Tt(gt,i);s.update(e);const t=r.update(e);c=Rt(gt,t)}if(t){const e=Ut(Rt(gt,s.digest()),0,pt);for(let t=0;pt>t;t++)if(e[t]!=o[t])throw new p(rt)}e.enqueue(c)}}})}}class Dt extends D{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:vt(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=nt(new f(dt[t]));return At(s,await Et(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%at);c.set(o,0),t.enqueue(kt(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Tt(gt,s));r.update(e),i=Rt(gt,e)}n.signature=Rt(gt,r.digest()).slice(0,pt),e.enqueue(At(i,n.signature))}}}),n=this}}function kt(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=At(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,l-l%at)),d=0;l-at>=d;d+=at){const e=Tt(gt,Ut(t,d,d+at));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Rt(gt,n),d+s)}return e.pending=Ut(t,d),r}async function Et(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!St)return $e.importKey(t);try{return await wt.importKey("raw",t,r,!1,n)}catch{return St=!1,$e.importKey(t)}})(0,n,ot,0,lt),o=await(async(e,t,r)=>{if(!xt)return $e.pbkdf2(t,e.salt,ct.iterations,r);try{return await wt.deriveBits(e,t,r)}catch{return xt=!1,$e.pbkdf2(t,e.salt,ct.iterations,r)}})(r.assign({salt:a},ct),i,8*(2*ut[s]+2)),c=new f(o),l=Tt(gt,Ut(c,0,ut[s])),d=Tt(gt,Ut(c,ut[s],2*ut[s])),u=Ut(c,2*ut[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new bt(new yt(l),t.from(ft)),hmac:new zt(d)}),u}function vt(e,t){return t===Q?Xe(e):t}function At(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function Ut(e,t,r){return e.subarray(t,r)}function Rt(e,t){return e.fromBits(t)}function Tt(e,t){return e.toBits(t)}class Ct extends D{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),Bt(this,e)},transform(e,t){const r=this;if(r.password){const t=Wt(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new p(tt);e=e.subarray(12)}s?t.error(new p(st)):t.enqueue(Wt(r,e))}})}}class Mt extends D{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),Bt(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=nt(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set(_t(r,t),0),n=12}else s=new f(e.length),n=0;s.set(_t(r,e),n),t.enqueue(s)}})}}function Wt(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],It(e,r[s]);return r}function _t(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=Nt(e)^t[s],It(e,t[s]);return r}function Bt(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new Ke(s[0]),crcKey2:new Ke(s[2])});for(let r=0;r<t.length;r++)It(e,t.charCodeAt(r))}function It(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=Lt(i.imul(Lt(s+Ot(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function Nt(e){const t=2|e.keys[2];return Ot(i.imul(t,1^t)>>>8)}function Ot(e){return 255&e}function Lt(e){return 4294967295&e}const Ht="Invalid uncompressed size";class Zt extends D{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new je,f=Kt(f,u)),n&&(f=qt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=Kt(f,new Mt(e)):(p=new Dt(e),f=Kt(f,p))),Vt(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class Pt extends D{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,h=super.readable;a&&(n?h=Kt(h,new Ct(e)):(f=new Ft(e),h=Kt(h,f))),c&&(h=qt(h,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new je,h=Kt(h,u)),Vt(this,h,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(rt)}})}}function Vt(e,t,s){t=Kt(t,new D({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function qt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=Kt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=Kt(e,new n(o,r));else{if(!a)throw s;e=Kt(e,new a(o,r))}}return e}function Kt(e,t){return e.pipeThrough(t)}const jt="data",Xt="close",Gt="deflate",Yt="inflate";class Jt extends D{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(Gt)?a=Zt:n.startsWith(Yt)&&(a=Pt),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new D({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new D({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==Q&&s.outputSize>e.outputSize))throw new p(Ht)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Qt extends D{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new f(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}const $t={type:"module"};let er,tr,rr,sr=!0;try{sr=typeof structuredClone==te&&structuredClone(new DOMException("","AbortError")).code!==Q}catch{}class nr{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new Qt(a.chunkSize)).pipeThrough(new ar(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),er===Q&&(er=typeof R!=ee),(o&&er?cr:or)(e,a)}}class ar extends D{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await ir(e,r)},async transform(e,s){n+=e.length,t&&await ir(t,n,r),s.enqueue(e)},async flush(){s&&await ir(s,n)}})}}async function ir(e,...t){try{await e(...t)}catch{}}function or(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new Jt(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function cr(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=lr(e.workerURI,s,e)}catch{return er=!1,or(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{const{writable:t,readable:r}=new D;return{writable:t,closed:r.pipeTo(e,{preventClose:!0})}})(e.writable),d=dr({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function lr(e,t,s,n,a=!0){let i,o,c;if(tr===Q){const r=typeof e==te;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===Q&&(n=!1),n&&(c=$t);try{i=new R(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return lr(e,t,s,n,!1);if(n)throw a;return lr(e,t,s,!0,!1)}}else{n===Q&&(n=!0),n&&(c=$t);try{o=new u(o,t)}catch{}try{i=new R(o,c)}catch(r){if(n)throw r;return lr(e,t,s,!1,a)}}tr=o,rr=c}else i=new R(tr,rr);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:h}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),w(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();dr({type:jt,value:e,done:r,messageId:a},t)}s==jt&&(await l.ready,await l.write(new f(n)),dr({type:"ack",messageId:a},t)),s==Xt&&w(null,i)}}catch(o){dr({type:Xt,messageId:a},t),w(o)}function w(e,t){e?u(e):d(t),l&&l.releaseLock(),h()}})(e,s)),i}function dr(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&sr?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{sr=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let ur=[];const pr=[];let fr=0;async function hr(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===Q;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===Q&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:Q,r.useCompressionStream=o||o===Q&&s.useCompressionStream,(await(async()=>{const r=ur.find(e=>!e.busy);if(r)return wr(r),new nr(r,e,t,h);if(ur.length<p){const r={indexWorker:fr};return fr++,ur.push(r),new nr(r,e,t,h)}return new y(r=>pr.push({resolve:r,stream:e,workerOptions:t}))})()).run();function h(e){if(pr.length){const[{resolve:t,stream:r,workerOptions:s}]=pr.splice(0,1);t(new nr(e,r,s,h))}else e.worker?(wr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{ur=ur.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):ur=ur.filter(t=>t!=e)}}function wr(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const mr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function gr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=mr[e[r]];return t}})(e):new z(t).decode(e)}const yr="filename",br="rawFilename",zr="comment",Sr="rawComment",xr="uncompressedSize",Fr="compressedSize",Dr="offset",kr="diskNumberStart",Er="lastModDate",vr="rawLastModDate",Ar="lastAccessDate",Ur="creationDate",Rr="rawCreationDate",Tr="internalFileAttributes",Cr="externalFileAttributes",Mr="msdosAttributesRaw",Wr="msdosAttributes",_r="msDosCompatible",Br="zip64",Ir="encrypted",Nr="version",Or="versionMadeBy",Lr="zipCrypto",Hr="directory",Zr="executable",Pr="compressionMethod",Vr="signature",qr="extraField",Kr="unixMode",jr="setuid",Xr="setgid",Gr="sticky",Yr=[yr,br,xr,Fr,Er,vr,zr,Sr,Ar,Ur,Rr,Dr,kr,Tr,Cr,Mr,Wr,_r,Br,Ir,Nr,Or,Lr,Hr,Zr,Pr,Vr,qr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Kr,jr,Xr,Gr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Jr{constructor(e){Yr.forEach(t=>this[t]=e[t])}}const Qr="password",$r="rawPassword",es="passThrough",ts="signal",rs="useWebWorkers",ss="useCompressionStream",ns="transferStreams",as="preventClose",is="offset",os="usdz",cs="File format is not recognized",ls="Compression method not supported",ds="Split zip file",us="utf-8",ps="cp437",fs=[[xr,T],[Fr,T],[Dr,T],[kr,C]],hs={[C]:{getValue:vs,bytes:4},[T]:{getValue:As,bytes:8}};class ws{constructor(e,t={}){r.assign(this,{reader:new He(e),options:t,config:ae(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await Pe(s),s.size!==Q&&s.readUint8Array||(s=new be(await new d(s.readable).blob()),await Pe(s)),s.size<H)throw new p(cs);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,Us(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await Ve(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,N,s.size);if(!a)throw vs(Us(await Ve(s,0,4)))==_?new p(ds):new p("End of central directory not found");const o=Us(a);let c=vs(o,12),l=vs(o,16);const u=a.offset,h=Es(o,20),w=u+H+h;let m=Es(o,4);const g=s.lastDiskNumber||0;let b=Es(o,6),z=Es(o,8),S=0,x=0;if(l==T||c==T||z==C||b==C){const e=Us(await Ve(s,a.offset-20,20));if(vs(e,0)==L){l=As(e,8);let t=await Ve(s,l,56,-1),r=Us(t);const n=a.offset-20-56;if(vs(r,0)!=O&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await Ve(s,l,56,-1),r=Us(t)}if(vs(r,0)!=O)throw new p("End of Zip64 central directory locator not found");m==C&&(m=vs(r,16)),b==C&&(b=vs(r,20)),z==C&&(z=As(r,32)),c==T&&(c=As(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new p(ds);if(0>l)throw new p(cs);let F=0,k=await Ve(s,l,c,b),E=Us(k);if(c){const e=a.offset-c;if(vs(E,F)!=I&&l!=e){const t=l;l=e,l>t&&(S+=l-t),k=await Ve(s,l,c,b),E=Us(k)}}const v=a.offset-l-(s.lastDiskOffset||0);if(c==v||0>v||(c=v,k=await Ve(s,l,c,b),E=Us(k)),0>l||l>=s.size)throw new p(cs);const A=xs(t,e,"filenameEncoding"),U=xs(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new ms(s,n,t.options);if(vs(E,F)!=I)throw new p("Central directory header not found");gs(o,E,F+6);const c=!!o.bitFlag.languageEncodingFlag,l=F+46,u=l+o.filenameLength,f=u+o.extraFieldLength,h=Es(E,F+4),w=!(h>>8),m=h>>8==3,g=k.subarray(l,u),b=Es(E,F+32),v=f+b,R=k.subarray(f,v),T=c,W=c,_=vs(E,F+38),B=_&M,N={readOnly:!!(1&B),hidden:!!(2&B),system:!!(4&B),directory:!!(16&B),archive:!!(32&B)},O=vs(E,F+42)+S,L=xs(t,e,"decodeText")||gr,H=T?us:A||ps,Z=W?us:U||ps;let P=L(g,H);P===Q&&(P=gr(g,H));let G=L(R,Z);G===Q&&(G=gr(R,Z)),r.assign(o,{versionMadeBy:h,msDosCompatible:w,compressedSize:0,uncompressedSize:0,commentLength:b,offset:O,diskNumberStart:Es(E,F+34),internalFileAttributes:Es(E,F+36),externalFileAttributes:_,msdosAttributesRaw:B,msdosAttributes:N,rawFilename:g,filenameUTF8:T,commentUTF8:W,rawExtraField:k.subarray(u,f),rawComment:R,filename:P,comment:G}),x=i.max(O,x),ys(o,o,E,F+6);const Y=o.externalFileAttributes>>16&C;o.unixMode===Q&&16877&Y&&(o.unixMode=Y);const J=!!(o.unixMode&q),$=!!(o.unixMode&K),ee=!!(o.unixMode&j),te=o.unixMode!==Q?!!(73&o.unixMode):m&&!!(73&Y),re=o.unixMode!==Q&&(61440&o.unixMode)==V,se=(61440&Y)==V;r.assign(o,{setuid:J,setgid:$,sticky:ee,unixExternalUpper:Y,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||w&&N.directory||P.endsWith(X)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Jr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new D,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},F=v;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Jr(o))}catch{}yield ne}const R=xs(t,e,"extractPrependedData"),W=xs(t,e,"extractAppendedData");return R&&(t.prependedData=x>0?await Ve(s,0,x):new f),t.comment=h?await Ve(s,u+H,h):new f,W&&(t.appendedData=w<s.size?await Ve(s,w,s.size-w):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let ms=class{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:h,bitFlag:w,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=w,S=t.localDirectory={},x=Us(await Ve(i,o,G,c));let F=xs(a,n,Qr),D=xs(a,n,$r);const k=xs(a,n,es);if(F=F&&F.length&&F,D=D&&D.length&&D,l&&99!=l.originalCompressionMethod)throw new p(ls);if(0!=u&&8!=u&&9!=u&&!k)throw new p(ls);if(vs(x,0)!=W)throw new p("Local file header not found");gs(S,x,4);const{extraFieldLength:v,filenameLength:A,lastAccessDate:U,creationDate:R}=S;S.rawExtraField=v?await Ve(i,o+G+A,v,c):new f,ys(a,S,x,4,!0),r.assign(t,{lastAccessDate:U,creationDate:R});const T=a.encrypted&&S.encrypted&&!k,C=T&&!l;if(k||(t.zipCrypto=C),T){if(!C&&l.strength===Q)throw new p("Encryption method not supported");if(!F&&!D)throw new p("File contains encrypted entry")}const _=o+G+A+v,I=b,N=i.readable;r.assign(N,{diskNumberStart:c,offset:_,size:I});const O=xs(a,n,ts),L=xs(a,n,"checkPasswordOnly");let H=xs(a,n,"checkOverlappingEntry");const Z=xs(a,n,"checkOverlappingEntryOnly");Z&&(H=!0);const{onstart:P,onprogress:V,onend:q}=n,K=9==u;let j=xs(a,n,ss);K&&(j=!1);const X={options:{codecType:Yt,password:F,rawPassword:D,zipCrypto:C,encryptionStrength:l&&l.strength,signed:xs(a,n,"checkSignature")&&!k,passwordVerification:C&&(z?g>>>8&M:m>>>24&M),outputSize:k?b:y,signature:m,compressed:0!=u&&!k,encrypted:a.encrypted&&!k,useWebWorkers:xs(a,n,rs),useCompressionStream:j,transferStreams:xs(a,n,ns),deflate64:K,checkPasswordOnly:L},config:h,streamOptions:{signal:O,size:I,onstart:P,onprogress:V,onend:q}};let Y;H&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let f=0;if(c&&(f=l?20:12),f){const r=await Ve(e,o+a,f+4,s);if(vs(Us(r),0)==B){const e=vs(Us(r),4);let s,o;l?(s=As(Us(r),8),o=As(Us(r),16)):(s=vs(Us(r),8),o=vs(Us(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(f+=4)}}const h={start:u+r,end:u+o+a+f,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&h.start>=e.start&&h.start<e.end){const t=new p("Overlapping entry found");throw t.overlappingEntry=e.fileEntry,t}d.push(h)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:_,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!Z){L&&(e=new E),e=new Ze(e),await Pe(e,k?b:y),({writable:Y}=e);const{outputSize:t}=await hr({readable:N,writable:Y},X);if(e.size+=t,t!=(k?b:y))throw new p(Ht)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!L||t.message!=st)throw t}finally{xs(a,n,as)||!Y||Y.locked||await Y.getWriter().close()}return L||Z?Q:e.getData?e.getData():Y}};function gs(e,t,s){const n=e.rawBitFlag=Es(t,s+2),a=!(1&~n),i=vs(t,s+6);r.assign(e,{encrypted:a,version:Es(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&P)==P},rawLastModDate:i,lastModDate:Fs(i),filenameLength:Es(t,s+22),extraFieldLength:Es(t,s+24)})}function ys(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Us(new f(i));let u=0;try{for(;u<i.length;){const e=Es(d,u),t=Es(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const h=Es(s,n+4);r.assign(t,{signature:vs(s,n+10),compressedSize:vs(s,n+14),uncompressedSize:vs(s,n+18)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const r=Us(e.data),s=fs.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=hs[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new p("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const m=l.get(28789);m&&(bs(m,yr,br,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(bs(g,zr,Sr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=Us(e.data),a=ks(n,4);r.assign(e,{vendorVersion:ks(n,0),vendorId:ks(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Es(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,h),t.extraFieldAES=y):t.compressionMethod=h;const b=l.get(10);b&&(((e,t)=>{const s=Us(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Es(s,a),r=Es(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=Us(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Ds(a),lastAccessDate:Ds(i),creationDate:Ds(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)zs(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(zs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(Z);S&&(((e,t,r)=>{const s=Us(e.data),n=ks(s,0),a=[],i=[];r?(1&~n||(a.push(Er),i.push(vr)),2&~n||(a.push(Ar),i.push("rawLastAccessDate")),4&~n||(a.push(Ur),i.push(Rr))):5>e.data.length||(a.push(Er),i.push(vr));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=vs(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function bs(e,t,s,n,a){const i=Us(e.data),o=new Ke;o.append(a[s]);const c=Us(new f(4));c.setUint32(0,o.get(),!0);const l=vs(i,1);r.assign(e,{version:ks(i,0),[t]:gr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==vs(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function zs(e,t,s){try{const n=Us(new f(e.data));let a=0;const i=ks(n,a++),o=ks(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=Ss(c),d=ks(n,a++),u=e.data.subarray(a,a+d);a+=d;const p=Ss(u);let h=Q;if(!s&&a+2<=e.data.length){const t=e.data;h=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:p,unixMode:h}),l!==Q&&(t.uid=l),p!==Q&&(t.gid=p),h!==Q&&(t.unixMode=h)}catch{}}function Ss(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function xs(e,t,r){return t[r]===Q?e.options[r]:t[r]}function Fs(e){const t=(4294901760&e)>>16,r=e&C;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function Ds(e){return new o(n(e/a(1e4)-a(116444736e5)))}function ks(e,t){return e.getUint8(t)}function Es(e,t){return e.getUint16(t,!0)}function vs(e,t){return e.getUint32(t,!0)}function As(e,t){return n(e.getBigUint64(t,!0))}function Us(e){return new m(e.buffer)}const Rs="Version exceeds 65535",Ts="Zip64 is not supported (set the 'zip64' option to 'true')",Cs=new f([7,0,2,0,65,69,3,0,0]),Ms="infozip",Ws="unix";let _s=0;const Bs=[];class Is{constructor(e,t={}){const s=(e=new Ze(e)).availableSize!==Q&&e.availableSize>0&&e.availableSize!==$&&e.maxSize!==Q&&e.maxSize>0&&e.maxSize!==$;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[is]===Q?e.size||e.writable.size||0:t[is],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new p("Zip file not empty");e=new He(e);const t=new ws(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:p,diskNumber:h,zip64:w}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:F,dataDescriptor:D}=c;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=e.rawExtraFieldUnix||new f,S=S||new f;const k=Gs(m,g,y,b,z,S),E=w&&d>T,v=w&&u>T,{headerArray:A,headerView:U}=Ys({version:t,bitFlag:Js(x,F,D,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:v,zip64UncompressedSize:E,extraFieldLength:k});return r.assign(e,{zip64UncompressedSize:E,zip64CompressedSize:v,zip64Offset:w&&this.offset-p>T,zip64DiskNumberStart:w&&h>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:A,headerView:U}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:d}=c;let u;_s<d.maxWorkers?_s++:await new y(e=>Bs.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new p("File already exists");return c.filenames.add(e),u=(async(e,s,n,c)=>{s=s.trim();let l=Hs(e,c,_r),d=Hs(e,c,Or,l?20:768);const u=Hs(e,c,Zr),w=Hs(e,c,"uid"),g=Hs(e,c,"gid");let b=Hs(e,c,Kr);const z=Hs(e,c,"unixExtraFieldType");let S=Hs(e,c,jr),x=Hs(e,c,Xr),F=Hs(e,c,Gr);if(w!==Q&&(0>w||w>T))throw new p("Invalid uid (must be integer 0..2^32-1)");if(g!==Q&&(0>g||g>T))throw new p("Invalid gid (must be integer 0..2^32-1)");if(b!==Q&&(0>b||b>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(z!==Q&&z!==Ms&&z!==Ws)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let k=Hs(e,c,Mr),E=Hs(e,c,Wr);const v=k!==Q||E!==Q;if(w!==Q||g!==Q||b!==Q||z?(l=!1,d=d&C|768):v&&(l=!0,d&=M),k!==Q&&(0>k||k>M))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(E&&"object"!=typeof E)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(d>C)throw new p(Rs);let A=Hs(e,c,Cr,0);!c[Hr]&&s.endsWith(X)&&(c[Hr]=!0);const U=Hs(e,c,Hr);let R;U?(s.endsWith(X)||(s+=X),0===A&&(A=16,l||(A|=16877<<16))):l||0!==A||(A=u?493<<16:27525120),l||(R=A>>16&C,b=b===Q?R:b&C,S?b|=q:S=!!(b&q),x?b|=K:x=!!(b&K),F?b|=j:F=!!(b&j),U&&(b|=V),A=(b&C)<<16|A&M),({msdosAttributesRaw:k,msdosAttributes:E}=((e,t)=>{if(e!==Q)e&=M;else if(t!==Q){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&M}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(k,E)),v&&(A=A&T|k&M);const I=Hs(e,c,"encodeText",Xe);let N=I(s);if(N===Q&&(N=Xe(s)),Gs(N)>C)throw new p("File entry name exceeds 64KB");const O=c[zr]||"";let L=I(O);if(L===Q&&(L=Xe(O)),Gs(L)>C)throw new p("File entry comment exceeds 64KB");const H=Hs(e,c,Nr,20);if(H>C)throw new p(Rs);const P=Hs(e,c,Er,new o),ee=Hs(e,c,Ar),te=Hs(e,c,Ur),re=Hs(e,c,Tr,0),se=Hs(e,c,es);let ne,ae;se||(ne=Hs(e,c,Qr),ae=Hs(e,c,$r));const oe=Hs(e,c,"encryptionStrength",3),ce=Hs(e,c,Lr),le=Hs(e,c,"extendedTimestamp",!0),de=Hs(e,c,"keepOrder",!0),ue=Hs(e,c,rs),pe=Hs(e,c,ns,!0),fe=Hs(e,c,"bufferedWrite"),he=Hs(e,c,"createTempStream"),we=Hs(e,c,"dataDescriptorSignature",!1),me=Hs(e,c,ts),ge=Hs(e,c,"useUnicodeFileNames",!0),ye=Hs(e,c,Pr);let be=Hs(e,c,"level"),ze=Hs(e,c,ss),Se=Hs(e,c,"dataDescriptor");fe&&Se===Q&&(Se=!1),(Se===Q||ce)&&(Se=!0),be!==Q&&6!=be&&(ze=!1),ze||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(be=0);let xe=Hs(e,c,Br);if(!ce&&(ne!==Q||ae!==Q)&&(1>oe||oe>3))throw new p("The strength must equal 1, 2, or 3");let Fe=new f;const De=c[qr];if(De){let e=0,t=0;De.forEach(t=>e+=4+Gs(t)),Fe=new f(e),De.forEach((e,r)=>{if(r>C)throw new p("Extra field type exceeds 65535");if(Gs(e)>C)throw new p("Extra field data exceeds 64KB");js(Fe,new h([r]),t),js(Fe,new h([Gs(e)]),t+2),js(Fe,e,t+4),t+=4+Gs(e)})}let ke=0,Ee=0,ve=0;if(se&&(ve=c[xr],ve===Q))throw new p("Undefined uncompressed size");const Ae=!0===xe;n&&(n=new He(n),await Pe(n),se?(c.uncompressedSize=ve,ke=Zs(ve)):n.size===Q?(Se=!0,(xe||xe===Q)&&(xe=!0,ve=ke=4294967296)):(c.uncompressedSize=ve=n.size,ke=Zs(ve)));const{diskOffset:Ue,diskNumber:Re}=e.writer,Te=Ae||ve>T,Ce=Ae||ke>T;if(Te||Ce){if(!1===xe)throw new p(Ts);xe=!0}xe=xe||!1;const Me=Hs(e,c,Ir),We=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:p,rawExtraField:h,encryptionStrength:w,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,uncompressedSize:x}=e;let{version:F,compressionMethod:D}=e;const k=!p&&(o>0||o===Q&&0!==D);let E;const v=y||!k,A=c&&(e.bufferedWrite||!z&&!S||v);if(c){let e=4;z&&(e+=8),S&&(e+=8),E=new f(e);const t=Xs(E);if(Vs(t,0,1),Vs(t,2,Gs(E)-4),A){const e=Xs(E);let t=4;z&&(Ks(e,t,a(x)),t+=8),S&&v&&(Ks(e,t,a(x)),t+=8),4==t&&(E=new f)}}else E=new f;let U,R,T,M,_;if(b&&!l){U=new f(Gs(Cs)+2);const e=Xs(U);Vs(e,0,39169),js(U,Cs,2),Ps(e,8,w)}else U=new f;if(g){T=new f(9+(s?4:0)+(n?4:0));const e=Xs(T);Vs(e,0,Z),Vs(e,2,Gs(T)-4),M=1+(s?2:0)+(n?4:0),Ps(e,4,M);let t=5;qs(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(qs(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&qs(e,t,i.floor(n.getTime()/1e3));try{R=new f(36);const e=Xs(R),t=Ls(r);Vs(e,0,10),Vs(e,2,32),Vs(e,8,1),Vs(e,10,24),Ks(e,12,t),Ks(e,20,Ls(s)||t),Ks(e,28,Ls(n)||t)}catch{R=new f}}else R=T=new f;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===Q&&r===Q&&s===Q)_=new f;else{const e=Ns(t),c=Ns(r);let l=new f;if(o==Ws&&s!==Q){let e=s&C;n&&(e|=q),a&&(e|=K),i&&(e|=j),l=new f(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;_=new f(4+d);const u=Xs(_);Vs(u,0,o==Ms?30837:30805),Vs(u,2,d),Ps(u,4,1),Ps(u,5,e.length);let p=6;js(_,e,p),p+=e.length,Ps(u,p,c.length),p++,js(_,c,p),p+=c.length,js(_,l,p)}}catch{_=new f}D===Q&&(D=k?8:0),c&&(F=F>45?F:45),b&&!l&&(F=F>51?F:51,U[9]=D,D=99);const B=A?Gs(E):0,I=B+Gs(U,T,R,_,h),{headerArray:N,headerView:O,rawLastModDate:L}=Ys({version:F,bitFlag:Js(o,d,u,b,D),compressionMethod:D,uncompressedSize:x,lastModDate:J>r?J:r>Y?Y:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:I});let H=G;const P=new f(H+Gs(t)+I),V=Xs(P);return qs(V,0,W),js(P,N,4),js(P,t,H),H+=Gs(t),A&&js(P,E,H),H+=B,js(P,U,H),H+=Gs(U),js(P,T,H),H+=Gs(T),js(P,R,H),H+=Gs(R),js(P,_,H),H+=Gs(_),js(P,h,H),u&&(qs(V,18,0),qs(V,22,0)),{localHeaderArray:P,localHeaderView:V,headerArray:N,headerView:O,lastModDate:r,rawLastModDate:L,encrypted:b,compressed:k,version:F,compressionMethod:D,extraFieldExtendedTimestampFlag:M,rawExtraFieldZip64:new f,localExtraFieldZip64Length:B,rawExtraFieldExtendedTimestamp:T,rawExtraFieldNTFS:R,rawExtraFieldUnix:_,rawExtraFieldAES:U,extraFieldLength:I}})(c=r.assign({},c,{rawFilename:N,rawComment:L,version:H,versionMadeBy:d,lastModDate:P,lastAccessDate:ee,creationDate:te,rawExtraField:Fe,zip64:xe,zip64UncompressedSize:Te,zip64CompressedSize:Ce,password:ne,rawPassword:ae,level:be,useWebWorkers:ue,transferStreams:pe,encryptionStrength:oe,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:fe,createTempStream:he,keepOrder:de,useUnicodeFileNames:ge,dataDescriptor:Se,dataDescriptorSignature:we,signal:me,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:A,externalFileAttributes:A,useCompressionStream:ze,passThrough:se,encrypted:!!(ne&&Gs(ne)||ae&&Gs(ae))||se&&Me,signature:c[Vr],compressionMethod:ye,uncompressedSize:ve,offset:e.offset-Ue,diskNumberStart:Re,uid:w,gid:g,setuid:S,setgid:x,sticky:F,unixMode:b,msdosAttributesRaw:k,msdosAttributes:E,unixExternalUpper:R})),_e=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=Xs(n),r&&(a=4,qs(s,0,B))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Be=Gs(We.localHeaderArray,_e.dataDescriptorArray);let Ie;Ee=Be+ke,e.options[os]&&(Ee+=Ee+64),e.pendingEntriesSize+=Ee;try{Ie=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:d,dataDescriptor:u,signal:p}=o,{headerInfo:h}=i,w=e.options[os],m=t.from(c.values()).pop();let g,b,z,S,x,F,k={};c.set(s,k);try{let t;d&&(t=m&&m.lock,k.lock=new y(e=>z=e)),!o.bufferedWrite&&d&&!e.writerLocked&&!e.bufferedWrites&&u||w?(F=l,await E()):(F=o.createTempStream?await o.createTempStream():new D(Q,Q,{highWaterMark:$}),F.size=0,g=!0,e.bufferedWrites++,await Pe(l)),await Pe(F);const{writable:b,diskOffset:A}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);qs(Xs(t),0,_),await Os(l,t),e.offset+=4}w&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=Xs(s),i=64-(t+Gs(s))%64;4>i&&(i+=64);const o=new f(i),c=Xs(o);Vs(c,0,6534),Vs(c,2,i-2);const l=s;r.localHeaderArray=s=new f(Gs(l)+i),js(s,l),js(s,o,Gs(l)),a=Xs(s),Vs(a,28,n+i),e.metadataSize+=i})(i,e.offset-A);const{localHeaderView:U,localHeaderArray:R}=h;g||(await t,await v(b));const{diskNumber:T}=l;return k.diskNumberStart=T,g||(x=!0,await Os(F,R)),k=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:f,lastModDate:h,rawLastModDate:w,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:F,rawExtraFieldNTFS:D,rawExtraFieldUnix:k,rawExtraFieldAES:E}=l,{dataDescriptorArray:v}=d,{rawFilename:A,lastAccessDate:U,creationDate:R,password:T,rawPassword:C,level:W,zip64:_,zip64UncompressedSize:B,zip64CompressedSize:I,zipCrypto:N,dataDescriptor:O,directory:L,executable:H,versionMadeBy:Z,rawComment:P,rawExtraField:V,useWebWorkers:q,transferStreams:K,onstart:j,onprogress:X,onend:G,signal:Y,encryptionStrength:J,extendedTimestamp:$,msDosCompatible:ee,internalFileAttributes:te,externalFileAttributes:re,uid:se,gid:ne,unixMode:ae,setuid:oe,setgid:ce,sticky:le,unixExternalUpper:de,msdosAttributesRaw:ue,msdosAttributes:pe,useCompressionStream:fe,passThrough:he}=c,we={lock:n,versionMadeBy:Z,zip64:_,directory:!!L,executable:!!H,filenameUTF8:!0,rawFilename:A,commentUTF8:!0,rawComment:P,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:D,rawExtraFieldUnix:k,rawExtraFieldAES:E,rawExtraField:V,extendedTimestamp:$,msDosCompatible:ee,internalFileAttributes:te,externalFileAttributes:re,diskNumberStart:s,uid:se,gid:ne,unixMode:ae,setuid:oe,setgid:ce,sticky:le,unixExternalUpper:de,msdosAttributesRaw:ue,msdosAttributes:pe};let{signature:me,uncompressedSize:ge}=c,ye=0;he||(ge=0);const{writable:be}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:Gt,level:W,rawPassword:C,password:T,encryptionStrength:J,zipCrypto:m&&N,passwordVerification:m&&N&&w>>8&M,signed:!he,compressed:g&&!he,encrypted:m&&!he,useWebWorkers:q,useCompressionStream:fe,transferStreams:K},config:o,streamOptions:{signal:Y,size:s,onstart:j,onprogress:X,onend:G}};try{const e=await hr({readable:r,writable:be},n);ye=e.outputSize,t.size+=ye,he||(ge=e.inputSize,me=e.signature)}catch(e){throw e.outputSize!==Q&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===Q||(qs(l,10,e),c&&qs(u,p,e)),i?c&&(Ks(u,p+4,a(t)),Ks(u,p+12,a(r))):(qs(l,14,t),qs(l,18,r),c&&(qs(u,p+4,t),qs(u,p+8,r)))})({signature:me,compressedSize:ye,uncompressedSize:ge,headerInfo:l,dataDescriptorInfo:d},c),O&&await Os(t,v),r.assign(we,{uncompressedSize:ge,compressedSize:ye,lastModDate:h,rawLastModDate:w,creationDate:R,lastAccessDate:U,encrypted:m,zipCrypto:N,size:u+ye,compressionMethod:b,version:y,headerArray:p,headerView:f,signature:me,extraFieldExtendedTimestampFlag:F,zip64UncompressedSize:B,zip64CompressedSize:I}),we})(n,F,k,i,e.config,o),g||(x=!1),c.set(s,k),k.filename=s,g?(await y.all([F.writable.getWriter().close(),t]),await E(),S=!0,k.diskNumberStart=l.diskNumber,k.offset=e.offset-l.diskOffset,(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||qs(d,14,n),l||qs(d,18,i),c||qs(d,22,o)),r&&s){let t=G+Gs(e)+4;c&&(Ks(d,t,a(o)),t+=8),l&&(Ks(d,t,a(i)),t+=8)}})(k,U,o),await v(b),await Os(l,R),await F.readable.pipeTo(b,{preventClose:!0,preventAbort:!0,signal:p}),l.size+=F.size,S=!1):k.offset=e.offset-A,e.offset+=k.size,k}catch(t){if(S||x){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}g?e.offset+=F.size:e.offset=F.size}throw c.delete(s),t}finally{g&&e.bufferedWrites--,z&&z(),b&&b()}async function E(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>b=()=>{e.writerLocked=!1,t()}),await t}async function v(e){Gs(h.localHeaderArray)>l.availableSize&&(l.availableSize=0,await Os(e,new f))}})(e,s,n,{headerInfo:We,dataDescriptorInfo:_e,metadataSize:Be},c)}finally{e.pendingEntriesSize-=Ee}return r.assign(Ie,{name:s,comment:O,extraField:De}),new Jr(Ie)})(c,e,s,n),l.add(u),await u}catch(t){throw c.filenames.delete(e),t}finally{l.delete(u);const e=Bs.shift();e?e():_s--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,h=e.offset-c,w=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldAES:r,rawComment:s,rawExtraFieldNTFS:n,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:p,zip64UncompressedSize:h,zip64CompressedSize:w,uncompressedSize:m,compressedSize:g}=e,y=e.offset>T,b=e.diskNumberStart>C;let z,S;if(y||b||h||w){let t=4;h&&(t+=8),w&&(t+=8),y&&(t+=8),b&&(t+=4),z=new f(t);const r=Xs(z);Vs(r,0,1),Vs(r,2,t-4);let s=4;h&&(Ks(r,s,a(m)),s+=8),w&&(Ks(r,s,a(g)),s+=8),y&&(Ks(r,s,a(e.offset)),s+=8),b&&qs(r,s,e.diskNumberStart)}else z=new f;if(e.rawExtraFieldZip64=z,e.zip64Offset=y,e.zip64DiskNumberStart=b,l){S=new f(9);const e=Xs(S);Vs(e,0,Z),Vs(e,2,5),Ps(e,4,d),qs(e,5,i.floor(p.getTime()/1e3))}else S=new f;e.rawExtraFieldExtendedTimestamp=S,u+=46+Gs(t,s,z,r,n,o,S,c)}const m=new f(u),g=Xs(m);await Pe(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:p,rawExtraField:f,rawComment:h,versionMadeBy:w,headerArray:b,headerView:z,zip64UncompressedSize:S,zip64CompressedSize:x,zip64DiskNumberStart:F,zip64Offset:D,internalFileAttributes:k,externalFileAttributes:E,diskNumberStart:v,uncompressedSize:A,compressedSize:U}=r,R=Gs(i,c,l,u,p,f);qs(g,d,I),Vs(g,d+4,w),S||qs(z,18,A),x||qs(z,14,U),js(m,b,d+6);let M=d+G;if(Vs(g,M,R),M+=2,Vs(g,M,Gs(h)),M+=2,Vs(g,M,F?C:v),M+=2,Vs(g,M,k),M+=2,E&&qs(g,M,E),M+=4,qs(g,M,D?T:t),M+=4,js(m,a,M),M+=Gs(a),js(m,i,M),M+=Gs(i),js(m,c,M),M+=Gs(c),js(m,l,M),M+=Gs(l),js(m,u,M),M+=Gs(u),js(m,p,M),M+=Gs(p),js(m,f,M),M+=Gs(f),js(m,h,M),M+=Gs(h),d-y>o.availableSize&&(o.availableSize=0,await Os(o,m.slice(y,d)),y=d),d=M,s.onprogress)try{await s.onprogress(e+1,n.size,new Jr(r))}catch{}}await Os(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=Hs(e,s,Br);if(h>T||u>T||w>C||b>C){if(!1===S)throw new p(Ts);S=!0}const x=new f(S?98:H),F=Xs(x);d=0,S&&(qs(F,0,O),Ks(F,4,a(44)),Vs(F,12,45),Vs(F,14,45),qs(F,16,b),qs(F,20,l),Ks(F,24,a(w)),Ks(F,32,a(w)),Ks(F,40,a(u)),Ks(F,48,a(h)),qs(F,56,L),Ks(F,64,a(h)+a(u)),qs(F,72,b+1),Hs(e,s,"supportZip64SplitFile",!0)&&(b=C,l=C),w=C,h=T,u=T,d+=76),qs(F,d,N),Vs(F,d+4,b),Vs(F,d+6,l),Vs(F,d+8,w),Vs(F,d+10,w),qs(F,d+12,u),qs(F,d+16,h);const D=Gs(r);if(D){if(D>C)throw new p("Zip file comment exceeds 64KB");Vs(F,d+20,D)}await Os(o,x),D&&await Os(o,r)})(this,e,r),Hs(this,r,as)||await o.getWriter().close(),n.getData?n.getData():o}}function Ns(e){if(e===Q)return new f;{const t=new f(4);Xs(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}async function Os(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=Gs(t),await s.write(t)}finally{s.releaseLock()}}function Ls(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Hs(e,t,r,s){const n=t[r]===Q?e.options[r]:t[r];return n===Q?s:n}function Zs(e){return e+5*(i.floor(e/16383)+1)}function Ps(e,t,r){e.setUint8(t,r)}function Vs(e,t,r){e.setUint16(t,r,!0)}function qs(e,t,r){e.setUint32(t,r,!0)}function Ks(e,t,r){e.setBigUint64(t,r,!0)}function js(e,t,r){e.set(t,r)}function Xs(e){return new m(e.buffer)}function Gs(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function Ys({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new f(26),u=Xs(d);Vs(u,0,e),Vs(u,2,t),Vs(u,4,r);const p=new w(1),h=Xs(p);Vs(h,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),Vs(h,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=p[0];return qs(u,6,m),(o||n!==Q)&&qs(u,14,o?T:n),(c||s!==Q)&&qs(u,18,c?T:s),Vs(u,22,Gs(i)),Vs(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function Js(e,t,r,s,n){let a=0;return t&&(a|=P),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}class Qs{constructor(e,t,s,n){const a=this;if(e.root&&n&&n.getChildByName(t))throw new p("Entry filename already exists");s||(s={}),r.assign(a,{fs:e,name:t,data:s.data,options:s.options,id:e.entries.length,parent:n,children:[],uncompressedSize:s.uncompressedSize||0,passThrough:s.passThrough}),e.entries.push(a),n&&a.parent.children.push(a)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new p("Entry filename already exists");this.name=e}}class $s extends Qs{constructor(e,t,r,s){super(e,t,r,s);const n=this;n.Reader=r.Reader,n.Writer=r.Writer,r.getData&&(n.getData=r.getData)}clone(){return new $s(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const s=r.reader=new r.Reader(r.data,t),n=r.data?r.data.uncompressedSize:s.size;await y.all([Pe(s),Pe(e,n)]);const{readable:a}=s;return r.uncompressedSize=s.size,await a.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return this.data.encrypted}async checkPassword(e,t={}){const r=this;if(!r.isPasswordProtected())return!0;t.password=e,t.checkPasswordOnly=!0;try{return await r.data.getData(null,t),!0}catch(e){if(e.message==tt)return!1;throw e}}getText(e,t){return this.getData(new xe(e),t)}getBlob(e,t){return this.getData(new ze(e),t)}getData64URI(e,t){return this.getData(new ye(e),t)}getUint8Array(e){return this.getData(new Ne,e)}getWritable(e=new E,t){return this.getData({writable:e},t)}getArrayBuffer(e){return this.data.arrayBuffer(e)}replaceBlob(e){r.assign(this,{data:e,Reader:be,Writer:ze,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:Se,Writer:xe,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:ge,Writer:ye,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Ie,Writer:Ne,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:()=>({readable:e}),Writer:null,reader:null})}}class en extends Qs{constructor(e,t,r,s){super(e,t,r,s),this.directory=!0}clone(e){const t=this,r=new en(t.fs,t.name);return e&&(r.children=t.children.map(t=>{const s=t.clone(e);return s.parent=r,s})),r}addDirectory(e,t){return ln(this,e,{options:t},!0)}addText(e,t,r={}){return ln(this,e,{data:t,Reader:Se,Writer:xe,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return ln(this,e,{data:t,Reader:be,Writer:ze,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let s=t.length;for(;"="==t.charAt(s-1);)s--;const n=t.indexOf(",")+1;return ln(this,e,{data:t,Reader:ge,Writer:ye,options:r,uncompressedSize:i.floor(.75*(s-n))})}addUint8Array(e,t,r={}){return ln(this,e,{data:t,Reader:Ie,Writer:Ne,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return ln(this,e,{data:t,Reader:class extends Be{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return ln(this,e,{Reader:()=>({readable:t}),options:r})}addFileSystemEntry(e,t={}){return an(this,e,t)}addFileSystemHandle(e,t={}){return an(this,e,t)}addFile(e,t={}){return t.lastModDate||(t.lastModDate=new o(e.lastModified)),ln(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}addData(e,t){return ln(this,e,t)}importBlob(e,t){return this.importZip(new be(e),t)}importData64URI(e,t){return this.importZip(new ge(e),t)}importUint8Array(e,t){return this.importZip(new Ie(e),t)}importHttpContent(e,t){return this.importZip(new Be(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new ze(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new ye(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Ne,e)}async exportWritable(e=new E,t={}){return await this.exportZip({writable:e},t),e}async importZip(e,t={}){await Pe(e);const s=new ws(e,t),n=[],a=await s.getEntries();for(const e of a){let s=this;try{const a=e.filename.split("/"),i=a.pop();a.forEach((t,r)=>{const i=s;s=s.getChildByName(t),s||(s=new en(this.fs,t,{data:r==a.length-1?e:null},i),n.push(s))}),e.directory||n.push(ln(s,i,{data:e,Reader:rn(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return n}async exportZip(e,s){const n=this;s.bufferedWrite===Q&&(s.bufferedWrite=!0),await y.all([sn(n,s.readerOptions),Pe(e)]);const a=new Is(e,s);return await(async(e,s,n,a)=>{const i=s,o=new c;await async function e(s,c){async function l(c){const l=a.relativePath?c.getRelativeName(i):c.getFullname(),d=c.options||{};let u={};if(c.data instanceof Jr){const{externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i,uncompressedSize:o,encrypted:l,zipCrypto:d,signature:p,compressionMethod:f,extraFieldAES:h}=c.data;if(u={externalFileAttributes:e,versionMadeBy:t,comment:s,lastModDate:n,creationDate:a,lastAccessDate:i},c.passThrough){let e,t;0===f&&(e=0),h&&(t=h.strength),u=r.assign(u,{passThrough:!0,encrypted:l,zipCrypto:d,signature:p,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await s.add(l,c.reader,r.assign({},a,u,d,{directory:c.directory,onprogress:async e=>{if(a.onprogress){o.set(l,e);try{await a.onprogress(t.from(o.values()).reduce((e,t)=>e+t),n)}catch{}}}})),await e(s,c)}await(async()=>{if(a.bufferedWrite)await y.allSettled(c.children.map(l));else for(const e of c.children)await l(e)})()}(e,s)})(a,n,(e=>{let t=0;return e.forEach(function e(r){t+=r.uncompressedSize,r.children&&r.children.forEach(e)}),t})([n]),s),await a.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const s=t[r];if(s.name==e)return s}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await y.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const tn={FS:class{constructor(){cn(this)}get children(){return this.root.children}remove(e){nn(e),this.entries[e.id]=null}move(e,t){if(e==this.root)throw new p("Root directory cannot be moved");if(!t.directory)throw new p("Target entry is not a directory");if(t.isDescendantOf(e))throw new p("Entry is a ancestor of target entry");if(e!=t){if(t.getChildByName(e.name))throw new p("Entry filename already exists");nn(e),e.parent=t,t.children.push(e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}addData(e,t){return this.root.addData(e,t)}importBlob(e,t){return cn(this),this.root.importBlob(e,t)}importData64URI(e,t){return cn(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return cn(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return cn(this),this.root.importHttpContent(e,t)}importReadable(e,t){return cn(this),this.root.importReadable(e,t)}importZip(e,t){return this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:en,ZipFileEntry:$s};function rn(e){return class extends we{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const s=await t.entry.getData(new ze,r.assign({},t.options,e));t.data=s,t.blobReader=new be(s),super.init()}readUint8Array(e,t){return this.blobReader.readUint8Array(e,t)}}}async function sn(e,t){e.children.length&&await y.all(e.children.map(async e=>{if(e.directory)await sn(e,t);else{const r=e.reader=new e.Reader(e.data,t);try{await Pe(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}e.uncompressedSize=r.size}}))}function nn(e){if(e.parent){const t=e.parent.children;t.forEach((r,s)=>{r.id==e.id&&t.splice(s,1)})}}function an(e,t,s){return async function e(t,n,a){if(n)try{if((n.isFile||n.isDirectory)&&(n=await on(n)),"file"==n.kind){const e=await n.getFile();a.push(t.addData(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},s),uncompressedSize:e.size}))}else if("directory"==n.kind){const r=t.addDirectory(n.name);a.push(r);for await(const t of n.values())await e(r,t,a)}}catch(e){const t=e.message+(n?" ("+n.name+")":"");throw new p(t)}return a}(e,t,[])}async function on(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new y((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,s,n){e.readEntries(async a=>{if(a.length){for(const e of a)t.push(await on(e));r(e,s,n)}else s(t)},n)}return await new y((t,s)=>r(e.createReader(),t,s)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function cn(e){e.entries=[],e.root=new en(e)}function ln(e,t,r,s){if(e.directory)return s?new en(e.fs,t,r,e):new $s(e.fs,t,r,e);throw new p("Parent entry is not a directory")}e.fs=tn});
|