@zip.js/zip.js 2.16.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deno.json +1 -1
- package/dist/zip-core-external.js +429 -274
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +230 -151
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +580 -283
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +383 -160
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +580 -283
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +386 -163
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +583 -283
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +232 -153
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +233 -154
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +430 -274
- package/dist/zip.min.js +1 -1
- package/eslint.config.mjs +1 -1
- package/index-native.cjs +386 -163
- package/index-native.min.js +1 -1
- package/index.cjs +583 -283
- package/index.d.cts +168 -29
- package/index.d.ts +168 -29
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +2 -0
- package/lib/core/codec-worker-web.js +11 -3
- package/lib/core/codec-worker.js +2 -1
- package/lib/core/streams/aes-crypto-stream.js +60 -17
- package/lib/core/streams/codec-stream.js +2 -0
- package/lib/core/streams/zip-crypto-stream.js +7 -7
- package/lib/core/streams/zip-entry-stream.js +130 -113
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/streams/zlib-wasm/zlib-streams.js +199 -122
- package/lib/core/util/compatible-streams.js +10 -5
- package/lib/core/version.js +1 -1
- package/lib/core/web-worker-base.js +1 -1
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +157 -10
- package/lib/core/zip-reader.js +8 -5
- package/lib/core/zip-writer.js +5 -2
- package/lib/zip-core-reader.js +1 -0
- package/package.json +3 -2
package/dist/zip-fs-native.js
CHANGED
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
const ERR_INVALID_PASSWORD_TYPE = "Invalid password (password must be a string, rawPassword must be a Uint8Array)";
|
|
224
224
|
const ERR_INVALID_PASS_THROUGH_VALUE = "Invalid passThrough option (must be a boolean or 'compressed')";
|
|
225
225
|
const ERR_ABORTED = "The operation was aborted";
|
|
226
|
-
const ABORT_ERROR_NAME = "AbortError";
|
|
226
|
+
const ABORT_ERROR_NAME$1 = "AbortError";
|
|
227
227
|
|
|
228
228
|
function checkFunctionOption(value) {
|
|
229
229
|
if (value && typeof value != FUNCTION_TYPE) {
|
|
@@ -241,7 +241,7 @@
|
|
|
241
241
|
|
|
242
242
|
function throwIfAborted(signal) {
|
|
243
243
|
if (signal && signal.aborted) {
|
|
244
|
-
throw signal.reason === UNDEFINED_VALUE ? new DOMException(ERR_ABORTED, ABORT_ERROR_NAME) : signal.reason;
|
|
244
|
+
throw signal.reason === UNDEFINED_VALUE ? new DOMException(ERR_ABORTED, ABORT_ERROR_NAME$1) : signal.reason;
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
446
446
|
}
|
|
447
447
|
|
|
448
|
-
const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],r=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],f=[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],s=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],e=new Uint8Array(288);e.fill(8,0,144),e.fill(9,144,256),e.fill(7,256,280),e.fill(8,280,288);const o=new Uint8Array(30).fill(5);function u(n){const r=new Uint16Array(16);for(const t of n)r[t]++;r[0]=0;const t=new Uint16Array(17);for(let n=1;n<=15;n++)t[n+1]=t[n]+r[n];const f=new Uint16Array(n.length);for(let r=0;r<n.length;r++)n[r]&&(f[t[n[r]]++]=r);return {lengthCounts:r,symbols:f}}const h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g$1=(O=()=>function(h){let g=0,O=0,w=0,l=new Uint8Array(1024),W=0,V=0;for(;!V;){V=c(1);const n=c(2);if(0==n)L();else if(1==n)Y(u(e),u(o));else {if(2!=n)throw new Error("invalid deflate block type");Y(...i());}}return l.subarray(0,W);function y(){if(g>=h.length)throw new Error("unexpected end of deflate data");return h[g++]}function c(n){for(;w<n;)O|=y()<<w,w+=8;const r=O&(1<<n)-1;return O>>>=n,w-=n,r}function L(){O=0,w=0;const n=y()|y()<<8;g+=2,B(W+n);for(let r=0;r<n;r++)l[W++]=y();}function Y(s,e){let o=m(s);for(;256!=o;){if(o<256)B(W+1),l[W++]=o;else {const s=o-257,u=n[s]+c(r[s]),h=m(e),g=t[h]+c(f[h]);B(W+u);const O=W-g;for(let n=0;n<u;n++)l[W++]=l[O+n];}o=m(s);}}function i(){const n=c(5)+257,r=c(5)+1,t=c(4)+4,f=new Uint8Array(19);for(let n=0;n<t;n++)f[s[n]]=c(3);const e=u(f),o=new Uint8Array(n+r);let h=0;for(;h<o.length;){const n=m(e);if(n<16)o[h++]=n;else if(16==n){const n=o[h-1];let r=c(2)+3;for(;r--;)o[h++]=n;}else h+=17==n?c(3)+3:c(7)+11;}return [u(o.subarray(0,n)),u(o.subarray(n))]}function m(n){const{lengthCounts:r,symbols:t}=n;let f=0,s=0,e=0;for(let n=1;n<=15;n++){f|=c(1);const o=r[n];if(f-s<o)return t[e+(f-s)];e+=o,s=s+o<<1,f<<=1;}throw new Error("invalid huffman code")}function B(n){if(l.length<n){let r=2*l.length;for(;r<n;)r*=2;const t=new Uint8Array(r);t.set(l.subarray(0,W)),l=t;}}}(function(n){const r=(n=String(n).replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let f=0;f<r;f+=4){const r=h.indexOf(n[f])<<18|h.indexOf(n[f+1])<<12|(63&h.indexOf(n[f+2]))<<6|63&h.indexOf(n[f+3]);t.push(r>>16&255),"="!==n[f+2]&&t.push(r>>8&255),"="!==n[f+3]&&t.push(255&r);}return new Uint8Array(t)}("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")),n=>n({workerURI:n=>{const r="text/javascript";let t=O();if("string"==typeof t&&(t=(new TextEncoder).encode(t)),n){const n=new Blob([t],{type:r});return URL.createObjectURL(n)}return "data:"+r+";base64,"+function(n){let r="";const t=n.length;let f=0;for(;f+2<t;f+=3){const t=n[f]<<16|n[f+1]<<8|n[f+2];r+=h[t>>18&63]+h[t>>12&63]+h[t>>6&63]+h[63&t];}const s=t-f;if(1===s){const t=n[f]<<16;r+=h[t>>18&63]+h[t>>12&63]+"==";}else if(2===s){const t=n[f]<<16|n[f+1]<<8;r+=h[t>>18&63]+h[t>>12&63]+h[t>>6&63]+"=";}return r}(t)}}));var O;
|
|
448
|
+
const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],l=[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],e=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],o=new Uint8Array(288);o.fill(8,0,144),o.fill(9,144,256),o.fill(7,256,280),o.fill(8,280,288);const u=new Uint8Array(30).fill(5);function w(n){const t=new Uint16Array(16);for(const r of n)t[r]++;t[0]=0;const r=new Uint16Array(17);for(let n=1;n<=15;n++)r[n+1]=r[n]+t[n];const l=new Uint16Array(n.length);for(let t=0;t<n.length;t++)n[t]&&(l[r[n[t]]++]=t);return {lengthCounts:t,symbols:l}}const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",F=(O$1=()=>function(s){let F=0,O=0,a=0,Q=new Uint8Array(1024),c=0,W=0;for(;!W;){W=U(1);const n=U(2);if(0==n)f();else if(1==n)h(w(o),w(u));else {if(2!=n)throw new Error("invalid deflate block type");h(...v());}}return Q.subarray(0,c);function g(){if(F>=s.length)throw new Error("unexpected end of deflate data");return s[F++]}function U(n){for(;a<n;)O|=g()<<a,a+=8;const t=O&(1<<n)-1;return O>>>=n,a-=n,t}function f(){O=0,a=0;const n=g()|g()<<8;F+=2,p(c+n);for(let t=0;t<n;t++)Q[c++]=g();}function h(e,o){let u=L(e);for(;256!=u;){if(u<256)p(c+1),Q[c++]=u;else {const e=u-257,w=n[e]+U(t[e]),s=L(o),F=r[s]+U(l[s]);p(c+w);const O=c-F;for(let n=0;n<w;n++)Q[c++]=Q[O+n];}u=L(e);}}function v(){const n=U(5)+257,t=U(5)+1,r=U(4)+4,l=new Uint8Array(19);for(let n=0;n<r;n++)l[e[n]]=U(3);const o=w(l),u=new Uint8Array(n+t);let s=0;for(;s<u.length;){const n=L(o);if(n<16)u[s++]=n;else if(16==n){const n=u[s-1];let t=U(2)+3;for(;t--;)u[s++]=n;}else s+=17==n?U(3)+3:U(7)+11;}return [w(u.subarray(0,n)),w(u.subarray(n))]}function L(n){const{lengthCounts:t,symbols:r}=n;let l=0,e=0,o=0;for(let n=1;n<=15;n++){l|=U(1);const u=t[n];if(l-e<u)return r[o+(l-e)];o+=u,e=e+u<<1,l<<=1;}throw new Error("invalid huffman code")}function p(n){if(Q.length<n){let t=2*Q.length;for(;t<n;)t*=2;const r=new Uint8Array(t);r.set(Q.subarray(0,c)),Q=r;}}}(function(n){const t=(n=String(n).replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let l=0;l<t;l+=4){const t=s.indexOf(n[l])<<18|s.indexOf(n[l+1])<<12|(63&s.indexOf(n[l+2]))<<6|63&s.indexOf(n[l+3]);r.push(t>>16&255),"="!==n[l+2]&&r.push(t>>8&255),"="!==n[l+3]&&r.push(255&t);}return new Uint8Array(r)}("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")),n=>n({workerURI:n=>{const t="text/javascript";let r=O$1();if("string"==typeof r&&(r=(new TextEncoder).encode(r)),n){const n=new Blob([r],{type:t});return URL.createObjectURL(n)}return "data:"+t+";base64,"+function(n){let t="";const r=n.length;let l=0;for(;l+2<r;l+=3){const r=n[l]<<16|n[l+1]<<8|n[l+2];t+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+s[63&r];}const e=r-l;if(1===e){const r=n[l]<<16;t+=s[r>>18&63]+s[r>>12&63]+"==";}else if(2===e){const r=n[l]<<16|n[l+1]<<8;t+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+"=";}return t}(r)}}));var O$1;
|
|
449
449
|
|
|
450
450
|
/*
|
|
451
451
|
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
@@ -1285,12 +1285,12 @@
|
|
|
1285
1285
|
class AESDecryptionStream extends TransformStream {
|
|
1286
1286
|
|
|
1287
1287
|
constructor({ password, rawPassword, encryptionStrength, checkPasswordOnly, checkAuthenticationCode = true }) {
|
|
1288
|
+
const aesCrypto = {};
|
|
1288
1289
|
super({
|
|
1289
1290
|
start() {
|
|
1290
|
-
initAesCrypto(
|
|
1291
|
+
initAesCrypto(aesCrypto, password, rawPassword, encryptionStrength);
|
|
1291
1292
|
},
|
|
1292
1293
|
async transform(chunk, controller) {
|
|
1293
|
-
const aesCrypto = this;
|
|
1294
1294
|
const {
|
|
1295
1295
|
password,
|
|
1296
1296
|
strength,
|
|
@@ -1309,6 +1309,9 @@
|
|
|
1309
1309
|
} else {
|
|
1310
1310
|
await ready;
|
|
1311
1311
|
}
|
|
1312
|
+
if (aesCrypto.discarded) {
|
|
1313
|
+
return;
|
|
1314
|
+
}
|
|
1312
1315
|
const output = new Uint8Array(chunk.length - AUTHENTICATION_CODE_LENGTH - ((chunk.length - AUTHENTICATION_CODE_LENGTH) % BLOCK_LENGTH));
|
|
1313
1316
|
controller.enqueue(append(aesCrypto, chunk, output, 0, AUTHENTICATION_CODE_LENGTH, true));
|
|
1314
1317
|
},
|
|
@@ -1317,9 +1320,12 @@
|
|
|
1317
1320
|
engine,
|
|
1318
1321
|
pendingInput,
|
|
1319
1322
|
ready
|
|
1320
|
-
} =
|
|
1323
|
+
} = aesCrypto;
|
|
1321
1324
|
if (engine) {
|
|
1322
1325
|
await ready;
|
|
1326
|
+
if (aesCrypto.discarded) {
|
|
1327
|
+
return;
|
|
1328
|
+
}
|
|
1323
1329
|
const originalAuthenticationCode = subarray(pendingInput, pendingInput.length - AUTHENTICATION_CODE_LENGTH);
|
|
1324
1330
|
const decryptedChunkArray = new Uint8Array(subarray(pendingInput, 0, pendingInput.length - AUTHENTICATION_CODE_LENGTH));
|
|
1325
1331
|
engine.process(decryptedChunkArray, true);
|
|
@@ -1329,27 +1335,26 @@
|
|
|
1329
1335
|
invalidAuthenticationCode |= authenticationCode[indexByte] ^ originalAuthenticationCode[indexByte];
|
|
1330
1336
|
}
|
|
1331
1337
|
if (invalidAuthenticationCode && checkAuthenticationCode) {
|
|
1332
|
-
|
|
1338
|
+
controller.error(new Error(ERR_INVALID_AUTHENTICATION_CODE));
|
|
1339
|
+
return;
|
|
1333
1340
|
}
|
|
1334
1341
|
controller.enqueue(decryptedChunkArray);
|
|
1335
1342
|
}
|
|
1336
|
-
},
|
|
1337
|
-
cancel() {
|
|
1338
|
-
disposeEngine(this);
|
|
1339
1343
|
}
|
|
1340
1344
|
});
|
|
1345
|
+
setDisposingReadable(this, aesCrypto);
|
|
1341
1346
|
}
|
|
1342
1347
|
}
|
|
1343
1348
|
|
|
1344
1349
|
class AESEncryptionStream extends TransformStream {
|
|
1345
1350
|
|
|
1346
1351
|
constructor({ password, rawPassword, encryptionStrength }) {
|
|
1352
|
+
const aesCrypto = {};
|
|
1347
1353
|
super({
|
|
1348
1354
|
start() {
|
|
1349
|
-
initAesCrypto(
|
|
1355
|
+
initAesCrypto(aesCrypto, password, rawPassword, encryptionStrength);
|
|
1350
1356
|
},
|
|
1351
1357
|
async transform(chunk, controller) {
|
|
1352
|
-
const aesCrypto = this;
|
|
1353
1358
|
const {
|
|
1354
1359
|
password,
|
|
1355
1360
|
strength,
|
|
@@ -1363,6 +1368,9 @@
|
|
|
1363
1368
|
} else {
|
|
1364
1369
|
await ready;
|
|
1365
1370
|
}
|
|
1371
|
+
if (aesCrypto.discarded) {
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1366
1374
|
const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
|
|
1367
1375
|
output.set(preamble, 0);
|
|
1368
1376
|
controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0, false));
|
|
@@ -1372,19 +1380,20 @@
|
|
|
1372
1380
|
engine,
|
|
1373
1381
|
pendingInput,
|
|
1374
1382
|
ready
|
|
1375
|
-
} =
|
|
1383
|
+
} = aesCrypto;
|
|
1376
1384
|
if (engine) {
|
|
1377
1385
|
await ready;
|
|
1386
|
+
if (aesCrypto.discarded) {
|
|
1387
|
+
return;
|
|
1388
|
+
}
|
|
1378
1389
|
const encryptedChunkArray = new Uint8Array(pendingInput);
|
|
1379
1390
|
engine.process(encryptedChunkArray, false);
|
|
1380
1391
|
const authenticationCode = subarray(engine.digest(), 0, AUTHENTICATION_CODE_LENGTH);
|
|
1381
1392
|
controller.enqueue(concat(encryptedChunkArray, authenticationCode));
|
|
1382
1393
|
}
|
|
1383
|
-
},
|
|
1384
|
-
cancel() {
|
|
1385
|
-
disposeEngine(this);
|
|
1386
1394
|
}
|
|
1387
1395
|
});
|
|
1396
|
+
setDisposingReadable(this, aesCrypto);
|
|
1388
1397
|
}
|
|
1389
1398
|
}
|
|
1390
1399
|
|
|
@@ -1393,7 +1402,37 @@
|
|
|
1393
1402
|
ready: new Promise(resolve => aesCrypto.resolveReady = resolve),
|
|
1394
1403
|
password: encodePassword(password, rawPassword),
|
|
1395
1404
|
strength: encryptionStrength - 1,
|
|
1396
|
-
pendingInput: EMPTY_UINT8_ARRAY
|
|
1405
|
+
pendingInput: EMPTY_UINT8_ARRAY,
|
|
1406
|
+
discarded: false
|
|
1407
|
+
});
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
function setDisposingReadable(stream, aesCrypto) {
|
|
1411
|
+
const reader = stream.readable.getReader();
|
|
1412
|
+
const readable = new ReadableStream({
|
|
1413
|
+
async pull(controller) {
|
|
1414
|
+
try {
|
|
1415
|
+
const { value, done } = await reader.read();
|
|
1416
|
+
if (done) {
|
|
1417
|
+
controller.close();
|
|
1418
|
+
} else {
|
|
1419
|
+
controller.enqueue(value);
|
|
1420
|
+
}
|
|
1421
|
+
} catch (error) {
|
|
1422
|
+
disposeEngine(aesCrypto);
|
|
1423
|
+
reader.cancel(error).catch(() => { });
|
|
1424
|
+
throw error;
|
|
1425
|
+
}
|
|
1426
|
+
},
|
|
1427
|
+
cancel(reason) {
|
|
1428
|
+
disposeEngine(aesCrypto);
|
|
1429
|
+
return reader.cancel(reason);
|
|
1430
|
+
}
|
|
1431
|
+
});
|
|
1432
|
+
Object.defineProperty(stream, "readable", {
|
|
1433
|
+
get() {
|
|
1434
|
+
return readable;
|
|
1435
|
+
}
|
|
1397
1436
|
});
|
|
1398
1437
|
}
|
|
1399
1438
|
|
|
@@ -1426,7 +1465,9 @@
|
|
|
1426
1465
|
}
|
|
1427
1466
|
}
|
|
1428
1467
|
|
|
1429
|
-
function disposeEngine(
|
|
1468
|
+
function disposeEngine(aesCrypto) {
|
|
1469
|
+
const { engine } = aesCrypto;
|
|
1470
|
+
aesCrypto.discarded = true;
|
|
1430
1471
|
if (engine && engine.dispose) {
|
|
1431
1472
|
engine.dispose();
|
|
1432
1473
|
}
|
|
@@ -1443,6 +1484,9 @@
|
|
|
1443
1484
|
const keyLength = KEY_LENGTH[strength];
|
|
1444
1485
|
const compositeKey = await deriveKey(password, salt, keyLength * 2 + PASSWORD_VERIFICATION_LENGTH);
|
|
1445
1486
|
aesCrypto.engine = createEngine(subarray(compositeKey, 0, keyLength), subarray(compositeKey, keyLength, keyLength * 2));
|
|
1487
|
+
if (aesCrypto.discarded) {
|
|
1488
|
+
disposeEngine(aesCrypto);
|
|
1489
|
+
}
|
|
1446
1490
|
return subarray(compositeKey, keyLength * 2);
|
|
1447
1491
|
}
|
|
1448
1492
|
|
|
@@ -1594,11 +1638,11 @@
|
|
|
1594
1638
|
}
|
|
1595
1639
|
|
|
1596
1640
|
function createKeys(target, password, rawPassword) {
|
|
1597
|
-
const
|
|
1641
|
+
const cryptoKeys = [0x12345678, 0x23456789, 0x34567890];
|
|
1598
1642
|
Object.assign(target, {
|
|
1599
|
-
|
|
1600
|
-
crcKey0: new Crc32(
|
|
1601
|
-
crcKey2: new Crc32(
|
|
1643
|
+
cryptoKeys,
|
|
1644
|
+
crcKey0: new Crc32(cryptoKeys[0]),
|
|
1645
|
+
crcKey2: new Crc32(cryptoKeys[2])
|
|
1602
1646
|
});
|
|
1603
1647
|
if (rawPassword) {
|
|
1604
1648
|
for (let index = 0; index < rawPassword.length; index++) {
|
|
@@ -1612,17 +1656,17 @@
|
|
|
1612
1656
|
}
|
|
1613
1657
|
|
|
1614
1658
|
function updateKeys(target, byte) {
|
|
1615
|
-
let [, key1] = target.
|
|
1659
|
+
let [, key1] = target.cryptoKeys;
|
|
1616
1660
|
target.crcKey0.append([byte]);
|
|
1617
1661
|
const key0 = ~target.crcKey0.get();
|
|
1618
1662
|
key1 = getInt32(Math.imul(getInt32(key1 + getInt8(key0)), 134775813) + 1);
|
|
1619
1663
|
target.crcKey2.append([key1 >>> 24]);
|
|
1620
1664
|
const key2 = ~target.crcKey2.get();
|
|
1621
|
-
target.
|
|
1665
|
+
target.cryptoKeys = [key0, key1, key2];
|
|
1622
1666
|
}
|
|
1623
1667
|
|
|
1624
1668
|
function getByte(target) {
|
|
1625
|
-
const temp = target.
|
|
1669
|
+
const temp = target.cryptoKeys[2] | 2;
|
|
1626
1670
|
return getInt8(Math.imul(temp, (temp ^ 1)) >>> 8);
|
|
1627
1671
|
}
|
|
1628
1672
|
|
|
@@ -1670,11 +1714,16 @@
|
|
|
1670
1714
|
const reader = readable.getReader();
|
|
1671
1715
|
return new ReadableStream({
|
|
1672
1716
|
async pull(controller) {
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1717
|
+
try {
|
|
1718
|
+
const { value, done } = await reader.read();
|
|
1719
|
+
if (done) {
|
|
1720
|
+
controller.close();
|
|
1721
|
+
} else {
|
|
1722
|
+
controller.enqueue(value);
|
|
1723
|
+
}
|
|
1724
|
+
} catch (error) {
|
|
1725
|
+
reader.cancel(error).catch(() => { });
|
|
1726
|
+
throw error;
|
|
1678
1727
|
}
|
|
1679
1728
|
},
|
|
1680
1729
|
cancel(reason) {
|
|
@@ -1853,7 +1902,9 @@
|
|
|
1853
1902
|
|
|
1854
1903
|
const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
1855
1904
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
1905
|
+
const ERR_CODEC_OUT_OF_MEMORY = "Codec out of memory";
|
|
1856
1906
|
const ERR_INVALID_CRC32 = "Invalid CRC32";
|
|
1907
|
+
const Z_MEM_ERROR_CODE = "Z_MEM_ERROR";
|
|
1857
1908
|
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
1858
1909
|
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
1859
1910
|
const FORMAT_GZIP = "gzip";
|
|
@@ -1888,13 +1939,13 @@
|
|
|
1888
1939
|
readable = pipeThroughCompressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStream, CompressionStreamFallback);
|
|
1889
1940
|
} catch (error) {
|
|
1890
1941
|
if (!useCompressionStream && CompressionStreamFallback) {
|
|
1891
|
-
throw error;
|
|
1942
|
+
throw mapMemoryError(error);
|
|
1892
1943
|
}
|
|
1893
1944
|
let gzipStream;
|
|
1894
1945
|
try {
|
|
1895
1946
|
gzipStream = new CompressionStream(FORMAT_GZIP);
|
|
1896
1947
|
} catch {
|
|
1897
|
-
throw error;
|
|
1948
|
+
throw mapMemoryError(error);
|
|
1898
1949
|
}
|
|
1899
1950
|
readable = pipeThroughBackpressured(readable, gzipStream);
|
|
1900
1951
|
readable = pipeThrough(readable, new GzipToRawDeflateStream());
|
|
@@ -1958,53 +2009,30 @@
|
|
|
1958
2009
|
}
|
|
1959
2010
|
}
|
|
1960
2011
|
|
|
1961
|
-
function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32) {
|
|
2012
|
+
function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32, sourceErrors) {
|
|
1962
2013
|
const writer = gzipStream.writable.getWriter();
|
|
1963
2014
|
const reader = gzipStream.readable.getReader();
|
|
1964
2015
|
const outputCrc32 = crc32 === UNDEFINED_VALUE ? new Crc32() : UNDEFINED_VALUE;
|
|
1965
2016
|
let outputLength = 0;
|
|
1966
|
-
let inputDone = false;
|
|
1967
2017
|
let trailerWritten = false;
|
|
1968
|
-
let
|
|
1969
|
-
let
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
trailerReady.catch(() => { });
|
|
1977
|
-
pump();
|
|
1978
|
-
return new ReadableStream({
|
|
1979
|
-
async pull(controller) {
|
|
1980
|
-
let result;
|
|
1981
|
-
try {
|
|
1982
|
-
result = await read();
|
|
1983
|
-
} catch (error) {
|
|
1984
|
-
throw trailerWritten ? getTrailerError(error) : error;
|
|
1985
|
-
}
|
|
1986
|
-
const { value, done } = result;
|
|
1987
|
-
if (done) {
|
|
1988
|
-
controller.close();
|
|
1989
|
-
} else {
|
|
1990
|
-
outputLength += value.length;
|
|
1991
|
-
if (outputLength > outputSize) {
|
|
1992
|
-
const error = new Error(ERR_INVALID_UNCOMPRESSED_SIZE);
|
|
1993
|
-
rejectTrailerReady(error);
|
|
1994
|
-
await cancel(reader, error);
|
|
1995
|
-
throw error;
|
|
1996
|
-
}
|
|
1997
|
-
if (outputCrc32) {
|
|
1998
|
-
outputCrc32.append(value);
|
|
1999
|
-
}
|
|
2000
|
-
controller.enqueue(value);
|
|
2001
|
-
}
|
|
2018
|
+
let settled = false;
|
|
2019
|
+
let resolvePull, controller;
|
|
2020
|
+
const output = new ReadableStream({
|
|
2021
|
+
start(streamController) {
|
|
2022
|
+
controller = streamController;
|
|
2023
|
+
},
|
|
2024
|
+
pull() {
|
|
2025
|
+
resumePump();
|
|
2002
2026
|
},
|
|
2003
2027
|
cancel(reason) {
|
|
2004
|
-
|
|
2028
|
+
settled = true;
|
|
2029
|
+
resumePump();
|
|
2005
2030
|
return reader.cancel(reason);
|
|
2006
2031
|
}
|
|
2007
2032
|
});
|
|
2033
|
+
pump();
|
|
2034
|
+
drain();
|
|
2035
|
+
return output;
|
|
2008
2036
|
|
|
2009
2037
|
async function pump() {
|
|
2010
2038
|
const inputReader = readable.getReader();
|
|
@@ -2013,19 +2041,16 @@
|
|
|
2013
2041
|
header.set(GZIP_HEADER_BYTES);
|
|
2014
2042
|
await writer.write(header);
|
|
2015
2043
|
for (; ;) {
|
|
2044
|
+
await outputCapacity();
|
|
2016
2045
|
await writer.ready;
|
|
2017
|
-
const { value, done } = await inputReader
|
|
2046
|
+
const { value, done } = await readSource(inputReader, sourceErrors);
|
|
2018
2047
|
if (done) {
|
|
2019
2048
|
break;
|
|
2020
2049
|
}
|
|
2021
2050
|
await writer.write(value);
|
|
2022
2051
|
}
|
|
2023
|
-
inputDone = true;
|
|
2024
2052
|
if (outputCrc32) {
|
|
2025
|
-
|
|
2026
|
-
armIdleCheck();
|
|
2027
|
-
}
|
|
2028
|
-
await trailerReady;
|
|
2053
|
+
await writer.write(new Uint8Array(0));
|
|
2029
2054
|
}
|
|
2030
2055
|
const trailer = new Uint8Array(GZIP_TRAILER_LENGTH);
|
|
2031
2056
|
const dataView = getDataView(trailer);
|
|
@@ -2040,54 +2065,68 @@
|
|
|
2040
2065
|
}
|
|
2041
2066
|
}
|
|
2042
2067
|
|
|
2043
|
-
function
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2068
|
+
async function drain() {
|
|
2069
|
+
try {
|
|
2070
|
+
for (; ;) {
|
|
2071
|
+
const { value, done } = await read();
|
|
2072
|
+
if (done) {
|
|
2073
|
+
break;
|
|
2074
|
+
}
|
|
2075
|
+
outputLength += value.length;
|
|
2076
|
+
if (outputLength > outputSize) {
|
|
2077
|
+
throw new Error(ERR_INVALID_UNCOMPRESSED_SIZE);
|
|
2078
|
+
}
|
|
2079
|
+
if (outputCrc32) {
|
|
2080
|
+
outputCrc32.append(value);
|
|
2081
|
+
}
|
|
2082
|
+
controller.enqueue(value);
|
|
2083
|
+
}
|
|
2084
|
+
if (!settled) {
|
|
2085
|
+
settled = true;
|
|
2086
|
+
controller.close();
|
|
2087
|
+
}
|
|
2088
|
+
} catch (error) {
|
|
2089
|
+
fail(error);
|
|
2090
|
+
await cancel(reader, error);
|
|
2050
2091
|
}
|
|
2051
|
-
return result;
|
|
2052
|
-
}
|
|
2053
|
-
|
|
2054
|
-
function onReadSettled() {
|
|
2055
|
-
readPending = false;
|
|
2056
2092
|
}
|
|
2057
2093
|
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
resolveTrailerReady();
|
|
2067
|
-
} else {
|
|
2068
|
-
armIdleCheck();
|
|
2094
|
+
function read() {
|
|
2095
|
+
return reader.read().catch(error => {
|
|
2096
|
+
if (trailerWritten) {
|
|
2097
|
+
if (!outputCrc32) {
|
|
2098
|
+
throw mapError(error, ERR_INVALID_CRC32);
|
|
2099
|
+
}
|
|
2100
|
+
if (outputLength != outputSize) {
|
|
2101
|
+
throw mapError(error, ERR_INVALID_UNCOMPRESSED_SIZE);
|
|
2069
2102
|
}
|
|
2103
|
+
return { done: true };
|
|
2070
2104
|
}
|
|
2071
|
-
|
|
2105
|
+
throw mapCodecError(error, sourceErrors);
|
|
2106
|
+
});
|
|
2072
2107
|
}
|
|
2073
2108
|
|
|
2074
|
-
function
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2109
|
+
function outputCapacity() {
|
|
2110
|
+
if (!settled && controller.desiredSize <= 0) {
|
|
2111
|
+
return new Promise(resolve => resolvePull = resolve);
|
|
2112
|
+
}
|
|
2078
2113
|
}
|
|
2079
|
-
}
|
|
2080
2114
|
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
port1.close();
|
|
2086
|
-
port2.close();
|
|
2115
|
+
function resumePump() {
|
|
2116
|
+
if (resolvePull) {
|
|
2117
|
+
const resolve = resolvePull;
|
|
2118
|
+
resolvePull = UNDEFINED_VALUE;
|
|
2087
2119
|
resolve();
|
|
2088
|
-
}
|
|
2089
|
-
|
|
2090
|
-
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
function fail(error) {
|
|
2124
|
+
if (!settled) {
|
|
2125
|
+
settled = true;
|
|
2126
|
+
controller.error(error);
|
|
2127
|
+
resumePump();
|
|
2128
|
+
}
|
|
2129
|
+
}
|
|
2091
2130
|
}
|
|
2092
2131
|
|
|
2093
2132
|
class InflateStream extends TransformStream {
|
|
@@ -2106,11 +2145,12 @@
|
|
|
2106
2145
|
}
|
|
2107
2146
|
}
|
|
2108
2147
|
if (compressed) {
|
|
2148
|
+
const sourceErrors = new Set();
|
|
2109
2149
|
const codecStreams = format && getCodecStreams(format);
|
|
2150
|
+
let gzipStream;
|
|
2110
2151
|
if (codecStreams) {
|
|
2111
|
-
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize, compressionMethod, rawBitFlag, uncompressedSize: outputSize }));
|
|
2152
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize, compressionMethod, rawBitFlag, uncompressedSize: outputSize }), sourceErrors);
|
|
2112
2153
|
} else {
|
|
2113
|
-
let gzipStream;
|
|
2114
2154
|
const GzipDecompressionStream = getGzipCodecStream(useCompressionStream, DecompressionStream, DecompressionStreamFallback);
|
|
2115
2155
|
if (checkCrc32 && !deflate64 && crc32 !== UNDEFINED_VALUE && outputSize !== UNDEFINED_VALUE && GzipDecompressionStream) {
|
|
2116
2156
|
try {
|
|
@@ -2121,24 +2161,25 @@
|
|
|
2121
2161
|
}
|
|
2122
2162
|
if (!gzipStream) {
|
|
2123
2163
|
try {
|
|
2124
|
-
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamFallback);
|
|
2164
|
+
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamFallback, sourceErrors);
|
|
2125
2165
|
} catch (error) {
|
|
2126
2166
|
if (deflate64 || outputSize === UNDEFINED_VALUE || (!useCompressionStream && DecompressionStreamFallback)) {
|
|
2127
|
-
throw error;
|
|
2167
|
+
throw mapMemoryError(error);
|
|
2128
2168
|
}
|
|
2129
2169
|
try {
|
|
2130
2170
|
gzipStream = new DecompressionStream(FORMAT_GZIP);
|
|
2131
2171
|
} catch {
|
|
2132
|
-
throw error;
|
|
2172
|
+
throw mapMemoryError(error);
|
|
2133
2173
|
}
|
|
2134
2174
|
}
|
|
2135
2175
|
}
|
|
2136
|
-
if (gzipStream) {
|
|
2137
|
-
gzipCrc32 = true;
|
|
2138
|
-
readable = pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32);
|
|
2139
|
-
}
|
|
2140
2176
|
}
|
|
2141
|
-
|
|
2177
|
+
if (gzipStream) {
|
|
2178
|
+
gzipCrc32 = true;
|
|
2179
|
+
readable = pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32, sourceErrors);
|
|
2180
|
+
} else {
|
|
2181
|
+
readable = mapInflateStreamError(readable, sourceErrors);
|
|
2182
|
+
}
|
|
2142
2183
|
}
|
|
2143
2184
|
if (checkCrc32 && !gzipCrc32) {
|
|
2144
2185
|
crc32Stream = new Crc32Stream();
|
|
@@ -2211,7 +2252,7 @@
|
|
|
2211
2252
|
}
|
|
2212
2253
|
}
|
|
2213
2254
|
|
|
2214
|
-
function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamFallback) {
|
|
2255
|
+
function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamFallback, sourceErrors) {
|
|
2215
2256
|
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2216
2257
|
CompressionStreamNative :
|
|
2217
2258
|
CompressionStreamFallback || CompressionStreamNative;
|
|
@@ -2226,14 +2267,14 @@
|
|
|
2226
2267
|
throw error;
|
|
2227
2268
|
}
|
|
2228
2269
|
}
|
|
2229
|
-
return pipeThroughBackpressured(readable, codecStream);
|
|
2270
|
+
return pipeThroughBackpressured(readable, codecStream, sourceErrors);
|
|
2230
2271
|
}
|
|
2231
2272
|
|
|
2232
2273
|
function pipeThrough(readable, transformStream) {
|
|
2233
2274
|
return toCompatibleReadable(readable).pipeThrough(transformStream);
|
|
2234
2275
|
}
|
|
2235
2276
|
|
|
2236
|
-
function pipeThroughBackpressured(readable, transformStream) {
|
|
2277
|
+
function pipeThroughBackpressured(readable, transformStream, sourceErrors) {
|
|
2237
2278
|
const writer = transformStream.writable.getWriter();
|
|
2238
2279
|
const reader = readable.getReader();
|
|
2239
2280
|
pump();
|
|
@@ -2243,7 +2284,7 @@
|
|
|
2243
2284
|
try {
|
|
2244
2285
|
for (; ;) {
|
|
2245
2286
|
await writer.ready;
|
|
2246
|
-
const result = await reader
|
|
2287
|
+
const result = await readSource(reader, sourceErrors);
|
|
2247
2288
|
if (result.done) {
|
|
2248
2289
|
await writer.close();
|
|
2249
2290
|
break;
|
|
@@ -2273,26 +2314,49 @@
|
|
|
2273
2314
|
}
|
|
2274
2315
|
}
|
|
2275
2316
|
|
|
2276
|
-
function
|
|
2317
|
+
function readSource(reader, sourceErrors) {
|
|
2318
|
+
const result = reader.read();
|
|
2319
|
+
return sourceErrors ? result.catch(error => {
|
|
2320
|
+
sourceErrors.add(error);
|
|
2321
|
+
throw error;
|
|
2322
|
+
}) : result;
|
|
2323
|
+
}
|
|
2324
|
+
|
|
2325
|
+
function mapCodecError(error, sourceErrors) {
|
|
2326
|
+
if (sourceErrors.has(error)) {
|
|
2327
|
+
return error;
|
|
2328
|
+
}
|
|
2329
|
+
return mapError(error, isMemoryError(error) ? ERR_CODEC_OUT_OF_MEMORY : ERR_INVALID_COMPRESSED_DATA);
|
|
2330
|
+
}
|
|
2331
|
+
|
|
2332
|
+
function mapMemoryError(error) {
|
|
2333
|
+
return isMemoryError(error) ? mapError(error, ERR_CODEC_OUT_OF_MEMORY) : error;
|
|
2334
|
+
}
|
|
2335
|
+
|
|
2336
|
+
function isMemoryError(error) {
|
|
2337
|
+
return isErrorObject(error) && error.code == Z_MEM_ERROR_CODE;
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
function mapError(error, message) {
|
|
2341
|
+
const mappedError = new Error(message);
|
|
2342
|
+
mappedError.cause = error;
|
|
2343
|
+
return mappedError;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
function mapInflateStreamError(readable, sourceErrors) {
|
|
2277
2347
|
const reader = readable.getReader();
|
|
2278
2348
|
return new ReadableStream({
|
|
2279
2349
|
async pull(controller) {
|
|
2280
|
-
let result;
|
|
2281
2350
|
try {
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2351
|
+
const { value, done } = await reader.read();
|
|
2352
|
+
if (done) {
|
|
2353
|
+
controller.close();
|
|
2354
|
+
} else {
|
|
2355
|
+
controller.enqueue(value);
|
|
2286
2356
|
}
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
throw
|
|
2290
|
-
}
|
|
2291
|
-
const { value, done } = result;
|
|
2292
|
-
if (done) {
|
|
2293
|
-
controller.close();
|
|
2294
|
-
} else {
|
|
2295
|
-
controller.enqueue(value);
|
|
2357
|
+
} catch (error) {
|
|
2358
|
+
await cancel(reader, error);
|
|
2359
|
+
throw mapCodecError(error, sourceErrors);
|
|
2296
2360
|
}
|
|
2297
2361
|
},
|
|
2298
2362
|
cancel(reason) {
|
|
@@ -2656,10 +2720,11 @@
|
|
|
2656
2720
|
}
|
|
2657
2721
|
codecStream = new CodecStream(options, config);
|
|
2658
2722
|
chunkStream = new ChunkStream(getChunkSize(config));
|
|
2723
|
+
const { signal } = workerOptions.streamOptions;
|
|
2659
2724
|
await readable
|
|
2660
2725
|
.pipeThrough(codecStream)
|
|
2661
2726
|
.pipeThrough(chunkStream)
|
|
2662
|
-
.pipeTo(writable, { preventClose: true, preventAbort: true });
|
|
2727
|
+
.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
2663
2728
|
const {
|
|
2664
2729
|
crc32,
|
|
2665
2730
|
inputSize,
|
|
@@ -2727,6 +2792,7 @@
|
|
|
2727
2792
|
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2728
2793
|
const ERROR_EVENT_TYPE = "error";
|
|
2729
2794
|
const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
|
|
2795
|
+
const ABORT_EVENT_TYPE = "abort";
|
|
2730
2796
|
|
|
2731
2797
|
let webWorkerSource, webWorkerURI, webWorkerOptions;
|
|
2732
2798
|
let transferStreamsSupported = true;
|
|
@@ -2903,6 +2969,13 @@
|
|
|
2903
2969
|
Object.assign(workerData, { destinationFailed: true, destinationError: error });
|
|
2904
2970
|
}
|
|
2905
2971
|
});
|
|
2972
|
+
const { signal } = workerData.workerOptions.streamOptions;
|
|
2973
|
+
if (signal) {
|
|
2974
|
+
const onAbort = () => abortController.abort(signal.reason);
|
|
2975
|
+
const removeAbortListener = () => signal.removeEventListener(ABORT_EVENT_TYPE, onAbort);
|
|
2976
|
+
signal.addEventListener(ABORT_EVENT_TYPE, onAbort);
|
|
2977
|
+
closed.then(removeAbortListener, removeAbortListener);
|
|
2978
|
+
}
|
|
2906
2979
|
return {
|
|
2907
2980
|
writable, closed, abortPipe: () => {
|
|
2908
2981
|
aborting = true;
|
|
@@ -3165,9 +3238,6 @@
|
|
|
3165
3238
|
responseError = errorValue.value;
|
|
3166
3239
|
} else {
|
|
3167
3240
|
responseError = Object.assign(new Error(message), { stack, code, name });
|
|
3168
|
-
if (cause) {
|
|
3169
|
-
responseError.cause = Object.assign(new Error(cause.message), { name: cause.name });
|
|
3170
|
-
}
|
|
3171
3241
|
}
|
|
3172
3242
|
if (isErrorObject(responseError)) {
|
|
3173
3243
|
try {
|
|
@@ -3177,6 +3247,9 @@
|
|
|
3177
3247
|
if (codecImportFailed) {
|
|
3178
3248
|
responseError.codecImportFailed = true;
|
|
3179
3249
|
}
|
|
3250
|
+
if (cause && !isErrorObject(responseError.cause)) {
|
|
3251
|
+
responseError.cause = Object.assign(new Error(cause.message), { name: cause.name });
|
|
3252
|
+
}
|
|
3180
3253
|
if (errorValue) {
|
|
3181
3254
|
if (responseError.name !== name) {
|
|
3182
3255
|
responseError.name = name;
|
|
@@ -5368,8 +5441,8 @@
|
|
|
5368
5441
|
const passThroughCompression = Boolean(passThrough);
|
|
5369
5442
|
const passThroughEncryption = passThrough === true;
|
|
5370
5443
|
checkPasswordOption(password, rawPassword);
|
|
5371
|
-
password = password && password.length
|
|
5372
|
-
rawPassword = rawPassword && rawPassword.length
|
|
5444
|
+
password = password && password.length ? password : UNDEFINED_VALUE;
|
|
5445
|
+
rawPassword = rawPassword && rawPassword.length ? rawPassword : UNDEFINED_VALUE;
|
|
5373
5446
|
if (extraFieldAES) {
|
|
5374
5447
|
if (extraFieldAES.originalCompressionMethod != COMPRESSION_METHOD_AES) {
|
|
5375
5448
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
@@ -5519,6 +5592,7 @@
|
|
|
5519
5592
|
({ writable } = writer);
|
|
5520
5593
|
const readable = toCompatibleReadable(reader.createReadable({ offset: dataOffset, size }));
|
|
5521
5594
|
const { outputSize: writtenSize } = await runWorker({ readable, writable }, workerOptions);
|
|
5595
|
+
throwIfAborted(signal);
|
|
5522
5596
|
if (writtenSize != outputSize) {
|
|
5523
5597
|
throw Object.assign(new Error(ERR_INVALID_UNCOMPRESSED_SIZE), { outputSize: writtenSize });
|
|
5524
5598
|
}
|
|
@@ -6130,7 +6204,7 @@
|
|
|
6130
6204
|
async function findEndOfCentralDirectory(reader, rejectAmbiguous, maxAppendedDataSize) {
|
|
6131
6205
|
const { size } = reader;
|
|
6132
6206
|
const anchoredLength = Math.min(size, END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS);
|
|
6133
|
-
const remoteProbeBudget = {
|
|
6207
|
+
const remoteProbeBudget = { remaining: MAX_END_OF_CENTRAL_DIR_PROBES };
|
|
6134
6208
|
let endOfDirectoryInfo;
|
|
6135
6209
|
let plausibleEndOfDirectoryInfo;
|
|
6136
6210
|
let endOfDirectoryReachingEndCount = 0;
|
|
@@ -6223,8 +6297,8 @@
|
|
|
6223
6297
|
if (signatureOffset >= anchoredOffset) {
|
|
6224
6298
|
return getUint32$1(view, signatureOffset - anchoredOffset);
|
|
6225
6299
|
}
|
|
6226
|
-
if (remoteProbeBudget.
|
|
6227
|
-
remoteProbeBudget.
|
|
6300
|
+
if (remoteProbeBudget.remaining > 0) {
|
|
6301
|
+
remoteProbeBudget.remaining--;
|
|
6228
6302
|
const signatureArray = await readUint8Array(reader, signatureOffset, 4);
|
|
6229
6303
|
return getUint32$1(getDataView(signatureArray), 0);
|
|
6230
6304
|
}
|
|
@@ -6314,6 +6388,7 @@
|
|
|
6314
6388
|
ERR_AMBIGUOUS_ARCHIVE: ERR_AMBIGUOUS_ARCHIVE,
|
|
6315
6389
|
ERR_BAD_FORMAT: ERR_BAD_FORMAT,
|
|
6316
6390
|
ERR_CENTRAL_DIRECTORY_NOT_FOUND: ERR_CENTRAL_DIRECTORY_NOT_FOUND,
|
|
6391
|
+
ERR_CODEC_OUT_OF_MEMORY: ERR_CODEC_OUT_OF_MEMORY,
|
|
6317
6392
|
ERR_ENCRYPTED: ERR_ENCRYPTED,
|
|
6318
6393
|
ERR_ENCRYPTED_CENTRAL_DIRECTORY: ERR_ENCRYPTED_CENTRAL_DIRECTORY,
|
|
6319
6394
|
ERR_ENTRY_DATA_OUT_OF_BOUNDS: ERR_ENTRY_DATA_OUT_OF_BOUNDS,
|
|
@@ -7140,9 +7215,11 @@
|
|
|
7140
7215
|
const passThrough = checkPassThroughOption(getOptionValue(zipWriter, options, OPTION_PASS_THROUGH));
|
|
7141
7216
|
const passThroughCompression = Boolean(passThrough);
|
|
7142
7217
|
const passThroughEncryption = passThrough === true;
|
|
7143
|
-
|
|
7144
|
-
|
|
7218
|
+
let password = getOptionValue(zipWriter, options, OPTION_PASSWORD);
|
|
7219
|
+
let rawPassword = getOptionValue(zipWriter, options, OPTION_RAW_PASSWORD);
|
|
7145
7220
|
checkPasswordOption(password, rawPassword);
|
|
7221
|
+
password = password && password.length ? password : UNDEFINED_VALUE;
|
|
7222
|
+
rawPassword = rawPassword && rawPassword.length ? rawPassword : UNDEFINED_VALUE;
|
|
7146
7223
|
const encryptionStrength = getNumberOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
|
|
7147
7224
|
const zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);
|
|
7148
7225
|
const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
|
|
@@ -7759,6 +7836,7 @@
|
|
|
7759
7836
|
const result = await runWorker({ readable, writable }, workerOptions);
|
|
7760
7837
|
compressedSize = result.outputSize;
|
|
7761
7838
|
writer.size += compressedSize;
|
|
7839
|
+
throwIfAborted(signal);
|
|
7762
7840
|
if (!passThroughCompression) {
|
|
7763
7841
|
uncompressedSize = result.inputSize;
|
|
7764
7842
|
if (!encrypted || zipCrypto) {
|
|
@@ -8938,7 +9016,7 @@
|
|
|
8938
9016
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8939
9017
|
*/
|
|
8940
9018
|
|
|
8941
|
-
const VERSION = "2.
|
|
9019
|
+
const VERSION = "2.17.0";
|
|
8942
9020
|
|
|
8943
9021
|
/*
|
|
8944
9022
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9387,7 +9465,7 @@
|
|
|
9387
9465
|
// ignored
|
|
9388
9466
|
}
|
|
9389
9467
|
|
|
9390
|
-
var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:z,Error:L,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),_=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(_,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,_:0,l:void 0}}function Je(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,k:t,m:0,v:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.I=e,this.M=t,this.C=0;}},re=class{constructor(e,t,n,r,i){this.Z=e,this.W=t,this.q=n,this.S=r,this.L=i;}};function D_(e){return Q_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function $e(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.$[e.D++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.A+e.H;return e.$[f]=255&i,e.$[f+1]=i>>>8&255,e.$[f+2]=r,e.H+=3,i=i-1&65535,e.N[__[r]+ie+1].j++,e.U[y_(i)].j++,e.H==e.R}function De(e,t){let n=255&t,r=e.A+e.H;return e.$[r]=0,e.$[r+1]=0,e.$[r+2]=n,e.H+=3,e.N[n].j++,e.H==e.R}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=z.floor((t+I-1)/I),f=1<<8+Ce;return {...Je(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,O:n,V:r,X:i,J:new g(32768),K:new g(n),ee:f,$:new p(32768),te:0,ne:32768,D:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,he:0,de:0,we:0,be:0,ke:0,ge:0,me:0,ve:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),Ie:new g(be+1),H:0,R:0,ze:Z,A:0,Me:0,Ce:0,Ze:8,We:32768,qe:0,Se:0,Le:0,N:new k(fe).fill(0).map(()=>Q()),U:new k(2*me+1).fill(0).map(()=>Q()),$e:new k(2*oe+1).fill(0).map(()=>Q()),De:w_(),Ae:w_(),He:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Qe=r,f.je=i,t.push(f);}return t}function Q(){return {j:0,Qe:0,Ne:0,je:0}}function w_(){return new ne([],dn(null,Z,0,0,0))}function dn(e,t,n,r,i){return new re(e,t,n,r,i)}function $_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=mn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,_=t[f]||0;r[i++]=e?$e(_,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,_=e[r];if(n>=_&&n<=_+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,_=e[n];if(i>=_&&i<=_+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function mn(e){let t=z.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,I=3,ee=258,ae=ee+I+1,nt=4096,Ue=16,He=ee,bn=29,ie=256,Te=ie+1+bn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,$=-1,Q_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var hn=k_($_()),sn=k_(new k(30).fill(5)),Fe=I_(hn),R_=I_(sn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function he(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,xn,pn,Sn,En,gn,Tn,wn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=z.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=wn[255&t]^Tn[t>>>8&255]^gn[t>>>16&255]^En[t>>>24&255]^Sn[255&n]^pn[n>>>8&255]^xn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.Me=1+(e.T-1&7),e.p=0,e.T=0;}function An(e,t,n){let r,i,f=[],_=0;for(r=1;r<=be;r++)_=_+n[r-1]<<1,f[r]=_;for(i=0;i<=t;i++){let t=e[i].je;0!=t&&(e[i].Qe=$e(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.N.length;t++)e.N[t].j=0;for(let t=0;t<e.U.length;t++)e.U[t].j=0;for(let t=0;t<e.$e.length;t++)e.$e[t].j=0;e.N[ve].j=1,e.ie=e.fe=0,e.H=e._e=0;}function Et(e){if(e.N&&e.N.length>=fe)for(let t=0;t<fe;t++)e.N[t]=Q();else {e.N=[];for(let t=0;t<fe;t++)e.N.push(Q());}if(e.U&&e.U.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<2*me+1;t++)e.U.push(Q());}if(e.$e&&e.$e.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.$e[t]=Q();else {e.$e=[];for(let t=0;t<2*oe+1;t++)e.$e.push(Q());}e.De=new ne(e.N,new re(Fe,a_,ie+1,Te,be)),e.Ae=new ne(e.U,new re(R_,i_,0,me,be)),e.He=new ne(e.$e,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.Me=0,St(e);}var se=1;function Dn(e,t,n){return n=e.Te[se],e.Te[se]=e.Te[e.Se--],z_(e,t,se),n}function mt(e,t,n,r){return e[t].j<e[n].j||e[t].j==e[n].j&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Se&&(i<e.Se&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function yn(e,t){let n,r,i,f,_,l,o=t.I,u=t.C,a=t.M.Z,c=t.M.W,s=t.M.q,h=t.M.L,d=0;for(f=0;f<=be;f++)e.Ie[f]=0;for(o[e.Te[e.Le]].je=0,n=e.Le+1;n<fe;n++)r=e.Te[n],f=o[o[r].Ne].je+1,f>h&&(f=h,d++),o[r].je=f,!(r>u)&&(e.Ie[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].j,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].je+_)));if(0!=d){do{for(f=h-1;0==e.Ie[f];)f--;e.Ie[f]--,e.Ie[f+1]+=2,e.Ie[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.Ie[f];0!=r;)i=e.Te[--n],!(i>u)&&(o[i].je!=f&&(e.ie+=(f-o[i].je)*o[i].j,o[i].je=f),r--);}}function L_(e,t){let n,r,i,f=t.I,_=t.M.Z,l=t.M.S,o=-1;for(e.Se=0,e.Le=fe,n=0;n<l;n++)0!=f[n].j?(e.Te[++e.Se]=o=n,e.ye[n]=0):f[n].je=0;for(;e.Se<2;)i=e.Te[++e.Se]=o<2?++o:0,f[i].j=1,e.ye[i]=0,e.ie--,_&&(e.fe-=_[i].je);for(t.C=o,n=z.floor(e.Se/2);n>=1;n--)z_(e,f,n);i=l;do{n=Dn(e,f,n),r=e.Te[se],e.Te[--e.Le]=n,e.Te[--e.Le]=r,f[i].j=f[n].j+f[r].j,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].Ne=f[r].Ne=i,e.Te[se]=i++,z_(e,f,se);}while(e.Se>=2);e.Te[--e.Le]=e.Te[se],yn(e,t),An(f,t.C,e.Ie);}function bt(e,t,n){let r,i,f=-1,_=t[0].je,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].je=65535,r=0;r<=n;r++)i=_,_=t[r+1].je,!(++l<o&&i==_)&&(l<u?e.$e[i].j+=l:0!=i?(i!=f&&e.$e[i].j++,e.$e[t_].j++):l<=10?e.$e[n_].j++:e.$e[r_].j++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function ht(e,t,n){let r,i=-1,f=t[0].je,_=0,l=7,o=4;0==f&&(l=138,o=3);for(let u=0;u<=n;u++)if(r=f,f=t[u+1].je,!(++_<l&&r==f)){if(_<o)do{C(e,e.$e[r].Qe,e.$e[r].je);}while(0!=--_);else 0!=r?(r!=i&&(C(e,e.$e[r].Qe,e.$e[r].je),_--),C(e,e.$e[t_].Qe,e.$e[t_].je),C(e,_-3,2)):_<=10?(C(e,e.$e[n_].Qe,e.$e[n_].je),C(e,_-3,3)):(C(e,e.$e[r_].Qe,e.$e[r_].je),C(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function vn(e){let t;for(bt(e,e.N,e.De.C),bt(e,e.U,e.Ae.C),L_(e,e.He),t=oe-1;t>=3&&0==e.$e[pe[t]].je;t--);return e.ie+=3*(t+1)+5+5+4,t}function In(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.$e[pe[i]].je,3);ht(e,e.N,t-1),ht(e,e.U,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.$,e.D,t,i,n),e.D+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Qe,Fe[ve].je),xt(e);}function st(e,t,n){let r,i,f,_,l=0;if(0!=e.H)do{r=255&e.ze[l],r+=(255&e.ze[l+1])<<8,i=e.ze[l+2],l+=3,0==r?C(e,t[i].Qe,t[i].je):(f=__[i],C(e,t[f+ie+1].Qe,t[f+ie+1].je),_=a_[f],0!=_&&(i-=ge[f],C(e,i,_)),r--,f=y_(r),C(e,n[f].Qe,n[f].je),_=i_[f],0!=_&&(r-=Ee[f],C(e,r,_)));}while(l<e.H);C(e,t[ve].Qe,t[ve].je);}function kn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.N[t].j)return 0;if(0!=e.N[9].j||0!=e.N[10].j||0!=e.N[13].j)return 1;for(t=32;t<ie;t++)if(0!=e.N[t].j)return 1;return 0}function wt(e,t,n,r,i=0){let f,_,l=0;e.ke>0?(2==e.o.t&&(e.o.t=kn(e)),L_(e,e.De),L_(e,e.Ae),l=vn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ge)&&(f=_)):f=_=n+5,n+4<=f&&t?Pe(e,t,n,r,i):_==f?(C(e,(N_<<1)+r,3),st(e,Fe,R_)):(C(e,(lt<<1)+r,3),In(e,e.De.C+1,e.Ae.C+1,l+1),st(e,e.N,e.U)),St(e),r&&pt(e);}function vt(){let e=je();return e.l=v_(e),e}var Ye=[{Ue:Lt,Re:0,Ye:0,Ee:0,Pe:0},{Ue:U_,Re:4,Ye:4,Ee:8,Pe:4},{Ue:U_,Re:4,Ye:5,Ee:16,Pe:8},{Ue:U_,Re:4,Ye:6,Ee:32,Pe:32},{Ue:Ne,Re:4,Ye:4,Ee:16,Pe:16},{Ue:Ne,Re:8,Ye:16,Ee:32,Pe:32},{Ue:Ne,Re:8,Ye:16,Ee:128,Pe:128},{Ue:Ne,Re:8,Ye:32,Ee:128,Pe:256},{Ue:Ne,Re:32,Ye:128,Ee:258,Pe:1024},{Ue:Ne,Re:32,Ye:258,Ee:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.V)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(I-1)]);let n=e.J[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.O-1]=0,Ve(e.K,0,(e.O-1)*e.K.BYTES_PER_ELEMENT);}function Un(e){let t,n,r=e.h;for(t=e.O;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.J[t],e.J[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e.l.P?e.i=he(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e.l.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.We-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.qe-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Un(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=I){let t=e.ae-e.le;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e.le&&(e.be=l_(e,e.be,e.u[t+I-1]),e.J[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e.le--,!(e.ce+e.le<I)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.m<e.We){let t,n=e.ae+e.ce;e.m<n?(t=e.We-n,t>He&&(t=He),Ve(e.u,n,t),e.m=n+t):e.m<n+He&&(t=n+He-e.m,t>e.We-e.m&&(t=e.We-e.m),Ve(e.u,e.m,t),e.m+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let _=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(_=0,r<-15)return -2;r=-r;}else r>15&&(_=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=_)return -2;8==r&&(r=9);let l=v_(e);return l?(e.l=l,l.o=e,l.Y=42,l.P=_,l.B=void 0,l.k=r,l.h=1<<l.k,l.F=l.h-1,l.G=i+7,l.O=1<<l.G,l.V=l.O-1,l.X=(l.G+I-1)/I,l.u=new p(2*l.h),l.J=new g(l.h),l.K=new g(l.O),l.m=0,l.ee=1<<i+6,l.$=new p(l.ee*ot),l.ne=4*l.ee,l.u&&l.J&&l.K&&l.$?(l.ze=l.$.subarray(l.ee),l.A=l.te+l.ee,l.R=3*(l.ee-1),l.ke=t,l.ge=f,l.Ze=n,Fn(e)):(l.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Hn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.D=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):he(0),t.oe=-2,Et(t),0)}function Bn(e){e.We=2*e.h,It(e),e.xe=Ye[e.ke].Ye,e.me=Ye[e.ke].Re,e.ve=Ye[e.ke].Ee,e.pe=Ye[e.ke].Pe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.he=I-1,e.we=0,e.be=0;}function Fn(e){let t=Hn(e);return 0==t&&Bn(e.l),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e.l;gt(n),t=n.D,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.$,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.D-=t,0==n.D&&(n.re=n.te));}function Ie(e,t){let n=e.l;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.$.buffer,n.te+t,n.D-t),n.D-t));}function Nt(e,t){let n,r=e.l;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.D){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.k-8<<4)<<8;if(t=r.ge>=2||r.ke<2?0:r.ke<6?1:6==r.ke?2:3,n|=t<<6,0!=r.ae&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ae&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.D)return r.oe=$,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Oe?0:8)+(null==r.B.Ve?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,255&r.B.Je),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.$,r.D)),r.Ce=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,at),r.Y=113,q(e),0!=r.D)return r.oe=$,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.D,n=(65535&r.B.Ke)-r.Ce;for(;r.D+n>r.ne;){let i=r.ne-r.D;if(M(r.$,r.D,r.B.Ge,r.Ce,i),r.D=r.ne,Ie(e,t),r.Ce+=i,q(e),0!=r.D)return r.oe=$,0;t=0,n-=i;}M(r.$,r.D,r.B.Ge,r.Ce,n),r.D+=n,Ie(e,t),r.Ce=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Oe&&r.B.Oe.length){let t,n=r.D;do{if(r.D==r.ne){if(Ie(e,n),q(e),0!=r.D)return r.oe=$,0;n=0;}t=r.B.Oe[r.Ce++],T(r,t);}while(0!=t);Ie(e,n),r.Ce=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.D;do{if(r.D==r.ne){if(Ie(e,n),q(e),0!=r.D)return r.oe=$,0;n=0;}t=r.B.Ve[r.Ce++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.D+2>r.ne&&(q(e),0!=r.D))return r.oe=$,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.D)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ke?Lt(r,t):2==r.ge?Pn(r,t):3==r.ge?Zn(r,t):Ye[r.ke].Ue(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ae=0,r.ue=0,r.le=0))),q(e),0==e.avail_out))return r.oe=$,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.D?0:1)}function P_(e){if(Z_(e))return -2;let t=e.l,n=t.Y;return t.u=Z,t.J=qe,t.K=qe,t.$=Z,t.ze=Z,t.Te=new R(0),t.ye=Z,t.Ie=qe,t.N.length=0,t.U.length=0,t.$e.length=0,t.B=void 0,t.te=0,t.re=0,t.A=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ae,_=e.he,l=e.ve,o=e.ae>ye(e)?e.ae-ye(e):0,u=e.J,a=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+_-1],k=c[f+_];_>=e.me&&(i>>=2),l>s&&(l=s);do{if(n=t,c[n+_]!=k||c[n+_-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>_){if(e.qe=t,_=r,r>=l)break;b=c[f+_-1],k=c[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=s?_:s}function zt(e,t){wt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Lt(e,t){let n,r,i,f=ke(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ae-e.ue,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;_=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,_),e.$[e.D-4]=n,e.$[e.D-3]=n>>8,e.$[e.D-2]=~n,e.$[e.D-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ue,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ue+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==_);if(l-=e.o.avail_in,l){if(l>=e.h){e._e=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ae=e.h,e.le=e.ae;}else e.We-e.ae<=l&&(e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,e.le>e.ae&&(e.le=e.ae)),M(e.u,e.ae,e.o.next_in,e.o.next_in_index-l,l),e.ae+=l,e.le+=ke(l,e.h-e.le);e.ue=e.ae;}return e.m<e.ae&&(e.m=e.ae),_?(e.Me=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.We-e.ae,e.o.avail_in>i&&e.ue>=e.h&&(e.ue-=e.h,e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,i+=e.h,e.le>e.ae&&(e.le=e.ae)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=ke(i,e.h-e.le)),e.m<e.ae&&(e.m=e.ae),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Me=8),_?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ae)),0!=n&&e.ae-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=I)if(e.ae,e.qe,e.se,r=e_(e,e.ae-e.qe,e.se-I),e.ce-=e.se,e.se<=e.xe&&e.ce>=I){e.se--;do{e.ae++,n=u_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.be=e.u[e.ae],e.be=l_(e,e.be,e.u[e.ae+1]);else r=De(e,e.u[e.ae]),e.ce--,e.ae++;if(r){let t=j(e,false);if(null!=t)return t}}if(e.le=e.ae<I-1?e.ae:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ae)),e.he=e.se,e.de=e.qe,e.se=I-1,0!=n&&e.he<e.xe&&e.ae-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ge||e.se==I&&e.ae-e.qe>nt)&&(e.se=I-1)),e.he>=I&&e.se<=e.he){let t=e.ae+e.ce-I;e.ae,e.de,e.he,r=e_(e,e.ae-1-e.de,e.he-I),e.ce-=e.he-1,e.he-=2;do{++e.ae<=t&&(n=u_(e,e.ae));}while(0!=--e.he);if(e.we=0,e.se=I-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ae-1]),r&&zt(e,0),e.ae++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ae++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<I-1?e.ae:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Zn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=I&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=I?(e.ae,e.ae,e.se,n=e_(e,1,e.se-I),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=De(e,e.u[e.ae]),e.ce--,e.ae++),n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Pn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ae]),e.ce--,e.ae++,n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Ot=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Mn=[16,1,73,1,200,1],Yn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Mn),Ft.push(...Yn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Ot,0,0]),Wt=new g([...Ot,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function Jt(e,t){let n,r=e.l,i=e.next_in_index,f=e.next_out_index,_=e.next_in,l=e.next_out,o=r.u,u=r.p>>>0,a=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.m>>>0,k=r.v>>>0,g=r.it,m=f-(t-e.avail_out),v=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,I=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&h];t:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,0==y){l[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}x+=u&(1<<y)-1,u>>>=y,a-=y;}for(;a<15;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&d];n:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}T+=u&(1<<y)-1,u>>>=y,a-=y;}let t=x,c=f-m;if(T>c){let n=T-c;if(n>b&&g){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==k){if(I=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let e=0;e<n;++e)l[f++]=o[I++];t-=n,I=f-T;}else if(k<n){I=w+k-n;let e=n-k;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let t=0;t<e;++t)l[f++]=o[I++];if(t-=e,I=0,!(k<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let e=0;e<k;++e)l[f++]=o[I++];t-=k,I=f-T;}else {if(I=k-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let e=0;e<n;++e)l[f++]=o[I++];t-=n,I=f-T;}for(;t>2;)l[f++]=l[I++],l[f++]=l[I++],l[f++]=l[I++],t-=3;t&&(l[f++]=l[I++],t>1&&(l[f++]=l[I++]));}else {for(I=f-T;t>2;)l[f++]=l[I++],l[f++]=l[I++],l[f++]=l[I++],t-=3;t&&(l[f++]=l[I++],t>1&&(l[f++]=l[I++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(u&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(u&(1<<y)-1)];continue t}}while(i<p&&f<v);let z=a>>3;i-=z,a-=z<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<v?v-f+257:257-(f-v),r.p=u>>>0,r.T=a>>>0;}var Xn=new R(0);function M_(e,t){let n=Xn,r=t?ue+m_:ue+d_;return {...Je(e,0),o:e,ft:16180,_t:false,P:0,lt:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,kt:0,gt:0,vt:n,xt:new g(320),Tt:new g(288),yt:new R(r),It:0,it:true,zt:0,Mt:0,Ct:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function h_(e=1){return We(64,e,0)}function Qt(e=0){return We(96,e,0)}function Y_(e){return ((255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255)>>>0}var Le=15,Gn={Ct:false,Zt:Zt,Wt:Mt,qt:Xt,St:Gt,Lt:20,$t:257,Dt:0,At:d_,Ht:false,Qt:true},Kn={Ct:true,Zt:Pt,Wt:Yt,qt:Wt,St:Kt,Lt:19,$t:256,Dt:-1,At:m_,Ht:true,Qt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,h,d,w,b,k,m,v,p,x,T,y,I,z,M,C=new g(Le+1),Z=new g(Le+1),W=l?Kn:Gn;for(o=0;o<=Le;o++)C[o]=0;for(u=0;u<n;u++)C[t[u]]++;for(s=i.jt,c=Le;c>=1&&0==C[c];c--);if(s>c&&(s=c),0==c)return W.Qt?(T=h_(1),r.jt[0]=T,r.jt[1]=T,i.jt=1,0):-1;for(a=1;a<c&&0==C[a];a++);for(s<a&&(s=a),w=1,o=1;o<=Le;o++)if(w<<=1,w-=C[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(Z[1]=0,o=1;o<Le;o++)Z[o+1]=Z[o]+C[o];for(u=0;u<n;u++)0!=t[u]&&(f[Z[t[u]]++]=u);switch(e){case 0:I=z=f,M=W.Lt;break;case 1:I=W.Zt,z=W.Wt,M=W.$t;break;default:I=W.qt,z=W.St,M=W.Dt;}if(k=0,u=0,o=a,y=_.jt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(W.Ht?b>=ue:b>ue)||2==e&&(W.Ht?b>=W.At:b>W.At))return 1;for(;;){T=qn(f,u,o,d,e,I,z,M,W.Ct),m=1<<o-d,v=1<<h,a=v;do{v-=m;let e=(k>>d)+v;r.jt[y+e]=T;}while(0!=v);for(m=1<<o-1;k&m;)m>>=1;if(0!=m?(k&=m-1,k+=m):k=0,u++,0==--C[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(k&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=C[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(W.Ht?b>=ue:b>ue)||2==e&&(W.Ht?b>=W.At:b>W.At))return 1;p=k&x,r.jt[_.jt+p]=We(h,s,y-_.jt);}}if(0!=k)for(T=h_(o-d);0!=k;){for(0!=d&&(k&x)!=p&&(d=0,o=s,y=_.jt,h=s,T=h_(o)),r.jt[y+(k>>d)]=T,m=1<<o-1;k&m;)m>>=1;0!=m?(k&=m-1,k+=m):k=0;}return _.jt+=b,i.jt=s,0}function qn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=b_(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=b_(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=b_(_[i],n-r,f[i]);}else u=Qt(n-r);return u}var p_=new R(0),Qn={Nt:true,Ut:new R(544),Rt:p_,Yt:p_},$n={Nt:true,Ut:new R(544),Rt:p_,Yt:p_};function $t(){let e=je();return e.l=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.Ct&&(t.ft<16191||t.ft>16209)||!t.Ct&&(t.ft<16180||t.ft>16211))))}function er(e){let t;return Ge(e)?-2:(t=e.l,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Ct?16191:16180,t._t=false,t.lt=false,t.ot=-1,t.ut=t.Ct?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.vt=t.yt,t.it=true,t.zt=-1,0)}function _r(e){let t;return Ge(e)?-2:(t=e.l,t.h=0,t.m=0,t.v=0,er(e))}function tr(e,t){let n,r;if(Ge(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.Ct=-16==t,t=-t;}else n=5+(t>>4),r.Ct=false,t<48&&(t&=15);let i=r.Ct?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.k!=t&&(r.u=Z),r.P=n,r.k=t,_r(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e.l=r,r.o=e,r.ft=i?16191:16180,n=tr(e,t),n}function nr(e){let t=e.Ct?$n:Qn,n={jt:0};if(t.Nt){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Ut.fill(0),f=t.Ut,t.Rt=f,i=9;let _={jt:f},l={jt:i},o={jt:0};for(Oe(1,e.xt,288,_,l,e.Tt,o,e.Ct),f=_.jt,i=l.jt,e.It=o.jt,r=0;r<32;)e.xt[r++]=5;i=5;let u=o.jt,a={jt:f},c={jt:i};n.jt=u,Oe(2,e.xt,32,a,c,e.Tt,n,e.Ct),t.Yt=f.slice(u),t.Nt=false;}e.et=t.Rt,e.nt=9,e.tt=t.Yt,e.rt=5,e.It=n.jt;}function rr(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.k),r.u)))return 1;if(0==r.h&&(r.h=1<<r.k,r.v=0,r.m=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.v=0,r.m=r.h;else {let e=r.h-r.v;e>n&&(e=n),M(r.u,r.v,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.v=n,r.m=r.h):(r.v+=e,r.v==r.h&&(r.v=0),r.m<r.h&&(r.m+=e));}return 0}var S_=class extends L{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,_,l,o,u,a,c,s,h,d,w,b,k,g,m=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;l=0,u=0,o=0,a=0,r=Z,i=0,f=Z,_=0,n=e.l,16191==n.ft&&(n.ft=16192),I(),c=l,s=o,g=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(S(16),2&n.P&&35615==u){0==n.k&&(n.k=15),n.ct=W(0),n.ct=T(n.ct,u),C(),n.ft=16181;break}if(n.B&&(n.B.Et=-1),!(1&n.P)||((L(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=L(4)){e.msg="unknown compression method",n.ft=16209;break}if($(4),k=L(4)+8,0==n.k&&(n.k=k),k>15||k>n.k){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<k,n.ot=0,e.i=n.ct=he(0),n.ft=512&u?16189:16191,C();break;case 16181:if(S(16),n.ot=u,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=u>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),C(),n.ft=16182;case 16182:S(32),n.B&&(n.B.Xe=u),512&n.ot&&4&n.P&&(n.ct=y(n.ct,u)),C(),n.ft=16183;case 16183:S(16),n.B&&(n.B.Pt=255&u,n.B.Je=u>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),C(),n.ft=16184;case 16184:1024&n.ot?(S(16),n.ht=u,n.B&&(n.B.Ke=u),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),C()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>l&&(h=l),h&&(n.B&&n.B.Ge&&n.B.Bt&&(k=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,k,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,n.ht-=h),n.ht))return v();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==l)return v();h=0;do{k=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Oe[n.ht++]=k);}while(k&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,k)return v()}else n.B&&(n.B.Oe=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==l)return v();h=0;do{k=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Ve[n.ht++]=k);}while(k&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,k)return v()}else n.B&&(n.B.Ve=Z);n.ft=16188;case 16188:if(512&n.ot){if(S(16),4&n.P&&u!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}C();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Et=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:S(32),e.i=n.ct=Y_(u),C(),n.ft=16190;case 16190:if(!n.lt)return z(),2;e.i=n.ct=he(0),n.ft=16191;case 16191:if(5==t||6==t)return v();case 16192:if(n._t){D(),n.ft=16206;break}switch(S(3),n._t=!!L(1),$(1),L(2)){case 0:n.ft=16193;break;case 1:if(nr(n),n.ft=16199,6==t)return $(2),v();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}$(2);break;case 16193:if(D(),S(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&u,C(),n.ft=16194,6==t)return v();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>l&&(h=l),h>o&&(h=o),0==h)return v();M(f,_,r,i,h),l-=h,i+=h,o-=h,_+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(S(14),n.bt=L(5)+257,$(5),n.kt=L(5)+1,$(5),n.wt=L(4)+4,$(4),n.bt>286||!n.Ct&&n.kt>30){e.msg=n.Ct?"too many length":"too many length or distance symbols",n.ft=16209;break}n.gt=0,n.ft=16197;case 16197:for(;n.gt<n.wt;)S(3),n.xt[pe[n.gt++]]=L(3),$(3);for(;n.gt<19;)n.xt[pe[n.gt++]]=0;n.vt=n.yt,n.et=n.tt=n.vt,n.nt=7;let c={jt:n.vt},m={jt:n.nt},p={jt:0};if(g=Oe(0,n.xt,19,c,m,n.Tt,p,n.Ct),n.vt=c.jt,n.nt=m.jt,g){e.msg="invalid code lengths set",n.ft=16209;break}n.gt=0,n.ft=16198;case 16198:for(;n.gt<n.bt+n.kt;){for(;w=n.et[L(n.nt)],!((w>>>16&255)<=a);)q();if((65535&w)<16)$(w>>>16&255),n.xt[n.gt++]=65535&w;else {if(16==(65535&w)){if(S(2+(w>>>16&255)),$(w>>>16&255),0==n.gt){e.msg="invalid bit length repeat",n.ft=16209;break}k=n.xt[n.gt-1],h=3+L(2),$(2);}else 17==(65535&w)?(S(3+(w>>>16&255)),$(w>>>16&255),k=0,h=3+L(3),$(3)):(S(7+(w>>>16&255)),$(w>>>16&255),k=0,h=11+L(7),$(7));if(n.gt+h>n.bt+n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.gt++]=k;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.vt=n.yt,n.nt=9;let A={jt:n.vt},H={jt:n.nt},Q={jt:0};g=Oe(1,n.xt,n.bt,A,H,n.Tt,Q,n.Ct),n.vt=A.jt,n.nt=H.jt;let j=Q.jt;if(n.et=n.vt.slice(0,j),g){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let N=n.xt.subarray(n.bt,n.bt+n.kt),U={jt:n.vt},R={jt:n.rt},Y={jt:j};if(g=Oe(2,N,n.kt,U,R,n.Tt,Y,n.Ct),n.vt=U.jt,n.rt=R.jt,n.tt=n.vt.slice(j),g){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return v();case 16199:n.ft=16200;case 16200:if(!n.Ct&&l>=6&&o>=258){z(),Jt(e,s),I(),16191==n.ft&&(n.zt=-1);break}for(n.zt=0;w=n.et[L(n.nt)],!((w>>>16&255)<=a);)q();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+(L((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)q();$(b>>>16&255),n.zt+=b>>>16&255;}if($(w>>>16&255),n.zt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.zt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Ct?31:15),n.ft=16201;case 16201:n.Ge&&(S(n.Ge),n.ht+=L(n.Ge),$(n.Ge),n.zt+=n.Ge),n.Mt=n.ht,n.ft=16202;case 16202:for(;w=n.tt[L(n.rt)],!((w>>>16&255)<=a);)q();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+(L((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)q();$(b>>>16&255),n.zt+=b>>>16&255;}if($(w>>>16&255),n.zt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(S(n.Ge),n.dt+=L(n.Ge),$(n.Ge),n.zt+=n.Ge),n.ft=16204;case 16204:if(0==o)return v();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.m&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.v?(h-=n.v,d=n.h-h):d=n.v-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[_]=255&n.u[d],++_,++d;}else {d=_-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[_]=f[d],++_,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return v();f[_++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(S(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(_-s,_);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?u:Y_(u)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}C();}n.ft=16207;case 16207:if(n.P&&n.ot){if(S(32),4&n.P&&u!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}C();}n.ft=16208;case 16208:return g=1,v();case 16209:return g=-3,v();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return v();throw e}function v(){if(z(),n.h||s!=e.avail_out&&n.ft<16209&&((n.Ct?n.ft<16208:n.ft<16206)||4!=t)){let t=s-e.avail_out;if(rr(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n._t?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==g||4==t&&0==g)&&(g=-5),g}function x(e,t,r){return n.ot?W(e,t,r):he(e,t,r)}function T(e,t){return m[0]=255&t,m[1]=t>>>8&255,W(e,m,2)>>>0}function y(e,t){return m[0]=255&t,m[1]=t>>>8&255,m[2]=t>>>16&255,m[3]=t>>>24&255,W(e,m,4)>>>0}function I(){f=e.next_out,_=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,l=e.avail_in,u=n.p,a=n.T;}function z(){e.next_out=f,e.next_out_index=_,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=l,n.p=u,n.T=a;}function C(){u=0,a=0;}function q(){if(0==l)throw new S_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function S(e){for(;a<e;)q();}function L(e){return u&(1<<e)-1}function $(e){u>>>=e,a-=e;}function D(){u>>>=7&a,a-=7&a;}}function tn(e){return Ge(e)?-2:0}var X_=65536,ar=32768,W_=class{constructor(e=16,t=X_){this.Ot=[],this.Vt=e;for(let n=0;n<z.min(e,4);n++)this.Ot.push(new p(t));}acquire(e=X_){for(let t=this.Ot.length-1;t>=0;t--){let n=this.Ot[t];if(n.length>=e)return this.Ot.splice(t,1),n}return new p(e)}release(e){this.Ot.length<this.Vt&&this.Ot.push(e);}};function nn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.Jt(t);if(0!=n&&0!=n)throw new L("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,_){n||(n=r());let l=n.o;if(n.Kt)return;let o=0;for(;o<f.length;){let r=z.min(f.length-o,ar),u=f.subarray(o,o+r);for(l.next_in=u,l.next_in_index=0,l.avail_in=u.length;l.avail_in>0;){let r=t.acquire(),f=false;try{l.next_out=r,l.next_out_index=0,l.avail_out=r.length;let i=e.en(l,0),o=r.length-l.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,_.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new L("process error: "+i)}finally{f||i(r);}}if(n.Kt)break;o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let _=n.o;for(;;){let n=t.acquire(),r=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let i=e.en(_,4),l=n.length-_.avail_out;if(l>0){let e=!1,i={tn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new L("finalization error: "+i)}finally{r||i(n);}}let l=e.nn(_);if(0!=l&&0!=l)throw new L("end failed: "+l)}})}function rn(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}function ir(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return nn({Xt:()=>vt(),Jt:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function or(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return nn({Xt:()=>$t(),Jt:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ir(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(rn());}},g_=class{constructor(e="deflate"){let t=or(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(rn());}};
|
|
9468
|
+
var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:O,Error:z,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),l=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(l,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,l:0,_:void 0}}function $e(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,k:t,m:0,v:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.I=e,this.M=t,this.C=0;}},re=class{constructor(e,t,n,r,i){this.Z=e,this.W=t,this.q=n,this.O=r,this.S=i;}};function D_(e){return J_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function Qe(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.D[e.j++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.A+e.N;return e.D[f]=255&i,e.D[f+1]=i>>>8&255,e.D[f+2]=r,e.N+=3,i=i-1&65535,e.H[__[r]+ie+1].R++,e.J[y_(i)].R++,e.N==e.U}function De(e,t){let n=255&t,r=e.A+e.N;return e.D[r]=0,e.D[r+1]=0,e.D[r+2]=n,e.N+=3,e.H[n].R++,e.N==e.U}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=O.floor((t+I-1)/I),f=1<<8+Ce;return {...$e(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,V:n,L:r,X:i,$:new g(32768),K:new g(n),ee:f,D:new p(32768),te:0,ne:32768,j:0,re:0,ie:0,fe:0,le:0,_e:0,oe:-2,ae:0,ue:0,ce:0,se:0,he:0,de:0,we:0,be:0,ke:0,ge:0,me:0,ve:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),Ie:new g(be+1),N:0,U:0,Me:Z,A:0,ze:0,Ce:0,Ze:8,We:32768,qe:0,Oe:0,Se:0,H:new k(fe).fill(0).map(()=>J()),J:new k(2*me+1).fill(0).map(()=>J()),De:new k(2*oe+1).fill(0).map(()=>J()),je:w_(),Ae:w_(),Qe:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=J();f.Ne=r,f.Re=i,t.push(f);}return t}function J(){return {R:0,Ne:0,He:0,Re:0}}function w_(){return new ne([],bn(null,Z,0,0,0))}function bn(e,t,n,r,i){return new re(e,t,n,r,i)}function Q_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=sn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,l=t[f]||0;r[i++]=e?Qe(l,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,l=e[r];if(n>=l&&n<=l+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,l=e[n];if(i>=l&&i<=l+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function sn(e){let t=O.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,I=3,ee=258,ae=ee+I+1,nt=4096,Ue=16,He=ee,hn=29,ie=256,Te=ie+1+hn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,Q=-1,J_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var xn=k_(Q_()),pn=k_(new k(30).fill(5)),Fe=I_(xn),R_=I_(pn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function se(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,Sn,En,gn,Tn,wn,An,Dn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=O.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=Dn[255&t]^An[t>>>8&255]^wn[t>>>16&255]^Tn[t>>>24&255]^gn[255&n]^En[n>>>8&255]^Sn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.ze=1+(e.T-1&7),e.p=0,e.T=0;}function yn(e,t,n){let r,i,f=[],l=0;for(r=1;r<=be;r++)l=l+n[r-1]<<1,f[r]=l;for(i=0;i<=t;i++){let t=e[i].Re;0!=t&&(e[i].Ne=Qe(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.H.length;t++)e.H[t].R=0;for(let t=0;t<e.J.length;t++)e.J[t].R=0;for(let t=0;t<e.De.length;t++)e.De[t].R=0;e.H[ve].R=1,e.ie=e.fe=0,e.N=e.le=0;}function Et(e){if(e.H&&e.H.length>=fe)for(let t=0;t<fe;t++)e.H[t]=J();else {e.H=[];for(let t=0;t<fe;t++)e.H.push(J());}if(e.J&&e.J.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.J[t]=J();else {e.J=[];for(let t=0;t<2*me+1;t++)e.J.push(J());}if(e.De&&e.De.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.De[t]=J();else {e.De=[];for(let t=0;t<2*oe+1;t++)e.De.push(J());}e.je=new ne(e.H,new re(Fe,a_,ie+1,Te,be)),e.Ae=new ne(e.J,new re(R_,i_,0,me,be)),e.Qe=new ne(e.De,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.ze=0,St(e);}var he=1;function vn(e,t,n){return n=e.Te[he],e.Te[he]=e.Te[e.Oe--],z_(e,t,he),n}function mt(e,t,n,r){return e[t].R<e[n].R||e[t].R==e[n].R&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Oe&&(i<e.Oe&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function In(e,t){let n,r,i,f,l,_,o=t.I,a=t.C,u=t.M.Z,c=t.M.W,s=t.M.q,h=t.M.S,d=0;for(f=0;f<=be;f++)e.Ie[f]=0;for(o[e.Te[e.Se]].Re=0,n=e.Se+1;n<fe;n++)r=e.Te[n],f=o[o[r].He].Re+1,f>h&&(f=h,d++),o[r].Re=f,!(r>a)&&(e.Ie[f]++,l=0,r>=s&&(l=c[r-s]),_=o[r].R,e.ie+=_*(f+l),u&&(e.fe+=_*(u[r].Re+l)));if(0!=d){do{for(f=h-1;0==e.Ie[f];)f--;e.Ie[f]--,e.Ie[f+1]+=2,e.Ie[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.Ie[f];0!=r;)i=e.Te[--n],!(i>a)&&(o[i].Re!=f&&(e.ie+=(f-o[i].Re)*o[i].R,o[i].Re=f),r--);}}function O_(e,t){let n,r,i,f=t.I,l=t.M.Z,_=t.M.O,o=-1;for(e.Oe=0,e.Se=fe,n=0;n<_;n++)0!=f[n].R?(e.Te[++e.Oe]=o=n,e.ye[n]=0):f[n].Re=0;for(;e.Oe<2;)i=e.Te[++e.Oe]=o<2?++o:0,f[i].R=1,e.ye[i]=0,e.ie--,l&&(e.fe-=l[i].Re);for(t.C=o,n=O.floor(e.Oe/2);n>=1;n--)z_(e,f,n);i=_;do{n=vn(e,f,n),r=e.Te[he],e.Te[--e.Se]=n,e.Te[--e.Se]=r,f[i].R=f[n].R+f[r].R,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].He=f[r].He=i,e.Te[he]=i++,z_(e,f,he);}while(e.Oe>=2);e.Te[--e.Se]=e.Te[he],In(e,t),yn(f,t.C,e.Ie);}function bt(e,t,n){let r,i,f=-1,l=t[0].Re,_=0,o=7,a=4;for(0==l&&(o=138,a=3),t[n+1].Re=65535,r=0;r<=n;r++)i=l,l=t[r+1].Re,!(++_<o&&i==l)&&(_<a?e.De[i].R+=_:0!=i?(i!=f&&e.De[i].R++,e.De[t_].R++):_<=10?e.De[n_].R++:e.De[r_].R++,_=0,f=i,0==l?(o=138,a=3):i==l?(o=6,a=3):(o=7,a=4));}function st(e,t,n){let r,i=-1,f=t[0].Re,l=0,_=7,o=4;0==f&&(_=138,o=3);for(let a=0;a<=n;a++)if(r=f,f=t[a+1].Re,!(++l<_&&r==f)){if(l<o)do{C(e,e.De[r].Ne,e.De[r].Re);}while(0!=--l);else 0!=r?(r!=i&&(C(e,e.De[r].Ne,e.De[r].Re),l--),C(e,e.De[t_].Ne,e.De[t_].Re),C(e,l-3,2)):l<=10?(C(e,e.De[n_].Ne,e.De[n_].Re),C(e,l-3,3)):(C(e,e.De[r_].Ne,e.De[r_].Re),C(e,l-11,7));l=0,i=r,0==f?(_=138,o=3):r==f?(_=6,o=3):(_=7,o=4);}}function kn(e){let t;for(bt(e,e.H,e.je.C),bt(e,e.J,e.Ae.C),O_(e,e.Qe),t=oe-1;t>=3&&0==e.De[pe[t]].Re;t--);return e.ie+=3*(t+1)+5+5+4,t}function Nn(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.De[pe[i]].Re,3);st(e,e.H,t-1),st(e,e.J,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.D,e.j,t,i,n),e.j+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Ne,Fe[ve].Re),xt(e);}function ht(e,t,n){let r,i,f,l,_=0;if(0!=e.N)do{r=255&e.Me[_],r+=(255&e.Me[_+1])<<8,i=e.Me[_+2],_+=3,0==r?C(e,t[i].Ne,t[i].Re):(f=__[i],C(e,t[f+ie+1].Ne,t[f+ie+1].Re),l=a_[f],0!=l&&(i-=ge[f],C(e,i,l)),r--,f=y_(r),C(e,n[f].Ne,n[f].Re),l=i_[f],0!=l&&(r-=Ee[f],C(e,r,l)));}while(_<e.N);C(e,t[ve].Ne,t[ve].Re);}function Rn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.H[t].R)return 0;if(0!=e.H[9].R||0!=e.H[10].R||0!=e.H[13].R)return 1;for(t=32;t<ie;t++)if(0!=e.H[t].R)return 1;return 0}function wt(e,t,n,r,i=0){let f,l,_=0;e.ke>0?(2==e.o.t&&(e.o.t=Rn(e)),O_(e,e.je),O_(e,e.Ae),_=kn(e),f=e.ie+3+7>>3,l=e.fe+3+7>>3,(l<=f||4==e.ge)&&(f=l)):f=l=n+5,n+4<=f&&t?Pe(e,t,n,r,i):l==f?(C(e,(N_<<1)+r,3),ht(e,Fe,R_)):(C(e,(lt<<1)+r,3),Nn(e,e.je.C+1,e.Ae.C+1,_+1),ht(e,e.H,e.J)),St(e),r&&pt(e);}function vt(){let e=je();return e._=v_(e),e}var Ye=[{Je:Ot,Ue:0,Ee:0,Ye:0,Pe:0},{Je:U_,Ue:4,Ee:4,Ye:8,Pe:4},{Je:U_,Ue:4,Ee:5,Ye:16,Pe:8},{Je:U_,Ue:4,Ee:6,Ye:32,Pe:32},{Je:Ne,Ue:4,Ee:4,Ye:16,Pe:16},{Je:Ne,Ue:8,Ee:16,Ye:32,Pe:32},{Je:Ne,Ue:8,Ee:16,Ye:128,Pe:128},{Je:Ne,Ue:8,Ee:32,Ye:128,Pe:256},{Je:Ne,Ue:32,Ee:128,Ye:258,Pe:1024},{Je:Ne,Ue:32,Ee:258,Ye:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.L)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(I-1)]);let n=e.$[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.V-1]=0,Ve(e.K,0,(e.V-1)*e.K.BYTES_PER_ELEMENT);}function Bn(e){let t,n,r=e.h;for(t=e.V;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.$[t],e.$[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e._.P?e.i=se(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e._.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.We-e.ce-e.ue,0==n&&0==e.ue&&0==e.ce?n=r:-1==n&&n--,e.ue>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.qe-=r,e.ue-=r,e.ae-=r,e._e>e.ue&&(e._e=e.ue),Bn(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ue+e.ce,n),e.ce+=t,e.ce+e._e>=I){let t=e.ue-e._e;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e._e&&(e.be=l_(e,e.be,e.u[t+I-1]),e.$[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e._e--,!(e.ce+e._e<I)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.m<e.We){let t,n=e.ue+e.ce;e.m<n?(t=e.We-n,t>He&&(t=He),Ve(e.u,n,t),e.m=n+t):e.m<n+He&&(t=n+He-e.m,t>e.We-e.m&&(t=e.We-e.m),Ve(e.u,e.m,t),e.m+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let l=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(l=0,r<-15)return -2;r=-r;}else r>15&&(l=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=l)return -2;8==r&&(r=9);let _=v_(e);return _?(e._=_,_.o=e,_.Y=42,_.P=l,_.B=void 0,_.k=r,_.h=1<<_.k,_.F=_.h-1,_.G=i+7,_.V=1<<_.G,_.L=_.V-1,_.X=(_.G+I-1)/I,_.u=new p(2*_.h),_.$=new g(_.h),_.K=new g(_.V),_.m=0,_.ee=1<<i+6,_.D=new p(_.ee*ot),_.ne=4*_.ee,_.u&&_.$&&_.K&&_.D?(_.Me=_.D.subarray(_.ee),_.A=_.te+_.ee,_.U=3*(_.ee-1),_.ke=t,_.ge=f,_.Ze=n,Pn(e)):(_.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e._;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Fn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e._,t.j=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):se(0),t.oe=-2,Et(t),0)}function Zn(e){e.We=2*e.h,It(e),e.xe=Ye[e.ke].Ee,e.me=Ye[e.ke].Ue,e.ve=Ye[e.ke].Ye,e.pe=Ye[e.ke].Pe,e.ue=0,e.ae=0,e.ce=0,e._e=0,e.se=e.he=I-1,e.we=0,e.be=0;}function Pn(e){let t=Fn(e);return 0==t&&Zn(e._),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e._;gt(n),t=n.j,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.D,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.j-=t,0==n.j&&(n.re=n.te));}function Ie(e,t){let n=e._;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.D.buffer,n.te+t,n.j-t),n.j-t));}function Nt(e,t){let n,r=e._;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.j){if(q(e),0==e.avail_out)return r.oe=Q,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.k-8<<4)<<8;if(t=r.ge>=2||r.ke<2?0:r.ke<6?1:6==r.ke?2:3,n|=t<<6,0!=r.ue&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ue&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.j)return r.oe=Q,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Ve?0:8)+(null==r.B.Le?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,255&r.B.$e),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.D,r.j)),r.Ce=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,at),r.Y=113,q(e),0!=r.j)return r.oe=Q,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.j,n=(65535&r.B.Ke)-r.Ce;for(;r.j+n>r.ne;){let i=r.ne-r.j;if(M(r.D,r.j,r.B.Ge,r.Ce,i),r.j=r.ne,Ie(e,t),r.Ce+=i,q(e),0!=r.j)return r.oe=Q,0;t=0,n-=i;}M(r.D,r.j,r.B.Ge,r.Ce,n),r.j+=n,Ie(e,t),r.Ce=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.j;do{if(r.j==r.ne){if(Ie(e,n),q(e),0!=r.j)return r.oe=Q,0;n=0;}t=r.B.Ve[r.Ce++],T(r,t);}while(0!=t);Ie(e,n),r.Ce=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Le&&r.B.Le.length){let t,n=r.j;do{if(r.j==r.ne){if(Ie(e,n),q(e),0!=r.j)return r.oe=Q,0;n=0;}t=r.B.Le[r.Ce++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.j+2>r.ne&&(q(e),0!=r.j))return r.oe=Q,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.j)return r.oe=Q,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ke?Ot(r,t):2==r.ge?Yn(r,t):3==r.ge?Mn(r,t):Ye[r.ke].Je(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=Q),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ue=0,r.ae=0,r._e=0))),q(e),0==e.avail_out))return r.oe=Q,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.j?0:1)}function P_(e){if(Z_(e))return -2;let t=e._,n=t.Y;return t.u=Z,t.$=qe,t.K=qe,t.D=Z,t.Me=Z,t.Te=new R(0),t.ye=Z,t.Ie=qe,t.H.length=0,t.J.length=0,t.De.length=0,t.B=void 0,t.te=0,t.re=0,t.A=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ue,l=e.he,_=e.ve,o=e.ue>ye(e)?e.ue-ye(e):0,a=e.$,u=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+l-1],k=c[f+l];l>=e.me&&(i>>=2),_>s&&(_=s);do{if(n=t,c[n+l]!=k||c[n+l-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>l){if(e.qe=t,l=r,r>=_)break;b=c[f+l-1],k=c[f+l];}}while((t=a[t&u])>o&&0!=--i);return l<=s?l:s}function zt(e,t){wt(e,e.u,e.ue-e.ae,t,e.ae),e.ae=e.ue,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Ot(e,t){let n,r,i,f=ke(e.ne-5,e.h),l=0,_=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ue-e.ae,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;l=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,l),e.D[e.j-4]=n,e.D[e.j-3]=n>>8,e.D[e.j-2]=~n,e.D[e.j-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ae,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ae+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==l);if(_-=e.o.avail_in,_){if(_>=e.h){e.le=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ue=e.h,e._e=e.ue;}else e.We-e.ue<=_&&(e.ue-=e.h,M(e.u,0,e.u,e.h,e.ue),e.le<2&&e.le++,e._e>e.ue&&(e._e=e.ue)),M(e.u,e.ue,e.o.next_in,e.o.next_in_index-_,_),e.ue+=_,e._e+=ke(_,e.h-e._e);e.ae=e.ue;}return e.m<e.ue&&(e.m=e.ue),l?(e.ze=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ue==e.ae?1:(i=e.We-e.ue,e.o.avail_in>i&&e.ae>=e.h&&(e.ae-=e.h,e.ue-=e.h,M(e.u,0,e.u,e.h,e.ue),e.le<2&&e.le++,i+=e.h,e._e>e.ue&&(e._e=e.ue)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ue,i),e.ue+=i,e._e+=ke(i,e.h-e._e)),e.m<e.ue&&(e.m=e.ue),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ue-e.ae,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),l=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,l,e.ae),e.ae+=n,q(e.o)),l&&(e.ze=8),l?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ue)),0!=n&&e.ue-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=I)if(e.ue,e.qe,e.se,r=e_(e,e.ue-e.qe,e.se-I),e.ce-=e.se,e.se<=e.xe&&e.ce>=I){e.se--;do{e.ue++,n=u_(e,e.ue);}while(0!=--e.se);e.ue++;}else e.ue+=e.se,e.se=0,e.be=e.u[e.ue],e.be=l_(e,e.be,e.u[e.ue+1]);else r=De(e,e.u[e.ue]),e.ce--,e.ue++;if(r){let t=j(e,false);if(null!=t)return t}}if(e._e=e.ue<I-1?e.ue:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ue)),e.he=e.se,e.de=e.qe,e.se=I-1,0!=n&&e.he<e.xe&&e.ue-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ge||e.se==I&&e.ue-e.qe>nt)&&(e.se=I-1)),e.he>=I&&e.se<=e.he){let t=e.ue+e.ce-I;e.ue,e.de,e.he,r=e_(e,e.ue-1-e.de,e.he-I),e.ce-=e.he-1,e.he-=2;do{++e.ue<=t&&(n=u_(e,e.ue));}while(0!=--e.he);if(e.we=0,e.se=I-1,e.ue++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ue-1]),r&&zt(e,0),e.ue++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ue++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ue-1]),e.we=0),e._e=e.ue<I-1?e.ue:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}function Mn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=I&&e.ue>0&&(i=e.ue-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ue+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=I?(e.ue,e.ue,e.se,n=e_(e,1,e.se-I),e.ce-=e.se,e.ue+=e.se,e.se=0):(n=De(e,e.u[e.ue]),e.ce--,e.ue++),n){let t=j(e,false);if(null!=t)return t}}if(e._e=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}function Yn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ue]),e.ce--,e.ue++,n){let t=j(e,false);if(null!=t)return t}}if(e._e=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Lt=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Xn=[16,1,73,1,200,1],Wn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Xn),Ft.push(...Wn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Lt,0,0]),Wt=new g([...Lt,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function $t(e,t){let n,r=e._,i=e.next_in_index,f=e.next_out_index,l=e.next_in,_=e.next_out,o=r.u,a=r.p>>>0,u=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.m>>>0,k=r.v>>>0,g=r.it,m=f-(t-e.avail_out),v=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,I=0;e:do{for(;u<15;){if(!(i<l.length))break e;a+=l[i++]<<u,u+=8;}n=c[a&h];t:for(;;){if(y=n>>>16&255,a>>>=y,u-=y,y=n>>>24,0==y){_[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;u<y;){if(!(i<l.length)){r.ft=16200;break e}a+=l[i++]<<u,u+=8;}x+=a&(1<<y)-1,a>>>=y,u-=y;}for(;u<15;){if(!(i<l.length)){r.ft=16200;break e}a+=l[i++]<<u,u+=8;}n=s[a&d];n:for(;;){if(y=n>>>16&255,a>>>=y,u-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;u<y;){if(!(i<l.length)){r.ft=16200;break e}a+=l[i++]<<u,u+=8;}T+=a&(1<<y)-1,a>>>=y,u-=y;}let t=x,c=f-m;if(T>c){let n=T-c;if(n>b&&g){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==k){if(I=w-n,!(n<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let e=0;e<n;++e)_[f++]=o[I++];t-=n,I=f-T;}else if(k<n){I=w+k-n;let e=n-k;if(!(e<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let t=0;t<e;++t)_[f++]=o[I++];if(t-=e,I=0,!(k<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let e=0;e<k;++e)_[f++]=o[I++];t-=k,I=f-T;}else {if(I=k-n,!(n<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let e=0;e<n;++e)_[f++]=o[I++];t-=n,I=f-T;}for(;t>2;)_[f++]=_[I++],_[f++]=_[I++],_[f++]=_[I++],t-=3;t&&(_[f++]=_[I++],t>1&&(_[f++]=_[I++]));}else {for(I=f-T;t>2;)_[f++]=_[I++],_[f++]=_[I++],_[f++]=_[I++],t-=3;t&&(_[f++]=_[I++],t>1&&(_[f++]=_[I++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(a&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(a&(1<<y)-1)];continue t}}while(i<p&&f<v);let M=u>>3;i-=M,u-=M<<3,a&=(1<<u)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<v?v-f+257:257-(f-v),r.p=a>>>0,r.T=u>>>0;}var Gn=new R(0);function M_(e,t){let n=Gn,r=t?ue+m_:ue+d_;return {...$e(e,0),o:e,ft:16180,lt:false,P:0,_t:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,kt:0,gt:0,vt:n,xt:new g(320),Tt:new g(288),yt:new R(r),It:0,it:true,Mt:0,zt:0,Ct:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function s_(e=1){return We(64,e,0)}function Jt(e=0){return We(96,e,0)}function Y_(e){return ((255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255)>>>0}var Oe=15,qn={Ct:false,Zt:Zt,Wt:Mt,qt:Xt,Ot:Gt,St:20,Dt:257,jt:0,At:d_,Qt:false,Nt:true},Vn={Ct:true,Zt:Pt,Wt:Yt,qt:Wt,Ot:Kt,St:19,Dt:256,jt:-1,At:m_,Qt:true,Nt:false};function Le(e,t,n,r,i,f,l,_){let o,a,u,c,s,h,d,w,b,k,m,v,p,x,T,y,I,M,z,C=new g(Oe+1),Z=new g(Oe+1),W=_?Vn:qn;for(o=0;o<=Oe;o++)C[o]=0;for(a=0;a<n;a++)C[t[a]]++;for(s=i.Rt,c=Oe;c>=1&&0==C[c];c--);if(s>c&&(s=c),0==c)return W.Nt?(T=s_(1),r.Rt[0]=T,r.Rt[1]=T,i.Rt=1,0):-1;for(u=1;u<c&&0==C[u];u++);for(s<u&&(s=u),w=1,o=1;o<=Oe;o++)if(w<<=1,w-=C[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(Z[1]=0,o=1;o<Oe;o++)Z[o+1]=Z[o]+C[o];for(a=0;a<n;a++)0!=t[a]&&(f[Z[t[a]]++]=a);switch(e){case 0:I=M=f,z=W.St;break;case 1:I=W.Zt,M=W.Wt,z=W.Dt;break;default:I=W.qt,M=W.Ot,z=W.jt;}if(k=0,a=0,o=u,y=l.Rt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(W.Qt?b>=ue:b>ue)||2==e&&(W.Qt?b>=W.At:b>W.At))return 1;for(;;){T=jn(f,a,o,d,e,I,M,z,W.Ct),m=1<<o-d,v=1<<h,u=v;do{v-=m;let e=(k>>d)+v;r.Rt[y+e]=T;}while(0!=v);for(m=1<<o-1;k&m;)m>>=1;if(0!=m?(k&=m-1,k+=m):k=0,a++,0==--C[o]){if(o==c)break;o=t[f[a]];}if(o>s&&(k&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=C[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(W.Qt?b>=ue:b>ue)||2==e&&(W.Qt?b>=W.At:b>W.At))return 1;p=k&x,r.Rt[l.Rt+p]=We(h,s,y-l.Rt);}}if(0!=k)for(T=s_(o-d);0!=k;){for(0!=d&&(k&x)!=p&&(d=0,o=s,y=l.Rt,h=s,T=s_(o)),r.Rt[y+(k>>d)]=T,m=1<<o-1;k&m;)m>>=1;0!=m?(k&=m-1,k+=m):k=0;}return l.Rt+=b,i.Rt=s,0}function jn(e,t,n,r,i,f,l,_,o){let a;if(o?e[t]<_:e[t]+1<_)a=b_(0,n-r,e[t]);else if(o?e[t]>_:e[t]>=_)if(o&&1==i){let i=e[t]-257;a=b_(l[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-_;a=b_(l[i],n-r,f[i]);}else a=Jt(n-r);return a}var p_=new R(0),er={Ht:true,Jt:new R(544),Ut:p_,Et:p_},_r={Ht:true,Jt:new R(544),Ut:p_,Et:p_};function Qt(){let e=je();return e._=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e._,!(!t||t.o!=e||t.Ct&&(t.ft<16191||t.ft>16209)||!t.Ct&&(t.ft<16180||t.ft>16211))))}function tr(e){let t;return Ge(e)?-2:(t=e._,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Ct?16191:16180,t.lt=false,t._t=false,t.ot=-1,t.ut=t.Ct?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.vt=t.yt,t.it=true,t.Mt=-1,0)}function nr(e){let t;return Ge(e)?-2:(t=e._,t.h=0,t.m=0,t.v=0,tr(e))}function rr(e,t){let n,r;if(Ge(e))return -2;if(r=e._,t<0){if(t<-16)return -2;n=0,r.Ct=-16==t,t=-t;}else n=5+(t>>4),r.Ct=false,t<48&&(t&=15);let i=r.Ct?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.k!=t&&(r.u=Z),r.P=n,r.k=t,nr(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e._=r,r.o=e,r.ft=i?16191:16180,n=rr(e,t),n}function ar(e){let t=e.Ct?_r:er,n={Rt:0};if(t.Ht){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Jt.fill(0),f=t.Jt,t.Ut=f,i=9;let l={Rt:f},_={Rt:i},o={Rt:0};for(Le(1,e.xt,288,l,_,e.Tt,o,e.Ct),f=l.Rt,i=_.Rt,e.It=o.Rt,r=0;r<32;)e.xt[r++]=5;i=5;let a=o.Rt,u={Rt:f},c={Rt:i};n.Rt=a,Le(2,e.xt,32,u,c,e.Tt,n,e.Ct),t.Et=f.slice(a),t.Ht=false;}e.et=t.Ut,e.nt=9,e.tt=t.Et,e.rt=5,e.It=n.Rt;}function ir(e,t,n){let r=e._;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.k),r.u)))return 1;if(0==r.h&&(r.h=1<<r.k,r.v=0,r.m=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.v=0,r.m=r.h;else {let e=r.h-r.v;e>n&&(e=n),M(r.u,r.v,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.v=n,r.m=r.h):(r.v+=e,r.v==r.h&&(r.v=0),r.m<r.h&&(r.m+=e));}return 0}var S_=class extends z{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,l,_,o,a,u,c,s,h,d,w,b,k,g,m=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;_=0,a=0,o=0,u=0,r=Z,i=0,f=Z,l=0,n=e._,16191==n.ft&&(n.ft=16192),I(),c=_,s=o,g=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(O(16),2&n.P&&35615==a){0==n.k&&(n.k=15),n.ct=W(0),n.ct=T(n.ct,a),C(),n.ft=16181;break}if(n.B&&(n.B.Yt=-1),!(1&n.P)||((S(8)<<8)+(a>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=S(4)){e.msg="unknown compression method",n.ft=16209;break}if(D(4),k=S(4)+8,0==n.k&&(n.k=k),k>15||k>n.k){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<k,n.ot=0,e.i=n.ct=se(0),n.ft=512&a?16189:16191,C();break;case 16181:if(O(16),n.ot=a,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=a>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,a)),C(),n.ft=16182;case 16182:O(32),n.B&&(n.B.Xe=a),512&n.ot&&4&n.P&&(n.ct=y(n.ct,a)),C(),n.ft=16183;case 16183:O(16),n.B&&(n.B.Pt=255&a,n.B.$e=a>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,a)),C(),n.ft=16184;case 16184:1024&n.ot?(O(16),n.ht=a,n.B&&(n.B.Ke=a),512&n.ot&&4&n.P&&(n.ct=T(n.ct,a)),C()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>_&&(h=_),h&&(n.B&&n.B.Ge&&n.B.Bt&&(k=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,k,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),_-=h,i+=h,n.ht-=h),n.ht))return v();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==_)return v();h=0;do{k=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Ve[n.ht++]=k);}while(k&&h<_);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),_-=h,i+=h,k)return v()}else n.B&&(n.B.Ve=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==_)return v();h=0;do{k=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Le[n.ht++]=k);}while(k&&h<_);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),_-=h,i+=h,k)return v()}else n.B&&(n.B.Le=Z);n.ft=16188;case 16188:if(512&n.ot){if(O(16),4&n.P&&a!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}C();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Yt=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:O(32),e.i=n.ct=Y_(a),C(),n.ft=16190;case 16190:if(!n._t)return z(),2;e.i=n.ct=se(0),n.ft=16191;case 16191:if(5==t||6==t)return v();case 16192:if(n.lt){j(),n.ft=16206;break}switch(O(3),n.lt=!!S(1),D(1),S(2)){case 0:n.ft=16193;break;case 1:if(ar(n),n.ft=16199,6==t)return D(2),v();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}D(2);break;case 16193:if(j(),O(32),(65535&a)!=(a>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&a,C(),n.ft=16194,6==t)return v();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>_&&(h=_),h>o&&(h=o),0==h)return v();M(f,l,r,i,h),_-=h,i+=h,o-=h,l+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(O(14),n.bt=S(5)+257,D(5),n.kt=S(5)+1,D(5),n.wt=S(4)+4,D(4),n.bt>286||!n.Ct&&n.kt>30){e.msg=n.Ct?"too many length":"too many length or distance symbols",n.ft=16209;break}n.gt=0,n.ft=16197;case 16197:for(;n.gt<n.wt;)O(3),n.xt[pe[n.gt++]]=S(3),D(3);for(;n.gt<19;)n.xt[pe[n.gt++]]=0;n.vt=n.yt,n.et=n.tt=n.vt,n.nt=7;let c={Rt:n.vt},m={Rt:n.nt},p={Rt:0};if(g=Le(0,n.xt,19,c,m,n.Tt,p,n.Ct),n.vt=c.Rt,n.nt=m.Rt,g){e.msg="invalid code lengths set",n.ft=16209;break}n.gt=0,n.ft=16198;case 16198:for(;n.gt<n.bt+n.kt;){for(;w=n.et[S(n.nt)],!((w>>>16&255)<=u);)q();if((65535&w)<16)D(w>>>16&255),n.xt[n.gt++]=65535&w;else {if(16==(65535&w)){if(O(2+(w>>>16&255)),D(w>>>16&255),0==n.gt){e.msg="invalid bit length repeat",n.ft=16209;break}k=n.xt[n.gt-1],h=3+S(2),D(2);}else 17==(65535&w)?(O(3+(w>>>16&255)),D(w>>>16&255),k=0,h=3+S(3),D(3)):(O(7+(w>>>16&255)),D(w>>>16&255),k=0,h=11+S(7),D(7));if(n.gt+h>n.bt+n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.gt++]=k;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.vt=n.yt,n.nt=9;let A={Rt:n.vt},Q={Rt:n.nt},N={Rt:0};g=Le(1,n.xt,n.bt,A,Q,n.Tt,N,n.Ct),n.vt=A.Rt,n.nt=Q.Rt;let R=N.Rt;if(n.et=n.vt.slice(0,R),g){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let H=n.xt.subarray(n.bt,n.bt+n.kt),J={Rt:n.vt},U={Rt:n.rt},E={Rt:R};if(g=Le(2,H,n.kt,J,U,n.Tt,E,n.Ct),n.vt=J.Rt,n.rt=U.Rt,n.tt=n.vt.slice(R),g){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return v();case 16199:n.ft=16200;case 16200:if(!n.Ct&&_>=6&&o>=258){z(),$t(e,s),I(),16191==n.ft&&(n.Mt=-1);break}for(n.Mt=0;w=n.et[S(n.nt)],!((w>>>16&255)<=u);)q();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+(S((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=u);)q();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.Mt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Ct?31:15),n.ft=16201;case 16201:n.Ge&&(O(n.Ge),n.ht+=S(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.zt=n.ht,n.ft=16202;case 16202:for(;w=n.tt[S(n.rt)],!((w>>>16&255)<=u);)q();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+(S((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=u);)q();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(O(n.Ge),n.dt+=S(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.ft=16204;case 16204:if(0==o)return v();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.m&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.v?(h-=n.v,d=n.h-h):d=n.v-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[l]=255&n.u[d],++l,++d;}else {d=l-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[l]=f[d],++l,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return v();f[l++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(O(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(l-s,l);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?a:Y_(a)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}C();}n.ft=16207;case 16207:if(n.P&&n.ot){if(O(32),4&n.P&&a!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}C();}n.ft=16208;case 16208:return g=1,v();case 16209:return g=-3,v();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return v();throw e}function v(){if(z(),n.h||s!=e.avail_out&&n.ft<16209&&((n.Ct?n.ft<16208:n.ft<16206)||4!=t)){let t=s-e.avail_out;if(ir(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n.lt?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==g||4==t&&0==g)&&(g=-5),g}function x(e,t,r){return n.ot?W(e,t,r):se(e,t,r)}function T(e,t){return m[0]=255&t,m[1]=t>>>8&255,W(e,m,2)>>>0}function y(e,t){return m[0]=255&t,m[1]=t>>>8&255,m[2]=t>>>16&255,m[3]=t>>>24&255,W(e,m,4)>>>0}function I(){f=e.next_out,l=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,_=e.avail_in,a=n.p,u=n.T;}function z(){e.next_out=f,e.next_out_index=l,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=_,n.p=a,n.T=u;}function C(){a=0,u=0;}function q(){if(0==_)throw new S_;_--,a+=(255&r[i])<<u,i++,a>>>=0,u+=8;}function O(e){for(;u<e;)q();}function S(e){return a&(1<<e)-1}function D(e){a>>>=e,u-=e;}function j(){a>>>=7&u,u-=7&u;}}function tn(e){return Ge(e)?-2:0}var X_=65536,or=32768,nn="trailing data after the end of the stream",W_=class{constructor(e=16,t=X_){this.Vt=[],this.Lt=e;for(let n=0;n<O.min(e,4);n++)this.Vt.push(new p(t));}acquire(e=X_){for(let t=this.Vt.length-1;t>=0;t--){let n=this.Vt[t];if(n.length>=e)return this.Vt.splice(t,1),n}return new p(e)}release(e){this.Vt.length<this.Lt&&this.Vt.push(e);}};function rn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.$t(t);if(0!=n&&0!=n)throw new z("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,l){n||(n=r());let _=n.o;if(n.Kt){if(f.length)throw new z(nn);return}let o=0;for(;o<f.length;){let r=O.min(f.length-o,or),a=f.subarray(o,o+r);for(_.next_in=a,_.next_in_index=0,_.avail_in=a.length;_.avail_in>0;){let r=t.acquire(),f=false;try{_.next_out=r,_.next_out_index=0,_.avail_out=r.length;let i=e.en(_,0),o=r.length-_.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,l.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new z("process error: "+i)}finally{f||i(r);}}if(n.Kt){if(_.avail_in>0||o+r<f.length)throw new z(nn);break}o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let l=n.o;for(;;){let n=t.acquire(),r=false;try{l.next_out=n,l.next_out_index=0,l.avail_out=n.length;let i=e.en(l,4),_=n.length-l.avail_out;if(_>0){let e=!1,i={tn:n.subarray(0,_),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new z("finalization error: "+i)}finally{r||i(n);}}let _=e.nn(l);if(0!=_&&0!=_)throw new z("end failed: "+_)}})}function an(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}var fr=new Map([["deflate",15],["gzip",31],["deflate-raw",-15]]),lr=new Map([["deflate",15],["gzip",31],["deflate-raw",-15],["deflate64-raw",-16]]);function on(e,t){let n=e.get(t);if(void 0===n)throw new TypeError(`Unsupported format: ${t}`);return n}function ur(e="deflate",t){let n=on(fr,e),r=t&&"number"==typeof t.level?t.level:-1;return rn({Xt:()=>vt(),$t:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function cr(e="deflate"){let t=on(lr,e);return rn({Xt:()=>Qt(),$t:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ur(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(an());}},g_=class{constructor(e="deflate"){let t=cr(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(an());}};
|
|
9391
9469
|
|
|
9392
9470
|
/*
|
|
9393
9471
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9469,7 +9547,12 @@
|
|
|
9469
9547
|
const ERR_INVALID_PASS_THROUGH = "Invalid passThrough option (use readerOptions.passThrough or set uncompressedSize for each entry)";
|
|
9470
9548
|
const ERR_INVALID_READER_OPTIONS = "Invalid readerOptions (must be an object)";
|
|
9471
9549
|
const ERR_UNSUPPORTED_PASS_THROUGH_VALUE = "The 'compressed' passThrough option is only supported by Entry#getData() and ZipWriter#add()";
|
|
9550
|
+
const ERR_INVALID_PASSWORDS = "Invalid passwords option (must be an array of strings)";
|
|
9551
|
+
const ERR_INVALID_REQUEST_PASSWORD = "Invalid requestPassword option (must be a function returning a string or undefined)";
|
|
9472
9552
|
const ERR_ABORT_EXPORT = "zipjs-abort-export";
|
|
9553
|
+
const ABORT_ERROR_NAME = "AbortError";
|
|
9554
|
+
const EMPTY_RAW_PASSWORD = new Uint8Array(0);
|
|
9555
|
+
const FALSE_ACCEPT_ERRORS = new Set([ERR_INVALID_CRC32, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_COMPRESSED_DATA]);
|
|
9473
9556
|
|
|
9474
9557
|
class ZipEntry {
|
|
9475
9558
|
|
|
@@ -9842,8 +9925,10 @@
|
|
|
9842
9925
|
zipReader = new ZipReader(reader, options);
|
|
9843
9926
|
}
|
|
9844
9927
|
checkPassThroughValue(options.passThrough);
|
|
9928
|
+
checkPasswordCandidatesOptions(options);
|
|
9845
9929
|
const duplicates = checkDuplicatesOption(options.duplicates);
|
|
9846
9930
|
const importedEntries = [];
|
|
9931
|
+
const passwordState = { known: [] };
|
|
9847
9932
|
const entries = await zipReader.getEntries(options);
|
|
9848
9933
|
for (const entry of entries) {
|
|
9849
9934
|
let parent = this;
|
|
@@ -9888,7 +9973,7 @@
|
|
|
9888
9973
|
}
|
|
9889
9974
|
importedEntries.push(addChild(parent, name, {
|
|
9890
9975
|
data: entry,
|
|
9891
|
-
Reader: getZipBlobReader(Object.assign({}, options)),
|
|
9976
|
+
Reader: getZipBlobReader(Object.assign({}, options), passwordState),
|
|
9892
9977
|
uncompressedSize: options.passThrough ? entry.compressedSize : entry.uncompressedSize,
|
|
9893
9978
|
passThrough: options.passThrough
|
|
9894
9979
|
}));
|
|
@@ -10217,7 +10302,7 @@
|
|
|
10217
10302
|
};
|
|
10218
10303
|
}
|
|
10219
10304
|
|
|
10220
|
-
function getZipBlobReader(options) {
|
|
10305
|
+
function getZipBlobReader(options, passwordState) {
|
|
10221
10306
|
return class extends Reader {
|
|
10222
10307
|
|
|
10223
10308
|
constructor(entry, options = {}) {
|
|
@@ -10230,12 +10315,12 @@
|
|
|
10230
10315
|
const zipBlobReader = this;
|
|
10231
10316
|
const readerOptions = Object.assign({}, options, zipBlobReader.options);
|
|
10232
10317
|
const { checkOverlappingEntry, checkOverlappingEntryOnly } = readerOptions;
|
|
10233
|
-
const data = await zipBlobReader.entry
|
|
10318
|
+
const data = await readEntryData(zipBlobReader.entry, Object.assign(readerOptions, {
|
|
10234
10319
|
checkPasswordOnly: false,
|
|
10235
10320
|
checkOverlappingEntry: checkOverlappingEntryOnly || checkOverlappingEntry,
|
|
10236
10321
|
checkOverlappingEntryOnly: false,
|
|
10237
10322
|
preventClose: false
|
|
10238
|
-
}));
|
|
10323
|
+
}), passwordState);
|
|
10239
10324
|
zipBlobReader.data = data;
|
|
10240
10325
|
zipBlobReader.blobReader = new BlobReader(data);
|
|
10241
10326
|
zipBlobReader.size = data.size;
|
|
@@ -10297,10 +10382,9 @@
|
|
|
10297
10382
|
await initStream(reader);
|
|
10298
10383
|
} catch (error) {
|
|
10299
10384
|
try {
|
|
10385
|
+
error.entry = child;
|
|
10300
10386
|
error.entryId = child.id;
|
|
10301
|
-
error.
|
|
10302
|
-
entry: child
|
|
10303
|
-
};
|
|
10387
|
+
error.entryName = child.getRelativeName(entry);
|
|
10304
10388
|
} catch {
|
|
10305
10389
|
// ignored
|
|
10306
10390
|
}
|
|
@@ -10392,10 +10476,145 @@
|
|
|
10392
10476
|
}
|
|
10393
10477
|
if (readerOptions) {
|
|
10394
10478
|
checkPassThroughValue(readerOptions.passThrough);
|
|
10479
|
+
checkPasswordCandidatesOptions(readerOptions);
|
|
10395
10480
|
}
|
|
10396
10481
|
return readerOptions;
|
|
10397
10482
|
}
|
|
10398
10483
|
|
|
10484
|
+
function checkPasswordCandidatesOptions(options) {
|
|
10485
|
+
const { passwords, requestPassword } = options;
|
|
10486
|
+
if (passwords && (!Array.isArray(passwords) || passwords.some(password => typeof password != STRING_TYPE))) {
|
|
10487
|
+
throw new Error(ERR_INVALID_PASSWORDS);
|
|
10488
|
+
}
|
|
10489
|
+
if (requestPassword && typeof requestPassword != FUNCTION_TYPE) {
|
|
10490
|
+
throw new Error(ERR_INVALID_REQUEST_PASSWORD);
|
|
10491
|
+
}
|
|
10492
|
+
}
|
|
10493
|
+
|
|
10494
|
+
async function readEntryData(entry, options, passwordState) {
|
|
10495
|
+
checkPasswordCandidatesOptions(options);
|
|
10496
|
+
const { passwords, requestPassword, signal } = options;
|
|
10497
|
+
options = Object.assign({}, options);
|
|
10498
|
+
delete options.passwords;
|
|
10499
|
+
delete options.requestPassword;
|
|
10500
|
+
if (!entry.encrypted || options.passThrough || (!passwords && !requestPassword)) {
|
|
10501
|
+
return entry.getData(new BlobWriter(), options);
|
|
10502
|
+
}
|
|
10503
|
+
const tried = new Set();
|
|
10504
|
+
let error;
|
|
10505
|
+
while (true) {
|
|
10506
|
+
for (const candidate of getPasswordCandidates(options, passwordState, passwords)) {
|
|
10507
|
+
if (!tried.has(candidate.key)) {
|
|
10508
|
+
const result = await tryPasswordCandidate(candidate);
|
|
10509
|
+
if (result.done) {
|
|
10510
|
+
return result.data;
|
|
10511
|
+
}
|
|
10512
|
+
error = result.error;
|
|
10513
|
+
}
|
|
10514
|
+
}
|
|
10515
|
+
if (!requestPassword) {
|
|
10516
|
+
break;
|
|
10517
|
+
}
|
|
10518
|
+
if (passwordState.pendingPrompt) {
|
|
10519
|
+
await passwordState.pendingPrompt;
|
|
10520
|
+
continue;
|
|
10521
|
+
}
|
|
10522
|
+
let release;
|
|
10523
|
+
passwordState.pendingPrompt = new Promise(resolve => release = resolve);
|
|
10524
|
+
try {
|
|
10525
|
+
const answer = await requestPassword(entry, error);
|
|
10526
|
+
if (answer === UNDEFINED_VALUE || answer === null) {
|
|
10527
|
+
break;
|
|
10528
|
+
}
|
|
10529
|
+
// deno-lint-ignore valid-typeof
|
|
10530
|
+
if (typeof answer != STRING_TYPE) {
|
|
10531
|
+
throw new Error(ERR_INVALID_REQUEST_PASSWORD);
|
|
10532
|
+
}
|
|
10533
|
+
const result = await tryPasswordCandidate(getPasswordCandidate(answer));
|
|
10534
|
+
if (result.done) {
|
|
10535
|
+
return result.data;
|
|
10536
|
+
}
|
|
10537
|
+
error = result.error;
|
|
10538
|
+
} finally {
|
|
10539
|
+
passwordState.pendingPrompt = UNDEFINED_VALUE;
|
|
10540
|
+
release();
|
|
10541
|
+
}
|
|
10542
|
+
}
|
|
10543
|
+
if (!tried.size) {
|
|
10544
|
+
throw new Error(ERR_ENCRYPTED);
|
|
10545
|
+
}
|
|
10546
|
+
const passwordError = new Error(ERR_INVALID_PASSWORD);
|
|
10547
|
+
passwordError.cause = error;
|
|
10548
|
+
throw passwordError;
|
|
10549
|
+
|
|
10550
|
+
async function tryPasswordCandidate(candidate) {
|
|
10551
|
+
tried.add(candidate.key);
|
|
10552
|
+
const candidateOptions = Object.assign({}, options, candidate.options);
|
|
10553
|
+
if (entry.zipCrypto) {
|
|
10554
|
+
candidateOptions.checkCrc32 = true;
|
|
10555
|
+
try {
|
|
10556
|
+
await entry.getData(null, Object.assign({}, candidateOptions, { checkPasswordOnly: true }));
|
|
10557
|
+
} catch (probeError) {
|
|
10558
|
+
if (isInvalidPasswordError(probeError)) {
|
|
10559
|
+
return { done: false, error: probeError };
|
|
10560
|
+
}
|
|
10561
|
+
throw probeError;
|
|
10562
|
+
}
|
|
10563
|
+
}
|
|
10564
|
+
try {
|
|
10565
|
+
const data = await entry.getData(new BlobWriter(), candidateOptions);
|
|
10566
|
+
rememberPassword(passwordState, candidate);
|
|
10567
|
+
return { done: true, data };
|
|
10568
|
+
} catch (readError) {
|
|
10569
|
+
if (isAbortError(readError, signal) || !isWrongPasswordError(readError, entry)) {
|
|
10570
|
+
throw readError;
|
|
10571
|
+
}
|
|
10572
|
+
return { done: false, error: readError };
|
|
10573
|
+
}
|
|
10574
|
+
}
|
|
10575
|
+
}
|
|
10576
|
+
|
|
10577
|
+
function isInvalidPasswordError(error) {
|
|
10578
|
+
return isErrorObject(error) && error.message == ERR_INVALID_PASSWORD;
|
|
10579
|
+
}
|
|
10580
|
+
|
|
10581
|
+
function isWrongPasswordError(error, entry) {
|
|
10582
|
+
return isInvalidPasswordError(error) || (entry.zipCrypto && isErrorObject(error) && FALSE_ACCEPT_ERRORS.has(error.message));
|
|
10583
|
+
}
|
|
10584
|
+
|
|
10585
|
+
function isAbortError(error, signal) {
|
|
10586
|
+
return Boolean(signal && signal.aborted) || (isErrorObject(error) && error.name == ABORT_ERROR_NAME);
|
|
10587
|
+
}
|
|
10588
|
+
|
|
10589
|
+
function getPasswordCandidates(options, passwordState, passwords) {
|
|
10590
|
+
const candidates = [];
|
|
10591
|
+
const { password, rawPassword } = options;
|
|
10592
|
+
if (rawPassword && rawPassword.length) {
|
|
10593
|
+
candidates.push({ key: rawPassword, options: { password: "", rawPassword } });
|
|
10594
|
+
}
|
|
10595
|
+
if (password) {
|
|
10596
|
+
candidates.push(getPasswordCandidate(password));
|
|
10597
|
+
}
|
|
10598
|
+
candidates.push(...passwordState.known);
|
|
10599
|
+
if (passwords) {
|
|
10600
|
+
candidates.push(...passwords.filter(password => password).map(getPasswordCandidate));
|
|
10601
|
+
}
|
|
10602
|
+
return candidates;
|
|
10603
|
+
}
|
|
10604
|
+
|
|
10605
|
+
function getPasswordCandidate(password) {
|
|
10606
|
+
return { key: password, options: { password, rawPassword: EMPTY_RAW_PASSWORD } };
|
|
10607
|
+
}
|
|
10608
|
+
|
|
10609
|
+
function rememberPassword(passwordState, candidate) {
|
|
10610
|
+
const { known } = passwordState;
|
|
10611
|
+
const index = known.findIndex(knownCandidate => knownCandidate.key === candidate.key);
|
|
10612
|
+
if (index != -1) {
|
|
10613
|
+
known.splice(index, 1);
|
|
10614
|
+
}
|
|
10615
|
+
known.unshift(candidate);
|
|
10616
|
+
}
|
|
10617
|
+
|
|
10399
10618
|
function checkPassThroughValue(passThrough) {
|
|
10400
10619
|
if (checkPassThroughOption(passThrough) === PASS_THROUGH_COMPRESSED) {
|
|
10401
10620
|
throw new Error(ERR_UNSUPPORTED_PASS_THROUGH_VALUE);
|
|
@@ -10533,6 +10752,7 @@
|
|
|
10533
10752
|
async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
|
|
10534
10753
|
const { onstart, onprogress, onend } = options;
|
|
10535
10754
|
checkPassThroughValue(options.passThrough);
|
|
10755
|
+
checkPasswordCandidatesOptions(options);
|
|
10536
10756
|
const readerOptions = checkReaderOptions(options.readerOptions);
|
|
10537
10757
|
const abortController = new AbortController();
|
|
10538
10758
|
const { signal } = abortController;
|
|
@@ -10875,7 +11095,7 @@
|
|
|
10875
11095
|
*/
|
|
10876
11096
|
|
|
10877
11097
|
|
|
10878
|
-
|
|
11098
|
+
F(setDefaultConfiguration);
|
|
10879
11099
|
|
|
10880
11100
|
exports.BlobReader = BlobReader;
|
|
10881
11101
|
exports.BlobWriter = BlobWriter;
|
|
@@ -10886,6 +11106,7 @@
|
|
|
10886
11106
|
exports.ERR_ANCESTOR_ENTRY = ERR_ANCESTOR_ENTRY;
|
|
10887
11107
|
exports.ERR_BAD_FORMAT = ERR_BAD_FORMAT;
|
|
10888
11108
|
exports.ERR_CENTRAL_DIRECTORY_NOT_FOUND = ERR_CENTRAL_DIRECTORY_NOT_FOUND;
|
|
11109
|
+
exports.ERR_CODEC_OUT_OF_MEMORY = ERR_CODEC_OUT_OF_MEMORY;
|
|
10889
11110
|
exports.ERR_DUPLICATED_NAME = ERR_DUPLICATED_NAME;
|
|
10890
11111
|
exports.ERR_DUPLICATE_IMPORTED_ENTRY = ERR_DUPLICATE_IMPORTED_ENTRY;
|
|
10891
11112
|
exports.ERR_ENCRYPTED = ERR_ENCRYPTED;
|
|
@@ -10926,11 +11147,13 @@
|
|
|
10926
11147
|
exports.ERR_INVALID_MSDOS_ATTRIBUTES = ERR_INVALID_MSDOS_ATTRIBUTES;
|
|
10927
11148
|
exports.ERR_INVALID_MSDOS_DATA = ERR_INVALID_MSDOS_DATA;
|
|
10928
11149
|
exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
|
|
11150
|
+
exports.ERR_INVALID_PASSWORDS = ERR_INVALID_PASSWORDS;
|
|
10929
11151
|
exports.ERR_INVALID_PASSWORD_TYPE = ERR_INVALID_PASSWORD_TYPE;
|
|
10930
11152
|
exports.ERR_INVALID_PASS_THROUGH = ERR_INVALID_PASS_THROUGH;
|
|
10931
11153
|
exports.ERR_INVALID_PASS_THROUGH_VALUE = ERR_INVALID_PASS_THROUGH_VALUE;
|
|
10932
11154
|
exports.ERR_INVALID_READER = ERR_INVALID_READER;
|
|
10933
11155
|
exports.ERR_INVALID_READER_OPTIONS = ERR_INVALID_READER_OPTIONS;
|
|
11156
|
+
exports.ERR_INVALID_REQUEST_PASSWORD = ERR_INVALID_REQUEST_PASSWORD;
|
|
10934
11157
|
exports.ERR_INVALID_SIGNAL = ERR_INVALID_SIGNAL;
|
|
10935
11158
|
exports.ERR_INVALID_SIGNATURE_DATA = ERR_INVALID_SIGNATURE_DATA;
|
|
10936
11159
|
exports.ERR_INVALID_STRICTNESS = ERR_INVALID_STRICTNESS;
|