single-file-core 1.5.82 → 1.5.84
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/core/index.js +1 -0
- package/core/lib/processor-helper-common.js +2 -2
- package/core/lib/processor-helper-inline.js +1 -1
- package/modules/css-rules-minifier.js +15 -7
- package/modules/html-minifier.js +13 -2
- package/package.json +1 -1
- package/processors/compression/compression-extract.js +16 -8
- package/processors/compression/compression.js +66 -31
- package/single-file.js +1 -0
- package/vendor/zip/zip.min.js +1 -1
package/core/index.js
CHANGED
|
@@ -678,6 +678,7 @@ class Processor {
|
|
|
678
678
|
replaceEmojisInFilename: this.options.replaceEmojisInFilename,
|
|
679
679
|
compressContent: this.options.compressContent,
|
|
680
680
|
selfExtractingArchive: this.options.selfExtractingArchive,
|
|
681
|
+
disableCompression: this.options.disableCompression,
|
|
681
682
|
extractDataFromPage: this.options.extractDataFromPage,
|
|
682
683
|
referrer: this.options.referrer,
|
|
683
684
|
title: this.options.title,
|
|
@@ -98,8 +98,8 @@ class ProcessorHelperCommon {
|
|
|
98
98
|
["embed[src*=\".svg\"]", "src"],
|
|
99
99
|
["video[poster]", "poster"],
|
|
100
100
|
["*[background]", "background"],
|
|
101
|
-
["image", "xlink:href"],
|
|
102
|
-
["image", "href"]
|
|
101
|
+
["image, feImage", "xlink:href"],
|
|
102
|
+
["image, feImage", "href"]
|
|
103
103
|
];
|
|
104
104
|
if (options.blockImages) {
|
|
105
105
|
doc.querySelectorAll("svg").forEach(element => element.remove());
|
|
@@ -140,7 +140,7 @@ function getProcessorHelperClass(utilInstance) {
|
|
|
140
140
|
doc.head.appendChild(styleElement);
|
|
141
141
|
}
|
|
142
142
|
element.textContent = "/* */";
|
|
143
|
-
element.setAttribute("onload", "this.textContent=document.querySelector('style[" + DUPLICATE_STYLESHEET_ATTRIBUTE_NAME + "=\"" + stylesheetRefIndex + "\"]')?.textContent;this.removeAttribute(
|
|
143
|
+
element.setAttribute("onload", "this.textContent=document.querySelector('style[" + DUPLICATE_STYLESHEET_ATTRIBUTE_NAME + "=\"" + stylesheetRefIndex + "\"]')?.textContent;this.removeAttribute('onload')");
|
|
144
144
|
} else {
|
|
145
145
|
element.textContent = options.inlineStylesheets.get(stylesheetRefIndex).content;
|
|
146
146
|
}
|
|
@@ -482,16 +482,24 @@ function collectDeclarationItemsForElement(element, docContext) {
|
|
|
482
482
|
return allDeclarations;
|
|
483
483
|
|
|
484
484
|
function addDeclaration(declaration, specificity, isInline, selector) {
|
|
485
|
-
const { value } = declaration.data;
|
|
485
|
+
const { property, value } = declaration.data;
|
|
486
486
|
const isRawValue = value.type === RAW_TYPE;
|
|
487
487
|
const hasValueChildNodes = hasChildNodes(value) || value.type === RAW_TYPE;
|
|
488
|
-
|
|
488
|
+
let isInvalidValue;
|
|
489
|
+
if (value.type === VALUE_TYPE &&
|
|
489
490
|
hasValueChildNodes &&
|
|
490
|
-
value.children.
|
|
491
|
-
value.children.head.data.name
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
491
|
+
value.children.size == 1) {
|
|
492
|
+
if (value.children.head.data.name) {
|
|
493
|
+
isInvalidValue = value.children.head.data.name.startsWith(VENDOR_PREFIX) || INVALID_CSS_ESCAPE_TEST.test(value.children.head.data.name);
|
|
494
|
+
} if (!property.startsWith(VENDOR_PREFIX) && value.children.head.data.value) {
|
|
495
|
+
try {
|
|
496
|
+
isInvalidValue = !cssTree.lexer.matchProperty(property, value).matched;
|
|
497
|
+
} catch {
|
|
498
|
+
// ignored
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
if (hasValueChildNodes && !isRawValue && !isInvalidValue) {
|
|
495
503
|
allDeclarations.push({
|
|
496
504
|
declaration,
|
|
497
505
|
selector,
|
package/modules/html-minifier.js
CHANGED
|
@@ -113,7 +113,8 @@ const redundantAttributes = {
|
|
|
113
113
|
};
|
|
114
114
|
|
|
115
115
|
const REGEXP_WHITESPACE = /[ \t\f\r]+/g;
|
|
116
|
-
const
|
|
116
|
+
const REGEXP_WHITESPACE_COLLAPSE = /[ \t\f\r]{2,}|[\t\f\r]/g;
|
|
117
|
+
const REGEXP_NEWLINE = /\n{2,}/g;
|
|
117
118
|
const REGEXP_ENDS_WHITESPACE = /^\s+$/;
|
|
118
119
|
const NodeFilter_SHOW_ALL = 4294967295;
|
|
119
120
|
const Node_ELEMENT_NODE = 1;
|
|
@@ -179,7 +180,17 @@ function collapseWhitespace(node, options) {
|
|
|
179
180
|
noWhitespace = element && noWhitespaceCollapse(element);
|
|
180
181
|
}
|
|
181
182
|
if ((!element || noWhitespace) && textContent.length > 1) {
|
|
182
|
-
|
|
183
|
+
const whitespace = getWhiteSpace(node);
|
|
184
|
+
let newTextContent;
|
|
185
|
+
if (whitespace == " ") {
|
|
186
|
+
newTextContent = textContent.replace(REGEXP_WHITESPACE_COLLAPSE, " ");
|
|
187
|
+
} else {
|
|
188
|
+
newTextContent = textContent.replace(REGEXP_WHITESPACE, whitespace);
|
|
189
|
+
}
|
|
190
|
+
newTextContent = newTextContent.replace(REGEXP_NEWLINE, "\n");
|
|
191
|
+
if (newTextContent != textContent) {
|
|
192
|
+
node.textContent = newTextContent;
|
|
193
|
+
}
|
|
183
194
|
}
|
|
184
195
|
}
|
|
185
196
|
}
|
package/package.json
CHANGED
|
@@ -27,7 +27,7 @@ export {
|
|
|
27
27
|
extract
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
async function extract(content, { password, prompt = () => { }, zipOptions = { useWebWorkers:
|
|
30
|
+
async function extract(content, { password, prompt = () => { }, zipOptions = { useWebWorkers: true }, noBlobURL } = {}) {
|
|
31
31
|
const KNOWN_MIMETYPES = {
|
|
32
32
|
"gif": "image/gif",
|
|
33
33
|
"jpg": "image/jpeg",
|
|
@@ -74,13 +74,17 @@ async function extract(content, { password, prompt = () => { }, zipOptions = { u
|
|
|
74
74
|
const REGEXP_MATCH_MANIFEST = /manifest\.json$/;
|
|
75
75
|
const CHARSET_UTF8 = ";charset=utf-8";
|
|
76
76
|
const REGEXP_ESCAPE = /([{}()^$&.*?/+|[\\\\]|\]|-)/g;
|
|
77
|
-
|
|
78
|
-
if (Array.isArray(content)) {
|
|
79
|
-
content = new Blob([new Uint8Array(content)]);
|
|
80
|
-
}
|
|
77
|
+
let reader;
|
|
81
78
|
zip.configure(zipOptions);
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
if (content.readUint8Array) {
|
|
80
|
+
reader = content;
|
|
81
|
+
} else {
|
|
82
|
+
if (Array.isArray(content)) {
|
|
83
|
+
content = new Blob([new Uint8Array(content)]);
|
|
84
|
+
}
|
|
85
|
+
reader = new zip.BlobReader(content);
|
|
86
|
+
}
|
|
87
|
+
const zipReader = new zip.ZipReader(reader);
|
|
84
88
|
const entries = await zipReader.getEntries();
|
|
85
89
|
const options = { password };
|
|
86
90
|
let docContent, origDocContent, url, resources = [], indexPages = [], textResources = [];
|
|
@@ -98,7 +102,11 @@ async function extract(content, { password, prompt = () => { }, zipOptions = { u
|
|
|
98
102
|
textResources.push(resourceInfo);
|
|
99
103
|
}
|
|
100
104
|
dataWriter = new zip.TextWriter();
|
|
101
|
-
|
|
105
|
+
if (entry.uncompressedSize > 0) {
|
|
106
|
+
textContent = await entry.getData(dataWriter, options);
|
|
107
|
+
} else {
|
|
108
|
+
textContent = "";
|
|
109
|
+
}
|
|
102
110
|
if (filename.match(REGEXP_MATCH_INDEX)) {
|
|
103
111
|
mimeType = "text/html" + CHARSET_UTF8;
|
|
104
112
|
} else {
|
|
@@ -129,11 +129,11 @@ async function process(pageData, options, lastModDate = new Date()) {
|
|
|
129
129
|
} else if (!options.embeddedImage && options.embeddedPdf) {
|
|
130
130
|
await writeData(zipDataWriter.writable, new Uint8Array(options.embeddedPdf));
|
|
131
131
|
}
|
|
132
|
-
const zipWriter = new ZipWriter(zipDataWriter, { bufferedWrite: true, keepOrder:
|
|
132
|
+
const zipWriter = new ZipWriter(zipDataWriter, { bufferedWrite: true, keepOrder: true, lastModDate });
|
|
133
133
|
const startOffset = zipDataWriter.offset;
|
|
134
134
|
pageData.url = options.url;
|
|
135
135
|
pageData.archiveTime = (new Date()).toISOString();
|
|
136
|
-
await addPageResources(zipWriter, pageData, { password: options.password }, options.createRootDirectory ? String(Date.now()) + "_" + (options.tabId || 0) + "/" : "", options.url);
|
|
136
|
+
await addPageResources(zipWriter, pageData, { password: options.password, disableCompression: options.disableCompression }, options.createRootDirectory ? String(Date.now()) + "_" + (options.tabId || 0) + "/" : "", options.url);
|
|
137
137
|
const data = await zipWriter.close(null, { preventClose: true });
|
|
138
138
|
if (options.selfExtractingArchive) {
|
|
139
139
|
const insertionsCRLF = [];
|
|
@@ -246,8 +246,7 @@ async function prependHTMLData(pageData, zipDataWriter, script, options) {
|
|
|
246
246
|
if (!options.extractDataFromPage) {
|
|
247
247
|
pageContent += "<div id=sfz-error-message><strong>Error</strong>: Cannot open the page from the filesystem.";
|
|
248
248
|
pageContent += "<ul style='line-height:20px;'>";
|
|
249
|
-
pageContent += "<li style='margin-bottom:10px'><strong>Chrome</strong>: Install <a href='https://
|
|
250
|
-
pageContent += "<li style='margin-bottom:10px'><strong>Microsoft Edge</strong>: Install <a href='https://microsoftedge.microsoft.com/addons/detail/singlefile/efnbkdcfmcmnhlkaijjjmhjjgladedno'>SingleFile</a> and enable the option \"Allow access to file URLs\" in the details page of the extension (edge://extensions/?id=efnbkdcfmcmnhlkaijjjmhjjgladedno).</li>";
|
|
249
|
+
pageContent += "<li style='margin-bottom:10px'><strong>Chrome/Edge/Brave</strong>: Install <a href='https://www.getsinglefile.com'>SingleFile</a> and enable the option \"Allow access to file URLs\" in the details page of the extension.</li>";
|
|
251
250
|
pageContent += "<li><strong>Safari</strong>: Select \"Security > Disable Local File Restrictions\" in the \"Develop > Developer settings\" menu.</li></ul></div>";
|
|
252
251
|
}
|
|
253
252
|
if (options.insertTextBody) {
|
|
@@ -275,12 +274,10 @@ async function prependHTMLData(pageData, zipDataWriter, script, options) {
|
|
|
275
274
|
script = "<script>" +
|
|
276
275
|
script +
|
|
277
276
|
"document.currentScript.remove();" +
|
|
278
|
-
"globalThis.addEventListener('load', () => {" +
|
|
279
277
|
"globalThis.bootstrap=(()=>{let bootstrapStarted;return async content=>{if (bootstrapStarted) return bootstrapStarted; bootstrapStarted = (" +
|
|
280
278
|
extract.toString().replace(/\n|\t/g, "") + ")(content,{prompt}).then(({docContent}) => " +
|
|
281
279
|
display.toString().replace(/\n|\t/g, "") + "(document,docContent," + JSON.stringify(displayOptions) + "));return bootstrapStarted;}})();(" +
|
|
282
280
|
getContent.toString().replace(/\n|\t/g, "") + ")().then(globalThis.bootstrap).then(() => document.dispatchEvent(new CustomEvent(\"single-file-display-infobar\"))).catch(()=>{});" +
|
|
283
|
-
"});" +
|
|
284
281
|
"</script>";
|
|
285
282
|
pageContent += script;
|
|
286
283
|
let extraData = "";
|
|
@@ -341,7 +338,7 @@ function getHTMLHeadData(pageData, options) {
|
|
|
341
338
|
const cspContent = "default-src 'none';connect-src 'self' data: blob:;font-src 'self' data: blob:;img-src 'self' data: blob:;style-src 'self' 'unsafe-inline' data: blob:;frame-src 'self' data: blob:;media-src 'self' data: blob:;script-src 'self' 'unsafe-inline' data: blob:;object-src 'self' data: blob:";
|
|
342
339
|
pageContent += `<meta http-equiv=content-security-policy content=${JSON.stringify(cspContent)}>`;
|
|
343
340
|
}
|
|
344
|
-
pageContent += "<style>@keyframes display-wait-message{0%{opacity:0}100%{opacity:1}};body{color:transparent};div{color:initial}</style>";
|
|
341
|
+
pageContent += "<style>@keyframes display-wait-message{0%{opacity:0}100%{opacity:1}};body{color:transparent};div{color:initial}body>:not(#sfz-wait-message,#sfz-error-message){display:none}</style>";
|
|
345
342
|
pageContent += "<body hidden>";
|
|
346
343
|
return pageContent;
|
|
347
344
|
}
|
|
@@ -393,25 +390,25 @@ async function addPageResources(zipWriter, pageData, options, prefixName, url) {
|
|
|
393
390
|
}, null, 2);
|
|
394
391
|
await Promise.all([
|
|
395
392
|
Promise.all([
|
|
396
|
-
addFile(zipWriter, prefixName, { name: "index.html", extension: ".html", content: pageData.content, url, password: options.password }),
|
|
397
|
-
addFile(zipWriter, prefixName, { name: "manifest.json", extension: ".json", content: jsonContent, password: options.password })
|
|
393
|
+
addFile(zipWriter, prefixName, { name: "index.html", extension: ".html", content: pageData.content, url, password: options.password }, options.disableCompression),
|
|
394
|
+
addFile(zipWriter, prefixName, { name: "manifest.json", extension: ".json", content: jsonContent, password: options.password }, options.disableCompression)
|
|
398
395
|
]),
|
|
399
396
|
Promise.all(Object.keys(pageData.resources).map(async resourceType =>
|
|
400
397
|
Promise.all(pageData.resources[resourceType].map(data => {
|
|
401
398
|
if (resourceType == "frames") {
|
|
402
399
|
return addPageResources(zipWriter, data, options, prefixName + data.name, data.url);
|
|
403
400
|
} else {
|
|
404
|
-
return addFile(zipWriter, prefixName, data,
|
|
401
|
+
return addFile(zipWriter, prefixName, data, options.disableCompression);
|
|
405
402
|
}
|
|
406
403
|
}))
|
|
407
404
|
))
|
|
408
405
|
]);
|
|
409
406
|
}
|
|
410
407
|
|
|
411
|
-
async function addFile(zipWriter, prefixName, data) {
|
|
408
|
+
async function addFile(zipWriter, prefixName, data, disableCompresson) {
|
|
412
409
|
const dataReader = typeof data.content == "string" ? new TextReader(data.content) : new BlobReader(new Blob([new Uint8Array(data.content)]));
|
|
413
410
|
const options = { comment: data.url && data.url.startsWith("data:") ? "data:" : data.url, password: data.password, bufferedWrite: true };
|
|
414
|
-
if (NO_COMPRESSION_EXTENSIONS.includes(data.extension)) {
|
|
411
|
+
if (NO_COMPRESSION_EXTENSIONS.includes(data.extension) || disableCompresson) {
|
|
415
412
|
options.level = 0;
|
|
416
413
|
}
|
|
417
414
|
await zipWriter.add(prefixName + data.name, dataReader, options);
|
|
@@ -419,31 +416,70 @@ async function addFile(zipWriter, prefixName, data) {
|
|
|
419
416
|
|
|
420
417
|
async function getContent() {
|
|
421
418
|
const BASE64_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
422
|
-
const { Blob, XMLHttpRequest, document,
|
|
419
|
+
const { Blob, XMLHttpRequest, document, zip, location } = globalThis;
|
|
423
420
|
const characterMap = new Map([
|
|
424
421
|
[65533, 0], [8364, 128], [8218, 130], [402, 131], [8222, 132], [8230, 133], [8224, 134], [8225, 135], [710, 136], [8240, 137],
|
|
425
422
|
[352, 138], [8249, 139], [338, 140], [381, 142], [8216, 145], [8217, 146], [8220, 147], [8221, 148], [8226, 149], [8211, 150],
|
|
426
423
|
[8212, 151], [732, 152], [8482, 153], [353, 154], [8250, 155], [339, 156], [382, 158], [376, 159]
|
|
427
424
|
]);
|
|
428
|
-
const xhr = new XMLHttpRequest();
|
|
429
|
-
document.body.querySelectorAll("meta, style").forEach(element => document.head.appendChild(element));
|
|
430
|
-
xhr.responseType = "blob";
|
|
431
|
-
xhr.open("GET", "");
|
|
432
425
|
return new Promise((resolve, reject) => {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
426
|
+
let aborted = false;
|
|
427
|
+
getPageData();
|
|
428
|
+
|
|
429
|
+
function getPageData() {
|
|
430
|
+
const xhr = new XMLHttpRequest();
|
|
431
|
+
xhr.responseType = "blob";
|
|
432
|
+
xhr.open("GET", "");
|
|
433
|
+
xhr.onerror = async () => {
|
|
434
|
+
if (aborted) {
|
|
435
|
+
displayMessage("sfz-error-message", 2);
|
|
436
|
+
reject();
|
|
437
|
+
} else {
|
|
438
|
+
try {
|
|
439
|
+
await waitForDocumentReady(document);
|
|
440
|
+
document.body.querySelectorAll("meta, style").forEach(element => document.head.appendChild(element));
|
|
441
|
+
const pageData = extractPageData();
|
|
442
|
+
displayMessage("sfz-wait-message", 2);
|
|
443
|
+
resolve(pageData);
|
|
444
|
+
} catch {
|
|
445
|
+
displayMessage("sfz-error-message", 2);
|
|
446
|
+
reject();
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
xhr.send();
|
|
451
|
+
xhr.onreadystatechange = () => {
|
|
452
|
+
if (xhr.readyState === 2 && xhr.status === 200 && !aborted) {
|
|
453
|
+
aborted = true;
|
|
454
|
+
const httpRangeSupport = xhr.getResponseHeader("Accept-Ranges") === "bytes";
|
|
455
|
+
xhr.abort();
|
|
456
|
+
displayMessage("sfz-wait-message", 2);
|
|
457
|
+
if (httpRangeSupport) {
|
|
458
|
+
resolve(new zip.HttpRangeReader(location.href, {
|
|
459
|
+
useXHR: true,
|
|
460
|
+
combineSizeEocd: true
|
|
461
|
+
}));
|
|
462
|
+
} else {
|
|
463
|
+
getPageData();
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
if (aborted) {
|
|
468
|
+
xhr.onload = () => resolve(xhr.response);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
445
471
|
});
|
|
446
472
|
|
|
473
|
+
function waitForDocumentReady(document) {
|
|
474
|
+
return new Promise(resolve => {
|
|
475
|
+
if (document.readyState === "complete" || document.readyState === "interactive") {
|
|
476
|
+
resolve();
|
|
477
|
+
} else {
|
|
478
|
+
document.addEventListener("DOMContentLoaded", () => resolve());
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
|
|
447
483
|
function displayMessage(elementId, delay = 0) {
|
|
448
484
|
const element = document.getElementById(elementId);
|
|
449
485
|
if (element) {
|
|
@@ -457,7 +493,7 @@ async function getContent() {
|
|
|
457
493
|
}
|
|
458
494
|
}
|
|
459
495
|
|
|
460
|
-
|
|
496
|
+
function extractPageData() {
|
|
461
497
|
const zipDataElement = document.querySelector("sfz-extra-data");
|
|
462
498
|
if (zipDataElement) {
|
|
463
499
|
let dataNode = zipDataElement.nextSibling;
|
|
@@ -472,7 +508,6 @@ async function getContent() {
|
|
|
472
508
|
}
|
|
473
509
|
const zipData = [];
|
|
474
510
|
let { textContent } = dataNode;
|
|
475
|
-
displayMessage("sfz-wait-message", 2);
|
|
476
511
|
for (let index = 0; index < textContent.length; index++) {
|
|
477
512
|
const charCode = textContent.charCodeAt(index);
|
|
478
513
|
zipData.push(charCode > 255 ? characterMap.get(charCode) : charCode);
|
package/single-file.js
CHANGED
|
@@ -116,6 +116,7 @@ async function getPageData(options = {}, initOptions, doc, win) {
|
|
|
116
116
|
url: options.url,
|
|
117
117
|
createRootDirectory: options.createRootDirectory,
|
|
118
118
|
selfExtractingArchive: options.selfExtractingArchive,
|
|
119
|
+
disableCompression: options.disableCompression,
|
|
119
120
|
extractDataFromPage: options.extractDataFromPage,
|
|
120
121
|
preventAppendedData: options.preventAppendedData,
|
|
121
122
|
insertCanonicalLink: options.insertCanonicalLink,
|
package/vendor/zip/zip.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:n,String:r,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:u,URL:h,Error:f,Uint8Array:d,Uint16Array:p,Uint32Array:w,DataView:g,Blob:m,Promise:y,TextEncoder:b,TextDecoder:v,document:k,crypto:S,btoa:z,TransformStream:x,ReadableStream:_,WritableStream:D,CompressionStream:F,DecompressionStream:C,navigator:T,Worker:W}="undefined"!=typeof globalThis?globalThis:this||self;var U=d,A=p,L=Int32Array,E=new U([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),R=new U([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),B=new U([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),M=(e,t)=>{for(var n=new A(31),r=0;31>r;++r)n[r]=t+=1<<e[r-1];var s=new L(n[30]);for(r=1;30>r;++r)for(var a=n[r];a<n[r+1];++a)s[a]=a-n[r]<<5|r;return{b:n,r:s}},P=M(E,2),O=P.b,I=P.r;O[28]=258,I[258]=28;for(var N=M(R,0),V=N.b,q=N.r,H=new A(32768),K=0;32768>K;++K){var Z=(43690&K)>>1|(21845&K)<<1;Z=(61680&(Z=(52428&Z)>>2|(13107&Z)<<2))>>4|(3855&Z)<<4,H[K]=((65280&Z)>>8|(255&Z)<<8)>>1}var j=(e,t,n)=>{for(var r=e.length,s=0,a=new A(t);r>s;++s)e[s]&&++a[e[s]-1];var i,o=new A(t);for(s=1;t>s;++s)o[s]=o[s-1]+a[s-1]<<1;if(n){i=new A(1<<t);var c=15-t;for(s=0;r>s;++s)if(e[s])for(var l=s<<4|e[s],u=t-e[s],h=o[e[s]-1]++<<u,f=h|(1<<u)-1;f>=h;++h)i[H[h]>>c]=l}else for(i=new A(r),s=0;r>s;++s)e[s]&&(i[s]=H[o[e[s]-1]++]>>15-e[s]);return i},G=new U(288);for(K=0;144>K;++K)G[K]=8;for(K=144;256>K;++K)G[K]=9;for(K=256;280>K;++K)G[K]=7;for(K=280;288>K;++K)G[K]=8;var J=new U(32);for(K=0;32>K;++K)J[K]=5;var Q=j(G,9,0),X=j(G,9,1),Y=j(J,5,0),$=j(J,5,1),ee=e=>{for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},te=(e,t,n)=>{var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&n},ne=(e,t)=>{var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(7&t)},re=e=>(e+7)/8|0,se=(e,t,n)=>((null==t||0>t)&&(t=0),(null==n||n>e.length)&&(n=e.length),new U(e.subarray(t,n))),ae=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ie=(e,t,n)=>{var r=new f(t||ae[e]);if(r.code=e,f.captureStackTrace&&f.captureStackTrace(r,ie),!n)throw r;return r},oe=(e,t,n)=>{n<<=7&t;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},ce=(e,t,n)=>{n<<=7&t;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},le=(e,t)=>{for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var s=n.length,a=n.slice();if(!s)return{t:ge,l:0};if(1==s){var i=new U(n[0].s+1);return i[n[0].s]=1,{t:i,l:1}}n.sort(((e,t)=>e.f-t.f)),n.push({s:-1,f:25001});var o=n[0],c=n[1],l=0,u=1,h=2;for(n[0]={s:-1,f:o.f+c.f,l:o,r:c};u!=s-1;)o=n[n[l].f<n[h].f?l++:h++],c=n[l!=u&&n[l].f<n[h].f?l++:h++],n[u++]={s:-1,f:o.f+c.f,l:o,r:c};var f=a[0].s;for(r=1;s>r;++r)a[r].s>f&&(f=a[r].s);var d=new A(f+1),p=ue(n[u-1],d,0);if(p>t){r=0;var w=0,g=p-t,m=1<<g;for(a.sort(((e,t)=>d[t.s]-d[e.s]||e.f-t.f));s>r;++r){var y=a[r].s;if(d[y]<=t)break;w+=m-(1<<p-d[y]),d[y]=t}for(w>>=g;w>0;){var b=a[r].s;d[b]<t?w-=1<<t-d[b]++-1:++r}for(;r>=0&&w;--r){var v=a[r].s;d[v]==t&&(--d[v],++w)}p=t}return{t:new U(d),l:p}},ue=(e,t,n)=>-1==e.s?i.max(ue(e.l,t,n+1),ue(e.r,t,n+1)):t[e.s]=n,he=e=>{for(var t=e.length;t&&!e[--t];);for(var n=new A(++t),r=0,s=e[0],a=1,i=e=>{n[r++]=e},o=1;t>=o;++o)if(e[o]==s&&o!=t)++a;else{if(!s&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(s),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(s);a=1,s=e[o]}return{c:n.subarray(0,r),n:t}},fe=(e,t)=>{for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},de=(e,t,n)=>{var r=n.length,s=re(t+2);e[s]=255&r,e[s+1]=r>>8,e[s+2]=255^e[s],e[s+3]=255^e[s+1];for(var a=0;r>a;++a)e[s+a+4]=n[a];return 8*(s+4+r)},pe=(e,t,n,r,s,a,i,o,c,l,u)=>{oe(t,u++,n),++s[256];for(var h=le(s,15),f=h.t,d=h.l,p=le(a,15),w=p.t,g=p.l,m=he(f),y=m.c,b=m.n,v=he(w),k=v.c,S=v.n,z=new A(19),x=0;x<y.length;++x)++z[31&y[x]];for(x=0;x<k.length;++x)++z[31&k[x]];for(var _=le(z,7),D=_.t,F=_.l,C=19;C>4&&!D[B[C-1]];--C);var T,W,U,L,M=l+5<<3,P=fe(s,G)+fe(a,J)+i,O=fe(s,f)+fe(a,w)+i+14+3*C+fe(z,D)+2*z[16]+3*z[17]+7*z[18];if(c>=0&&P>=M&&O>=M)return de(t,u,e.subarray(c,c+l));if(oe(t,u,1+(P>O)),u+=2,P>O){T=j(f,d,0),W=f,U=j(w,g,0),L=w;var I=j(D,F,0);for(oe(t,u,b-257),oe(t,u+5,S-1),oe(t,u+10,C-4),u+=14,x=0;C>x;++x)oe(t,u+3*x,D[B[x]]);u+=3*C;for(var N=[y,k],V=0;2>V;++V){var q=N[V];for(x=0;x<q.length;++x){var H=31&q[x];oe(t,u,I[H]),u+=D[H],H>15&&(oe(t,u,q[x]>>5&127),u+=q[x]>>12)}}}else T=Q,W=G,U=Y,L=J;for(x=0;o>x;++x){var K=r[x];if(K>255){ce(t,u,T[257+(H=K>>18&31)]),u+=W[H+257],H>7&&(oe(t,u,K>>23&31),u+=E[H]);var Z=31&K;ce(t,u,U[Z]),u+=L[Z],Z>3&&(ce(t,u,K>>5&8191),u+=R[Z])}else ce(t,u,T[K]),u+=W[K]}return ce(t,u,T[256]),u+W[256]},we=new L([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ge=new U(0),me=function(){function e(e,t){if("function"==typeof e&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new U(98304),this.o.dictionary){var n=this.o.dictionary.subarray(-32768);this.b.set(n,32768-n.length),this.s.i=32768-n.length}}return e.prototype.p=function(e,t){this.ondata(((e,t,n,r,s)=>{if(!s&&(s={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new U(a.length+e.length);o.set(a),o.set(e,a.length),e=o,s.w=a.length}return((e,t,n,r,s,a)=>{var o=a.z||e.length,c=new U(0+o+5*(1+i.ceil(o/7e3))+0),l=c.subarray(0,c.length-0),u=a.l,h=7&(a.r||0);if(t){h&&(l[0]=a.r>>3);for(var f=we[t-1],d=f>>13,p=8191&f,w=(1<<n)-1,g=a.p||new A(32768),m=a.h||new A(w+1),y=i.ceil(n/3),b=2*y,v=t=>(e[t]^e[t+1]<<y^e[t+2]<<b)&w,k=new L(25e3),S=new A(288),z=new A(32),x=0,_=0,D=a.i||0,F=0,C=a.w||0,T=0;o>D+2;++D){var W=v(D),B=32767&D,M=m[W];if(g[B]=M,m[W]=B,D>=C){var P=o-D;if((x>7e3||F>24576)&&(P>423||!u)){h=pe(e,l,0,k,S,z,_,F,T,D-T,h),F=x=_=0,T=D;for(var O=0;286>O;++O)S[O]=0;for(O=0;30>O;++O)z[O]=0}var N=2,V=0,H=p,K=B-M&32767;if(P>2&&W==v(D-K))for(var Z=i.min(d,P)-1,j=i.min(32767,D),G=i.min(258,P);j>=K&&--H&&B!=M;){if(e[D+N]==e[D+N-K]){for(var J=0;G>J&&e[D+J]==e[D+J-K];++J);if(J>N){if(N=J,V=K,J>Z)break;var Q=i.min(K,J-2),X=0;for(O=0;Q>O;++O){var Y=D-K+O&32767,$=Y-g[Y]&32767;$>X&&(X=$,M=Y)}}}K+=(B=M)-(M=g[B])&32767}if(V){k[F++]=268435456|I[N]<<18|q[V];var ee=31&I[N],te=31&q[V];_+=E[ee]+R[te],++S[257+ee],++z[te],C=D+N,++x}else k[F++]=e[D],++S[e[D]]}}for(D=i.max(D,C);o>D;++D)k[F++]=e[D],++S[e[D]];h=pe(e,l,u,k,S,z,_,F,T,D-T,h),u||(a.r=7&h|l[h/8|0]<<3,h-=7,a.h=m,a.p=g,a.i=D,a.w=C)}else{for(D=a.w||0;o+u>D;D+=65535){var ne=D+65535;o>ne||(l[h/8|0]=u,ne=o),h=de(l,h+1,e.subarray(D,ne))}a.i=o}return se(c,0,0+re(h)+0)})(e,null==t.level?6:t.level,null==t.mem?s.l?i.ceil(1.5*i.max(8,i.min(13,i.log(e.length)))):20:12+t.mem,0,0,s)})(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||ie(5),this.s.l&&ie(4);var n=e.length+this.s.z;if(n>this.b.length){if(n>2*this.b.length-32768){var r=new U(-32768&n);r.set(this.b.subarray(0,this.s.z)),this.b=r}var s=this.b.length-this.s.z;this.b.set(e.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(s),32768),this.s.z=e.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=1&t,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2)},e.prototype.flush=function(){this.ondata||ie(5),this.s.l&&ie(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},e}(),ye=function(){function e(e,t){"function"==typeof e&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new U(32768),this.p=new U(0),n&&this.o.set(n)}return e.prototype.e=function(e){if(this.ondata||ie(5),this.d&&ie(4),this.p.length){if(e.length){var t=new U(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}}else this.p=e},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=((e,t,n)=>{var r=e.length;if(!r||t.f&&!t.l)return n||new U(0);var s=!n,a=s||2!=t.i,o=t.i;s&&(n=new U(3*r));var c=e=>{var t=n.length;if(e>t){var r=new U(i.max(2*t,e));r.set(n),n=r}},l=t.f||0,u=t.p||0,h=t.b||0,f=t.l,d=t.d,p=t.m,w=t.n,g=8*r;do{if(!f){l=te(e,u,1);var m=te(e,u+1,3);if(u+=3,!m){var y=e[(T=re(u)+4)-4]|e[T-3]<<8,b=T+y;if(b>r){o&&ie(0);break}a&&c(h+y),n.set(e.subarray(T,b),h),t.b=h+=y,t.p=u=8*b,t.f=l;continue}if(1==m)f=X,d=$,p=9,w=5;else if(2==m){var v=te(e,u,31)+257,k=te(e,u+10,15)+4,S=v+te(e,u+5,31)+1;u+=14;for(var z=new U(S),x=new U(19),_=0;k>_;++_)x[B[_]]=te(e,u+3*_,7);u+=3*k;var D=ee(x),F=(1<<D)-1,C=j(x,D,1);for(_=0;S>_;){var T,W=C[te(e,u,F)];if(u+=15&W,16>(T=W>>4))z[_++]=T;else{var A=0,L=0;for(16==T?(L=3+te(e,u,3),u+=2,A=z[_-1]):17==T?(L=3+te(e,u,7),u+=3):18==T&&(L=11+te(e,u,127),u+=7);L--;)z[_++]=A}}var M=z.subarray(0,v),P=z.subarray(v);p=ee(M),w=ee(P),f=j(M,p,1),d=j(P,w,1)}else ie(1);if(u>g){o&&ie(0);break}}a&&c(h+131072);for(var I=(1<<p)-1,N=(1<<w)-1,q=u;;q=u){var H=(A=f[ne(e,u)&I])>>4;if((u+=15&A)>g){o&&ie(0);break}if(A||ie(2),256>H)n[h++]=H;else{if(256==H){q=u,f=null;break}var K=H-254;if(H>264){var Z=E[_=H-257];K=te(e,u,(1<<Z)-1)+O[_],u+=Z}var G=d[ne(e,u)&N],J=G>>4;if(G||ie(3),u+=15&G,P=V[J],J>3&&(Z=R[J],P+=ne(e,u)&(1<<Z)-1,u+=Z),u>g){o&&ie(0);break}a&&c(h+131072);var Q=h+K;if(P>h){var Y=0-P,ae=i.min(P,Q);for(0>Y+h&&ie(3);ae>h;++h)n[h]=(void 0)[Y+h]}for(;Q>h;++h)n[h]=n[h-P]}}t.l=f,t.p=q,t.b=h,t.f=l,f&&(l=1,t.m=p,t.d=d,t.n=w)}while(!l);return h!=n.length&&s?se(n,0,h):n.subarray(0,h)})(this.p,this.s,this.o);this.ondata(se(n,t,this.s.b),this.d),this.o=se(n,this.s.b-32768),this.s.b=this.o.length,this.p=se(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),be=void 0!==v&&new v;try{be.decode(ge,{stream:!0})}catch(e){}const ve=4294967295,ke=65535,Se=33639248,ze=101075792,xe=void 0,_e="undefined",De="function";function Fe(e,t,r){return class{constructor(s){const a=this;var i,o;i=s,o="level",(typeof n.hasOwn===De?n.hasOwn(i,o):i.hasOwnProperty(o))&&s.level===xe&&delete s.level,a.codec=new e(n.assign({},t,s)),r(a.codec,(e=>{if(a.pendingData){const t=a.pendingData;a.pendingData=new d(t.length+e.length);const{pendingData:n}=a;n.set(t,0),n.set(e,t.length)}else a.pendingData=new d(e)}))}append(e){return this.codec.push(e),s(this)}flush(){return this.codec.push(new d,!0),s(this)}};function s(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new d}}const{Deflate:Ce,Inflate:Te}=((e,t={},n)=>({Deflate:Fe(e.Deflate,t.deflate,n),Inflate:Fe(e.Inflate,t.inflate,n)}))({Deflate:me,Inflate:ye},xe,((e,t)=>e.ondata=t));class We{constructor(e){return class extends x{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}let Ue=2;try{typeof T!=_e&&T.hardwareConcurrency&&(Ue=T.hardwareConcurrency)}catch(e){}const Ae={chunkSize:524288,maxWorkers:Ue,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:xe,CompressionStreamNative:typeof F!=_e&&F,DecompressionStreamNative:typeof C!=_e&&C},Le=n.assign({},Ae);function Ee(e){const{baseURL:n,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:a,useCompressionStream:i,useWebWorkers:o,Deflate:c,Inflate:l,CompressionStream:u,DecompressionStream:h,workerScripts:d}=e;if(Re("baseURL",n),Re("chunkSize",r),Re("maxWorkers",s),Re("terminateWorkerTimeout",a),Re("useCompressionStream",i),Re("useWebWorkers",o),c&&(Le.CompressionStream=new We(c)),l&&(Le.DecompressionStream=new We(l)),Re("CompressionStream",u),Re("DecompressionStream",h),d!==xe){const{deflate:e,inflate:n}=d;if((e||n)&&(Le.workerScripts||(Le.workerScripts={})),e){if(!t.isArray(e))throw new f("workerScripts.deflate must be an array");Le.workerScripts.deflate=e}if(n){if(!t.isArray(n))throw new f("workerScripts.inflate must be an array");Le.workerScripts.inflate=n}}}function Re(e,t){t!==xe&&(Le[e]=t)}const Be=65536,Me="writable";class Pe{constructor(){this.size=0}init(){this.initialized=!0}}class Oe extends Pe{get readable(){const e=this,{chunkSize:t=Be}=e,n=new _({start(){this.chunkOffset=0},async pull(r){const{offset:s=0,size:a,diskNumberStart:o}=n,{chunkOffset:c}=this;r.enqueue(await je(e,s+c,i.min(t,a-c),o)),c+t>a?r.close():this.chunkOffset+=t}});return n}}class Ie extends Pe{constructor(){super();const e=this,t=new D({write:t=>e.writeUint8Array(t)});n.defineProperty(e,Me,{get:()=>t})}writeUint8Array(){}}class Ne extends Oe{constructor(e){super(),n.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,r=e+t,s=e||r<n.size?n.blob.slice(e,r):n.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,r)),new d(a)}}class Ve extends Pe{constructor(e){super();const t=new x,r=[];e&&r.push(["Content-Type",e]),n.defineProperty(this,Me,{get:()=>t.writable}),this.blob=new u(t.readable,{headers:r}).blob()}getData(){return this.blob}}class qe extends Oe{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(n,r)=>{await n.init(),r!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const r=this,{readers:s}=this;let a,o=n;-1==o&&(o=s.length-1);let c=e;for(;c>=s[o].size;)c-=s[o].size,o++;const l=s[o],u=l.size;if(c+t>u){const s=u-c;a=new d(t),a.set(await je(l,c,s)),a.set(await r.readUint8Array(e+s,t-s,n),s)}else a=await je(l,c,t);return r.lastDiskNumber=i.max(o,r.lastDiskNumber),a}}class He extends Pe{constructor(e,t=4294967295){super();const r=this;let s,a,i;n.assign(r,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new D({async write(t){const{availableSize:n}=r;if(i)t.length<n?await c(t):(await c(t.slice(0,n)),await l(),r.diskOffset+=s.size,r.diskNumber++,i=null,await this.write(t.slice(n)));else{const{value:n,done:o}=await e.next();if(o&&!n)throw new f("Writer iterator completed too soon");s=n,s.size=0,s.maxSize&&(r.maxSize=s.maxSize),r.availableSize=r.maxSize,await Ke(s),a=n.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),s.size+=t,r.size+=t,r.availableSize-=t)}async function l(){a.size=s.size,await i.close()}n.defineProperty(r,Me,{get:()=>o})}}async function Ke(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Ze(e){return t.isArray(e)&&(e=new qe(e)),e instanceof _&&(e={readable:e}),e}function je(e,t,n,r){return e.readUint8Array(t,n,r)}const Ge=[];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;Ge[e]=t}class Je{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,r=0|e.length;r>n;n++)t=t>>>8^Ge[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class Qe extends x{constructor(){let e;const t=new Je;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new d(4);new g(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const Xe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=Xe.getPartial(n);return 32===r?e.concat(t):Xe._shiftRight(t,r,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+Xe.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=Xe.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let s=0;s<e.length;s++)r.push(n|e[s]>>>t),n=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=Xe.getPartial(s);return r.push(Xe.partial(t+a&31,t+a>32?n:r.pop(),1)),r}},Ye={bytes:{fromBits(e){const t=Xe.bitLength(e)/8,n=new d(t);let r;for(let s=0;t>s;s++)3&s||(r=e[s/4]),n[s]=r>>>24,r<<=8;return n},toBits(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(Xe.partial(8*(3&n),r)),t}}},$e=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 n=t._buffer=Xe.concat(t._buffer,e),r=t._length,s=t._length=r+Xe.bitLength(e);if(s>9007199254740991)throw new f("Cannot hash more than 2^53 - 1 bits");const a=new w(n);let i=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);s>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return n.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=Xe.concat(t,[Xe.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(),n}_f(e,t,n,r){return e>19?e>39?e>59?e>79?void 0:t^n^r:t&n|t&r|n&r:t^n^r:t&n|~t&r}_S(e,t){return t<<e|t>>>32-e}_block(e){const n=this,r=n._h,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=r[0],o=r[1],c=r[2],l=r[3],u=r[4];for(let e=0;79>=e;e++){16>e||(s[e]=n._S(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=n._S(5,a)+n._f(e,o,c,l)+u+s[e]+n._key[i.floor(e/20)]|0;u=l,l=c,c=n._S(30,o),o=a,a=t}r[0]=r[0]+a|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+u|0}},et={getRandomValues(e){const t=new w(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(i.random()>.5?1:-1))};for(let r,s=0;s<e.length;s+=4){const e=n(4294967296*(r||i.random()));r=987654071*e(),t[s/4]=4294967296*e()|0}return e}},tt={importKey:e=>new tt.hmacSha1(Ye.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new f("invalid params to pbkdf2");const s=1+(r>>5)<<2;let a,i,o,c,l;const u=new ArrayBuffer(s),h=new g(u);let d=0;const p=Xe;for(t=Ye.bytes.toBits(t),l=1;(s||1)>d;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;n>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>d&&o<a.length;o++)h.setInt32(d,a[o]),d+=4}return u.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=$e,r=[[],[]];t._baseHash=[new n,new n];const s=t._baseHash[0].blockSize/32;e.length>s&&(e=(new n).update(e).finalize());for(let t=0;s>t;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t._baseHash[0].update(r[0]),t._baseHash[1].update(r[1]),t._resultHash=new n(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(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new f("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},nt=typeof S!=_e&&typeof S.getRandomValues==De,rt="Invalid password",st="Invalid signature",at="zipjs-abort-check-password";function it(e){return nt?S.getRandomValues(e):et.getRandomValues(e)}const ot=16,ct={name:"PBKDF2"},lt=n.assign({hash:{name:"HMAC"}},ct),ut=n.assign({iterations:1e3,hash:{name:"SHA-1"}},ct),ht=["deriveBits"],ft=[8,12,16],dt=[16,24,32],pt=10,wt=[0,0,0,0],gt=typeof S!=_e,mt=gt&&S.subtle,yt=gt&&typeof mt!=_e,bt=Ye.bytes,vt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new f("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s==0||8===s&&a%s==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],a%s==0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[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],n=e[4],r=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let u=i=0;!n[u];u^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[u]=a,r[a]=u,l=s[c=s[o=s[u]]];let h=16843009*l^65537*c^257*o^16843008*u,f=257*s[a]^16843008*a;for(let n=0;4>n;n++)e[n][u]=f=f<<24^f>>>8,t[n][a]=h=h<<24^h>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new f("invalid aes block size");const n=this._key[t],r=n.length/4-2,s=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],u=a[4];let h,d,p,w=e[0]^n[0],g=e[t?3:1]^n[1],m=e[2]^n[2],y=e[t?1:3]^n[3],b=4;for(let e=0;r>e;e++)h=i[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&y]^n[b],d=i[g>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&w]^n[b+1],p=i[m>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&g]^n[b+2],y=i[y>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^n[b+3],b+=4,w=h,g=d,m=p;for(let e=0;4>e;e++)s[t?3&-e:e]=u[w>>>24]<<24^u[g>>16&255]<<16^u[m>>8&255]<<8^u[255&y]^n[b++],h=w,w=g,g=m,m=y,y=h;return s}},kt=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,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let r;if(!(r=t.length))return[];const s=Xe.bitLength(t);for(let s=0;r>s;s+=4){this.incCounter(n);const r=e.encrypt(n);t[s]^=r[0],t[s+1]^=r[1],t[s+2]^=r[2],t[s+3]^=r[3]}return Xe.clamp(t,s)}},St=tt.hmacSha1;let zt=gt&&yt&&typeof mt.importKey==De,xt=gt&&yt&&typeof mt.deriveBits==De;class _t extends x{constructor({password:e,rawPassword:t,signed:r,encryptionStrength:s,checkPasswordOnly:a}){super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:Tt(e,t),signed:r,strength:s-1,pending:new d})},async transform(e,t){const n=this,{password:r,strength:s,resolveReady:i,ready:o}=n;r?(await(async(e,t,n,r)=>{const s=await Ct(e,t,n,Ut(r,0,ft[t])),a=Ut(r,ft[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new f(rt)})(n,s,r,Ut(e,0,ft[s]+2)),e=Ut(e,ft[s]+2),a?t.error(new f(at)):i()):await o;const c=new d(e.length-pt-(e.length-pt)%ot);t.enqueue(Ft(n,e,c,0,pt,!0))},async flush(e){const{signed:t,ctr:n,hmac:r,pending:s,ready:a}=this;if(r&&n){await a;const i=Ut(s,0,s.length-pt),o=Ut(s,s.length-pt);let c=new d;if(i.length){const e=Lt(bt,i);r.update(e);const t=n.update(e);c=At(bt,t)}if(t){const e=Ut(At(bt,r.digest()),0,pt);for(let t=0;pt>t;t++)if(e[t]!=o[t])throw new f(st)}e.enqueue(c)}}})}}class Dt extends x{constructor({password:e,rawPassword:t,encryptionStrength:r}){let s;super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:Tt(e,t),strength:r-1,pending:new d})},async transform(e,t){const n=this,{password:r,strength:s,resolveReady:a,ready:i}=n;let o=new d;r?(o=await(async(e,t,n)=>{const r=it(new d(ft[t]));return Wt(r,await Ct(e,t,n,r))})(n,s,r),a()):await i;const c=new d(o.length+e.length-e.length%ot);c.set(o,0),t.enqueue(Ft(n,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:n,pending:r,ready:a}=this;if(n&&t){await a;let i=new d;if(r.length){const e=t.update(Lt(bt,r));n.update(e),i=At(bt,e)}s.signature=At(bt,n.digest()).slice(0,pt),e.enqueue(Wt(i,s.signature))}}}),s=this}}function Ft(e,t,n,r,s,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-s;let u;for(c.length&&(t=Wt(c,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new d(t)).set(n,0)}return e})(n,l-l%ot)),u=0;l-ot>=u;u+=ot){const e=Lt(bt,Ut(t,u,u+ot));a&&o.update(e);const s=i.update(e);a||o.update(s),n.set(At(bt,s),u+r)}return e.pending=Ut(t,u),n}async function Ct(e,r,s,a){e.password=null;const i=await(async(e,t,n,r,s)=>{if(!zt)return tt.importKey(t);try{return await mt.importKey("raw",t,n,!1,s)}catch(e){return zt=!1,tt.importKey(t)}})(0,s,lt,0,ht),o=await(async(e,t,n)=>{if(!xt)return tt.pbkdf2(t,e.salt,ut.iterations,n);try{return await mt.deriveBits(e,t,n)}catch(r){return xt=!1,tt.pbkdf2(t,e.salt,ut.iterations,n)}})(n.assign({salt:a},ut),i,8*(2*dt[r]+2)),c=new d(o),l=Lt(bt,Ut(c,0,dt[r])),u=Lt(bt,Ut(c,dt[r],2*dt[r])),h=Ut(c,2*dt[r]);return n.assign(e,{keys:{key:l,authentication:u,passwordVerification:h},ctr:new kt(new vt(l),t.from(wt)),hmac:new St(u)}),h}function Tt(e,t){return t===xe?(e=>{if(typeof b==_e){const t=new d((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new b).encode(e)})(e):t}function Wt(e,t){let n=e;return e.length+t.length&&(n=new d(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Ut(e,t,n){return e.subarray(t,n)}function At(e,t){return e.fromBits(t)}function Lt(e,t){return e.toBits(t)}class Et extends x{constructor({password:e,passwordVerification:t,checkPasswordOnly:r}){super({start(){n.assign(this,{password:e,passwordVerification:t}),Pt(this,e)},transform(e,t){const n=this;if(n.password){const t=Bt(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new f(rt);e=e.subarray(12)}r?t.error(new f(at)):t.enqueue(Bt(n,e))}})}}class Rt extends x{constructor({password:e,passwordVerification:t}){super({start(){n.assign(this,{password:e,passwordVerification:t}),Pt(this,e)},transform(e,t){const n=this;let r,s;if(n.password){n.password=null;const t=it(new d(12));t[11]=n.passwordVerification,r=new d(e.length+t.length),r.set(Mt(n,t),0),s=12}else r=new d(e.length),s=0;r.set(Mt(n,e),s),t.enqueue(r)}})}}function Bt(e,t){const n=new d(t.length);for(let r=0;r<t.length;r++)n[r]=It(e)^t[r],Ot(e,n[r]);return n}function Mt(e,t){const n=new d(t.length);for(let r=0;r<t.length;r++)n[r]=It(e)^t[r],Ot(e,t[r]);return n}function Pt(e,t){const r=[305419896,591751049,878082192];n.assign(e,{keys:r,crcKey0:new Je(r[0]),crcKey2:new Je(r[2])});for(let n=0;n<t.length;n++)Ot(e,t.charCodeAt(n))}function Ot(e,t){let[n,r,s]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),r=Vt(i.imul(Vt(r+Nt(n)),134775813)+1),e.crcKey2.append([r>>>24]),s=~e.crcKey2.get(),e.keys=[n,r,s]}function It(e){const t=2|e.keys[2];return Nt(i.imul(t,1^t)>>>8)}function Nt(e){return 255&e}function Vt(e){return 4294967295&e}const qt="deflate-raw";class Ht extends x{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,u=this;let h,f,d=Zt(super.readable);a&&!o||!c||(h=new Qe,d=Jt(d,h)),s&&(d=Gt(d,i,{level:l,chunkSize:t},r,n)),a&&(o?d=Jt(d,new Rt(e)):(f=new Dt(e),d=Jt(d,f))),jt(u,d,(()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new g(h.value.buffer).getUint32(0)),u.signature=e}))}}class Kt extends x{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:s,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l}=e;let u,h,d=Zt(super.readable);a&&(s?d=Jt(d,new Et(e)):(h=new _t(e),d=Jt(d,h))),c&&(d=Gt(d,l,{chunkSize:t},r,n)),a&&!s||!i||(u=new Qe,d=Jt(d,u)),jt(this,d,(()=>{if((!a||s)&&i){const e=new g(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(st)}}))}}function Zt(e){return Jt(e,new x({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function jt(e,t,r){t=Jt(t,new x({flush:r})),n.defineProperty(e,"readable",{get:()=>t})}function Gt(e,t,n,r,s){try{e=Jt(e,new(t&&r?r:s)(qt,n))}catch(r){if(!t)return e;try{e=Jt(e,new s(qt,n))}catch(t){return e}}return e}function Jt(e,t){return e.pipeThrough(t)}const Qt="data",Xt="close",Yt="inflate";class $t extends x{constructor(e,t){super({});const r=this,{codecType:s}=e;let a;s.startsWith("deflate")?a=Ht:s.startsWith(Yt)&&(a=Kt);let i=0,o=0;const c=new a(e,t),l=super.readable,u=new x({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){n.assign(r,{inputSize:o})}}),h=new x({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){const{signature:e}=c;n.assign(r,{signature:e,outputSize:i,inputSize:o})}});n.defineProperty(r,"readable",{get:()=>l.pipeThrough(u).pipeThrough(c).pipeThrough(h)})}}class en extends x{constructor(e){let t;super({transform:function n(r,s){if(t){const e=new d(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(s.enqueue(r.slice(0,e)),n(r.slice(e),s)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}let tn=typeof W!=_e;class nn{constructor(e,{readable:t,writable:r},{options:s,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,scripts:l},u){const{signal:h}=i;return n.assign(e,{busy:!0,readable:t.pipeThrough(new en(a.chunkSize)).pipeThrough(new rn(t,i),{signal:h}),writable:r,options:n.assign({},s),scripts:l,transferStreams:c,terminate:()=>new y((t=>{const{worker:n,busy:r}=e;n?(r?e.resolveTerminated=t:(n.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,u(e)}}),(o&&tn?on:an)(e,a)}}class rn extends x{constructor(e,{onstart:t,onprogress:n,size:r,onend:s}){let a=0;super({async start(){t&&await sn(t,r)},async transform(e,t){a+=e.length,n&&await sn(n,a,r),t.enqueue(e)},async flush(){e.size=a,s&&await sn(s,a)}})}}async function sn(e,...t){try{await e(...t)}catch(e){}}function an(e,t){return{run:()=>(async({options:e,readable:t,writable:n,onTaskFinished:r},s)=>{try{const r=new $t(e,s);await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:a,inputSize:i,outputSize:o}=r;return{signature:a,inputSize:i,outputSize:o}}finally{r()}})(e,t)}}function on(e,t){const{baseURL:r,chunkSize:s}=t;if(!e.interface){let a;try{a=((e,t,r)=>{const s={type:"module"};let a,i;typeof e==De&&(e=e());try{a=new h(e,t)}catch(t){a=e}if(cn)try{i=new W(a)}catch(e){cn=!1,i=new W(a,s)}else i=new W(a,s);return i.addEventListener("message",(e=>(async({data:e},t)=>{const{type:r,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:u,rejectResult:h,onTaskFinished:p}=t;try{if(o){const{message:e,stack:t,code:r,name:s}=o,a=new f(e);n.assign(a,{stack:t,code:r,name:s}),w(a)}else{if("pull"==r){const{value:e,done:n}=await c.read();un({type:Qt,value:e,done:n,messageId:a},t)}r==Qt&&(await l.ready,await l.write(new d(s)),un({type:"ack",messageId:a},t)),r==Xt&&w(null,i)}}catch(o){un({type:Xt,messageId:a},t),w(o)}function w(e,t){e?h(e):u(t),l&&l.releaseLock(),p()}})(e,r))),i})(e.scripts[0],r,e)}catch(n){return tn=!1,an(e,t)}n.assign(e,{worker:a,interface:{run:()=>(async(e,t)=>{let r,s;const a=new y(((e,t)=>{r=e,s=t}));n.assign(e,{reader:null,writer:null,resolveResult:r,rejectResult:s,result:a});const{readable:i,options:o,scripts:c}=e,{writable:l,closed:u}=(e=>{let t;const n=new y((e=>t=e));return{writable:new D({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:n}})(e.writable),h=un({type:"start",scripts:c.slice(1),options:o,config:t,readable:i,writable:l},e);h||n.assign(e,{reader:i.getReader(),writer:l.getWriter()});const f=await a;return h||await l.getWriter().close(),await u,f})(e,{chunkSize:s})}})}return e.interface}let cn=!0,ln=!0;function un(e,{worker:t,writer:n,onTaskFinished:r,transferStreams:s}){try{let{value:n,readable:r,writable:a}=e;const i=[];if(n&&(n.byteLength<n.buffer.byteLength?e.value=n.buffer.slice(0,n.byteLength):e.value=n.buffer,i.push(e.value)),s&&ln?(r&&i.push(r),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch(n){ln=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw n&&n.releaseLock(),r(),e}}let hn=[];const fn=[];let dn=0;function pn(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const wn="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),gn=256==wn.length;function mn(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{if(gn){let t="";for(let n=0;n<e.length;n++)t+=wn[e[n]];return t}return(new v).decode(e)})(e):new v(t).decode(e)}const yn="filename",bn="rawFilename",vn="comment",kn="rawComment",Sn="uncompressedSize",zn="compressedSize",xn="offset",_n="diskNumberStart",Dn="lastModDate",Fn="rawLastModDate",Cn="lastAccessDate",Tn="creationDate",Wn=[yn,bn,zn,Sn,Dn,Fn,vn,kn,Cn,Tn,xn,_n,_n,"internalFileAttribute","externalFileAttribute","msDosCompatible","zip64","directory","bitFlag","encrypted","signature","filenameUTF8","commentUTF8","compressionMethod","version","versionMadeBy","extraField","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Un{constructor(e){Wn.forEach((t=>this[t]=e[t]))}}const An="File format is not recognized",Ln="Compression method not supported",En="Split zip file",Rn="utf-8",Bn="cp437",Mn=[[Sn,ve],[zn,ve],[xn,ve],[_n,ke]],Pn={[ke]:{getValue:Gn,bytes:4},[ve]:{getValue:Jn,bytes:8}};class On{constructor(e,t,r){n.assign(this,{reader:e,config:t,options:r})}async getData(e,t,r={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,compressionMethod:u,config:h,bitFlag:p,signature:w,rawLastModDate:g,uncompressedSize:m,compressedSize:b}=a,v=t.localDirectory={},k=Qn(await je(i,o,30,c));let S=qn(a,r,"password"),z=qn(a,r,"rawPassword");if(S=S&&S.length&&S,z=z&&z.length&&z,l&&99!=l.originalCompressionMethod)throw new f(Ln);if(0!=u&&8!=u)throw new f(Ln);if(67324752!=Gn(k,0))throw new f("Local file header not found");In(v,k,4),v.rawExtraField=v.extraFieldLength?await je(i,o+30+v.filenameLength,v.extraFieldLength,c):new d,await Nn(a,v,k,4,!0),n.assign(t,{lastAccessDate:v.lastAccessDate,creationDate:v.creationDate});const x=a.encrypted&&v.encrypted,_=x&&!l;if(x){if(!_&&l.strength===xe)throw new f("Encryption method not supported");if(!S&&!z)throw new f("File contains encrypted entry")}const F=o+30+v.filenameLength+v.extraFieldLength,C=b,T=i.readable;n.assign(T,{diskNumberStart:c,offset:F,size:C});const W=qn(a,r,"signal"),U=qn(a,r,"checkPasswordOnly");U&&(e=new D),e=(e=>{e.writable===xe&&typeof e.next==De&&(e=new He(e)),e instanceof D&&(e={writable:e});const{writable:t}=e;return t.size===xe&&(t.size=0),e instanceof He||n.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e})(e),await Ke(e,m);const{writable:A}=e,{onstart:L,onprogress:E,onend:R}=r,B={options:{codecType:Yt,password:S,rawPassword:z,zipCrypto:_,encryptionStrength:l&&l.strength,signed:qn(a,r,"checkSignature"),passwordVerification:_&&(p.dataDescriptor?g>>>8&255:w>>>24&255),signature:w,compressed:0!=u,encrypted:x,useWebWorkers:qn(a,r,"useWebWorkers"),useCompressionStream:qn(a,r,"useCompressionStream"),transferStreams:qn(a,r,"transferStreams"),checkPasswordOnly:U},config:h,streamOptions:{signal:W,size:C,onstart:L,onprogress:E,onend:R}};let M=0;try{({outputSize:M}=await(async(e,t)=>{const{options:n,config:r}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,codecType:c,compressed:l,signed:u,encrypted:h}=n,{workerScripts:f,maxWorkers:d}=r;t.transferStreams=a||a===xe;const p=!(l||u||h||t.transferStreams);return t.useWebWorkers=!p&&(i||i===xe&&r.useWebWorkers),t.scripts=t.useWebWorkers&&f?f[c]:[],n.useCompressionStream=o||o===xe&&r.useCompressionStream,(await(async()=>{const n=hn.find((e=>!e.busy));if(n)return pn(n),new nn(n,e,t,w);if(hn.length<d){const n={indexWorker:dn};return dn++,hn.push(n),new nn(n,e,t,w)}return new y((n=>fn.push({resolve:n,stream:e,workerOptions:t})))})()).run();function w(e){if(fn.length){const[{resolve:t,stream:n,workerOptions:r}]=fn.splice(0,1);t(new nn(e,n,r,w))}else e.worker?(pn(e),((e,t)=>{const{config:n}=t,{terminateWorkerTimeout:r}=n;s.isFinite(r)&&r>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{hn=hn.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),r))})(e,t)):hn=hn.filter((t=>t!=e))}})({readable:T,writable:A},B))}catch(e){if(!U||e.message!=at)throw e}finally{const e=qn(a,r,"preventClose");A.size+=M,e||A.locked||await A.getWriter().close()}return U?xe:e.getData?e.getData():A}}function In(e,t,r){const s=e.rawBitFlag=jn(t,r+2),a=!(1&~s),i=Gn(t,r+6);n.assign(e,{encrypted:a,version:jn(t,r),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:!(2048&~s)},rawLastModDate:i,lastModDate:Hn(i),filenameLength:jn(t,r+22),extraFieldLength:jn(t,r+24)})}async function Nn(e,t,r,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,u=Qn(new d(i));let h=0;try{for(;h<i.length;){const e=jn(u,h),t=jn(u,h+2);l.set(e,{type:e,data:i.slice(h+4,h+4+t)}),h+=4+t}}catch(e){}const p=jn(r,s+4);n.assign(t,{signature:Gn(r,s+10),uncompressedSize:Gn(r,s+18),compressedSize:Gn(r,s+14)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const n=Qn(e.data),r=Mn.filter((([e,n])=>t[e]==n));for(let s=0,a=0;s<r.length;s++){const[i,o]=r[s];if(t[i]==o){const r=Pn[o];t[i]=e[i]=r.getValue(n,a),a+=r.bytes}else if(e[i])throw new f("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const g=l.get(28789);g&&(await Vn(g,yn,bn,t,e),t.extraFieldUnicodePath=g);const m=l.get(25461);m&&(await Vn(m,vn,kn,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y?(((e,t,r)=>{const s=Qn(e.data),a=Zn(s,4);n.assign(e,{vendorVersion:Zn(s,0),vendorId:Zn(s,2),strength:a,originalCompressionMethod:r,compressionMethod:jn(s,5)}),t.compressionMethod=e.compressionMethod})(y,t,p),t.extraFieldAES=y):t.compressionMethod=p;const b=l.get(10);b&&(((e,t)=>{const r=Qn(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=jn(r,a),n=jn(r,a+2);1==t&&(s=e.data.slice(a+4,a+4+n)),a+=4+n}}catch(e){}try{if(s&&24==s.length){const r=Qn(s),a=r.getBigUint64(0,!0),i=r.getBigUint64(8,!0),o=r.getBigUint64(16,!0);n.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Kn(a),lastAccessDate:Kn(i),creationDate:Kn(o)};n.assign(e,c),n.assign(t,c)}}catch(e){}})(b,t),t.extraFieldNTFS=b);const v=l.get(21589);v&&(((e,t,n)=>{const r=Qn(e.data),s=Zn(r,0),a=[],i=[];n?(1&~s||(a.push(Dn),i.push(Fn)),2&~s||(a.push(Cn),i.push("rawLastAccessDate")),4&~s||(a.push(Tn),i.push("rawCreationDate"))):5>e.data.length||(a.push(Dn),i.push(Fn));let c=1;a.forEach(((n,s)=>{if(e.data.length>=c+4){const a=Gn(r,c);t[n]=e[n]=new o(1e3*a);const l=i[s];e[l]=a}c+=4}))})(v,t,a),t.extraFieldExtendedTimestamp=v);const k=l.get(6534);k&&(t.extraFieldUSDZ=k)}async function Vn(e,t,r,s,a){const i=Qn(e.data),o=new Je;o.append(a[r]);const c=Qn(new d(4));c.setUint32(0,o.get(),!0);const l=Gn(i,1);n.assign(e,{version:Zn(i,0),[t]:mn(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Gn(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function qn(e,t,n){return t[n]===xe?e.options[n]:t[n]}function Hn(e){const t=(4294901760&e)>>16,n=65535&e;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function Kn(e){return new o(s(e/a(1e4)-a(116444736e5)))}function Zn(e,t){return e.getUint8(t)}function jn(e,t){return e.getUint16(t,!0)}function Gn(e,t){return e.getUint32(t,!0)}function Jn(e,t){return s(e.getBigUint64(t,!0))}function Qn(e){return new g(e.buffer)}Ee({Inflate:Te}),e.BlobReader=Ne,e.BlobWriter=Ve,e.Data64URIWriter=class extends Ie{constructor(e){super(),n.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let n=0,s=t.pending;const a=t.pending.length;for(t.pending="",n=0;n<3*i.floor((a+e.length)/3)-a;n++)s+=r.fromCharCode(e[n]);for(;n<e.length;n++)t.pending+=r.fromCharCode(e[n]);s.length>2?t.data+=z(s):t.pending=s}getData(){return this.data+z(this.pending)}},e.TextWriter=class extends Ve{constructor(e){super(e),n.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,r=await super.getData();if(r.text&&t)return r.text();{const t=new FileReader;return new y(((s,a)=>{n.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(r,e)}))}}},e.ZipReader=class{constructor(e,t={}){n.assign(this,{reader:Ze(e),options:t,config:Le})}async*getEntriesGenerator(e={}){const t=this;let{reader:r}=t;const{config:s}=t;if(await Ke(r),r.size!==xe&&r.readUint8Array||(r=new Ne(await new u(r.readable).blob()),await Ke(r)),22>r.size)throw new f(An);r.chunkSize=(e=>i.max(e.chunkSize,64))(s);const a=await(async(e,t,n)=>{const r=new d(4);return 101010256,Qn(r).setUint32(0,101010256,!0),await s(22)||await s(i.min(1048582,n));async function s(t){const s=n-t,a=await je(e,s,t);for(let e=a.length-22;e>=0;e--)if(a[e]==r[0]&&a[e+1]==r[1]&&a[e+2]==r[2]&&a[e+3]==r[3])return{offset:s+e,buffer:a.slice(e,e+22).buffer}}})(r,0,r.size);if(!a)throw 134695760==Gn(Qn(await je(r,0,4)))?new f(En):new f("End of central directory not found");const o=Qn(a);let c=Gn(o,12),l=Gn(o,16);const h=a.offset,p=jn(o,20),w=h+22+p;let g=jn(o,4);const m=r.lastDiskNumber||0;let y=jn(o,6),b=jn(o,8),v=0,k=0;if(l==ve||c==ve||b==ke||y==ke){const e=Qn(await je(r,a.offset-20,20));if(117853008==Gn(e,0)){l=Jn(e,8);let t=await je(r,l,56,-1),n=Qn(t);const s=a.offset-20-56;if(Gn(n,0)!=ze&&l!=s){const e=l;l=s,v=l-e,t=await je(r,l,56,-1),n=Qn(t)}if(Gn(n,0)!=ze)throw new f("End of Zip64 central directory locator not found");g==ke&&(g=Gn(n,16)),y==ke&&(y=Gn(n,20)),b==ke&&(b=Jn(n,32)),c==ve&&(c=Jn(n,40)),l-=c}}if(l<r.size||(v=r.size-l-c-22,l=r.size-c-22),m!=g)throw new f(En);if(0>l)throw new f(An);let S=0,z=await je(r,l,c,y),x=Qn(z);if(c){const e=a.offset-c;if(Gn(x,S)!=Se&&l!=e){const t=l;l=e,v+=l-t,z=await je(r,l,c,y),x=Qn(z)}}const _=a.offset-l-(r.lastDiskOffset||0);if(c==_||0>_||(c=_,z=await je(r,l,c,y),x=Qn(z)),0>l||l>=r.size)throw new f(An);const D=qn(t,e,"filenameEncoding"),F=qn(t,e,"commentEncoding");for(let a=0;b>a;a++){const o=new On(r,s,t.options);if(Gn(x,S)!=Se)throw new f("Central directory header not found");In(o,x,S+6);const c=!!o.bitFlag.languageEncodingFlag,l=S+46,u=l+o.filenameLength,h=u+o.extraFieldLength,d=jn(x,S+4),p=!0,w=z.subarray(l,u),g=jn(x,S+32),m=h+g,y=z.subarray(h,m),_=c,C=c,T=p&&!(16&~Zn(x,S+38)),W=Gn(x,S+42)+v;n.assign(o,{versionMadeBy:d,msDosCompatible:p,compressedSize:0,uncompressedSize:0,commentLength:g,directory:T,offset:W,diskNumberStart:jn(x,S+34),internalFileAttribute:jn(x,S+36),externalFileAttribute:Gn(x,S+38),rawFilename:w,filenameUTF8:_,commentUTF8:C,rawExtraField:z.subarray(u,h)});const U=qn(t,e,"decodeText")||mn,A=_?Rn:D||Bn,L=C?Rn:F||Bn;let E=U(w,A);E===xe&&(E=mn(w,A));let R=U(y,L);R===xe&&(R=mn(y,L)),n.assign(o,{rawComment:y,filename:E,comment:R,directory:T||E.endsWith("/")}),k=i.max(W,k),await Nn(o,o,x,S+6);const B=new Un(o);B.getData=(e,t)=>o.getData(e,B,t),S=m;const{onprogress:M}=e;if(M)try{await M(a+1,b,new Un(o))}catch(e){}yield B}const C=qn(t,e,"extractPrependedData"),T=qn(t,e,"extractAppendedData");return C&&(t.prependedData=k>0?await je(r,0,k):new d),t.comment=p?await je(r,h+22,p):new d,T&&(t.appendedData=w<r.size?await je(r,w,r.size-w):new d),!0}async getEntries(e={}){const t=[];for await(const n of this.getEntriesGenerator(e))t.push(n);return t}async close(){}},e.configure=Ee}));
|
|
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:n,String:s,Number:r,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:u,URL:h,Error:d,Uint8Array:f,Uint16Array:p,Uint32Array:w,DataView:g,Blob:m,Promise:y,TextEncoder:b,TextDecoder:S,document:_,crypto:k,btoa:z,TransformStream:v,ReadableStream:x,WritableStream:C,CompressionStream:R,DecompressionStream:D,navigator:T,Worker:F}="undefined"!=typeof globalThis?globalThis:this||self;var A=void 0!==_?_.currentScript:null;const q=4294967295,U=65535,W=33639248,L=101075792,H=22,B=void 0,E="undefined",P="function";class I{constructor(e){return class extends v{constructor(t,n){const s=new e(n);super({transform(e,t){t.enqueue(s.append(e))},flush(e){const t=s.flush();t&&e.enqueue(t)}})}}}}let V=2;try{typeof T!=E&&T.hardwareConcurrency&&(V=T.hardwareConcurrency)}catch(e){}const M={chunkSize:524288,maxWorkers:V,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:B,CompressionStreamNative:typeof R!=E&&R,DecompressionStreamNative:typeof D!=E&&D},N=n.assign({},M);function K(){return N}function O(e){const{baseURL:n,chunkSize:s,maxWorkers:r,terminateWorkerTimeout:a,useCompressionStream:i,useWebWorkers:o,Deflate:c,Inflate:l,CompressionStream:u,DecompressionStream:h,workerScripts:f}=e;if(j("baseURL",n),j("chunkSize",s),j("maxWorkers",r),j("terminateWorkerTimeout",a),j("useCompressionStream",i),j("useWebWorkers",o),c&&(N.CompressionStream=new I(c)),l&&(N.DecompressionStream=new I(l)),j("CompressionStream",u),j("DecompressionStream",h),f!==B){const{deflate:e,inflate:n}=f;if((e||n)&&(N.workerScripts||(N.workerScripts={})),e){if(!t.isArray(e))throw new d("workerScripts.deflate must be an array");N.workerScripts.deflate=e}if(n){if(!t.isArray(n))throw new d("workerScripts.inflate must be an array");N.workerScripts.inflate=n}}}function j(e,t){t!==B&&(N[e]=t)}const G="HTTP error ",J="HTTP Range not supported",X="Content-Length",Z="Range",$="HEAD",Q="GET",Y="bytes",ee=65536,te="writable";class ne{constructor(){this.size=0}init(){this.initialized=!0}}class se extends ne{get readable(){const e=this,{chunkSize:t=ee}=e,n=new x({start(){this.chunkOffset=0},async pull(s){const{offset:r=0,size:a,diskNumberStart:o}=n,{chunkOffset:c}=this;s.enqueue(await xe(e,r+c,i.min(t,a-c),o)),c+t>a?s.close():this.chunkOffset+=t}});return n}}class re extends ne{constructor(){super();const e=this,t=new C({write:t=>e.writeUint8Array(t)});n.defineProperty(e,te,{get:()=>t})}writeUint8Array(){}}class ae extends se{constructor(e){super(),n.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,s=e+t,r=e||s<n.size?n.blob.slice(e,s):n.blob;let a=await r.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class ie extends ne{constructor(e){super();const t=new v,s=[];e&&s.push(["Content-Type",e]),n.defineProperty(this,te,{get:()=>t.writable}),this.blob=new u(t.readable,{headers:s}).blob()}getData(){return this.blob}}class oe extends se{constructor(e,t){super(),le(this,e,t)}async init(){await ue(this,ye,pe),super.init()}readUint8Array(e,t){return he(this,e,t,ye,pe)}}class ce extends se{constructor(e,t){super(),le(this,e,t)}async init(){await ue(this,be,we),super.init()}readUint8Array(e,t){return he(this,e,t,be,we)}}function le(e,t,s){const{preventHeadRequest:r,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=n.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,n.assign(e,{url:t,options:s,preventHeadRequest:r,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function ue(e,t,n){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURL:t}=K(),{protocol:n}=new h(e,t);return"http:"==n||"https:"==n})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Q,e,de(e,c?-22:void 0));if(!o&&s.headers.get("Accept-Ranges")!=Y)throw new d(J);{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=r(t))}}a===B?await me(e,t,n):e.size=a}}else await me(e,t,n)}async function he(e,t,n,s,r){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&n==H)return o;const r=await s(Q,e,de(e,t,n));if(206!=r.status)throw new d(J);return new f(await r.arrayBuffer())}{const{data:s}=e;return s||await r(e,l),new f(e.data.subarray(t,t+n))}}function de(e,t=0,s=1){return n.assign({},fe(e),{[Z]:Y+"="+(0>t?t:t+"-"+(t+s-1))})}function fe({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?n.fromEntries(t):t}async function pe(e){await ge(e,ye)}async function we(e){await ge(e,be)}async function ge(e,t){const n=await t(Q,e,fe(e));e.data=new f(await n.arrayBuffer()),e.size||(e.size=e.data.length)}async function me(e,t,n){if(e.preventHeadRequest)await n(e,e.options);else{const s=(await t($,e,fe(e))).headers.get(X);s?e.size=r(s):await n(e,e.options)}}async function ye(e,{options:t,url:s},r){const a=await fetch(s,n.assign({},t,{method:e,headers:r}));if(400>a.status)return a;throw 416==a.status?new d(J):new d(G+(a.statusText||a.status))}function be(e,{url:t},s){return new y(((r,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",(()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach((t=>{const n=t.trim().split(/\s*:\s*/);n[0]=n[0].trim().replace(/^[a-z]|-[a-z]/g,(e=>e.toUpperCase())),e.push(n)})),r({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new d(J):new d(G+(i.statusText||i.status)))}),!1),i.addEventListener("error",(e=>a(e.detail?e.detail.error:new d("Network error"))),!1),i.open(e,t),s)for(const e of n.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()}))}class Se extends se{constructor(e,t={}){super(),n.assign(this,{url:e,reader:t.useXHR?new ce(e,t):new oe(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 _e extends se{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(n,s)=>{await n.init(),s!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const s=this,{readers:r}=this;let a,o=n;-1==o&&(o=r.length-1);let c=e;for(;c>=r[o].size;)c-=r[o].size,o++;const l=r[o],u=l.size;if(c+t>u){const r=u-c;a=new f(t),a.set(await xe(l,c,r)),a.set(await s.readUint8Array(e+r,t-r,n),r)}else a=await xe(l,c,t);return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class ke extends ne{constructor(e,t=4294967295){super();const s=this;let r,a,i;n.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new C({async write(t){const{availableSize:n}=s;if(i)t.length<n?await c(t):(await c(t.slice(0,n)),await l(),s.diskOffset+=r.size,s.diskNumber++,i=null,await this.write(t.slice(n)));else{const{value:n,done:o}=await e.next();if(o&&!n)throw new d("Writer iterator completed too soon");r=n,r.size=0,r.maxSize&&(s.maxSize=r.maxSize),s.availableSize=s.maxSize,await ze(r),a=n.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),r.size+=t,s.size+=t,s.availableSize-=t)}async function l(){a.size=r.size,await i.close()}n.defineProperty(s,te,{get:()=>o})}}async function ze(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function ve(e){return t.isArray(e)&&(e=new _e(e)),e instanceof x&&(e={readable:e}),e}function xe(e,t,n,s){return e.readUint8Array(t,n,s)}const Ce=[];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;Ce[e]=t}class Re{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^Ce[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class De extends v{constructor(){let e;const t=new Re;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new f(4);new g(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const Te={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=Te.getPartial(n);return 32===s?e.concat(t):Te._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+Te.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=Te.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=Te.getPartial(r);return s.push(Te.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},Fe={bytes:{fromBits(e){const t=Te.bitLength(e)/8,n=new f(t);let s;for(let r=0;t>r;r++)3&r||(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3&~n||(t.push(s),s=0);return 3&n&&t.push(Te.partial(8*(3&n),s)),t}}},Ae=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=Fe.utf8String.toBits(e));const n=t._buffer=Te.concat(t._buffer,e),s=t._length,r=t._length=s+Te.bitLength(e);if(r>9007199254740991)throw new d("Cannot hash more than 2^53 - 1 bits");const a=new w(n);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);r>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return n.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=Te.concat(t,[Te.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(),n}_f(e,t,n,s){return e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const n=this,s=n._h,r=t(80);for(let t=0;16>t;t++)r[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],u=s[4];for(let e=0;79>=e;e++){16>e||(r[e]=n._S(1,r[e-3]^r[e-8]^r[e-14]^r[e-16]));const t=n._S(5,a)+n._f(e,o,c,l)+u+r[e]+n._key[i.floor(e/20)]|0;u=l,l=c,c=n._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]+u|0}},qe={getRandomValues(e){const t=new w(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,r=0;r<e.length;r+=4){const e=n(4294967296*(s||i.random()));s=987654071*e(),t[r/4]=4294967296*e()|0}return e}},Ue={importKey:e=>new Ue.hmacSha1(Fe.bytes.toBits(e)),pbkdf2(e,t,n,s){if(n=n||1e4,0>s||0>n)throw new d("invalid params to pbkdf2");const r=1+(s>>5)<<2;let a,i,o,c,l;const u=new ArrayBuffer(r),h=new g(u);let f=0;const p=Te;for(t=Fe.bytes.toBits(t),l=1;(r||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;n>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(r||1)>f&&o<a.length;o++)h.setInt32(f,a[o]),f+=4}return u.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=Ae,s=[[],[]];t._baseHash=[new n,new n];const r=t._baseHash[0].blockSize/32;e.length>r&&(e=(new n).update(e).finalize());for(let t=0;r>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 n(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(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new d("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},We=typeof k!=E&&typeof k.getRandomValues==P,Le="Invalid password",He="Invalid signature",Be="zipjs-abort-check-password";function Ee(e){return We?k.getRandomValues(e):qe.getRandomValues(e)}const Pe=16,Ie={name:"PBKDF2"},Ve=n.assign({hash:{name:"HMAC"}},Ie),Me=n.assign({iterations:1e3,hash:{name:"SHA-1"}},Ie),Ne=["deriveBits"],Ke=[8,12,16],Oe=[16,24,32],je=10,Ge=[0,0,0,0],Je=typeof k!=E,Xe=Je&&k.subtle,Ze=Je&&typeof Xe!=E,$e=Fe.bytes,Qe=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],s=t._tables[1],r=e.length;let a,i,o,c=1;if(4!==r&&6!==r&&8!==r)throw new d("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=r;4*r+28>a;a++){let e=i[a-1];(a%r==0||8===r&&a%r==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],a%r==0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-r]^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][n[t>>>24]]^s[1][n[t>>16&255]]^s[2][n[t>>8&255]]^s[3][n[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],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let u=i=0;!n[u];u^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[u]=a,s[a]=u,l=r[c=r[o=r[u]]];let h=16843009*l^65537*c^257*o^16843008*u,d=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][u]=d=d<<24^d>>>8,t[n][a]=h=h<<24^h>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new d("invalid aes block size");const n=this._key[t],s=n.length/4-2,r=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],u=a[4];let h,f,p,w=e[0]^n[0],g=e[t?3:1]^n[1],m=e[2]^n[2],y=e[t?1:3]^n[3],b=4;for(let e=0;s>e;e++)h=i[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&y]^n[b],f=i[g>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&w]^n[b+1],p=i[m>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&g]^n[b+2],y=i[y>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^n[b+3],b+=4,w=h,g=f,m=p;for(let e=0;4>e;e++)r[t?3&-e:e]=u[w>>>24]<<24^u[g>>16&255]<<16^u[m>>8&255]<<8^u[255&y]^n[b++],h=w,w=g,g=m,m=y,y=h;return r}},Ye=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,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=Te.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return Te.clamp(t,r)}},et=Ue.hmacSha1;let tt=Je&&Ze&&typeof Xe.importKey==P,nt=Je&&Ze&&typeof Xe.deriveBits==P;class st extends v{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:r,checkPasswordOnly:a}){super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:ot(e,t),signed:s,strength:r-1,pending:new f})},async transform(e,t){const n=this,{password:s,strength:r,resolveReady:i,ready:o}=n;s?(await(async(e,t,n,s)=>{const r=await it(e,t,n,lt(s,0,Ke[t])),a=lt(s,Ke[t]);if(r[0]!=a[0]||r[1]!=a[1])throw new d(Le)})(n,r,s,lt(e,0,Ke[r]+2)),e=lt(e,Ke[r]+2),a?t.error(new d(Be)):i()):await o;const c=new f(e.length-je-(e.length-je)%Pe);t.enqueue(at(n,e,c,0,je,!0))},async flush(e){const{signed:t,ctr:n,hmac:s,pending:r,ready:a}=this;if(s&&n){await a;const i=lt(r,0,r.length-je),o=lt(r,r.length-je);let c=new f;if(i.length){const e=ht($e,i);s.update(e);const t=n.update(e);c=ut($e,t)}if(t){const e=lt(ut($e,s.digest()),0,je);for(let t=0;je>t;t++)if(e[t]!=o[t])throw new d(He)}e.enqueue(c)}}})}}class rt extends v{constructor({password:e,rawPassword:t,encryptionStrength:s}){let r;super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:ot(e,t),strength:s-1,pending:new f})},async transform(e,t){const n=this,{password:s,strength:r,resolveReady:a,ready:i}=n;let o=new f;s?(o=await(async(e,t,n)=>{const s=Ee(new f(Ke[t]));return ct(s,await it(e,t,n,s))})(n,r,s),a()):await i;const c=new f(o.length+e.length-e.length%Pe);c.set(o,0),t.enqueue(at(n,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:n,pending:s,ready:a}=this;if(n&&t){await a;let i=new f;if(s.length){const e=t.update(ht($e,s));n.update(e),i=ut($e,e)}r.signature=ut($e,n.digest()).slice(0,je),e.enqueue(ct(i,r.signature))}}}),r=this}}function at(e,t,n,s,r,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-r;let u;for(c.length&&(t=ct(c,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new f(t)).set(n,0)}return e})(n,l-l%Pe)),u=0;l-Pe>=u;u+=Pe){const e=ht($e,lt(t,u,u+Pe));a&&o.update(e);const r=i.update(e);a||o.update(r),n.set(ut($e,r),u+s)}return e.pending=lt(t,u),n}async function it(e,s,r,a){e.password=null;const i=await(async(e,t,n,s,r)=>{if(!tt)return Ue.importKey(t);try{return await Xe.importKey("raw",t,n,!1,r)}catch(e){return tt=!1,Ue.importKey(t)}})(0,r,Ve,0,Ne),o=await(async(e,t,n)=>{if(!nt)return Ue.pbkdf2(t,e.salt,Me.iterations,n);try{return await Xe.deriveBits(e,t,n)}catch(s){return nt=!1,Ue.pbkdf2(t,e.salt,Me.iterations,n)}})(n.assign({salt:a},Me),i,8*(2*Oe[s]+2)),c=new f(o),l=ht($e,lt(c,0,Oe[s])),u=ht($e,lt(c,Oe[s],2*Oe[s])),h=lt(c,2*Oe[s]);return n.assign(e,{keys:{key:l,authentication:u,passwordVerification:h},ctr:new Ye(new Qe(l),t.from(Ge)),hmac:new et(u)}),h}function ot(e,t){return t===B?(e=>{if(typeof b==E){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new b).encode(e)})(e):t}function ct(e,t){let n=e;return e.length+t.length&&(n=new f(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function lt(e,t,n){return e.subarray(t,n)}function ut(e,t){return e.fromBits(t)}function ht(e,t){return e.toBits(t)}class dt extends v{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){n.assign(this,{password:e,passwordVerification:t}),gt(this,e)},transform(e,t){const n=this;if(n.password){const t=pt(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new d(Le);e=e.subarray(12)}s?t.error(new d(Be)):t.enqueue(pt(n,e))}})}}class ft extends v{constructor({password:e,passwordVerification:t}){super({start(){n.assign(this,{password:e,passwordVerification:t}),gt(this,e)},transform(e,t){const n=this;let s,r;if(n.password){n.password=null;const t=Ee(new f(12));t[11]=n.passwordVerification,s=new f(e.length+t.length),s.set(wt(n,t),0),r=12}else s=new f(e.length),r=0;s.set(wt(n,e),r),t.enqueue(s)}})}}function pt(e,t){const n=new f(t.length);for(let s=0;s<t.length;s++)n[s]=yt(e)^t[s],mt(e,n[s]);return n}function wt(e,t){const n=new f(t.length);for(let s=0;s<t.length;s++)n[s]=yt(e)^t[s],mt(e,t[s]);return n}function gt(e,t){const s=[305419896,591751049,878082192];n.assign(e,{keys:s,crcKey0:new Re(s[0]),crcKey2:new Re(s[2])});for(let n=0;n<t.length;n++)mt(e,t.charCodeAt(n))}function mt(e,t){let[n,s,r]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),s=St(i.imul(St(s+bt(n)),134775813)+1),e.crcKey2.append([s>>>24]),r=~e.crcKey2.get(),e.keys=[n,s,r]}function yt(e){const t=2|e.keys[2];return bt(i.imul(t,1^t)>>>8)}function bt(e){return 255&e}function St(e){return 4294967295&e}const _t="deflate-raw";class kt extends v{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:s}){super({});const{compressed:r,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,u=this;let h,d,f=vt(super.readable);a&&!o||!c||(h=new De,f=Rt(f,h)),r&&(f=Ct(f,i,{level:l,chunkSize:t},s,n)),a&&(o?f=Rt(f,new ft(e)):(d=new rt(e),f=Rt(f,d))),xt(u,f,(()=>{let e;a&&!o&&(e=d.signature),a&&!o||!c||(e=new g(h.value.buffer).getUint32(0)),u.signature=e}))}}class zt extends v{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:s}){super({});const{zipCrypto:r,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l}=e;let u,h,f=vt(super.readable);a&&(r?f=Rt(f,new dt(e)):(h=new st(e),f=Rt(f,h))),c&&(f=Ct(f,l,{chunkSize:t},s,n)),a&&!r||!i||(u=new De,f=Rt(f,u)),xt(this,f,(()=>{if((!a||r)&&i){const e=new g(u.value.buffer);if(o!=e.getUint32(0,!1))throw new d(He)}}))}}function vt(e){return Rt(e,new v({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function xt(e,t,s){t=Rt(t,new v({flush:s})),n.defineProperty(e,"readable",{get:()=>t})}function Ct(e,t,n,s,r){try{e=Rt(e,new(t&&s?s:r)(_t,n))}catch(s){if(!t)return e;try{e=Rt(e,new r(_t,n))}catch(t){return e}}return e}function Rt(e,t){return e.pipeThrough(t)}const Dt="data",Tt="close",Ft="inflate";class At extends v{constructor(e,t){super({});const s=this,{codecType:r}=e;let a;r.startsWith("deflate")?a=kt:r.startsWith(Ft)&&(a=zt);let i=0,o=0;const c=new a(e,t),l=super.readable,u=new v({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){n.assign(s,{inputSize:o})}}),h=new v({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){const{signature:e}=c;n.assign(s,{signature:e,outputSize:i,inputSize:o})}});n.defineProperty(s,"readable",{get:()=>l.pipeThrough(u).pipeThrough(c).pipeThrough(h)})}}class qt extends v{constructor(e){let t;super({transform:function n(s,r){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?(r.enqueue(s.slice(0,e)),n(s.slice(e),r)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}let Ut=typeof F!=E;class Wt{constructor(e,{readable:t,writable:s},{options:r,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,scripts:l},u){const{signal:h}=i;return n.assign(e,{busy:!0,readable:t.pipeThrough(new qt(a.chunkSize)).pipeThrough(new Lt(t,i),{signal:h}),writable:s,options:n.assign({},r),scripts:l,transferStreams:c,terminate:()=>new y((t=>{const{worker:n,busy:s}=e;n?(s?e.resolveTerminated=t:(n.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,u(e)}}),(o&&Ut?Et:Bt)(e,a)}}class Lt extends v{constructor(e,{onstart:t,onprogress:n,size:s,onend:r}){let a=0;super({async start(){t&&await Ht(t,s)},async transform(e,t){a+=e.length,n&&await Ht(n,a,s),t.enqueue(e)},async flush(){e.size=a,r&&await Ht(r,a)}})}}async function Ht(e,...t){try{await e(...t)}catch(e){}}function Bt(e,t){return{run:()=>(async({options:e,readable:t,writable:n,onTaskFinished:s},r)=>{try{const s=new At(e,r);await t.pipeThrough(s).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:a,inputSize:i,outputSize:o}=s;return{signature:a,inputSize:i,outputSize:o}}finally{s()}})(e,t)}}function Et(e,t){const{baseURL:s,chunkSize:r}=t;if(!e.interface){let a;try{a=((e,t,s)=>{const r={type:"module"};let a,i;typeof e==P&&(e=e());try{a=new h(e,t)}catch(t){a=e}if(Pt)try{i=new F(a)}catch(e){Pt=!1,i=new F(a,r)}else i=new F(a,r);return i.addEventListener("message",(e=>(async({data:e},t)=>{const{type:s,value:r,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:u,rejectResult:h,onTaskFinished:p}=t;try{if(o){const{message:e,stack:t,code:s,name:r}=o,a=new d(e);n.assign(a,{stack:t,code:s,name:r}),w(a)}else{if("pull"==s){const{value:e,done:n}=await c.read();Vt({type:Dt,value:e,done:n,messageId:a},t)}s==Dt&&(await l.ready,await l.write(new f(r)),Vt({type:"ack",messageId:a},t)),s==Tt&&w(null,i)}}catch(o){Vt({type:Tt,messageId:a},t),w(o)}function w(e,t){e?h(e):u(t),l&&l.releaseLock(),p()}})(e,s))),i})(e.scripts[0],s,e)}catch(n){return Ut=!1,Bt(e,t)}n.assign(e,{worker:a,interface:{run:()=>(async(e,t)=>{let s,r;const a=new y(((e,t)=>{s=e,r=t}));n.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:r,result:a});const{readable:i,options:o,scripts:c}=e,{writable:l,closed:u}=(e=>{let t;const n=new y((e=>t=e));return{writable:new C({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:n}})(e.writable),h=Vt({type:"start",scripts:c.slice(1),options:o,config:t,readable:i,writable:l},e);h||n.assign(e,{reader:i.getReader(),writer:l.getWriter()});const d=await a;return h||await l.getWriter().close(),await u,d})(e,{chunkSize:r})}})}return e.interface}let Pt=!0,It=!0;function Vt(e,{worker:t,writer:n,onTaskFinished:s,transferStreams:r}){try{let{value:n,readable:s,writable:a}=e;const i=[];if(n&&(n.byteLength<n.buffer.byteLength?e.value=n.buffer.slice(0,n.byteLength):e.value=n.buffer,i.push(e.value)),r&&It?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch(n){It=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw n&&n.releaseLock(),s(),e}}let Mt=[];const Nt=[];let Kt=0;function Ot(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const jt="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),Gt=256==jt.length;function Jt(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{if(Gt){let t="";for(let n=0;n<e.length;n++)t+=jt[e[n]];return t}return(new S).decode(e)})(e):new S(t).decode(e)}const Xt="filename",Zt="rawFilename",$t="comment",Qt="rawComment",Yt="uncompressedSize",en="compressedSize",tn="offset",nn="diskNumberStart",sn="lastModDate",rn="rawLastModDate",an="lastAccessDate",on="creationDate",cn=[Xt,Zt,en,Yt,sn,rn,$t,Qt,an,on,tn,nn,nn,"internalFileAttribute","externalFileAttribute","msDosCompatible","zip64","directory","bitFlag","encrypted","signature","filenameUTF8","commentUTF8","compressionMethod","version","versionMadeBy","extraField","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class ln{constructor(e){cn.forEach((t=>this[t]=e[t]))}}const un="File format is not recognized",hn="Compression method not supported",dn="Split zip file",fn="utf-8",pn="cp437",wn=[[Yt,q],[en,q],[tn,q],[nn,U]],gn={[U]:{getValue:Cn,bytes:4},[q]:{getValue:Rn,bytes:8}};class mn{constructor(e,t,s){n.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,compressionMethod:u,config:h,bitFlag:p,signature:w,rawLastModDate:g,uncompressedSize:m,compressedSize:b}=a,S=t.localDirectory={},_=Dn(await xe(i,o,30,c));let k=_n(a,s,"password"),z=_n(a,s,"rawPassword");if(k=k&&k.length&&k,z=z&&z.length&&z,l&&99!=l.originalCompressionMethod)throw new d(hn);if(0!=u&&8!=u)throw new d(hn);if(67324752!=Cn(_,0))throw new d("Local file header not found");yn(S,_,4),S.rawExtraField=S.extraFieldLength?await xe(i,o+30+S.filenameLength,S.extraFieldLength,c):new f,await bn(a,S,_,4,!0),n.assign(t,{lastAccessDate:S.lastAccessDate,creationDate:S.creationDate});const v=a.encrypted&&S.encrypted,x=v&&!l;if(v){if(!x&&l.strength===B)throw new d("Encryption method not supported");if(!k&&!z)throw new d("File contains encrypted entry")}const R=o+30+S.filenameLength+S.extraFieldLength,D=b,T=i.readable;n.assign(T,{diskNumberStart:c,offset:R,size:D});const F=_n(a,s,"signal"),A=_n(a,s,"checkPasswordOnly");A&&(e=new C),e=(e=>{e.writable===B&&typeof e.next==P&&(e=new ke(e)),e instanceof C&&(e={writable:e});const{writable:t}=e;return t.size===B&&(t.size=0),e instanceof ke||n.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e})(e),await ze(e,m);const{writable:q}=e,{onstart:U,onprogress:W,onend:L}=s,H={options:{codecType:Ft,password:k,rawPassword:z,zipCrypto:x,encryptionStrength:l&&l.strength,signed:_n(a,s,"checkSignature"),passwordVerification:x&&(p.dataDescriptor?g>>>8&255:w>>>24&255),signature:w,compressed:0!=u,encrypted:v,useWebWorkers:_n(a,s,"useWebWorkers"),useCompressionStream:_n(a,s,"useCompressionStream"),transferStreams:_n(a,s,"transferStreams"),checkPasswordOnly:A},config:h,streamOptions:{signal:F,size:D,onstart:U,onprogress:W,onend:L}};let E=0;try{({outputSize:E}=await(async(e,t)=>{const{options:n,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,codecType:c,compressed:l,signed:u,encrypted:h}=n,{workerScripts:d,maxWorkers:f}=s;t.transferStreams=a||a===B;const p=!(l||u||h||t.transferStreams);return t.useWebWorkers=!p&&(i||i===B&&s.useWebWorkers),t.scripts=t.useWebWorkers&&d?d[c]:[],n.useCompressionStream=o||o===B&&s.useCompressionStream,(await(async()=>{const n=Mt.find((e=>!e.busy));if(n)return Ot(n),new Wt(n,e,t,w);if(Mt.length<f){const n={indexWorker:Kt};return Kt++,Mt.push(n),new Wt(n,e,t,w)}return new y((n=>Nt.push({resolve:n,stream:e,workerOptions:t})))})()).run();function w(e){if(Nt.length){const[{resolve:t,stream:n,workerOptions:s}]=Nt.splice(0,1);t(new Wt(e,n,s,w))}else e.worker?(Ot(e),((e,t)=>{const{config:n}=t,{terminateWorkerTimeout:s}=n;r.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{Mt=Mt.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),s))})(e,t)):Mt=Mt.filter((t=>t!=e))}})({readable:T,writable:q},H))}catch(e){if(!A||e.message!=Be)throw e}finally{const e=_n(a,s,"preventClose");q.size+=E,e||q.locked||await q.getWriter().close()}return A?B:e.getData?e.getData():q}}function yn(e,t,s){const r=e.rawBitFlag=xn(t,s+2),a=!(1&~r),i=Cn(t,s+6);n.assign(e,{encrypted:a,version:xn(t,s),bitFlag:{level:(6&r)>>1,dataDescriptor:!(8&~r),languageEncodingFlag:!(2048&~r)},rawLastModDate:i,lastModDate:kn(i),filenameLength:xn(t,s+22),extraFieldLength:xn(t,s+24)})}async function bn(e,t,s,r,a){const{rawExtraField:i}=t,l=t.extraField=new c,u=Dn(new f(i));let h=0;try{for(;h<i.length;){const e=xn(u,h),t=xn(u,h+2);l.set(e,{type:e,data:i.slice(h+4,h+4+t)}),h+=4+t}}catch(e){}const p=xn(s,r+4);n.assign(t,{signature:Cn(s,r+10),uncompressedSize:Cn(s,r+18),compressedSize:Cn(s,r+14)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const n=Dn(e.data),s=wn.filter((([e,n])=>t[e]==n));for(let r=0,a=0;r<s.length;r++){const[i,o]=s[r];if(t[i]==o){const s=gn[o];t[i]=e[i]=s.getValue(n,a),a+=s.bytes}else if(e[i])throw new d("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const g=l.get(28789);g&&(await Sn(g,Xt,Zt,t,e),t.extraFieldUnicodePath=g);const m=l.get(25461);m&&(await Sn(m,$t,Qt,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y?(((e,t,s)=>{const r=Dn(e.data),a=vn(r,4);n.assign(e,{vendorVersion:vn(r,0),vendorId:vn(r,2),strength:a,originalCompressionMethod:s,compressionMethod:xn(r,5)}),t.compressionMethod=e.compressionMethod})(y,t,p),t.extraFieldAES=y):t.compressionMethod=p;const b=l.get(10);b&&(((e,t)=>{const s=Dn(e.data);let r,a=4;try{for(;a<e.data.length&&!r;){const t=xn(s,a),n=xn(s,a+2);1==t&&(r=e.data.slice(a+4,a+4+n)),a+=4+n}}catch(e){}try{if(r&&24==r.length){const s=Dn(r),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);n.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:zn(a),lastAccessDate:zn(i),creationDate:zn(o)};n.assign(e,c),n.assign(t,c)}}catch(e){}})(b,t),t.extraFieldNTFS=b);const S=l.get(21589);S&&(((e,t,n)=>{const s=Dn(e.data),r=vn(s,0),a=[],i=[];n?(1&~r||(a.push(sn),i.push(rn)),2&~r||(a.push(an),i.push("rawLastAccessDate")),4&~r||(a.push(on),i.push("rawCreationDate"))):5>e.data.length||(a.push(sn),i.push(rn));let c=1;a.forEach(((n,r)=>{if(e.data.length>=c+4){const a=Cn(s,c);t[n]=e[n]=new o(1e3*a);const l=i[r];e[l]=a}c+=4}))})(S,t,a),t.extraFieldExtendedTimestamp=S);const _=l.get(6534);_&&(t.extraFieldUSDZ=_)}async function Sn(e,t,s,r,a){const i=Dn(e.data),o=new Re;o.append(a[s]);const c=Dn(new f(4));c.setUint32(0,o.get(),!0);const l=Cn(i,1);n.assign(e,{version:vn(i,0),[t]:Jt(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Cn(c,0)}),e.valid&&(r[t]=e[t],r[t+"UTF8"]=!0)}function _n(e,t,n){return t[n]===B?e.options[n]:t[n]}function kn(e){const t=(4294901760&e)>>16,n=65535&e;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function zn(e){return new o(r(e/a(1e4)-a(116444736e5)))}function vn(e,t){return e.getUint8(t)}function xn(e,t){return e.getUint16(t,!0)}function Cn(e,t){return e.getUint32(t,!0)}function Rn(e,t){return r(e.getBigUint64(t,!0))}function Dn(e){return new g(e.buffer)}let Tn;try{Tn=void 0===_&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===_?location.href:A&&A.src||new h("zip-full.min.js",_.baseURI).href}catch(e){}(e=>{const t=()=>h.createObjectURL(new m(['const{Array:e,Object:t,Number:n,Math:s,Error:r,Uint8Array:a,Uint16Array:o,Uint32Array:i,Int32Array:c,Map:l,DataView:u,Promise:h,TextEncoder:p,crypto:f,postMessage:d,TransformStream:g,ReadableStream:w,WritableStream:y,CompressionStream:m,DecompressionStream:_}=self,b=void 0,S="undefined",v="function";class k{constructor(e){return class extends g{constructor(t,n){const s=new e(n);super({transform(e,t){t.enqueue(s.append(e))},flush(e){const t=s.flush();t&&e.enqueue(t)}})}}}}const z=[];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;z[e]=t}class C{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^z[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class A extends g{constructor(){let e;const t=new C;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new a(4);new u(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const q={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=q.getPartial(n);return 32===s?e.concat(t):q._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+q.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,s.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=q.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>s.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=q.getPartial(r);return s.push(q.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},I={bytes:{fromBits(e){const t=q.bitLength(e)/8,n=new a(t);let s;for(let r=0;t>r;r++)3&r||(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3&~n||(t.push(s),s=0);return 3&n&&t.push(q.partial(8*(3&n),s)),t}}},R=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=I.utf8String.toBits(e));const n=t._buffer=q.concat(t._buffer,e),s=t._length,a=t._length=s+q.bitLength(e);if(a>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=q.concat(t,[q.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(s.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,s){return e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(t){const n=this,r=n._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let o=r[0],i=r[1],c=r[2],l=r[3],u=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=n._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=n._S(5,o)+n._f(e,i,c,l)+u+a[e]+n._key[s.floor(e/20)]|0;u=l,l=c,c=n._S(30,i),i=o,o=t}r[0]=r[0]+o|0,r[1]=r[1]+i|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+u|0}},H={getRandomValues(e){const t=new i(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(s.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=n(4294967296*(r||s.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},B={importKey:e=>new B.hmacSha1(I.bytes.toBits(e)),pbkdf2(e,t,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const a=1+(s>>5)<<2;let o,i,c,l,h;const p=new ArrayBuffer(a),f=new u(p);let d=0;const g=q;for(t=I.bytes.toBits(t),h=1;(a||1)>d;h++){for(o=i=e.encrypt(g.concat(t,[h])),c=1;n>c;c++)for(i=e.encrypt(i),l=0;l<i.length;l++)o[l]^=i[l];for(c=0;(a||1)>d&&c<o.length;c++)f.setInt32(d,o[c]),d+=4}return p.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=R,s=[[],[]];t._baseHash=[new n,new n];const r=t._baseHash[0].blockSize/32;e.length>r&&(e=(new n).update(e).finalize());for(let t=0;r>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 n(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(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new r("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},K=typeof f!=S&&typeof f.getRandomValues==v,P="Invalid password",T="Invalid signature",V="zipjs-abort-check-password";function x(e){return K?f.getRandomValues(e):H.getRandomValues(e)}const D=16,E={name:"PBKDF2"},U=t.assign({hash:{name:"HMAC"}},E),W=t.assign({iterations:1e3,hash:{name:"SHA-1"}},E),M=["deriveBits"],N=[8,12,16],L=[16,24,32],F=10,O=[0,0,0,0],j=typeof f!=S,G=j&&f.subtle,X=j&&typeof G!=S,J=I.bytes,Q=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],s=t._tables[1],a=e.length;let o,i,c,l=1;if(4!==a&&6!==a&&8!==a)throw new r("invalid aes key size");for(t._key=[i=e.slice(0),c=[]],o=a;4*a+28>o;o++){let e=i[o-1];(o%a==0||8===a&&o%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),i[o]=i[o-a]^e}for(let e=0;o;e++,o--){const t=i[3&e?o:o-4];c[e]=4>=o||4>e?t:s[0][n[t>>>24]]^s[1][n[t>>16&255]]^s[2][n[t>>8&255]]^s[3][n[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],n=e[4],s=t[4],r=[],a=[];let o,i,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let u=o=0;!n[u];u^=i||1,o=a[o]||1){let a=o^o<<1^o<<2^o<<3^o<<4;a=a>>8^255&a^99,n[u]=a,s[a]=u,l=r[c=r[i=r[u]]];let h=16843009*l^65537*c^257*i^16843008*u,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][u]=p=p<<24^p>>>8,t[n][a]=h=h<<24^h>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new r("invalid aes block size");const n=this._key[t],s=n.length/4-2,a=[0,0,0,0],o=this._tables[t],i=o[0],c=o[1],l=o[2],u=o[3],h=o[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],m=e[t?1:3]^n[3],_=4;for(let e=0;s>e;e++)p=i[g>>>24]^c[w>>16&255]^l[y>>8&255]^u[255&m]^n[_],f=i[w>>>24]^c[y>>16&255]^l[m>>8&255]^u[255&g]^n[_+1],d=i[y>>>24]^c[m>>16&255]^l[g>>8&255]^u[255&w]^n[_+2],m=i[m>>>24]^c[g>>16&255]^l[w>>8&255]^u[255&y]^n[_+3],_+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=h[g>>>24]<<24^h[w>>16&255]<<16^h[y>>8&255]<<8^h[255&m]^n[_++],p=g,g=w,w=y,y=m,m=p;return a}},Y=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,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=q.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return q.clamp(t,r)}},Z=B.hmacSha1;let $=j&&X&&typeof G.importKey==v,ee=j&&X&&typeof G.deriveBits==v;class te extends g{constructor({password:e,rawPassword:n,signed:s,encryptionStrength:o,checkPasswordOnly:i}){super({start(){t.assign(this,{ready:new h((e=>this.resolveReady=e)),password:ae(e,n),signed:s,strength:o-1,pending:new a})},async transform(e,t){const n=this,{password:s,strength:o,resolveReady:c,ready:l}=n;s?(await(async(e,t,n,s)=>{const a=await re(e,t,n,ie(s,0,N[t])),o=ie(s,N[t]);if(a[0]!=o[0]||a[1]!=o[1])throw new r(P)})(n,o,s,ie(e,0,N[o]+2)),e=ie(e,N[o]+2),i?t.error(new r(V)):c()):await l;const u=new a(e.length-F-(e.length-F)%D);t.enqueue(se(n,e,u,0,F,!0))},async flush(e){const{signed:t,ctr:n,hmac:s,pending:o,ready:i}=this;if(s&&n){await i;const c=ie(o,0,o.length-F),l=ie(o,o.length-F);let u=new a;if(c.length){const e=le(J,c);s.update(e);const t=n.update(e);u=ce(J,t)}if(t){const e=ie(ce(J,s.digest()),0,F);for(let t=0;F>t;t++)if(e[t]!=l[t])throw new r(T)}e.enqueue(u)}}})}}class ne extends g{constructor({password:e,rawPassword:n,encryptionStrength:s}){let r;super({start(){t.assign(this,{ready:new h((e=>this.resolveReady=e)),password:ae(e,n),strength:s-1,pending:new a})},async transform(e,t){const n=this,{password:s,strength:r,resolveReady:o,ready:i}=n;let c=new a;s?(c=await(async(e,t,n)=>{const s=x(new a(N[t]));return oe(s,await re(e,t,n,s))})(n,r,s),o()):await i;const l=new a(c.length+e.length-e.length%D);l.set(c,0),t.enqueue(se(n,e,l,c.length,0))},async flush(e){const{ctr:t,hmac:n,pending:s,ready:o}=this;if(n&&t){await o;let i=new a;if(s.length){const e=t.update(le(J,s));n.update(e),i=ce(J,e)}r.signature=ce(J,n.digest()).slice(0,F),e.enqueue(oe(i,r.signature))}}}),r=this}}function se(e,t,n,s,r,o){const{ctr:i,hmac:c,pending:l}=e,u=t.length-r;let h;for(l.length&&(t=oe(l,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new a(t)).set(n,0)}return e})(n,u-u%D)),h=0;u-D>=h;h+=D){const e=le(J,ie(t,h,h+D));o&&c.update(e);const r=i.update(e);o||c.update(r),n.set(ce(J,r),h+s)}return e.pending=ie(t,h),n}async function re(n,s,r,o){n.password=null;const i=await(async(e,t,n,s,r)=>{if(!$)return B.importKey(t);try{return await G.importKey("raw",t,n,!1,r)}catch(e){return $=!1,B.importKey(t)}})(0,r,U,0,M),c=await(async(e,t,n)=>{if(!ee)return B.pbkdf2(t,e.salt,W.iterations,n);try{return await G.deriveBits(e,t,n)}catch(s){return ee=!1,B.pbkdf2(t,e.salt,W.iterations,n)}})(t.assign({salt:o},W),i,8*(2*L[s]+2)),l=new a(c),u=le(J,ie(l,0,L[s])),h=le(J,ie(l,L[s],2*L[s])),p=ie(l,2*L[s]);return t.assign(n,{keys:{key:u,authentication:h,passwordVerification:p},ctr:new Y(new Q(u),e.from(O)),hmac:new Z(h)}),p}function ae(e,t){return t===b?(e=>{if(typeof p==S){const t=new a((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new p).encode(e)})(e):t}function oe(e,t){let n=e;return e.length+t.length&&(n=new a(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function ie(e,t,n){return e.subarray(t,n)}function ce(e,t){return e.fromBits(t)}function le(e,t){return e.toBits(t)}class ue extends g{constructor({password:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;if(n.password){const t=pe(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new r(P);e=e.subarray(12)}s?t.error(new r(V)):t.enqueue(pe(n,e))}})}}class he extends g{constructor({password:e,passwordVerification:n}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;let s,r;if(n.password){n.password=null;const t=x(new a(12));t[11]=n.passwordVerification,s=new a(e.length+t.length),s.set(fe(n,t),0),r=12}else s=new a(e.length),r=0;s.set(fe(n,e),r),t.enqueue(s)}})}}function pe(e,t){const n=new a(t.length);for(let s=0;s<t.length;s++)n[s]=we(e)^t[s],ge(e,n[s]);return n}function fe(e,t){const n=new a(t.length);for(let s=0;s<t.length;s++)n[s]=we(e)^t[s],ge(e,t[s]);return n}function de(e,n){const s=[305419896,591751049,878082192];t.assign(e,{keys:s,crcKey0:new C(s[0]),crcKey2:new C(s[2])});for(let t=0;t<n.length;t++)ge(e,n.charCodeAt(t))}function ge(e,t){let[n,r,a]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),r=me(s.imul(me(r+ye(n)),134775813)+1),e.crcKey2.append([r>>>24]),a=~e.crcKey2.get(),e.keys=[n,r,a]}function we(e){const t=2|e.keys[2];return ye(s.imul(t,1^t)>>>8)}function ye(e){return 255&e}function me(e){return 4294967295&e}const _e="deflate-raw";class be extends g{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:s}){super({});const{compressed:r,encrypted:a,useCompressionStream:o,zipCrypto:i,signed:c,level:l}=e,h=this;let p,f,d=ve(super.readable);a&&!i||!c||(p=new A,d=Ce(d,p)),r&&(d=ze(d,o,{level:l,chunkSize:t},s,n)),a&&(i?d=Ce(d,new he(e)):(f=new ne(e),d=Ce(d,f))),ke(h,d,(()=>{let e;a&&!i&&(e=f.signature),a&&!i||!c||(e=new u(p.value.buffer).getUint32(0)),h.signature=e}))}}class Se extends g{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:s}){super({});const{zipCrypto:a,encrypted:o,signed:i,signature:c,compressed:l,useCompressionStream:h}=e;let p,f,d=ve(super.readable);o&&(a?d=Ce(d,new ue(e)):(f=new te(e),d=Ce(d,f))),l&&(d=ze(d,h,{chunkSize:t},s,n)),o&&!a||!i||(p=new A,d=Ce(d,p)),ke(this,d,(()=>{if((!o||a)&&i){const e=new u(p.value.buffer);if(c!=e.getUint32(0,!1))throw new r(T)}}))}}function ve(e){return Ce(e,new g({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ke(e,n,s){n=Ce(n,new g({flush:s})),t.defineProperty(e,"readable",{get:()=>n})}function ze(e,t,n,s,r){try{e=Ce(e,new(t&&s?s:r)(_e,n))}catch(s){if(!t)return e;try{e=Ce(e,new r(_e,n))}catch(t){return e}}return e}function Ce(e,t){return e.pipeThrough(t)}const Ae="data",qe="close";class Ie extends g{constructor(e,n){super({});const s=this,{codecType:r}=e;let a;r.startsWith("deflate")?a=be:r.startsWith("inflate")&&(a=Se);let o=0,i=0;const c=new a(e,n),l=super.readable,u=new g({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){t.assign(s,{inputSize:i})}}),h=new g({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){const{signature:e}=c;t.assign(s,{signature:e,outputSize:o,inputSize:i})}});t.defineProperty(s,"readable",{get:()=>l.pipeThrough(u).pipeThrough(c).pipeThrough(h)})}}class Re extends g{constructor(e){let t;super({transform:function n(s,r){if(t){const e=new a(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(r.enqueue(s.slice(0,e)),n(s.slice(e),r)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}const He=new l,Be=new l;let Ke,Pe=0,Te=!0;async function Ve(e){try{const{options:t,scripts:s,config:r}=e;if(s&&s.length)try{Te?importScripts.apply(b,s):await xe(s)}catch(e){Te=!1,await xe(s)}self.initCodec&&self.initCodec(),r.CompressionStreamNative=self.CompressionStream,r.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(r.CompressionStream=new k(self.Deflate)),self.Inflate&&(r.DecompressionStream=new k(self.Inflate));const a={highWaterMark:1},o=e.readable||new w({async pull(e){const t=new h((e=>He.set(Pe,e)));De({type:"pull",messageId:Pe}),Pe=(Pe+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await t;e.enqueue(s),r&&e.close()}},a),i=e.writable||new y({async write(e){let t;const s=new h((e=>t=e));Be.set(Pe,t),De({type:Ae,value:e,messageId:Pe}),Pe=(Pe+1)%n.MAX_SAFE_INTEGER,await s}},a),c=new Ie(t,r);Ke=new AbortController;const{signal:l}=Ke;await o.pipeThrough(c).pipeThrough(new Re(r.chunkSize)).pipeTo(i,{signal:l,preventClose:!0,preventAbort:!0}),await i.getWriter().close();const{signature:u,inputSize:p,outputSize:f}=c;De({type:qe,result:{signature:u,inputSize:p,outputSize:f}})}catch(e){Ee(e)}}async function xe(e){for(const t of e)await import(t)}function De(e){let{value:t}=e;if(t)if(t.length)try{t=new a(t),e.value=t.buffer,d(e,[e.value])}catch(t){d(e)}else d(e);else d(e)}function Ee(e=new r("Unknown error")){const{message:t,stack:n,code:s,name:a}=e;d({error:{message:t,stack:n,code:s,name:a}})}addEventListener("message",(({data:e})=>{const{type:t,messageId:n,value:s,done:r}=e;try{if("start"==t&&Ve(e),t==Ae){const e=He.get(n);He.delete(n),e({value:new a(s),done:r})}if("ack"==t){const e=Be.get(n);Be.delete(n),e()}t==qe&&Ke.abort()}catch(e){Ee(e)}})),self.initCodec=()=>{};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}})})(O),O({baseURL:Tn}),e.BlobReader=ae,e.BlobWriter=ie,e.Data64URIWriter=class extends re{constructor(e){super(),n.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let n=0,r=t.pending;const a=t.pending.length;for(t.pending="",n=0;n<3*i.floor((a+e.length)/3)-a;n++)r+=s.fromCharCode(e[n]);for(;n<e.length;n++)t.pending+=s.fromCharCode(e[n]);r.length>2?t.data+=z(r):t.pending=r}getData(){return this.data+z(this.pending)}},e.HttpRangeReader=class extends Se{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.TextWriter=class extends ie{constructor(e){super(e),n.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(((r,a)=>{n.assign(t,{onload:({target:e})=>r(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)}))}}},e.ZipReader=class{constructor(e,t={}){n.assign(this,{reader:ve(e),options:t,config:K()})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:r}=t;if(await ze(s),s.size!==B&&s.readUint8Array||(s=new ae(await new u(s.readable).blob()),await ze(s)),s.size<H)throw new d(un);s.chunkSize=(e=>i.max(e.chunkSize,64))(r);const a=await(async(e,t,n)=>{const s=new f(4);return 101010256,Dn(s).setUint32(0,101010256,!0),await r(22)||await r(i.min(1048582,n));async function r(t){const r=n-t,a=await xe(e,r,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:r+e,buffer:a.slice(e,e+22).buffer}}})(s,0,s.size);if(!a)throw 134695760==Cn(Dn(await xe(s,0,4)))?new d(dn):new d("End of central directory not found");const o=Dn(a);let c=Cn(o,12),l=Cn(o,16);const h=a.offset,p=xn(o,20),w=h+H+p;let g=xn(o,4);const m=s.lastDiskNumber||0;let y=xn(o,6),b=xn(o,8),S=0,_=0;if(l==q||c==q||b==U||y==U){const e=Dn(await xe(s,a.offset-20,20));if(117853008==Cn(e,0)){l=Rn(e,8);let t=await xe(s,l,56,-1),n=Dn(t);const r=a.offset-20-56;if(Cn(n,0)!=L&&l!=r){const e=l;l=r,S=l-e,t=await xe(s,l,56,-1),n=Dn(t)}if(Cn(n,0)!=L)throw new d("End of Zip64 central directory locator not found");g==U&&(g=Cn(n,16)),y==U&&(y=Cn(n,20)),b==U&&(b=Rn(n,32)),c==q&&(c=Rn(n,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),m!=g)throw new d(dn);if(0>l)throw new d(un);let k=0,z=await xe(s,l,c,y),v=Dn(z);if(c){const e=a.offset-c;if(Cn(v,k)!=W&&l!=e){const t=l;l=e,S+=l-t,z=await xe(s,l,c,y),v=Dn(z)}}const x=a.offset-l-(s.lastDiskOffset||0);if(c==x||0>x||(c=x,z=await xe(s,l,c,y),v=Dn(z)),0>l||l>=s.size)throw new d(un);const C=_n(t,e,"filenameEncoding"),R=_n(t,e,"commentEncoding");for(let a=0;b>a;a++){const o=new mn(s,r,t.options);if(Cn(v,k)!=W)throw new d("Central directory header not found");yn(o,v,k+6);const c=!!o.bitFlag.languageEncodingFlag,l=k+46,u=l+o.filenameLength,h=u+o.extraFieldLength,f=xn(v,k+4),p=!0,w=z.subarray(l,u),g=xn(v,k+32),m=h+g,y=z.subarray(h,m),x=c,D=c,T=p&&!(16&~vn(v,k+38)),F=Cn(v,k+42)+S;n.assign(o,{versionMadeBy:f,msDosCompatible:p,compressedSize:0,uncompressedSize:0,commentLength:g,directory:T,offset:F,diskNumberStart:xn(v,k+34),internalFileAttribute:xn(v,k+36),externalFileAttribute:Cn(v,k+38),rawFilename:w,filenameUTF8:x,commentUTF8:D,rawExtraField:z.subarray(u,h)});const A=_n(t,e,"decodeText")||Jt,q=x?fn:C||pn,U=D?fn:R||pn;let L=A(w,q);L===B&&(L=Jt(w,q));let H=A(y,U);H===B&&(H=Jt(y,U)),n.assign(o,{rawComment:y,filename:L,comment:H,directory:T||L.endsWith("/")}),_=i.max(F,_),await bn(o,o,v,k+6);const E=new ln(o);E.getData=(e,t)=>o.getData(e,E,t),k=m;const{onprogress:P}=e;if(P)try{await P(a+1,b,new ln(o))}catch(e){}yield E}const D=_n(t,e,"extractPrependedData"),T=_n(t,e,"extractAppendedData");return D&&(t.prependedData=_>0?await xe(s,0,_):new f),t.comment=p?await xe(s,h+H,p):new f,T&&(t.appendedData=w<s.size?await xe(s,w,s.size-w):new f),!0}async getEntries(e={}){const t=[];for await(const n of this.getEntriesGenerator(e))t.push(n);return t}async close(){}},e.configure=O}));
|