Repository navigation
Expand file tree
/
Copy pathMerger.htm
More file actions
312 lines (293 loc) · 150 KB
/
Copy pathMerger.htm
File metadata and controls
312 lines (293 loc) · 150 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PK3 Merger</title>
<link
rel="icon"
sizes="16x16"
type="image/png"
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB/ElEQVR42p2SS2sTURTH5547994kpvMwY5sSQ7ViMKDGRLBaiHSRjUVcFPQDdNHuBFeuXIuL7nRr/QS6UtCiVEFawYAUuijaRkFrE5p0yGRemZk7jhuJi4akB87mnD+/80RCH8MIxRkRx62ut3OYBvUDEEBnJqWR61t6e/lIgDhAoaCp5fVG8/GRABKj5aIyMv2+3nzUF0ApFcMwlD3Pa/YmtRi7cTEZn363rz/4bzcYjiOEDN8PPFQqlm5jQJVv29vPDnR9rVeYjtE7hWOxa6+b7Xu98Rhjl1KqvKimtFVUuHD+SZJg9/defaXe0reCIGhEfdmAEE8zMp8nMPWyaSwkKIVQCGMYi9qoIp9LqUqlw8MEitph2dETd09TmD/FSA67DgckmCAg84Nuf5oAzsc0rcTsjsIFlARJEmt2t7bT9Z9+32ss/VuiGM0RVT0pMVbMqHKunCD3Px6Y1QwKHFWE2bWO+1D3gw2LC188369FzvteYS6brm6azuYEFoAgfuvNvjHu8dAc+Ixz+bNvq7v1z1ngUjTnzfVWezICeAMDptLai6+6sZoFISMmEpWNln45AoQDA3KqtPyrY73KUjHvAr5aM8zZoT4xI8tLLct6PkbwFRsgX+9YC0MBFEWZcWzrpyziGYOHPyzbWRkK8NcAgFJCNMd1dw/T/AEntsIIUCpiogAAAABJRU5ErkJggg=="
>
<link
rel="icon"
sizes="192x192"
type="image/png"
href="data:image/png;base64,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"
>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; max-width: 720px; margin: 2em auto; padding: 0 1em; color: #222; }
h1 { font-size: 1.3em; margin-bottom: 0.2em; }
p.lede { color: #555; margin-top: 0; }
.row { margin: 1em 0; }
button { padding: 0.5em 1em; font-size: 1em; cursor: pointer; }
button:disabled { opacity: 0.5; cursor: not-allowed; }
#log { background: #f4f4f4; padding: 1em; border-radius: 4px; white-space: pre-wrap; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 0.85em; min-height: 4em; max-height: 22em; overflow: auto; }
#download { display: none; margin-top: 1em; font-weight: bold; text-decoration: none; padding: 0.6em 1em; background: #2b7a2b; color: #fff; border-radius: 4px; }
#download:hover { background: #246a24; }
code { background: #eee; padding: 0 0.3em; border-radius: 3px; }
</style>
</head>
<body>
<h1>PK3 Merger</h1>
<p class="lede">
Select <code>pak0.pk3</code>...<code>pak8.pk3</code> to merge them into one
<code>Quake III Arena.pk3</code>. Everything runs in your browser — no upload.
</p>
<div class="row">
<input type="file" id="picker" multiple accept=".pk3">
</div>
<div class="row">
<button id="merge" disabled>Merge into Quake III Arena.pk3</button>
</div>
<pre id="log"></pre>
<a id="download" href="#" download="Quake III Arena.pk3"
>Download Quake III Arena.pk3</a
>
<script>
// jszip.min.js
!function (e) {if ("object" == typeof exports && "undefined" != typeof module) module.exports = e();else if ("function" == typeof define && define.amd) define([], e);else {("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e();}}(function () {return function s(a, o, u) {function h(r, e) {if (!o[r]) {if (!a[r]) {var t = "function" == typeof require && require;if (!e && t) return t(r, !0);if (f) return f(r, !0);var n = new Error("Cannot find module '" + r + "'");throw n.code = "MODULE_NOT_FOUND", n;}var i = o[r] = { exports: {} };a[r][0].call(i.exports, function (e) {var t = a[r][1][e];return h(t || e);}, i, i.exports, s, a, o, u);}return o[r].exports;}for (var f = "function" == typeof require && require, e = 0; e < u.length; e++) h(u[e]);return h;}({ 1: [function (l, t, n) {(function (r) {!function (e) {"object" == typeof n && void 0 !== t ? t.exports = e() : ("undefined" != typeof window ? window : void 0 !== r ? r : "undefined" != typeof self ? self : this).JSZip = e();}(function () {return function s(a, o, u) {function h(t, e) {if (!o[t]) {if (!a[t]) {var r = "function" == typeof l && l;if (!e && r) return r(t, !0);if (f) return f(t, !0);var n = new Error("Cannot find module '" + t + "'");throw n.code = "MODULE_NOT_FOUND", n;}var i = o[t] = { exports: {} };a[t][0].call(i.exports, function (e) {return h(a[t][1][e] || e);}, i, i.exports, s, a, o, u);}return o[t].exports;}for (var f = "function" == typeof l && l, e = 0; e < u.length; e++) h(u[e]);return h;}({ 1: [function (l, t, n) {(function (r) {!function (e) {"object" == typeof n && void 0 !== t ? t.exports = e() : ("undefined" != typeof window ? window : void 0 !== r ? r : "undefined" != typeof self ? self : this).JSZip = e();}(function () {return function s(a, o, u) {function h(t, e) {if (!o[t]) {if (!a[t]) {var r = "function" == typeof l && l;if (!e && r) return r(t, !0);if (f) return f(t, !0);var n = new Error("Cannot find module '" + t + "'");throw n.code = "MODULE_NOT_FOUND", n;}var i = o[t] = { exports: {} };a[t][0].call(i.exports, function (e) {return h(a[t][1][e] || e);}, i, i.exports, s, a, o, u);}return o[t].exports;}for (var f = "function" == typeof l && l, e = 0; e < u.length; e++) h(u[e]);return h;}({ 1: [function (l, t, n) {(function (r) {!function (e) {"object" == typeof n && void 0 !== t ? t.exports = e() : ("undefined" != typeof window ? window : void 0 !== r ? r : "undefined" != typeof self ? self : this).JSZip = e();}(function () {return function s(a, o, u) {function h(t, e) {if (!o[t]) {if (!a[t]) {var r = "function" == typeof l && l;if (!e && r) return r(t, !0);if (f) return f(t, !0);var n = new Error("Cannot find module '" + t + "'");throw n.code = "MODULE_NOT_FOUND", n;}var i = o[t] = { exports: {} };a[t][0].call(i.exports, function (e) {return h(a[t][1][e] || e);}, i, i.exports, s, a, o, u);}return o[t].exports;}for (var f = "function" == typeof l && l, e = 0; e < u.length; e++) h(u[e]);return h;}({ 1: [function (l, t, n) {(function (r) {!function (e) {"object" == typeof n && void 0 !== t ? t.exports = e() : ("undefined" != typeof window ? window : void 0 !== r ? r : "undefined" != typeof self ? self : this).JSZip = e();}(function () {return function s(a, o, u) {function h(t, e) {if (!o[t]) {if (!a[t]) {var r = "function" == typeof l && l;if (!e && r) return r(t, !0);if (f) return f(t, !0);var n = new Error("Cannot find module '" + t + "'");throw n.code = "MODULE_NOT_FOUND", n;}var i = o[t] = { exports: {} };a[t][0].call(i.exports, function (e) {return h(a[t][1][e] || e);}, i, i.exports, s, a, o, u);}return o[t].exports;}for (var f = "function" == typeof l && l, e = 0; e < u.length; e++) h(u[e]);return h;}({ 1: [function (l, t, n) {(function (r) {!function (e) {"object" == typeof n && void 0 !== t ? t.exports = e() : ("undefined" != typeof window ? window : void 0 !== r ? r : "undefined" != typeof self ? self : this).JSZip = e();}(function () {return function s(a, o, u) {function h(t, e) {if (!o[t]) {if (!a[t]) {var r = "function" == typeof l && l;if (!e && r) return r(t, !0);if (f) return f(t, !0);var n = new Error("Cannot find module '" + t + "'");throw n.code = "MODULE_NOT_FOUND", n;}var i = o[t] = { exports: {} };a[t][0].call(i.exports, function (e) {return h(a[t][1][e] || e);}, i, i.exports, s, a, o, u);}return o[t].exports;}for (var f = "function" == typeof l && l, e = 0; e < u.length; e++) h(u[e]);return h;}({ 1: [function (e, t, r) {"use strict";var c = e("./utils"),l = e("./support"),p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.encode = function (e) {for (var t, r, n, i, s, a, o, u = [], h = 0, f = e.length, l = f, d = "string" !== c.getTypeOf(e); h < e.length;) l = f - h, n = d ? (t = e[h++], r = h < f ? e[h++] : 0, h < f ? e[h++] : 0) : (t = e.charCodeAt(h++), r = h < f ? e.charCodeAt(h++) : 0, h < f ? e.charCodeAt(h++) : 0), i = t >> 2, s = (3 & t) << 4 | r >> 4, a = 1 < l ? (15 & r) << 2 | n >> 6 : 64, o = 2 < l ? 63 & n : 64, u.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o));return u.join("");}, r.decode = function (e) {var t,r,n,i,s,a,o = 0,u = 0;if ("data:" === e.substr(0, "data:".length)) throw new Error("Invalid base64 input, it looks like a data url.");var h,f = 3 * (e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "")).length / 4;if (e.charAt(e.length - 1) === p.charAt(64) && f--, e.charAt(e.length - 2) === p.charAt(64) && f--, f % 1 != 0) throw new Error("Invalid base64 input, bad content length.");for (h = l.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e.length;) t = p.indexOf(e.charAt(o++)) << 2 | (i = p.indexOf(e.charAt(o++))) >> 4, r = (15 & i) << 4 | (s = p.indexOf(e.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e.charAt(o++))), h[u++] = t, 64 !== s && (h[u++] = r), 64 !== a && (h[u++] = n);return h;};}, { "./support": 30, "./utils": 32 }], 2: [function (e, t, r) {"use strict";var n = e("./external"),i = e("./stream/DataWorker"),s = e("./stream/Crc32Probe"),a = e("./stream/DataLengthProbe");function o(e, t, r, n, i) {this.compressedSize = e, this.uncompressedSize = t, this.crc32 = r, this.compression = n, this.compressedContent = i;}o.prototype = { getContentWorker: function getContentWorker() {var e = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t = this;return e.on("end", function () {if (this.streamInfo.data_length !== t.uncompressedSize) throw new Error("Bug : uncompressed data size mismatch");}), e;}, getCompressedWorker: function getCompressedWorker() {return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression);} }, o.createWorkerFrom = function (e, t, r) {return e.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression", t);}, t.exports = o;}, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function (e, t, r) {"use strict";var n = e("./stream/GenericWorker");r.STORE = { magic: "\0\0", compressWorker: function compressWorker(e) {return new n("STORE compression");}, uncompressWorker: function uncompressWorker() {return new n("STORE decompression");} }, r.DEFLATE = e("./flate");}, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function (e, t, r) {"use strict";var n = e("./utils"),a = function () {for (var e, t = [], r = 0; r < 256; r++) {e = r;for (var n = 0; n < 8; n++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;t[r] = e;}return t;}();t.exports = function (e, t) {return void 0 !== e && e.length ? "string" !== n.getTypeOf(e) ? function (e, t, r) {var n = a,i = 0 + r;e ^= -1;for (var s = 0; s < i; s++) e = e >>> 8 ^ n[255 & (e ^ t[s])];return -1 ^ e;}(0 | t, e, e.length) : function (e, t, r) {var n = a,i = 0 + r;e ^= -1;for (var s = 0; s < i; s++) e = e >>> 8 ^ n[255 & (e ^ t.charCodeAt(s))];return -1 ^ e;}(0 | t, e, e.length) : 0;};}, { "./utils": 32 }], 5: [function (e, t, r) {"use strict";r.base64 = !1, r.binary = !1, r.dir = !1, r.createFolders = !0, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null;}, {}], 6: [function (e, t, r) {"use strict";var n;n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n };}, { lie: 37 }], 7: [function (e, t, r) {"use strict";var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array,i = e("pako"),s = e("./utils"),a = e("./stream/GenericWorker"),o = n ? "uint8array" : "array";function u(e, t) {a.call(this, "FlateWorker/" + e), this._pako = null, this._pakoAction = e, this._pakoOptions = t, this.meta = {};}r.magic = "\b\0", s.inherits(u, a), u.prototype.processChunk = function (e) {this.meta = e.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e.data), !1);}, u.prototype.flush = function () {a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], !0);}, u.prototype.cleanUp = function () {a.prototype.cleanUp.call(this), this._pako = null;}, u.prototype._createPako = function () {this._pako = new i[this._pakoAction]({ raw: !0, level: this._pakoOptions.level || -1 });var t = this;this._pako.onData = function (e) {t.push({ data: e, meta: t.meta });};}, r.compressWorker = function (e) {return new u("Deflate", e);}, r.uncompressWorker = function () {return new u("Inflate", {});};}, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function (e, t, r) {"use strict";function I(e, t) {var r,n = "";for (r = 0; r < t; r++) n += String.fromCharCode(255 & e), e >>>= 8;return n;}function i(e, t, r, n, i, s) {var a,o,u = e.file,h = e.compression,f = s !== B.utf8encode,l = O.transformTo("string", s(u.name)),d = O.transformTo("string", B.utf8encode(u.name)),c = u.comment,p = O.transformTo("string", s(c)),m = O.transformTo("string", B.utf8encode(c)),_ = d.length !== u.name.length,g = m.length !== c.length,v = "",b = "",w = "",y = u.dir,k = u.date,x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 };t && !r || (x.crc32 = e.crc32, x.compressedSize = e.compressedSize, x.uncompressedSize = e.uncompressedSize);var S = 0;t && (S |= 8), f || !_ && !g || (S |= 2048);var z,E = 0,C = 0;y && (E |= 16), "UNIX" === i ? (C = 798, E |= ((z = u.unixPermissions) || (z = y ? 16893 : 33204), (65535 & z) << 16)) : (C = 20, E |= 63 & (u.dosPermissions || 0)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v += "up" + I((b = I(1, 1) + I(T(l), 4) + d).length, 2) + b), g && (v += "uc" + I((w = I(1, 1) + I(T(p), 4) + m).length, 2) + w);var A = "";return A += "\n\0", A += I(S, 2), A += h.magic, A += I(a, 2), A += I(o, 2), A += I(x.crc32, 4), A += I(x.compressedSize, 4), A += I(x.uncompressedSize, 4), A += I(l.length, 2), A += I(v.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + A + l + v, dirRecord: R.CENTRAL_FILE_HEADER + I(C, 2) + A + I(p.length, 2) + "\0\0\0\0" + I(E, 4) + I(n, 4) + l + v + p };}var O = e("../utils"),s = e("../stream/GenericWorker"),B = e("../utf8"),T = e("../crc32"),R = e("../signature");function n(e, t, r, n) {s.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t, this.zipPlatform = r, this.encodeFileName = n, this.streamFiles = e, this.accumulate = !1, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = [];}O.inherits(n, s), n.prototype.push = function (e) {var t = e.meta.percent || 0,r = this.entriesCount,n = this._sources.length;this.accumulate ? this.contentBuffer.push(e) : (this.bytesWritten += e.data.length, s.prototype.push.call(this, { data: e.data, meta: { currentFile: this.currentFile, percent: r ? (t + 100 * (r - n - 1)) / r : 100 } }));}, n.prototype.openedSource = function (e) {this.currentSourceOffset = this.bytesWritten, this.currentFile = e.file.name;var t = this.streamFiles && !e.file.dir;if (t) {var r = i(e, t, !1, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);this.push({ data: r.fileRecord, meta: { percent: 0 } });} else this.accumulate = !0;}, n.prototype.closedSource = function (e) {this.accumulate = !1;var t,r = this.streamFiles && !e.file.dir,n = i(e, r, !0, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);if (this.dirRecords.push(n.dirRecord), r) this.push({ data: (t = e, R.DATA_DESCRIPTOR + I(t.crc32, 4) + I(t.compressedSize, 4) + I(t.uncompressedSize, 4)), meta: { percent: 100 } });else for (this.push({ data: n.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length;) this.push(this.contentBuffer.shift());this.currentFile = null;}, n.prototype.flush = function () {for (var e = this.bytesWritten, t = 0; t < this.dirRecords.length; t++) this.push({ data: this.dirRecords[t], meta: { percent: 100 } });var r,n,i,s,a,o,u = this.bytesWritten - e,h = (r = this.dirRecords.length, n = u, i = e, s = this.zipComment, a = this.encodeFileName, o = O.transformTo("string", a(s)), R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + I(r, 2) + I(r, 2) + I(n, 4) + I(i, 4) + I(o.length, 2) + o);this.push({ data: h, meta: { percent: 100 } });}, n.prototype.prepareNextSource = function () {this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume();}, n.prototype.registerPrevious = function (e) {this._sources.push(e);var t = this;return e.on("data", function (e) {t.processChunk(e);}), e.on("end", function () {t.closedSource(t.previous.streamInfo), t._sources.length ? t.prepareNextSource() : t.end();}), e.on("error", function (e) {t.error(e);}), this;}, n.prototype.resume = function () {return !!s.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), !0) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), !0));}, n.prototype.error = function (e) {var t = this._sources;if (!s.prototype.error.call(this, e)) return !1;for (var r = 0; r < t.length; r++) try {t[r].error(e);} catch (e) {}return !0;}, n.prototype.lock = function () {s.prototype.lock.call(this);for (var e = this._sources, t = 0; t < e.length; t++) e[t].lock();}, t.exports = n;}, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function (e, t, r) {"use strict";var h = e("../compressions"),n = e("./ZipFileWorker");r.generateWorker = function (e, a, t) {var o = new n(a.streamFiles, t, a.platform, a.encodeFileName),u = 0;try {e.forEach(function (e, t) {u++;var r = function (e, t) {var r = e || t,n = h[r];if (!n) throw new Error(r + " is not a valid compression method !");return n;}(t.options.compression, a.compression),n = t.options.compressionOptions || a.compressionOptions || {},i = t.dir,s = t.date;t._compressWorker(r, n).withStreamInfo("file", { name: e, dir: i, date: s, comment: t.comment || "", unixPermissions: t.unixPermissions, dosPermissions: t.dosPermissions }).pipe(o);}), o.entriesCount = u;} catch (e) {o.error(e);}return o;};}, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function (e, t, r) {"use strict";function n() {if (!(this instanceof n)) return new n();if (arguments.length) throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files = {}, this.comment = null, this.root = "", this.clone = function () {var e = new n();for (var t in this) "function" != typeof this[t] && (e[t] = this[t]);return e;};}(n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.5.0", n.loadAsync = function (e, t) {return new n().loadAsync(e, t);}, n.external = e("./external"), t.exports = n;}, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function (e, t, r) {"use strict";var n = e("./utils"),i = e("./external"),o = e("./utf8"),u = e("./zipEntries"),s = e("./stream/Crc32Probe"),h = e("./nodejsUtils");function f(n) {return new i.Promise(function (e, t) {var r = n.decompressed.getContentWorker().pipe(new s());r.on("error", function (e) {t(e);}).on("end", function () {r.streamInfo.crc32 !== n.decompressed.crc32 ? t(new Error("Corrupted zip : CRC32 mismatch")) : e();}).resume();});}t.exports = function (e, s) {var a = this;return s = n.extend(s || {}, { base64: !1, checkCRC32: !1, optimizedBinaryString: !1, createFolders: !1, decodeFileName: o.utf8decode }), h.isNode && h.isStream(e) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : n.prepareContent("the loaded zip file", e, !0, s.optimizedBinaryString, s.base64).then(function (e) {var t = new u(s);return t.load(e), t;}).then(function (e) {var t = [i.Promise.resolve(e)],r = e.files;if (s.checkCRC32) for (var n = 0; n < r.length; n++) t.push(f(r[n]));return i.Promise.all(t);}).then(function (e) {for (var t = e.shift(), r = t.files, n = 0; n < r.length; n++) {var i = r[n];a.file(i.fileNameStr, i.decompressed, { binary: !0, optimizedBinaryString: !0, date: i.date, dir: i.dir, comment: i.fileCommentStr.length ? i.fileCommentStr : null, unixPermissions: i.unixPermissions, dosPermissions: i.dosPermissions, createFolders: s.createFolders });}return t.zipComment.length && (a.comment = t.zipComment), a;});};}, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function (e, t, r) {"use strict";var n = e("../utils"),i = e("../stream/GenericWorker");function s(e, t) {i.call(this, "Nodejs stream input adapter for " + e), this._upstreamEnded = !1, this._bindStream(t);}n.inherits(s, i), s.prototype._bindStream = function (e) {var t = this;(this._stream = e).pause(), e.on("data", function (e) {t.push({ data: e, meta: { percent: 0 } });}).on("error", function (e) {t.isPaused ? this.generatedError = e : t.error(e);}).on("end", function () {t.isPaused ? t._upstreamEnded = !0 : t.end();});}, s.prototype.pause = function () {return !!i.prototype.pause.call(this) && (this._stream.pause(), !0);}, s.prototype.resume = function () {return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), !0);}, t.exports = s;}, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function (e, t, r) {"use strict";var i = e("readable-stream").Readable;function n(e, t, r) {i.call(this, t), this._helper = e;var n = this;e.on("data", function (e, t) {n.push(e) || n._helper.pause(), r && r(t);}).on("error", function (e) {n.emit("error", e);}).on("end", function () {n.push(null);});}e("../utils").inherits(n, i), n.prototype._read = function () {this._helper.resume();}, t.exports = n;}, { "../utils": 32, "readable-stream": 16 }], 14: [function (e, t, r) {"use strict";t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function newBufferFrom(e, t) {if (Buffer.from && Buffer.from !== Uint8Array.from) return Buffer.from(e, t);if ("number" == typeof e) throw new Error('The "data" argument must not be a number');return new Buffer(e, t);}, allocBuffer: function allocBuffer(e) {if (Buffer.alloc) return Buffer.alloc(e);var t = new Buffer(e);return t.fill(0), t;}, isBuffer: function isBuffer(e) {return Buffer.isBuffer(e);}, isStream: function isStream(e) {return e && "function" == typeof e.on && "function" == typeof e.pause && "function" == typeof e.resume;} };}, {}], 15: [function (e, t, r) {"use strict";function s(e, t, r) {var n,i = f.getTypeOf(t),s = f.extend(r || {}, d);s.date = s.date || new Date(), null !== s.compression && (s.compression = s.compression.toUpperCase()), "string" == typeof s.unixPermissions && (s.unixPermissions = parseInt(s.unixPermissions, 8)), s.unixPermissions && 16384 & s.unixPermissions && (s.dir = !0), s.dosPermissions && 16 & s.dosPermissions && (s.dir = !0), s.dir && (e = h(e)), s.createFolders && (n = function (e) {"/" === e.slice(-1) && (e = e.substring(0, e.length - 1));var t = e.lastIndexOf("/");return 0 < t ? e.substring(0, t) : "";}(e)) && g.call(this, n, !0);var a,o = "string" === i && !1 === s.binary && !1 === s.base64;r && void 0 !== r.binary || (s.binary = !o), (t instanceof c && 0 === t.uncompressedSize || s.dir || !t || 0 === t.length) && (s.base64 = !1, s.binary = !0, t = "", s.compression = "STORE", i = "string"), a = t instanceof c || t instanceof l ? t : m.isNode && m.isStream(t) ? new _(e, t) : f.prepareContent(e, t, s.binary, s.optimizedBinaryString, s.base64);var u = new p(e, a, s);this.files[e] = u;}function h(e) {return "/" !== e.slice(-1) && (e += "/"), e;}var i = e("./utf8"),f = e("./utils"),l = e("./stream/GenericWorker"),a = e("./stream/StreamHelper"),d = e("./defaults"),c = e("./compressedObject"),p = e("./zipObject"),o = e("./generate"),m = e("./nodejsUtils"),_ = e("./nodejs/NodejsStreamInputAdapter"),g = function g(e, t) {return t = void 0 !== t ? t : d.createFolders, e = h(e), this.files[e] || s.call(this, e, null, { dir: !0, createFolders: t }), this.files[e];};function u(e) {return "[object RegExp]" === Object.prototype.toString.call(e);}var n = { load: function load() {throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");}, forEach: function forEach(e) {var t, r, n;for (t in this.files) this.files.hasOwnProperty(t) && (n = this.files[t], (r = t.slice(this.root.length, t.length)) && t.slice(0, this.root.length) === this.root && e(r, n));}, filter: function filter(r) {var n = [];return this.forEach(function (e, t) {r(e, t) && n.push(t);}), n;}, file: function file(e, t, r) {if (1 !== arguments.length) return e = this.root + e, s.call(this, e, t, r), this;if (u(e)) {var n = e;return this.filter(function (e, t) {return !t.dir && n.test(e);});}var i = this.files[this.root + e];return i && !i.dir ? i : null;}, folder: function folder(r) {if (!r) return this;if (u(r)) return this.filter(function (e, t) {return t.dir && r.test(e);});var e = this.root + r,t = g.call(this, e),n = this.clone();return n.root = t.name, n;}, remove: function remove(r) {r = this.root + r;var e = this.files[r];if (e || ("/" !== r.slice(-1) && (r += "/"), e = this.files[r]), e && !e.dir) delete this.files[r];else for (var t = this.filter(function (e, t) {return t.name.slice(0, r.length) === r;}), n = 0; n < t.length; n++) delete this.files[t[n].name];return this;}, generate: function generate(e) {throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");}, generateInternalStream: function generateInternalStream(e) {var t,r = {};try {if ((r = f.extend(e || {}, { streamFiles: !1, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r.type.toLowerCase(), r.compression = r.compression.toUpperCase(), "binarystring" === r.type && (r.type = "string"), !r.type) throw new Error("No output type specified.");f.checkSupport(r.type), "darwin" !== r.platform && "freebsd" !== r.platform && "linux" !== r.platform && "sunos" !== r.platform || (r.platform = "UNIX"), "win32" === r.platform && (r.platform = "DOS");var n = r.comment || this.comment || "";t = o.generateWorker(this, r, n);} catch (e) {(t = new l("error")).error(e);}return new a(t, r.type || "string", r.mimeType);}, generateAsync: function generateAsync(e, t) {return this.generateInternalStream(e).accumulate(t);}, generateNodeStream: function generateNodeStream(e, t) {return (e = e || {}).type || (e.type = "nodebuffer"), this.generateInternalStream(e).toNodejsStream(t);} };t.exports = n;}, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function (e, t, r) {t.exports = e("stream");}, { stream: void 0 }], 17: [function (e, t, r) {"use strict";var n = e("./DataReader");function i(e) {n.call(this, e);for (var t = 0; t < this.data.length; t++) e[t] = 255 & e[t];}e("../utils").inherits(i, n), i.prototype.byteAt = function (e) {return this.data[this.zero + e];}, i.prototype.lastIndexOfSignature = function (e) {for (var t = e.charCodeAt(0), r = e.charCodeAt(1), n = e.charCodeAt(2), i = e.charCodeAt(3), s = this.length - 4; 0 <= s; --s) if (this.data[s] === t && this.data[s + 1] === r && this.data[s + 2] === n && this.data[s + 3] === i) return s - this.zero;return -1;}, i.prototype.readAndCheckSignature = function (e) {var t = e.charCodeAt(0),r = e.charCodeAt(1),n = e.charCodeAt(2),i = e.charCodeAt(3),s = this.readData(4);return t === s[0] && r === s[1] && n === s[2] && i === s[3];}, i.prototype.readData = function (e) {if (this.checkOffset(e), 0 === e) return [];var t = this.data.slice(this.zero + this.index, this.zero + this.index + e);return this.index += e, t;}, t.exports = i;}, { "../utils": 32, "./DataReader": 18 }], 18: [function (e, t, r) {"use strict";var n = e("../utils");function i(e) {this.data = e, this.length = e.length, this.index = 0, this.zero = 0;}i.prototype = { checkOffset: function checkOffset(e) {this.checkIndex(this.index + e);}, checkIndex: function checkIndex(e) {if (this.length < this.zero + e || e < 0) throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e + "). Corrupted zip ?");}, setIndex: function setIndex(e) {this.checkIndex(e), this.index = e;}, skip: function skip(e) {this.setIndex(this.index + e);}, byteAt: function byteAt(e) {}, readInt: function readInt(e) {var t,r = 0;for (this.checkOffset(e), t = this.index + e - 1; t >= this.index; t--) r = (r << 8) + this.byteAt(t);return this.index += e, r;}, readString: function readString(e) {return n.transformTo("string", this.readData(e));}, readData: function readData(e) {}, lastIndexOfSignature: function lastIndexOfSignature(e) {}, readAndCheckSignature: function readAndCheckSignature(e) {}, readDate: function readDate() {var e = this.readInt(4);return new Date(Date.UTC(1980 + (e >> 25 & 127), (e >> 21 & 15) - 1, e >> 16 & 31, e >> 11 & 31, e >> 5 & 63, (31 & e) << 1));} }, t.exports = i;}, { "../utils": 32 }], 19: [function (e, t, r) {"use strict";var n = e("./Uint8ArrayReader");function i(e) {n.call(this, e);}e("../utils").inherits(i, n), i.prototype.readData = function (e) {this.checkOffset(e);var t = this.data.slice(this.zero + this.index, this.zero + this.index + e);return this.index += e, t;}, t.exports = i;}, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function (e, t, r) {"use strict";var n = e("./DataReader");function i(e) {n.call(this, e);}e("../utils").inherits(i, n), i.prototype.byteAt = function (e) {return this.data.charCodeAt(this.zero + e);}, i.prototype.lastIndexOfSignature = function (e) {return this.data.lastIndexOf(e) - this.zero;}, i.prototype.readAndCheckSignature = function (e) {return e === this.readData(4);}, i.prototype.readData = function (e) {this.checkOffset(e);var t = this.data.slice(this.zero + this.index, this.zero + this.index + e);return this.index += e, t;}, t.exports = i;}, { "../utils": 32, "./DataReader": 18 }], 21: [function (e, t, r) {"use strict";var n = e("./ArrayReader");function i(e) {n.call(this, e);}e("../utils").inherits(i, n), i.prototype.readData = function (e) {if (this.checkOffset(e), 0 === e) return new Uint8Array(0);var t = this.data.subarray(this.zero + this.index, this.zero + this.index + e);return this.index += e, t;}, t.exports = i;}, { "../utils": 32, "./ArrayReader": 17 }], 22: [function (e, t, r) {"use strict";var n = e("../utils"),i = e("../support"),s = e("./ArrayReader"),a = e("./StringReader"),o = e("./NodeBufferReader"),u = e("./Uint8ArrayReader");t.exports = function (e) {var t = n.getTypeOf(e);return n.checkSupport(t), "string" !== t || i.uint8array ? "nodebuffer" === t ? new o(e) : i.uint8array ? new u(n.transformTo("uint8array", e)) : new s(n.transformTo("array", e)) : new a(e);};}, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function (e, t, r) {"use strict";r.LOCAL_FILE_HEADER = "PK\x03\x04", r.CENTRAL_FILE_HEADER = "PK\x01\x02", r.CENTRAL_DIRECTORY_END = "PK\x05\x06", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06", r.DATA_DESCRIPTOR = "PK\x07\b";}, {}], 24: [function (e, t, r) {"use strict";var n = e("./GenericWorker"),i = e("../utils");function s(e) {n.call(this, "ConvertWorker to " + e), this.destType = e;}i.inherits(s, n), s.prototype.processChunk = function (e) {this.push({ data: i.transformTo(this.destType, e.data), meta: e.meta });}, t.exports = s;}, { "../utils": 32, "./GenericWorker": 28 }], 25: [function (e, t, r) {"use strict";var n = e("./GenericWorker"),i = e("../crc32");function s() {n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0);}e("../utils").inherits(s, n), s.prototype.processChunk = function (e) {this.streamInfo.crc32 = i(e.data, this.streamInfo.crc32 || 0), this.push(e);}, t.exports = s;}, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function (e, t, r) {"use strict";var n = e("../utils"),i = e("./GenericWorker");function s(e) {i.call(this, "DataLengthProbe for " + e), this.propName = e, this.withStreamInfo(e, 0);}n.inherits(s, i), s.prototype.processChunk = function (e) {if (e) {var t = this.streamInfo[this.propName] || 0;this.streamInfo[this.propName] = t + e.data.length;}i.prototype.processChunk.call(this, e);}, t.exports = s;}, { "../utils": 32, "./GenericWorker": 28 }], 27: [function (e, t, r) {"use strict";var n = e("../utils"),i = e("./GenericWorker");function s(e) {i.call(this, "DataWorker");var t = this;this.dataIsReady = !1, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = !1, e.then(function (e) {t.dataIsReady = !0, t.data = e, t.max = e && e.length || 0, t.type = n.getTypeOf(e), t.isPaused || t._tickAndRepeat();}, function (e) {t.error(e);});}n.inherits(s, i), s.prototype.cleanUp = function () {i.prototype.cleanUp.call(this), this.data = null;}, s.prototype.resume = function () {return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = !0, n.delay(this._tickAndRepeat, [], this)), !0);}, s.prototype._tickAndRepeat = function () {this._tickScheduled = !1, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = !0));}, s.prototype._tick = function () {if (this.isPaused || this.isFinished) return !1;var e = null,t = Math.min(this.max, this.index + 16384);if (this.index >= this.max) return this.end();switch (this.type) {case "string":e = this.data.substring(this.index, t);break;case "uint8array":e = this.data.subarray(this.index, t);break;case "array":case "nodebuffer":e = this.data.slice(this.index, t);}return this.index = t, this.push({ data: e, meta: { percent: this.max ? this.index / this.max * 100 : 0 } });}, t.exports = s;}, { "../utils": 32, "./GenericWorker": 28 }], 28: [function (e, t, r) {"use strict";function n(e) {this.name = e || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = !0, this.isFinished = !1, this.isLocked = !1, this._listeners = { data: [], end: [], error: [] }, this.previous = null;}n.prototype = { push: function push(e) {this.emit("data", e);}, end: function end() {if (this.isFinished) return !1;this.flush();try {this.emit("end"), this.cleanUp(), this.isFinished = !0;} catch (e) {this.emit("error", e);}return !0;}, error: function error(e) {return !this.isFinished && (this.isPaused ? this.generatedError = e : (this.isFinished = !0, this.emit("error", e), this.previous && this.previous.error(e), this.cleanUp()), !0);}, on: function on(e, t) {return this._listeners[e].push(t), this;}, cleanUp: function cleanUp() {this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = [];}, emit: function emit(e, t) {if (this._listeners[e]) for (var r = 0; r < this._listeners[e].length; r++) this._listeners[e][r].call(this, t);}, pipe: function pipe(e) {return e.registerPrevious(this);}, registerPrevious: function registerPrevious(e) {if (this.isLocked) throw new Error("The stream '" + this + "' has already been used.");this.streamInfo = e.streamInfo, this.mergeStreamInfo(), this.previous = e;var t = this;return e.on("data", function (e) {t.processChunk(e);}), e.on("end", function () {t.end();}), e.on("error", function (e) {t.error(e);}), this;}, pause: function pause() {return !this.isPaused && !this.isFinished && (this.isPaused = !0, this.previous && this.previous.pause(), !0);}, resume: function resume() {if (!this.isPaused || this.isFinished) return !1;var e = this.isPaused = !1;return this.generatedError && (this.error(this.generatedError), e = !0), this.previous && this.previous.resume(), !e;}, flush: function flush() {}, processChunk: function processChunk(e) {this.push(e);}, withStreamInfo: function withStreamInfo(e, t) {return this.extraStreamInfo[e] = t, this.mergeStreamInfo(), this;}, mergeStreamInfo: function mergeStreamInfo() {for (var e in this.extraStreamInfo) this.extraStreamInfo.hasOwnProperty(e) && (this.streamInfo[e] = this.extraStreamInfo[e]);}, lock: function lock() {if (this.isLocked) throw new Error("The stream '" + this + "' has already been used.");this.isLocked = !0, this.previous && this.previous.lock();}, toString: function toString() {var e = "Worker " + this.name;return this.previous ? this.previous + " -> " + e : e;} }, t.exports = n;}, {}], 29: [function (e, t, r) {"use strict";var h = e("../utils"),i = e("./ConvertWorker"),s = e("./GenericWorker"),f = e("../base64"),n = e("../support"),a = e("../external"),o = null;if (n.nodestream) try {o = e("../nodejs/NodejsStreamOutputAdapter");} catch (e) {}function u(e, t, r) {var n = t;switch (t) {case "blob":case "arraybuffer":n = "uint8array";break;case "base64":n = "string";}try {this._internalType = n, this._outputType = t, this._mimeType = r, h.checkSupport(n), this._worker = e.pipe(new i(n)), e.lock();} catch (e) {this._worker = new s("error"), this._worker.error(e);}}u.prototype = { accumulate: function accumulate(e) {return o = this, u = e, new a.Promise(function (t, r) {var n = [],i = o._internalType,s = o._outputType,a = o._mimeType;o.on("data", function (e, t) {n.push(e), u && u(t);}).on("error", function (e) {n = [], r(e);}).on("end", function () {try {var e = function (e, t, r) {switch (e) {case "blob":return h.newBlob(h.transformTo("arraybuffer", t), r);case "base64":return f.encode(t);default:return h.transformTo(e, t);}}(s, function (e, t) {var r,n = 0,i = null,s = 0;for (r = 0; r < t.length; r++) s += t[r].length;switch (e) {case "string":return t.join("");case "array":return Array.prototype.concat.apply([], t);case "uint8array":for (i = new Uint8Array(s), r = 0; r < t.length; r++) i.set(t[r], n), n += t[r].length;return i;case "nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '" + e + "'");}}(i, n), a);t(e);} catch (e) {r(e);}n = [];}).resume();});var o, u;}, on: function on(e, t) {var r = this;return "data" === e ? this._worker.on(e, function (e) {t.call(r, e.data, e.meta);}) : this._worker.on(e, function () {h.delay(t, arguments, r);}), this;}, resume: function resume() {return h.delay(this._worker.resume, [], this._worker), this;}, pause: function pause() {return this._worker.pause(), this;}, toNodejsStream: function toNodejsStream(e) {if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) throw new Error(this._outputType + " is not supported by this method");return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e);} }, t.exports = u;}, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function (e, t, r) {"use strict";if (r.base64 = !0, r.array = !0, r.string = !0, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) r.blob = !1;else {var n = new ArrayBuffer(0);try {r.blob = 0 === new Blob([n], { type: "application/zip" }).size;} catch (e) {try {var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)();i.append(n), r.blob = 0 === i.getBlob("application/zip").size;} catch (e) {r.blob = !1;}}}try {r.nodestream = !!e("readable-stream").Readable;} catch (e) {r.nodestream = !1;}}, { "readable-stream": 16 }], 31: [function (e, t, s) {"use strict";for (var o = e("./utils"), u = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), h = new Array(256), i = 0; i < 256; i++) h[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1;function a() {n.call(this, "utf-8 decode"), this.leftOver = null;}function f() {n.call(this, "utf-8 encode");}h[254] = h[254] = 1, s.utf8encode = function (e) {return u.nodebuffer ? r.newBufferFrom(e, "utf-8") : function (e) {var t,r,n,i,s,a = e.length,o = 0;for (i = 0; i < a; i++) 55296 == (64512 & (r = e.charCodeAt(i))) && i + 1 < a && 56320 == (64512 & (n = e.charCodeAt(i + 1))) && (r = 65536 + (r - 55296 << 10) + (n - 56320), i++), o += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4;for (t = u.uint8array ? new Uint8Array(o) : new Array(o), i = s = 0; s < o; i++) 55296 == (64512 & (r = e.charCodeAt(i))) && i + 1 < a && 56320 == (64512 & (n = e.charCodeAt(i + 1))) && (r = 65536 + (r - 55296 << 10) + (n - 56320), i++), r < 128 ? t[s++] = r : (r < 2048 ? t[s++] = 192 | r >>> 6 : (r < 65536 ? t[s++] = 224 | r >>> 12 : (t[s++] = 240 | r >>> 18, t[s++] = 128 | r >>> 12 & 63), t[s++] = 128 | r >>> 6 & 63), t[s++] = 128 | 63 & r);return t;}(e);}, s.utf8decode = function (e) {return u.nodebuffer ? o.transformTo("nodebuffer", e).toString("utf-8") : function (e) {var t,r,n,i,s = e.length,a = new Array(2 * s);for (t = r = 0; t < s;) if ((n = e[t++]) < 128) a[r++] = n;else if (4 < (i = h[n])) a[r++] = 65533, t += i - 1;else {for (n &= 2 === i ? 31 : 3 === i ? 15 : 7; 1 < i && t < s;) n = n << 6 | 63 & e[t++], i--;1 < i ? a[r++] = 65533 : n < 65536 ? a[r++] = n : (n -= 65536, a[r++] = 55296 | n >> 10 & 1023, a[r++] = 56320 | 1023 & n);}return a.length !== r && (a.subarray ? a = a.subarray(0, r) : a.length = r), o.applyFromCharCode(a);}(e = o.transformTo(u.uint8array ? "uint8array" : "array", e));}, o.inherits(a, n), a.prototype.processChunk = function (e) {var t = o.transformTo(u.uint8array ? "uint8array" : "array", e.data);if (this.leftOver && this.leftOver.length) {if (u.uint8array) {var r = t;(t = new Uint8Array(r.length + this.leftOver.length)).set(this.leftOver, 0), t.set(r, this.leftOver.length);} else t = this.leftOver.concat(t);this.leftOver = null;}var n = function (e, t) {var r;for ((t = t || e.length) > e.length && (t = e.length), r = t - 1; 0 <= r && 128 == (192 & e[r]);) r--;return r < 0 ? t : 0 === r ? t : r + h[e[r]] > t ? r : t;}(t),i = t;n !== t.length && (u.uint8array ? (i = t.subarray(0, n), this.leftOver = t.subarray(n, t.length)) : (i = t.slice(0, n), this.leftOver = t.slice(n, t.length))), this.push({ data: s.utf8decode(i), meta: e.meta });}, a.prototype.flush = function () {this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null);}, s.Utf8DecodeWorker = a, o.inherits(f, n), f.prototype.processChunk = function (e) {this.push({ data: s.utf8encode(e.data), meta: e.meta });}, s.Utf8EncodeWorker = f;}, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function (e, t, o) {"use strict";var u = e("./support"),h = e("./base64"),r = e("./nodejsUtils"),n = e("set-immediate-shim"),f = e("./external");function i(e) {return e;}function l(e, t) {for (var r = 0; r < e.length; ++r) t[r] = 255 & e.charCodeAt(r);return t;}o.newBlob = function (t, r) {o.checkSupport("blob");try {return new Blob([t], { type: r });} catch (e) {try {var n = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)();return n.append(t), n.getBlob(r);} catch (e) {throw new Error("Bug : can't construct the Blob.");}}};var s = { stringifyByChunk: function stringifyByChunk(e, t, r) {var n = [],i = 0,s = e.length;if (s <= r) return String.fromCharCode.apply(null, e);for (; i < s;) "array" === t || "nodebuffer" === t ? n.push(String.fromCharCode.apply(null, e.slice(i, Math.min(i + r, s)))) : n.push(String.fromCharCode.apply(null, e.subarray(i, Math.min(i + r, s)))), i += r;return n.join("");}, stringifyByChar: function stringifyByChar(e) {for (var t = "", r = 0; r < e.length; r++) t += String.fromCharCode(e[r]);return t;}, applyCanBeUsed: { uint8array: function () {try {return u.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length;} catch (e) {return !1;}}(), nodebuffer: function () {try {return u.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length;} catch (e) {return !1;}}() } };function a(e) {var t = 65536,r = o.getTypeOf(e),n = !0;if ("uint8array" === r ? n = s.applyCanBeUsed.uint8array : "nodebuffer" === r && (n = s.applyCanBeUsed.nodebuffer), n) for (; 1 < t;) try {return s.stringifyByChunk(e, r, t);} catch (e) {t = Math.floor(t / 2);}return s.stringifyByChar(e);}function d(e, t) {for (var r = 0; r < e.length; r++) t[r] = e[r];return t;}o.applyFromCharCode = a;var c = {};c.string = { string: i, array: function array(e) {return l(e, new Array(e.length));}, arraybuffer: function arraybuffer(e) {return c.string.uint8array(e).buffer;}, uint8array: function uint8array(e) {return l(e, new Uint8Array(e.length));}, nodebuffer: function nodebuffer(e) {return l(e, r.allocBuffer(e.length));} }, c.array = { string: a, array: i, arraybuffer: function arraybuffer(e) {return new Uint8Array(e).buffer;}, uint8array: function uint8array(e) {return new Uint8Array(e);}, nodebuffer: function nodebuffer(e) {return r.newBufferFrom(e);} }, c.arraybuffer = { string: function string(e) {return a(new Uint8Array(e));}, array: function array(e) {return d(new Uint8Array(e), new Array(e.byteLength));}, arraybuffer: i, uint8array: function uint8array(e) {return new Uint8Array(e);}, nodebuffer: function nodebuffer(e) {return r.newBufferFrom(new Uint8Array(e));} }, c.uint8array = { string: a, array: function array(e) {return d(e, new Array(e.length));}, arraybuffer: function arraybuffer(e) {return e.buffer;}, uint8array: i, nodebuffer: function nodebuffer(e) {return r.newBufferFrom(e);} }, c.nodebuffer = { string: a, array: function array(e) {return d(e, new Array(e.length));}, arraybuffer: function arraybuffer(e) {return c.nodebuffer.uint8array(e).buffer;}, uint8array: function uint8array(e) {return d(e, new Uint8Array(e.length));}, nodebuffer: i }, o.transformTo = function (e, t) {if (t = t || "", !e) return t;o.checkSupport(e);var r = o.getTypeOf(t);return c[r][e](t);}, o.getTypeOf = function (e) {return "string" == typeof e ? "string" : "[object Array]" === Object.prototype.toString.call(e) ? "array" : u.nodebuffer && r.isBuffer(e) ? "nodebuffer" : u.uint8array && e instanceof Uint8Array ? "uint8array" : u.arraybuffer && e instanceof ArrayBuffer ? "arraybuffer" : void 0;}, o.checkSupport = function (e) {if (!u[e.toLowerCase()]) throw new Error(e + " is not supported by this platform");}, o.MAX_VALUE_16BITS = 65535, o.MAX_VALUE_32BITS = -1, o.pretty = function (e) {var t,r,n = "";for (r = 0; r < (e || "").length; r++) n += "\\x" + ((t = e.charCodeAt(r)) < 16 ? "0" : "") + t.toString(16).toUpperCase();return n;}, o.delay = function (e, t, r) {n(function () {e.apply(r || null, t || []);});}, o.inherits = function (e, t) {function r() {}r.prototype = t.prototype, e.prototype = new r();}, o.extend = function () {var e,t,r = {};for (e = 0; e < arguments.length; e++) for (t in arguments[e]) arguments[e].hasOwnProperty(t) && void 0 === r[t] && (r[t] = arguments[e][t]);return r;}, o.prepareContent = function (n, e, i, s, a) {return f.Promise.resolve(e).then(function (n) {return u.blob && (n instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n))) && "undefined" != typeof FileReader ? new f.Promise(function (t, r) {var e = new FileReader();e.onload = function (e) {t(e.target.result);}, e.onerror = function (e) {r(e.target.error);}, e.readAsArrayBuffer(n);}) : n;}).then(function (e) {var t,r = o.getTypeOf(e);return r ? ("arraybuffer" === r ? e = o.transformTo("uint8array", e) : "string" === r && (a ? e = h.decode(e) : i && !0 !== s && (e = l(t = e, u.uint8array ? new Uint8Array(t.length) : new Array(t.length)))), e) : f.Promise.reject(new Error("Can't read the data of '" + n + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"));});};}, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, "set-immediate-shim": 54 }], 33: [function (e, t, r) {"use strict";var n = e("./reader/readerFor"),i = e("./utils"),s = e("./signature"),a = e("./zipEntry"),o = (e("./utf8"), e("./support"));function u(e) {this.files = [], this.loadOptions = e;}u.prototype = { checkSignature: function checkSignature(e) {if (!this.reader.readAndCheckSignature(e)) {this.reader.index -= 4;var t = this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t) + ", expected " + i.pretty(e) + ")");}}, isSignature: function isSignature(e, t) {var r = this.reader.index;this.reader.setIndex(e);var n = this.reader.readString(4) === t;return this.reader.setIndex(r), n;}, readBlockEndOfCentral: function readBlockEndOfCentral() {this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2);var e = this.reader.readData(this.zipCommentLength),t = o.uint8array ? "uint8array" : "array",r = i.transformTo(t, e);this.zipComment = this.loadOptions.decodeFileName(r);}, readBlockZip64EndOfCentral: function readBlockZip64EndOfCentral() {this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {};for (var e, t, r, n = this.zip64EndOfCentralSize - 44; 0 < n;) e = this.reader.readInt(2), t = this.reader.readInt(4), r = this.reader.readData(t), this.zip64ExtensibleData[e] = { id: e, length: t, value: r };}, readBlockZip64EndOfCentralLocator: function readBlockZip64EndOfCentralLocator() {if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) throw new Error("Multi-volumes zip are not supported");}, readLocalFiles: function readLocalFiles() {var e, t;for (e = 0; e < this.files.length; e++) t = this.files[e], this.reader.setIndex(t.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t.readLocalPart(this.reader), t.handleUTF8(), t.processAttributes();}, readCentralDir: function readCentralDir() {var e;for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);) (e = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e);if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);}, readEndOfCentral: function readEndOfCentral() {var e = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if (e < 0) throw this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Corrupted zip: can't find end of central directory") : new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(e);var t = e;if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) {if (this.zip64 = !0, (e = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if (this.reader.setIndex(e), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral();}var r = this.centralDirOffset + this.centralDirSize;this.zip64 && (r += 20, r += 12 + this.zip64EndOfCentralSize);var n = t - r;if (0 < n) this.isSignature(t, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n);else if (n < 0) throw new Error("Corrupted zip: missing " + Math.abs(n) + " bytes.");}, prepareReader: function prepareReader(e) {this.reader = n(e);}, load: function load(e) {this.prepareReader(e), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles();} }, t.exports = u;}, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utf8": 31, "./utils": 32, "./zipEntry": 34 }], 34: [function (e, t, r) {"use strict";var n = e("./reader/readerFor"),s = e("./utils"),i = e("./compressedObject"),a = e("./crc32"),o = e("./utf8"),u = e("./compressions"),h = e("./support");function f(e, t) {this.options = e, this.loadOptions = t;}f.prototype = { isEncrypted: function isEncrypted() {return 1 == (1 & this.bitFlag);}, useUTF8: function useUTF8() {return 2048 == (2048 & this.bitFlag);}, readLocalPart: function readLocalPart(e) {var t, r;if (e.skip(22), this.fileNameLength = e.readInt(2), r = e.readInt(2), this.fileName = e.readData(this.fileNameLength), e.skip(r), -1 === this.compressedSize || -1 === this.uncompressedSize) throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if (null === (t = function (e) {for (var t in u) if (u.hasOwnProperty(t) && u[t].magic === e) return u[t];return null;}(this.compressionMethod))) throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")");this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t, e.readData(this.compressedSize));}, readCentralPart: function readCentralPart(e) {this.versionMadeBy = e.readInt(2), e.skip(2), this.bitFlag = e.readInt(2), this.compressionMethod = e.readString(2), this.date = e.readDate(), this.crc32 = e.readInt(4), this.compressedSize = e.readInt(4), this.uncompressedSize = e.readInt(4);var t = e.readInt(2);if (this.extraFieldsLength = e.readInt(2), this.fileCommentLength = e.readInt(2), this.diskNumberStart = e.readInt(2), this.internalFileAttributes = e.readInt(2), this.externalFileAttributes = e.readInt(4), this.localHeaderOffset = e.readInt(4), this.isEncrypted()) throw new Error("Encrypted zip are not supported");e.skip(t), this.readExtraFields(e), this.parseZIP64ExtraField(e), this.fileComment = e.readData(this.fileCommentLength);}, processAttributes: function processAttributes() {this.unixPermissions = null, this.dosPermissions = null;var e = this.versionMadeBy >> 8;this.dir = !!(16 & this.externalFileAttributes), 0 == e && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = !0);}, parseZIP64ExtraField: function parseZIP64ExtraField(e) {if (this.extraFields[1]) {var t = n(this.extraFields[1].value);this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = t.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = t.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = t.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = t.readInt(4));}}, readExtraFields: function readExtraFields(e) {var t,r,n,i = e.index + this.extraFieldsLength;for (this.extraFields || (this.extraFields = {}); e.index + 4 < i;) t = e.readInt(2), r = e.readInt(2), n = e.readData(r), this.extraFields[t] = { id: t, length: r, value: n };e.setIndex(i);}, handleUTF8: function handleUTF8() {var e = h.uint8array ? "uint8array" : "array";if (this.useUTF8()) this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment);else {var t = this.findExtraFieldUnicodePath();if (null !== t) this.fileNameStr = t;else {var r = s.transformTo(e, this.fileName);this.fileNameStr = this.loadOptions.decodeFileName(r);}var n = this.findExtraFieldUnicodeComment();if (null !== n) this.fileCommentStr = n;else {var i = s.transformTo(e, this.fileComment);this.fileCommentStr = this.loadOptions.decodeFileName(i);}}}, findExtraFieldUnicodePath: function findExtraFieldUnicodePath() {var e = this.extraFields[28789];if (e) {var t = n(e.value);return 1 !== t.readInt(1) ? null : a(this.fileName) !== t.readInt(4) ? null : o.utf8decode(t.readData(e.length - 5));}return null;}, findExtraFieldUnicodeComment: function findExtraFieldUnicodeComment() {var e = this.extraFields[25461];if (e) {var t = n(e.value);return 1 !== t.readInt(1) ? null : a(this.fileComment) !== t.readInt(4) ? null : o.utf8decode(t.readData(e.length - 5));}return null;} }, t.exports = f;}, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function (e, t, r) {"use strict";function n(e, t, r) {this.name = e, this.dir = r.dir, this.date = r.date, this.comment = r.comment, this.unixPermissions = r.unixPermissions, this.dosPermissions = r.dosPermissions, this._data = t, this._dataBinary = r.binary, this.options = { compression: r.compression, compressionOptions: r.compressionOptions };}var s = e("./stream/StreamHelper"),i = e("./stream/DataWorker"),a = e("./utf8"),o = e("./compressedObject"),u = e("./stream/GenericWorker");n.prototype = { internalStream: function internalStream(e) {var t = null,r = "string";try {if (!e) throw new Error("No output type specified.");var n = "string" === (r = e.toLowerCase()) || "text" === r;"binarystring" !== r && "text" !== r || (r = "string"), t = this._decompressWorker();var i = !this._dataBinary;i && !n && (t = t.pipe(new a.Utf8EncodeWorker())), !i && n && (t = t.pipe(new a.Utf8DecodeWorker()));} catch (e) {(t = new u("error")).error(e);}return new s(t, r, "");}, async: function async(e, t) {return this.internalStream(e).accumulate(t);}, nodeStream: function nodeStream(e, t) {return this.internalStream(e || "nodebuffer").toNodejsStream(t);}, _compressWorker: function _compressWorker(e, t) {if (this._data instanceof o && this._data.compression.magic === e.magic) return this._data.getCompressedWorker();var r = this._decompressWorker();return this._dataBinary || (r = r.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r, e, t);}, _decompressWorker: function _decompressWorker() {return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof u ? this._data : new i(this._data);} };for (var h = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], f = function f() {throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");}, l = 0; l < h.length; l++) n.prototype[h[l]] = f;t.exports = n;}, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function (e, f, t) {(function (t) {"use strict";var r,n,e = t.MutationObserver || t.WebKitMutationObserver;if (e) {var i = 0,s = new e(h),a = t.document.createTextNode("");s.observe(a, { characterData: !0 }), r = function r() {a.data = i = ++i % 2;};} else if (t.setImmediate || void 0 === t.MessageChannel) r = "document" in t && "onreadystatechange" in t.document.createElement("script") ? function () {var e = t.document.createElement("script");e.onreadystatechange = function () {h(), e.onreadystatechange = null, e.parentNode.removeChild(e), e = null;}, t.document.documentElement.appendChild(e);} : function () {setTimeout(h, 0);};else {var o = new t.MessageChannel();o.port1.onmessage = h, r = function r() {o.port2.postMessage(0);};}var u = [];function h() {var e, t;n = !0;for (var r = u.length; r;) {for (t = u, u = [], e = -1; ++e < r;) t[e]();r = u.length;}n = !1;}f.exports = function (e) {1 !== u.push(e) || n || r();};}).call(this, void 0 !== r ? r : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});}, {}], 37: [function (e, t, r) {"use strict";var i = e("immediate");function h() {}var f = {},s = ["REJECTED"],a = ["FULFILLED"],n = ["PENDING"];function o(e) {if ("function" != typeof e) throw new TypeError("resolver must be a function");this.state = n, this.queue = [], this.outcome = void 0, e !== h && c(this, e);}function u(e, t, r) {this.promise = e, "function" == typeof t && (this.onFulfilled = t, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r && (this.onRejected = r, this.callRejected = this.otherCallRejected);}function l(t, r, n) {i(function () {var e;try {e = r(n);} catch (e) {return f.reject(t, e);}e === t ? f.reject(t, new TypeError("Cannot resolve promise with itself")) : f.resolve(t, e);});}function d(e) {var t = e && e.then;if (e && ("object" == typeof e || "function" == typeof e) && "function" == typeof t) return function () {t.apply(e, arguments);};}function c(t, e) {var r = !1;function n(e) {r || (r = !0, f.reject(t, e));}function i(e) {r || (r = !0, f.resolve(t, e));}var s = p(function () {e(i, n);});"error" === s.status && n(s.value);}function p(e, t) {var r = {};try {r.value = e(t), r.status = "success";} catch (e) {r.status = "error", r.value = e;}return r;}(t.exports = o).prototype.finally = function (t) {if ("function" != typeof t) return this;var r = this.constructor;return this.then(function (e) {return r.resolve(t()).then(function () {return e;});}, function (e) {return r.resolve(t()).then(function () {throw e;});});}, o.prototype.catch = function (e) {return this.then(null, e);}, o.prototype.then = function (e, t) {if ("function" != typeof e && this.state === a || "function" != typeof t && this.state === s) return this;var r = new this.constructor(h);return this.state !== n ? l(r, this.state === a ? e : t, this.outcome) : this.queue.push(new u(r, e, t)), r;}, u.prototype.callFulfilled = function (e) {f.resolve(this.promise, e);}, u.prototype.otherCallFulfilled = function (e) {l(this.promise, this.onFulfilled, e);}, u.prototype.callRejected = function (e) {f.reject(this.promise, e);}, u.prototype.otherCallRejected = function (e) {l(this.promise, this.onRejected, e);}, f.resolve = function (e, t) {var r = p(d, t);if ("error" === r.status) return f.reject(e, r.value);var n = r.value;if (n) c(e, n);else {e.state = a, e.outcome = t;for (var i = -1, s = e.queue.length; ++i < s;) e.queue[i].callFulfilled(t);}return e;}, f.reject = function (e, t) {e.state = s, e.outcome = t;for (var r = -1, n = e.queue.length; ++r < n;) e.queue[r].callRejected(t);return e;}, o.resolve = function (e) {return e instanceof this ? e : f.resolve(new this(h), e);}, o.reject = function (e) {var t = new this(h);return f.reject(t, e);}, o.all = function (e) {var r = this;if ("[object Array]" !== Object.prototype.toString.call(e)) return this.reject(new TypeError("must be an array"));var n = e.length,i = !1;if (!n) return this.resolve([]);for (var s = new Array(n), a = 0, t = -1, o = new this(h); ++t < n;) u(e[t], t);return o;function u(e, t) {r.resolve(e).then(function (e) {s[t] = e, ++a !== n || i || (i = !0, f.resolve(o, s));}, function (e) {i || (i = !0, f.reject(o, e));});}}, o.race = function (e) {if ("[object Array]" !== Object.prototype.toString.call(e)) return this.reject(new TypeError("must be an array"));var t = e.length,r = !1;if (!t) return this.resolve([]);for (var n, i = -1, s = new this(h); ++i < t;) n = e[i], this.resolve(n).then(function (e) {r || (r = !0, f.resolve(s, e));}, function (e) {r || (r = !0, f.reject(s, e));});return s;};}, { immediate: 36 }], 38: [function (e, t, r) {"use strict";var n = {};(0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n;}, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function (e, t, r) {"use strict";var a = e("./zlib/deflate"),o = e("./utils/common"),u = e("./utils/strings"),i = e("./zlib/messages"),s = e("./zlib/zstream"),h = Object.prototype.toString,f = 0,l = -1,d = 0,c = 8;function p(e) {if (!(this instanceof p)) return new p(e);this.options = o.assign({ level: l, method: c, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: d, to: "" }, e || {});var t = this.options;t.raw && 0 < t.windowBits ? t.windowBits = -t.windowBits : t.gzip && 0 < t.windowBits && t.windowBits < 16 && (t.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0;var r = a.deflateInit2(this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy);if (r !== f) throw new Error(i[r]);if (t.header && a.deflateSetHeader(this.strm, t.header), t.dictionary) {var n;if (n = "string" == typeof t.dictionary ? u.string2buf(t.dictionary) : "[object ArrayBuffer]" === h.call(t.dictionary) ? new Uint8Array(t.dictionary) : t.dictionary, (r = a.deflateSetDictionary(this.strm, n)) !== f) throw new Error(i[r]);this._dict_set = !0;}}function n(e, t) {var r = new p(t);if (r.push(e, !0), r.err) throw r.msg || i[r.err];return r.result;}p.prototype.push = function (e, t) {var r,n,i = this.strm,s = this.options.chunkSize;if (this.ended) return !1;n = t === ~~t ? t : !0 === t ? 4 : 0, "string" == typeof e ? i.input = u.string2buf(e) : "[object ArrayBuffer]" === h.call(e) ? i.input = new Uint8Array(e) : i.input = e, i.next_in = 0, i.avail_in = i.input.length;do {if (0 === i.avail_out && (i.output = new o.Buf8(s), i.next_out = 0, i.avail_out = s), 1 !== (r = a.deflate(i, n)) && r !== f) return this.onEnd(r), !(this.ended = !0);0 !== i.avail_out && (0 !== i.avail_in || 4 !== n && 2 !== n) || ("string" === this.options.to ? this.onData(u.buf2binstring(o.shrinkBuf(i.output, i.next_out))) : this.onData(o.shrinkBuf(i.output, i.next_out)));} while ((0 < i.avail_in || 0 === i.avail_out) && 1 !== r);return 4 === n ? (r = a.deflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === f) : 2 !== n || (this.onEnd(f), !(i.avail_out = 0));}, p.prototype.onData = function (e) {this.chunks.push(e);}, p.prototype.onEnd = function (e) {e === f && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg;}, r.Deflate = p, r.deflate = n, r.deflateRaw = function (e, t) {return (t = t || {}).raw = !0, n(e, t);}, r.gzip = function (e, t) {return (t = t || {}).gzip = !0, n(e, t);};}, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function (e, t, r) {"use strict";var d = e("./zlib/inflate"),c = e("./utils/common"),p = e("./utils/strings"),m = e("./zlib/constants"),n = e("./zlib/messages"),i = e("./zlib/zstream"),s = e("./zlib/gzheader"),_ = Object.prototype.toString;function a(e) {if (!(this instanceof a)) return new a(e);this.options = c.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e || {});var t = this.options;t.raw && 0 <= t.windowBits && t.windowBits < 16 && (t.windowBits = -t.windowBits, 0 === t.windowBits && (t.windowBits = -15)), !(0 <= t.windowBits && t.windowBits < 16) || e && e.windowBits || (t.windowBits += 32), 15 < t.windowBits && t.windowBits < 48 && 0 == (15 & t.windowBits) && (t.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0;var r = d.inflateInit2(this.strm, t.windowBits);if (r !== m.Z_OK) throw new Error(n[r]);this.header = new s(), d.inflateGetHeader(this.strm, this.header);}function o(e, t) {var r = new a(t);if (r.push(e, !0), r.err) throw r.msg || n[r.err];return r.result;}a.prototype.push = function (e, t) {var r,n,i,s,a,o,u = this.strm,h = this.options.chunkSize,f = this.options.dictionary,l = !1;if (this.ended) return !1;n = t === ~~t ? t : !0 === t ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e ? u.input = p.binstring2buf(e) : "[object ArrayBuffer]" === _.call(e) ? u.input = new Uint8Array(e) : u.input = e, u.next_in = 0, u.avail_in = u.input.length;do {if (0 === u.avail_out && (u.output = new c.Buf8(h), u.next_out = 0, u.avail_out = h), (r = d.inflate(u, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && f && (o = "string" == typeof f ? p.string2buf(f) : "[object ArrayBuffer]" === _.call(f) ? new Uint8Array(f) : f, r = d.inflateSetDictionary(this.strm, o)), r === m.Z_BUF_ERROR && !0 === l && (r = m.Z_OK, l = !1), r !== m.Z_STREAM_END && r !== m.Z_OK) return this.onEnd(r), !(this.ended = !0);u.next_out && (0 !== u.avail_out && r !== m.Z_STREAM_END && (0 !== u.avail_in || n !== m.Z_FINISH && n !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i = p.utf8border(u.output, u.next_out), s = u.next_out - i, a = p.buf2string(u.output, i), u.next_out = s, u.avail_out = h - s, s && c.arraySet(u.output, u.output, i, s, 0), this.onData(a)) : this.onData(c.shrinkBuf(u.output, u.next_out)))), 0 === u.avail_in && 0 === u.avail_out && (l = !0);} while ((0 < u.avail_in || 0 === u.avail_out) && r !== m.Z_STREAM_END);return r === m.Z_STREAM_END && (n = m.Z_FINISH), n === m.Z_FINISH ? (r = d.inflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === m.Z_OK) : n !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(u.avail_out = 0));}, a.prototype.onData = function (e) {this.chunks.push(e);}, a.prototype.onEnd = function (e) {e === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = c.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg;}, r.Inflate = a, r.inflate = o, r.inflateRaw = function (e, t) {return (t = t || {}).raw = !0, o(e, t);}, r.ungzip = o;}, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function (e, t, r) {"use strict";var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;r.assign = function (e) {for (var t = Array.prototype.slice.call(arguments, 1); t.length;) {var r = t.shift();if (r) {if ("object" != typeof r) throw new TypeError(r + "must be non-object");for (var n in r) r.hasOwnProperty(n) && (e[n] = r[n]);}}return e;}, r.shrinkBuf = function (e, t) {return e.length === t ? e : e.subarray ? e.subarray(0, t) : (e.length = t, e);};var i = { arraySet: function arraySet(e, t, r, n, i) {if (t.subarray && e.subarray) e.set(t.subarray(r, r + n), i);else for (var s = 0; s < n; s++) e[i + s] = t[r + s];}, flattenChunks: function flattenChunks(e) {var t, r, n, i, s, a;for (t = n = 0, r = e.length; t < r; t++) n += e[t].length;for (a = new Uint8Array(n), t = i = 0, r = e.length; t < r; t++) s = e[t], a.set(s, i), i += s.length;return a;} },s = { arraySet: function arraySet(e, t, r, n, i) {for (var s = 0; s < n; s++) e[i + s] = t[r + s];}, flattenChunks: function flattenChunks(e) {return [].concat.apply([], e);} };r.setTyped = function (e) {e ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s));}, r.setTyped(n);}, {}], 42: [function (e, t, r) {"use strict";var u = e("./common"),i = !0,s = !0;try {String.fromCharCode.apply(null, [0]);} catch (e) {i = !1;}try {String.fromCharCode.apply(null, new Uint8Array(1));} catch (e) {s = !1;}for (var h = new u.Buf8(256), n = 0; n < 256; n++) h[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1;function f(e, t) {if (t < 65537 && (e.subarray && s || !e.subarray && i)) return String.fromCharCode.apply(null, u.shrinkBuf(e, t));for (var r = "", n = 0; n < t; n++) r += String.fromCharCode(e[n]);return r;}h[254] = h[254] = 1, r.string2buf = function (e) {var t,r,n,i,s,a = e.length,o = 0;for (i = 0; i < a; i++) 55296 == (64512 & (r = e.charCodeAt(i))) && i + 1 < a && 56320 == (64512 & (n = e.charCodeAt(i + 1))) && (r = 65536 + (r - 55296 << 10) + (n - 56320), i++), o += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4;for (t = new u.Buf8(o), i = s = 0; s < o; i++) 55296 == (64512 & (r = e.charCodeAt(i))) && i + 1 < a && 56320 == (64512 & (n = e.charCodeAt(i + 1))) && (r = 65536 + (r - 55296 << 10) + (n - 56320), i++), r < 128 ? t[s++] = r : (r < 2048 ? t[s++] = 192 | r >>> 6 : (r < 65536 ? t[s++] = 224 | r >>> 12 : (t[s++] = 240 | r >>> 18, t[s++] = 128 | r >>> 12 & 63), t[s++] = 128 | r >>> 6 & 63), t[s++] = 128 | 63 & r);return t;}, r.buf2binstring = function (e) {return f(e, e.length);}, r.binstring2buf = function (e) {for (var t = new u.Buf8(e.length), r = 0, n = t.length; r < n; r++) t[r] = e.charCodeAt(r);return t;}, r.buf2string = function (e, t) {var r,n,i,s,a = t || e.length,o = new Array(2 * a);for (r = n = 0; r < a;) if ((i = e[r++]) < 128) o[n++] = i;else if (4 < (s = h[i])) o[n++] = 65533, r += s - 1;else {for (i &= 2 === s ? 31 : 3 === s ? 15 : 7; 1 < s && r < a;) i = i << 6 | 63 & e[r++], s--;1 < s ? o[n++] = 65533 : i < 65536 ? o[n++] = i : (i -= 65536, o[n++] = 55296 | i >> 10 & 1023, o[n++] = 56320 | 1023 & i);}return f(o, n);}, r.utf8border = function (e, t) {var r;for ((t = t || e.length) > e.length && (t = e.length), r = t - 1; 0 <= r && 128 == (192 & e[r]);) r--;return r < 0 ? t : 0 === r ? t : r + h[e[r]] > t ? r : t;};}, { "./common": 41 }], 43: [function (e, t, r) {"use strict";t.exports = function (e, t, r, n) {for (var i = 65535 & e | 0, s = e >>> 16 & 65535 | 0, a = 0; 0 !== r;) {for (r -= a = 2e3 < r ? 2e3 : r; s = s + (i = i + t[n++] | 0) | 0, --a;);i %= 65521, s %= 65521;}return i | s << 16 | 0;};}, {}], 44: [function (e, t, r) {"use strict";t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 };}, {}], 45: [function (e, t, r) {"use strict";var o = function () {for (var e, t = [], r = 0; r < 256; r++) {e = r;for (var n = 0; n < 8; n++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;t[r] = e;}return t;}();t.exports = function (e, t, r, n) {var i = o,s = n + r;e ^= -1;for (var a = n; a < s; a++) e = e >>> 8 ^ i[255 & (e ^ t[a])];return -1 ^ e;};}, {}], 46: [function (e, t, r) {"use strict";var u,d = e("../utils/common"),h = e("./trees"),c = e("./adler32"),p = e("./crc32"),n = e("./messages"),f = 0,l = 0,m = -2,i = 2,_ = 8,s = 286,a = 30,o = 19,g = 2 * s + 1,v = 15,b = 3,w = 258,y = w + b + 1,k = 42,x = 113;function S(e, t) {return e.msg = n[t], t;}function z(e) {return (e << 1) - (4 < e ? 9 : 0);}function E(e) {for (var t = e.length; 0 <= --t;) e[t] = 0;}function C(e) {var t = e.state,r = t.pending;r > e.avail_out && (r = e.avail_out), 0 !== r && (d.arraySet(e.output, t.pending_buf, t.pending_out, r, e.next_out), e.next_out += r, t.pending_out += r, e.total_out += r, e.avail_out -= r, t.pending -= r, 0 === t.pending && (t.pending_out = 0));}function A(e, t) {h._tr_flush_block(e, 0 <= e.block_start ? e.block_start : -1, e.strstart - e.block_start, t), e.block_start = e.strstart, C(e.strm);}function I(e, t) {e.pending_buf[e.pending++] = t;}function O(e, t) {e.pending_buf[e.pending++] = t >>> 8 & 255, e.pending_buf[e.pending++] = 255 & t;}function B(e, t) {var r,n,i = e.max_chain_length,s = e.strstart,a = e.prev_length,o = e.nice_match,u = e.strstart > e.w_size - y ? e.strstart - (e.w_size - y) : 0,h = e.window,f = e.w_mask,l = e.prev,d = e.strstart + w,c = h[s + a - 1],p = h[s + a];e.prev_length >= e.good_match && (i >>= 2), o > e.lookahead && (o = e.lookahead);do {if (h[(r = t) + a] === p && h[r + a - 1] === c && h[r] === h[s] && h[++r] === h[s + 1]) {s += 2, r++;do {} while (h[++s] === h[++r] && h[++s] === h[++r] && h[++s] === h[++r] && h[++s] === h[++r] && h[++s] === h[++r] && h[++s] === h[++r] && h[++s] === h[++r] && h[++s] === h[++r] && s < d);if (n = w - (d - s), s = d - w, a < n) {if (e.match_start = t, o <= (a = n)) break;c = h[s + a - 1], p = h[s + a];}}} while ((t = l[t & f]) > u && 0 != --i);return a <= e.lookahead ? a : e.lookahead;}function T(e) {var t,r,n,i,s,a,o,u,h,f,l = e.w_size;do {if (i = e.window_size - e.lookahead - e.strstart, e.strstart >= l + (l - y)) {for (d.arraySet(e.window, e.window, l, l, 0), e.match_start -= l, e.strstart -= l, e.block_start -= l, t = r = e.hash_size; n = e.head[--t], e.head[t] = l <= n ? n - l : 0, --r;);for (t = r = l; n = e.prev[--t], e.prev[t] = l <= n ? n - l : 0, --r;);i += l;}if (0 === e.strm.avail_in) break;if (a = e.strm, o = e.window, u = e.strstart + e.lookahead, f = void 0, (h = i) < (f = a.avail_in) && (f = h), r = 0 === f ? 0 : (a.avail_in -= f, d.arraySet(o, a.input, a.next_in, f, u), 1 === a.state.wrap ? a.adler = c(a.adler, o, f, u) : 2 === a.state.wrap && (a.adler = p(a.adler, o, f, u)), a.next_in += f, a.total_in += f, f), e.lookahead += r, e.lookahead + e.insert >= b) for (s = e.strstart - e.insert, e.ins_h = e.window[s], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[s + 1]) & e.hash_mask; e.insert && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[s + b - 1]) & e.hash_mask, e.prev[s & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = s, s++, e.insert--, !(e.lookahead + e.insert < b)););} while (e.lookahead < y && 0 !== e.strm.avail_in);}function R(e, t) {for (var r, n;;) {if (e.lookahead < y) {if (T(e), e.lookahead < y && t === f) return 1;if (0 === e.lookahead) break;}if (r = 0, e.lookahead >= b && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + b - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 !== r && e.strstart - r <= e.w_size - y && (e.match_length = B(e, r)), e.match_length >= b) {if (n = h._tr_tally(e, e.strstart - e.match_start, e.match_length - b), e.lookahead -= e.match_length, e.match_length <= e.max_lazy_match && e.lookahead >= b) {for (e.match_length--; e.strstart++, e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + b - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart, 0 != --e.match_length;);e.strstart++;} else e.strstart += e.match_length, e.match_length = 0, e.ins_h = e.window[e.strstart], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 1]) & e.hash_mask;} else n = h._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++;if (n && (A(e, !1), 0 === e.strm.avail_out)) return 1;}return e.insert = e.strstart < b - 1 ? e.strstart : b - 1, 4 === t ? (A(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (A(e, !1), 0 === e.strm.avail_out) ? 1 : 2;}function D(e, t) {for (var r, n, i;;) {if (e.lookahead < y) {if (T(e), e.lookahead < y && t === f) return 1;if (0 === e.lookahead) break;}if (r = 0, e.lookahead >= b && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + b - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), e.prev_length = e.match_length, e.prev_match = e.match_start, e.match_length = b - 1, 0 !== r && e.prev_length < e.max_lazy_match && e.strstart - r <= e.w_size - y && (e.match_length = B(e, r), e.match_length <= 5 && (1 === e.strategy || e.match_length === b && 4096 < e.strstart - e.match_start) && (e.match_length = b - 1)), e.prev_length >= b && e.match_length <= e.prev_length) {for (i = e.strstart + e.lookahead - b, n = h._tr_tally(e, e.strstart - 1 - e.prev_match, e.prev_length - b), e.lookahead -= e.prev_length - 1, e.prev_length -= 2; ++e.strstart <= i && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + b - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 != --e.prev_length;);if (e.match_available = 0, e.match_length = b - 1, e.strstart++, n && (A(e, !1), 0 === e.strm.avail_out)) return 1;} else if (e.match_available) {if ((n = h._tr_tally(e, 0, e.window[e.strstart - 1])) && A(e, !1), e.strstart++, e.lookahead--, 0 === e.strm.avail_out) return 1;} else e.match_available = 1, e.strstart++, e.lookahead--;}return e.match_available && (n = h._tr_tally(e, 0, e.window[e.strstart - 1]), e.match_available = 0), e.insert = e.strstart < b - 1 ? e.strstart : b - 1, 4 === t ? (A(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (A(e, !1), 0 === e.strm.avail_out) ? 1 : 2;}function F(e, t, r, n, i) {this.good_length = e, this.max_lazy = t, this.nice_length = r, this.max_chain = n, this.func = i;}function N() {this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = _, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new d.Buf16(2 * g), this.dyn_dtree = new d.Buf16(2 * (2 * a + 1)), this.bl_tree = new d.Buf16(2 * (2 * o + 1)), E(this.dyn_ltree), E(this.dyn_dtree), E(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new d.Buf16(v + 1), this.heap = new d.Buf16(2 * s + 1), E(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new d.Buf16(2 * s + 1), E(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0;}function U(e) {var t;return e && e.state ? (e.total_in = e.total_out = 0, e.data_type = i, (t = e.state).pending = 0, t.pending_out = 0, t.wrap < 0 && (t.wrap = -t.wrap), t.status = t.wrap ? k : x, e.adler = 2 === t.wrap ? 0 : 1, t.last_flush = f, h._tr_init(t), l) : S(e, m);}function P(e) {var t,r = U(e);return r === l && ((t = e.state).window_size = 2 * t.w_size, E(t.head), t.max_lazy_match = u[t.level].max_lazy, t.good_match = u[t.level].good_length, t.nice_match = u[t.level].nice_length, t.max_chain_length = u[t.level].max_chain, t.strstart = 0, t.block_start = 0, t.lookahead = 0, t.insert = 0, t.match_length = t.prev_length = b - 1, t.match_available = 0, t.ins_h = 0), r;}function L(e, t, r, n, i, s) {if (!e) return m;var a = 1;if (-1 === t && (t = 6), n < 0 ? (a = 0, n = -n) : 15 < n && (a = 2, n -= 16), i < 1 || 9 < i || r !== _ || n < 8 || 15 < n || t < 0 || 9 < t || s < 0 || 4 < s) return S(e, m);8 === n && (n = 9);var o = new N();return (e.state = o).strm = e, o.wrap = a, o.gzhead = null, o.w_bits = n, o.w_size = 1 << o.w_bits, o.w_mask = o.w_size - 1, o.hash_bits = i + 7, o.hash_size = 1 << o.hash_bits, o.hash_mask = o.hash_size - 1, o.hash_shift = ~~((o.hash_bits + b - 1) / b), o.window = new d.Buf8(2 * o.w_size), o.head = new d.Buf16(o.hash_size), o.prev = new d.Buf16(o.w_size), o.lit_bufsize = 1 << i + 6, o.pending_buf_size = 4 * o.lit_bufsize, o.pending_buf = new d.Buf8(o.pending_buf_size), o.d_buf = 1 * o.lit_bufsize, o.l_buf = 3 * o.lit_bufsize, o.level = t, o.strategy = s, o.method = r, P(e);}u = [new F(0, 0, 0, 0, function (e, t) {var r = 65535;for (r > e.pending_buf_size - 5 && (r = e.pending_buf_size - 5);;) {if (e.lookahead <= 1) {if (T(e), 0 === e.lookahead && t === f) return 1;if (0 === e.lookahead) break;}e.strstart += e.lookahead, e.lookahead = 0;var n = e.block_start + r;if ((0 === e.strstart || e.strstart >= n) && (e.lookahead = e.strstart - n, e.strstart = n, A(e, !1), 0 === e.strm.avail_out)) return 1;if (e.strstart - e.block_start >= e.w_size - y && (A(e, !1), 0 === e.strm.avail_out)) return 1;}return e.insert = 0, 4 === t ? (A(e, !0), 0 === e.strm.avail_out ? 3 : 4) : (e.strstart > e.block_start && (A(e, !1), e.strm.avail_out), 1);}), new F(4, 4, 8, 4, R), new F(4, 5, 16, 8, R), new F(4, 6, 32, 32, R), new F(4, 4, 16, 16, D), new F(8, 16, 32, 32, D), new F(8, 16, 128, 128, D), new F(8, 32, 128, 256, D), new F(32, 128, 258, 1024, D), new F(32, 258, 258, 4096, D)], r.deflateInit = function (e, t) {return L(e, t, _, 15, 8, 0);}, r.deflateInit2 = L, r.deflateReset = P, r.deflateResetKeep = U, r.deflateSetHeader = function (e, t) {return e && e.state ? 2 !== e.state.wrap ? m : (e.state.gzhead = t, l) : m;}, r.deflate = function (e, t) {var r, n, i, s;if (!e || !e.state || 5 < t || t < 0) return e ? S(e, m) : m;if (n = e.state, !e.output || !e.input && 0 !== e.avail_in || 666 === n.status && 4 !== t) return S(e, 0 === e.avail_out ? -5 : m);if (n.strm = e, r = n.last_flush, n.last_flush = t, n.status === k) if (2 === n.wrap) e.adler = 0, I(n, 31), I(n, 139), I(n, 8), n.gzhead ? (I(n, (n.gzhead.text ? 1 : 0) + (n.gzhead.hcrc ? 2 : 0) + (n.gzhead.extra ? 4 : 0) + (n.gzhead.name ? 8 : 0) + (n.gzhead.comment ? 16 : 0)), I(n, 255 & n.gzhead.time), I(n, n.gzhead.time >> 8 & 255), I(n, n.gzhead.time >> 16 & 255), I(n, n.gzhead.time >> 24 & 255), I(n, 9 === n.level ? 2 : 2 <= n.strategy || n.level < 2 ? 4 : 0), I(n, 255 & n.gzhead.os), n.gzhead.extra && n.gzhead.extra.length && (I(n, 255 & n.gzhead.extra.length), I(n, n.gzhead.extra.length >> 8 & 255)), n.gzhead.hcrc && (e.adler = p(e.adler, n.pending_buf, n.pending, 0)), n.gzindex = 0, n.status = 69) : (I(n, 0), I(n, 0), I(n, 0), I(n, 0), I(n, 0), I(n, 9 === n.level ? 2 : 2 <= n.strategy || n.level < 2 ? 4 : 0), I(n, 3), n.status = x);else {var a = _ + (n.w_bits - 8 << 4) << 8;a |= (2 <= n.strategy || n.level < 2 ? 0 : n.level < 6 ? 1 : 6 === n.level ? 2 : 3) << 6, 0 !== n.strstart && (a |= 32), a += 31 - a % 31, n.status = x, O(n, a), 0 !== n.strstart && (O(n, e.adler >>> 16), O(n, 65535 & e.adler)), e.adler = 1;}if (69 === n.status) if (n.gzhead.extra) {for (i = n.pending; n.gzindex < (65535 & n.gzhead.extra.length) && (n.pending !== n.pending_buf_size || (n.gzhead.hcrc && n.pending > i && (e.adler = p(e.adler, n.pending_buf, n.pending - i, i)), C(e), i = n.pending, n.pending !== n.pending_buf_size));) I(n, 255 & n.gzhead.extra[n.gzindex]), n.gzindex++;n.gzhead.hcrc && n.pending > i && (e.adler = p(e.adler, n.pending_buf, n.pending - i, i)), n.gzindex === n.gzhead.extra.length && (n.gzindex = 0, n.status = 73);} else n.status = 73;if (73 === n.status) if (n.gzhead.name) {i = n.pending;do {if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > i && (e.adler = p(e.adler, n.pending_buf, n.pending - i, i)), C(e), i = n.pending, n.pending === n.pending_buf_size)) {s = 1;break;}s = n.gzindex < n.gzhead.name.length ? 255 & n.gzhead.name.charCodeAt(n.gzindex++) : 0, I(n, s);} while (0 !== s);n.gzhead.hcrc && n.pending > i && (e.adler = p(e.adler, n.pending_buf, n.pending - i, i)), 0 === s && (n.gzindex = 0, n.status = 91);} else n.status = 91;if (91 === n.status) if (n.gzhead.comment) {i = n.pending;do {if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > i && (e.adler = p(e.adler, n.pending_buf, n.pending - i, i)), C(e), i = n.pending, n.pending === n.pending_buf_size)) {s = 1;break;}s = n.gzindex < n.gzhead.comment.length ? 255 & n.gzhead.comment.charCodeAt(n.gzindex++) : 0, I(n, s);} while (0 !== s);n.gzhead.hcrc && n.pending > i && (e.adler = p(e.adler, n.pending_buf, n.pending - i, i)), 0 === s && (n.status = 103);} else n.status = 103;if (103 === n.status && (n.gzhead.hcrc ? (n.pending + 2 > n.pending_buf_size && C(e), n.pending + 2 <= n.pending_buf_size && (I(n, 255 & e.adler), I(n, e.adler >> 8 & 255), e.adler = 0, n.status = x)) : n.status = x), 0 !== n.pending) {if (C(e), 0 === e.avail_out) return n.last_flush = -1, l;} else if (0 === e.avail_in && z(t) <= z(r) && 4 !== t) return S(e, -5);if (666 === n.status && 0 !== e.avail_in) return S(e, -5);if (0 !== e.avail_in || 0 !== n.lookahead || t !== f && 666 !== n.status) {var o = 2 === n.strategy ? function (e, t) {for (var r;;) {if (0 === e.lookahead && (T(e), 0 === e.lookahead)) {if (t === f) return 1;break;}if (e.match_length = 0, r = h._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++, r && (A(e, !1), 0 === e.strm.avail_out)) return 1;}return e.insert = 0, 4 === t ? (A(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (A(e, !1), 0 === e.strm.avail_out) ? 1 : 2;}(n, t) : 3 === n.strategy ? function (e, t) {for (var r, n, i, s, a = e.window;;) {if (e.lookahead <= w) {if (T(e), e.lookahead <= w && t === f) return 1;if (0 === e.lookahead) break;}if (e.match_length = 0, e.lookahead >= b && 0 < e.strstart && (n = a[i = e.strstart - 1]) === a[++i] && n === a[++i] && n === a[++i]) {s = e.strstart + w;do {} while (n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && i < s);e.match_length = w - (s - i), e.match_length > e.lookahead && (e.match_length = e.lookahead);}if (e.match_length >= b ? (r = h._tr_tally(e, 1, e.match_length - b), e.lookahead -= e.match_length, e.strstart += e.match_length, e.match_length = 0) : (r = h._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++), r && (A(e, !1), 0 === e.strm.avail_out)) return 1;}return e.insert = 0, 4 === t ? (A(e, !0), 0 === e.strm.avail_out ? 3 : 4) : e.last_lit && (A(e, !1), 0 === e.strm.avail_out) ? 1 : 2;}(n, t) : u[n.level].func(n, t);if (3 !== o && 4 !== o || (n.status = 666), 1 === o || 3 === o) return 0 === e.avail_out && (n.last_flush = -1), l;if (2 === o && (1 === t ? h._tr_align(n) : 5 !== t && (h._tr_stored_block(n, 0, 0, !1), 3 === t && (E(n.head), 0 === n.lookahead && (n.strstart = 0, n.block_start = 0, n.insert = 0))), C(e), 0 === e.avail_out)) return n.last_flush = -1, l;}return 4 !== t ? l : n.wrap <= 0 ? 1 : (2 === n.wrap ? (I(n, 255 & e.adler), I(n, e.adler >> 8 & 255), I(n, e.adler >> 16 & 255), I(n, e.adler >> 24 & 255), I(n, 255 & e.total_in), I(n, e.total_in >> 8 & 255), I(n, e.total_in >> 16 & 255), I(n, e.total_in >> 24 & 255)) : (O(n, e.adler >>> 16), O(n, 65535 & e.adler)), C(e), 0 < n.wrap && (n.wrap = -n.wrap), 0 !== n.pending ? l : 1);}, r.deflateEnd = function (e) {var t;return e && e.state ? (t = e.state.status) !== k && 69 !== t && 73 !== t && 91 !== t && 103 !== t && t !== x && 666 !== t ? S(e, m) : (e.state = null, t === x ? S(e, -3) : l) : m;}, r.deflateSetDictionary = function (e, t) {var r,n,i,s,a,o,u,h,f = t.length;if (!e || !e.state) return m;if (2 === (s = (r = e.state).wrap) || 1 === s && r.status !== k || r.lookahead) return m;for (1 === s && (e.adler = c(e.adler, t, f, 0)), r.wrap = 0, f >= r.w_size && (0 === s && (E(r.head), r.strstart = 0, r.block_start = 0, r.insert = 0), h = new d.Buf8(r.w_size), d.arraySet(h, t, f - r.w_size, r.w_size, 0), t = h, f = r.w_size), a = e.avail_in, o = e.next_in, u = e.input, e.avail_in = f, e.next_in = 0, e.input = t, T(r); r.lookahead >= b;) {for (n = r.strstart, i = r.lookahead - (b - 1); r.ins_h = (r.ins_h << r.hash_shift ^ r.window[n + b - 1]) & r.hash_mask, r.prev[n & r.w_mask] = r.head[r.ins_h], r.head[r.ins_h] = n, n++, --i;);r.strstart = n, r.lookahead = b - 1, T(r);}return r.strstart += r.lookahead, r.block_start = r.strstart, r.insert = r.lookahead, r.lookahead = 0, r.match_length = r.prev_length = b - 1, r.match_available = 0, e.next_in = o, e.input = u, e.avail_in = a, r.wrap = s, l;}, r.deflateInfo = "pako deflate (from Nodeca project)";}, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function (e, t, r) {"use strict";t.exports = function () {this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1;};}, {}], 48: [function (e, t, r) {"use strict";t.exports = function (e, t) {var r, n, i, s, a, o, u, h, f, l, d, c, p, m, _, g, v, b, w, y, k, x, S, z, E;r = e.state, n = e.next_in, z = e.input, i = n + (e.avail_in - 5), s = e.next_out, E = e.output, a = s - (t - e.avail_out), o = s + (e.avail_out - 257), u = r.dmax, h = r.wsize, f = r.whave, l = r.wnext, d = r.window, c = r.hold, p = r.bits, m = r.lencode, _ = r.distcode, g = (1 << r.lenbits) - 1, v = (1 << r.distbits) - 1;e: do {p < 15 && (c += z[n++] << p, p += 8, c += z[n++] << p, p += 8), b = m[c & g];t: for (;;) {if (c >>>= w = b >>> 24, p -= w, 0 == (w = b >>> 16 & 255)) E[s++] = 65535 & b;else {if (!(16 & w)) {if (0 == (64 & w)) {b = m[(65535 & b) + (c & (1 << w) - 1)];continue t;}if (32 & w) {r.mode = 12;break e;}e.msg = "invalid literal/length code", r.mode = 30;break e;}y = 65535 & b, (w &= 15) && (p < w && (c += z[n++] << p, p += 8), y += c & (1 << w) - 1, c >>>= w, p -= w), p < 15 && (c += z[n++] << p, p += 8, c += z[n++] << p, p += 8), b = _[c & v];r: for (;;) {if (c >>>= w = b >>> 24, p -= w, !(16 & (w = b >>> 16 & 255))) {if (0 == (64 & w)) {b = _[(65535 & b) + (c & (1 << w) - 1)];continue r;}e.msg = "invalid distance code", r.mode = 30;break e;}if (k = 65535 & b, p < (w &= 15) && (c += z[n++] << p, (p += 8) < w && (c += z[n++] << p, p += 8)), u < (k += c & (1 << w) - 1)) {e.msg = "invalid distance too far back", r.mode = 30;break e;}if (c >>>= w, p -= w, (w = s - a) < k) {if (f < (w = k - w) && r.sane) {e.msg = "invalid distance too far back", r.mode = 30;break e;}if (S = d, (x = 0) === l) {if (x += h - w, w < y) {for (y -= w; E[s++] = d[x++], --w;);x = s - k, S = E;}} else if (l < w) {if (x += h + l - w, (w -= l) < y) {for (y -= w; E[s++] = d[x++], --w;);if (x = 0, l < y) {for (y -= w = l; E[s++] = d[x++], --w;);x = s - k, S = E;}}} else if (x += l - w, w < y) {for (y -= w; E[s++] = d[x++], --w;);x = s - k, S = E;}for (; 2 < y;) E[s++] = S[x++], E[s++] = S[x++], E[s++] = S[x++], y -= 3;y && (E[s++] = S[x++], 1 < y && (E[s++] = S[x++]));} else {for (x = s - k; E[s++] = E[x++], E[s++] = E[x++], E[s++] = E[x++], 2 < (y -= 3););y && (E[s++] = E[x++], 1 < y && (E[s++] = E[x++]));}break;}}break;}} while (n < i && s < o);n -= y = p >> 3, c &= (1 << (p -= y << 3)) - 1, e.next_in = n, e.next_out = s, e.avail_in = n < i ? i - n + 5 : 5 - (n - i), e.avail_out = s < o ? o - s + 257 : 257 - (s - o), r.hold = c, r.bits = p;};}, {}], 49: [function (e, t, r) {"use strict";var I = e("../utils/common"),O = e("./adler32"),B = e("./crc32"),T = e("./inffast"),R = e("./inftrees"),D = 1,F = 2,N = 0,U = -2,P = 1,n = 852,i = 592;function L(e) {return (e >>> 24 & 255) + (e >>> 8 & 65280) + ((65280 & e) << 8) + ((255 & e) << 24);}function s() {this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0;}function a(e) {var t;return e && e.state ? (t = e.state, e.total_in = e.total_out = t.total = 0, e.msg = "", t.wrap && (e.adler = 1 & t.wrap), t.mode = P, t.last = 0, t.havedict = 0, t.dmax = 32768, t.head = null, t.hold = 0, t.bits = 0, t.lencode = t.lendyn = new I.Buf32(n), t.distcode = t.distdyn = new I.Buf32(i), t.sane = 1, t.back = -1, N) : U;}function o(e) {var t;return e && e.state ? ((t = e.state).wsize = 0, t.whave = 0, t.wnext = 0, a(e)) : U;}function u(e, t) {var r, n;return e && e.state ? (n = e.state, t < 0 ? (r = 0, t = -t) : (r = 1 + (t >> 4), t < 48 && (t &= 15)), t && (t < 8 || 15 < t) ? U : (null !== n.window && n.wbits !== t && (n.window = null), n.wrap = r, n.wbits = t, o(e))) : U;}function h(e, t) {var r, n;return e ? (n = new s(), (e.state = n).window = null, (r = u(e, t)) !== N && (e.state = null), r) : U;}var f,l,d = !0;function j(e) {if (d) {var t;for (f = new I.Buf32(512), l = new I.Buf32(32), t = 0; t < 144;) e.lens[t++] = 8;for (; t < 256;) e.lens[t++] = 9;for (; t < 280;) e.lens[t++] = 7;for (; t < 288;) e.lens[t++] = 8;for (R(D, e.lens, 0, 288, f, 0, e.work, { bits: 9 }), t = 0; t < 32;) e.lens[t++] = 5;R(F, e.lens, 0, 32, l, 0, e.work, { bits: 5 }), d = !1;}e.lencode = f, e.lenbits = 9, e.distcode = l, e.distbits = 5;}function Z(e, t, r, n) {var i,s = e.state;return null === s.window && (s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new I.Buf8(s.wsize)), n >= s.wsize ? (I.arraySet(s.window, t, r - s.wsize, s.wsize, 0), s.wnext = 0, s.whave = s.wsize) : (n < (i = s.wsize - s.wnext) && (i = n), I.arraySet(s.window, t, r - n, i, s.wnext), (n -= i) ? (I.arraySet(s.window, t, r - n, n, 0), s.wnext = n, s.whave = s.wsize) : (s.wnext += i, s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += i))), 0;}r.inflateReset = o, r.inflateReset2 = u, r.inflateResetKeep = a, r.inflateInit = function (e) {return h(e, 15);}, r.inflateInit2 = h, r.inflate = function (e, t) {var r,n,i,s,a,o,u,h,f,l,d,c,p,m,_,g,v,b,w,y,k,x,S,z,E = 0,C = new I.Buf8(4),A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];if (!e || !e.state || !e.output || !e.input && 0 !== e.avail_in) return U;12 === (r = e.state).mode && (r.mode = 13), a = e.next_out, i = e.output, u = e.avail_out, s = e.next_in, n = e.input, o = e.avail_in, h = r.hold, f = r.bits, l = o, d = u, x = N;e: for (;;) switch (r.mode) {case P:if (0 === r.wrap) {r.mode = 13;break;}for (; f < 16;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (2 & r.wrap && 35615 === h) {C[r.check = 0] = 255 & h, C[1] = h >>> 8 & 255, r.check = B(r.check, C, 2, 0), f = h = 0, r.mode = 2;break;}if (r.flags = 0, r.head && (r.head.done = !1), !(1 & r.wrap) || (((255 & h) << 8) + (h >> 8)) % 31) {e.msg = "incorrect header check", r.mode = 30;break;}if (8 != (15 & h)) {e.msg = "unknown compression method", r.mode = 30;break;}if (f -= 4, k = 8 + (15 & (h >>>= 4)), 0 === r.wbits) r.wbits = k;else if (k > r.wbits) {e.msg = "invalid window size", r.mode = 30;break;}r.dmax = 1 << k, e.adler = r.check = 1, r.mode = 512 & h ? 10 : 12, f = h = 0;break;case 2:for (; f < 16;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (r.flags = h, 8 != (255 & r.flags)) {e.msg = "unknown compression method", r.mode = 30;break;}if (57344 & r.flags) {e.msg = "unknown header flags set", r.mode = 30;break;}r.head && (r.head.text = h >> 8 & 1), 512 & r.flags && (C[0] = 255 & h, C[1] = h >>> 8 & 255, r.check = B(r.check, C, 2, 0)), f = h = 0, r.mode = 3;case 3:for (; f < 32;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}r.head && (r.head.time = h), 512 & r.flags && (C[0] = 255 & h, C[1] = h >>> 8 & 255, C[2] = h >>> 16 & 255, C[3] = h >>> 24 & 255, r.check = B(r.check, C, 4, 0)), f = h = 0, r.mode = 4;case 4:for (; f < 16;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}r.head && (r.head.xflags = 255 & h, r.head.os = h >> 8), 512 & r.flags && (C[0] = 255 & h, C[1] = h >>> 8 & 255, r.check = B(r.check, C, 2, 0)), f = h = 0, r.mode = 5;case 5:if (1024 & r.flags) {for (; f < 16;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}r.length = h, r.head && (r.head.extra_len = h), 512 & r.flags && (C[0] = 255 & h, C[1] = h >>> 8 & 255, r.check = B(r.check, C, 2, 0)), f = h = 0;} else r.head && (r.head.extra = null);r.mode = 6;case 6:if (1024 & r.flags && (o < (c = r.length) && (c = o), c && (r.head && (k = r.head.extra_len - r.length, r.head.extra || (r.head.extra = new Array(r.head.extra_len)), I.arraySet(r.head.extra, n, s, c, k)), 512 & r.flags && (r.check = B(r.check, n, c, s)), o -= c, s += c, r.length -= c), r.length)) break e;r.length = 0, r.mode = 7;case 7:if (2048 & r.flags) {if (0 === o) break e;for (c = 0; k = n[s + c++], r.head && k && r.length < 65536 && (r.head.name += String.fromCharCode(k)), k && c < o;);if (512 & r.flags && (r.check = B(r.check, n, c, s)), o -= c, s += c, k) break e;} else r.head && (r.head.name = null);r.length = 0, r.mode = 8;case 8:if (4096 & r.flags) {if (0 === o) break e;for (c = 0; k = n[s + c++], r.head && k && r.length < 65536 && (r.head.comment += String.fromCharCode(k)), k && c < o;);if (512 & r.flags && (r.check = B(r.check, n, c, s)), o -= c, s += c, k) break e;} else r.head && (r.head.comment = null);r.mode = 9;case 9:if (512 & r.flags) {for (; f < 16;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (h !== (65535 & r.check)) {e.msg = "header crc mismatch", r.mode = 30;break;}f = h = 0;}r.head && (r.head.hcrc = r.flags >> 9 & 1, r.head.done = !0), e.adler = r.check = 0, r.mode = 12;break;case 10:for (; f < 32;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}e.adler = r.check = L(h), f = h = 0, r.mode = 11;case 11:if (0 === r.havedict) return e.next_out = a, e.avail_out = u, e.next_in = s, e.avail_in = o, r.hold = h, r.bits = f, 2;e.adler = r.check = 1, r.mode = 12;case 12:if (5 === t || 6 === t) break e;case 13:if (r.last) {h >>>= 7 & f, f -= 7 & f, r.mode = 27;break;}for (; f < 3;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}switch (r.last = 1 & h, f -= 1, 3 & (h >>>= 1)) {case 0:r.mode = 14;break;case 1:if (j(r), r.mode = 20, 6 !== t) break;h >>>= 2, f -= 2;break e;case 2:r.mode = 17;break;case 3:e.msg = "invalid block type", r.mode = 30;}h >>>= 2, f -= 2;break;case 14:for (h >>>= 7 & f, f -= 7 & f; f < 32;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if ((65535 & h) != (h >>> 16 ^ 65535)) {e.msg = "invalid stored block lengths", r.mode = 30;break;}if (r.length = 65535 & h, f = h = 0, r.mode = 15, 6 === t) break e;case 15:r.mode = 16;case 16:if (c = r.length) {if (o < c && (c = o), u < c && (c = u), 0 === c) break e;I.arraySet(i, n, s, c, a), o -= c, s += c, u -= c, a += c, r.length -= c;break;}r.mode = 12;break;case 17:for (; f < 14;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (r.nlen = 257 + (31 & h), h >>>= 5, f -= 5, r.ndist = 1 + (31 & h), h >>>= 5, f -= 5, r.ncode = 4 + (15 & h), h >>>= 4, f -= 4, 286 < r.nlen || 30 < r.ndist) {e.msg = "too many length or distance symbols", r.mode = 30;break;}r.have = 0, r.mode = 18;case 18:for (; r.have < r.ncode;) {for (; f < 3;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}r.lens[A[r.have++]] = 7 & h, h >>>= 3, f -= 3;}for (; r.have < 19;) r.lens[A[r.have++]] = 0;if (r.lencode = r.lendyn, r.lenbits = 7, S = { bits: r.lenbits }, x = R(0, r.lens, 0, 19, r.lencode, 0, r.work, S), r.lenbits = S.bits, x) {e.msg = "invalid code lengths set", r.mode = 30;break;}r.have = 0, r.mode = 19;case 19:for (; r.have < r.nlen + r.ndist;) {for (; g = (E = r.lencode[h & (1 << r.lenbits) - 1]) >>> 16 & 255, v = 65535 & E, !((_ = E >>> 24) <= f);) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (v < 16) h >>>= _, f -= _, r.lens[r.have++] = v;else {if (16 === v) {for (z = _ + 2; f < z;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (h >>>= _, f -= _, 0 === r.have) {e.msg = "invalid bit length repeat", r.mode = 30;break;}k = r.lens[r.have - 1], c = 3 + (3 & h), h >>>= 2, f -= 2;} else if (17 === v) {for (z = _ + 3; f < z;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}f -= _, k = 0, c = 3 + (7 & (h >>>= _)), h >>>= 3, f -= 3;} else {for (z = _ + 7; f < z;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}f -= _, k = 0, c = 11 + (127 & (h >>>= _)), h >>>= 7, f -= 7;}if (r.have + c > r.nlen + r.ndist) {e.msg = "invalid bit length repeat", r.mode = 30;break;}for (; c--;) r.lens[r.have++] = k;}}if (30 === r.mode) break;if (0 === r.lens[256]) {e.msg = "invalid code -- missing end-of-block", r.mode = 30;break;}if (r.lenbits = 9, S = { bits: r.lenbits }, x = R(D, r.lens, 0, r.nlen, r.lencode, 0, r.work, S), r.lenbits = S.bits, x) {e.msg = "invalid literal/lengths set", r.mode = 30;break;}if (r.distbits = 6, r.distcode = r.distdyn, S = { bits: r.distbits }, x = R(F, r.lens, r.nlen, r.ndist, r.distcode, 0, r.work, S), r.distbits = S.bits, x) {e.msg = "invalid distances set", r.mode = 30;break;}if (r.mode = 20, 6 === t) break e;case 20:r.mode = 21;case 21:if (6 <= o && 258 <= u) {e.next_out = a, e.avail_out = u, e.next_in = s, e.avail_in = o, r.hold = h, r.bits = f, T(e, d), a = e.next_out, i = e.output, u = e.avail_out, s = e.next_in, n = e.input, o = e.avail_in, h = r.hold, f = r.bits, 12 === r.mode && (r.back = -1);break;}for (r.back = 0; g = (E = r.lencode[h & (1 << r.lenbits) - 1]) >>> 16 & 255, v = 65535 & E, !((_ = E >>> 24) <= f);) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (g && 0 == (240 & g)) {for (b = _, w = g, y = v; g = (E = r.lencode[y + ((h & (1 << b + w) - 1) >> b)]) >>> 16 & 255, v = 65535 & E, !(b + (_ = E >>> 24) <= f);) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}h >>>= b, f -= b, r.back += b;}if (h >>>= _, f -= _, r.back += _, r.length = v, 0 === g) {r.mode = 26;break;}if (32 & g) {r.back = -1, r.mode = 12;break;}if (64 & g) {e.msg = "invalid literal/length code", r.mode = 30;break;}r.extra = 15 & g, r.mode = 22;case 22:if (r.extra) {for (z = r.extra; f < z;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}r.length += h & (1 << r.extra) - 1, h >>>= r.extra, f -= r.extra, r.back += r.extra;}r.was = r.length, r.mode = 23;case 23:for (; g = (E = r.distcode[h & (1 << r.distbits) - 1]) >>> 16 & 255, v = 65535 & E, !((_ = E >>> 24) <= f);) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (0 == (240 & g)) {for (b = _, w = g, y = v; g = (E = r.distcode[y + ((h & (1 << b + w) - 1) >> b)]) >>> 16 & 255, v = 65535 & E, !(b + (_ = E >>> 24) <= f);) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}h >>>= b, f -= b, r.back += b;}if (h >>>= _, f -= _, r.back += _, 64 & g) {e.msg = "invalid distance code", r.mode = 30;break;}r.offset = v, r.extra = 15 & g, r.mode = 24;case 24:if (r.extra) {for (z = r.extra; f < z;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}r.offset += h & (1 << r.extra) - 1, h >>>= r.extra, f -= r.extra, r.back += r.extra;}if (r.offset > r.dmax) {e.msg = "invalid distance too far back", r.mode = 30;break;}r.mode = 25;case 25:if (0 === u) break e;if (c = d - u, r.offset > c) {if ((c = r.offset - c) > r.whave && r.sane) {e.msg = "invalid distance too far back", r.mode = 30;break;}p = c > r.wnext ? (c -= r.wnext, r.wsize - c) : r.wnext - c, c > r.length && (c = r.length), m = r.window;} else m = i, p = a - r.offset, c = r.length;for (u < c && (c = u), u -= c, r.length -= c; i[a++] = m[p++], --c;);0 === r.length && (r.mode = 21);break;case 26:if (0 === u) break e;i[a++] = r.length, u--, r.mode = 21;break;case 27:if (r.wrap) {for (; f < 32;) {if (0 === o) break e;o--, h |= n[s++] << f, f += 8;}if (d -= u, e.total_out += d, r.total += d, d && (e.adler = r.check = r.flags ? B(r.check, i, d, a - d) : O(r.check, i, d, a - d)), d = u, (r.flags ? h : L(h)) !== r.check) {e.msg = "incorrect data check", r.mode = 30;break;}f = h = 0;}r.mode = 28;case 28:if (r.wrap && r.flags) {for (; f < 32;) {if (0 === o) break e;o--, h += n[s++] << f, f += 8;}if (h !== (4294967295 & r.total)) {e.msg = "incorrect length check", r.mode = 30;break;}f = h = 0;}r.mode = 29;case 29:x = 1;break e;case 30:x = -3;break e;case 31:return -4;case 32:default:return U;}return e.next_out = a, e.avail_out = u, e.next_in = s, e.avail_in = o, r.hold = h, r.bits = f, (r.wsize || d !== e.avail_out && r.mode < 30 && (r.mode < 27 || 4 !== t)) && Z(e, e.output, e.next_out, d - e.avail_out) ? (r.mode = 31, -4) : (l -= e.avail_in, d -= e.avail_out, e.total_in += l, e.total_out += d, r.total += d, r.wrap && d && (e.adler = r.check = r.flags ? B(r.check, i, d, e.next_out - d) : O(r.check, i, d, e.next_out - d)), e.data_type = r.bits + (r.last ? 64 : 0) + (12 === r.mode ? 128 : 0) + (20 === r.mode || 15 === r.mode ? 256 : 0), (0 == l && 0 === d || 4 === t) && x === N && (x = -5), x);}, r.inflateEnd = function (e) {if (!e || !e.state) return U;var t = e.state;return t.window && (t.window = null), e.state = null, N;}, r.inflateGetHeader = function (e, t) {var r;return e && e.state ? 0 == (2 & (r = e.state).wrap) ? U : ((r.head = t).done = !1, N) : U;}, r.inflateSetDictionary = function (e, t) {var r,n = t.length;return e && e.state ? 0 !== (r = e.state).wrap && 11 !== r.mode ? U : 11 === r.mode && O(1, t, n, 0) !== r.check ? -3 : Z(e, t, n, n) ? (r.mode = 31, -4) : (r.havedict = 1, N) : U;}, r.inflateInfo = "pako inflate (from Nodeca project)";}, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function (e, t, r) {"use strict";var D = e("../utils/common"),F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0],N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78],U = [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, 0, 0],P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];t.exports = function (e, t, r, n, i, s, a, o) {var u,h,f,l,d,c,p,m,_,g = o.bits,v = 0,b = 0,w = 0,y = 0,k = 0,x = 0,S = 0,z = 0,E = 0,C = 0,A = null,I = 0,O = new D.Buf16(16),B = new D.Buf16(16),T = null,R = 0;for (v = 0; v <= 15; v++) O[v] = 0;for (b = 0; b < n; b++) O[t[r + b]]++;for (k = g, y = 15; 1 <= y && 0 === O[y]; y--);if (y < k && (k = y), 0 === y) return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0;for (w = 1; w < y && 0 === O[w]; w++);for (k < w && (k = w), v = z = 1; v <= 15; v++) if (z <<= 1, (z -= O[v]) < 0) return -1;if (0 < z && (0 === e || 1 !== y)) return -1;for (B[1] = 0, v = 1; v < 15; v++) B[v + 1] = B[v] + O[v];for (b = 0; b < n; b++) 0 !== t[r + b] && (a[B[t[r + b]]++] = b);if (c = 0 === e ? (A = T = a, 19) : 1 === e ? (A = F, I -= 257, T = N, R -= 257, 256) : (A = U, T = P, -1), v = w, d = s, S = b = C = 0, f = -1, l = (E = 1 << (x = k)) - 1, 1 === e && 852 < E || 2 === e && 592 < E) return 1;for (;;) {for (p = v - S, _ = a[b] < c ? (m = 0, a[b]) : a[b] > c ? (m = T[R + a[b]], A[I + a[b]]) : (m = 96, 0), u = 1 << v - S, w = h = 1 << x; i[d + (C >> S) + (h -= u)] = p << 24 | m << 16 | _ | 0, 0 !== h;);for (u = 1 << v - 1; C & u;) u >>= 1;if (0 !== u ? (C &= u - 1, C += u) : C = 0, b++, 0 == --O[v]) {if (v === y) break;v = t[r + a[b]];}if (k < v && (C & l) !== f) {for (0 === S && (S = k), d += w, z = 1 << (x = v - S); x + S < y && !((z -= O[x + S]) <= 0);) x++, z <<= 1;if (E += 1 << x, 1 === e && 852 < E || 2 === e && 592 < E) return 1;i[f = C & l] = k << 24 | x << 16 | d - s | 0;}}return 0 !== C && (i[d + C] = v - S << 24 | 64 << 16 | 0), o.bits = k, 0;};}, { "../utils/common": 41 }], 51: [function (e, t, r) {"use strict";t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" };}, {}], 52: [function (e, t, r) {"use strict";var o = e("../utils/common");function n(e) {for (var t = e.length; 0 <= --t;) e[t] = 0;}var _ = 15,i = 16,u = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0],h = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13],a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],f = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],l = new Array(576);n(l);var d = new Array(60);n(d);var c = new Array(512);n(c);var p = new Array(256);n(p);var m = new Array(29);n(m);var g,v,b,w = new Array(30);function y(e, t, r, n, i) {this.static_tree = e, this.extra_bits = t, this.extra_base = r, this.elems = n, this.max_length = i, this.has_stree = e && e.length;}function s(e, t) {this.dyn_tree = e, this.max_code = 0, this.stat_desc = t;}function k(e) {return e < 256 ? c[e] : c[256 + (e >>> 7)];}function x(e, t) {e.pending_buf[e.pending++] = 255 & t, e.pending_buf[e.pending++] = t >>> 8 & 255;}function S(e, t, r) {e.bi_valid > i - r ? (e.bi_buf |= t << e.bi_valid & 65535, x(e, e.bi_buf), e.bi_buf = t >> i - e.bi_valid, e.bi_valid += r - i) : (e.bi_buf |= t << e.bi_valid & 65535, e.bi_valid += r);}function z(e, t, r) {S(e, r[2 * t], r[2 * t + 1]);}function E(e, t) {for (var r = 0; r |= 1 & e, e >>>= 1, r <<= 1, 0 < --t;);return r >>> 1;}function C(e, t, r) {var n,i,s = new Array(_ + 1),a = 0;for (n = 1; n <= _; n++) s[n] = a = a + r[n - 1] << 1;for (i = 0; i <= t; i++) {var o = e[2 * i + 1];0 !== o && (e[2 * i] = E(s[o]++, o));}}function A(e) {var t;for (t = 0; t < 286; t++) e.dyn_ltree[2 * t] = 0;for (t = 0; t < 30; t++) e.dyn_dtree[2 * t] = 0;for (t = 0; t < 19; t++) e.bl_tree[2 * t] = 0;e.dyn_ltree[512] = 1, e.opt_len = e.static_len = 0, e.last_lit = e.matches = 0;}function I(e) {8 < e.bi_valid ? x(e, e.bi_buf) : 0 < e.bi_valid && (e.pending_buf[e.pending++] = e.bi_buf), e.bi_buf = 0, e.bi_valid = 0;}function O(e, t, r, n) {var i = 2 * t,s = 2 * r;return e[i] < e[s] || e[i] === e[s] && n[t] <= n[r];}function B(e, t, r) {for (var n = e.heap[r], i = r << 1; i <= e.heap_len && (i < e.heap_len && O(t, e.heap[i + 1], e.heap[i], e.depth) && i++, !O(t, n, e.heap[i], e.depth));) e.heap[r] = e.heap[i], r = i, i <<= 1;e.heap[r] = n;}function T(e, t, r) {var n,i,s,a,o = 0;if (0 !== e.last_lit) for (; n = e.pending_buf[e.d_buf + 2 * o] << 8 | e.pending_buf[e.d_buf + 2 * o + 1], i = e.pending_buf[e.l_buf + o], o++, 0 === n ? z(e, i, t) : (z(e, (s = p[i]) + 256 + 1, t), 0 !== (a = u[s]) && S(e, i -= m[s], a), z(e, s = k(--n), r), 0 !== (a = h[s]) && S(e, n -= w[s], a)), o < e.last_lit;);z(e, 256, t);}function R(e, t) {var r,n,i,s = t.dyn_tree,a = t.stat_desc.static_tree,o = t.stat_desc.has_stree,u = t.stat_desc.elems,h = -1;for (e.heap_len = 0, e.heap_max = 573, r = 0; r < u; r++) 0 !== s[2 * r] ? (e.heap[++e.heap_len] = h = r, e.depth[r] = 0) : s[2 * r + 1] = 0;for (; e.heap_len < 2;) s[2 * (i = e.heap[++e.heap_len] = h < 2 ? ++h : 0)] = 1, e.depth[i] = 0, e.opt_len--, o && (e.static_len -= a[2 * i + 1]);for (t.max_code = h, r = e.heap_len >> 1; 1 <= r; r--) B(e, s, r);for (i = u; r = e.heap[1], e.heap[1] = e.heap[e.heap_len--], B(e, s, 1), n = e.heap[1], e.heap[--e.heap_max] = r, e.heap[--e.heap_max] = n, s[2 * i] = s[2 * r] + s[2 * n], e.depth[i] = (e.depth[r] >= e.depth[n] ? e.depth[r] : e.depth[n]) + 1, s[2 * r + 1] = s[2 * n + 1] = i, e.heap[1] = i++, B(e, s, 1), 2 <= e.heap_len;);e.heap[--e.heap_max] = e.heap[1], function (e, t) {var r,n,i,s,a,o,u = t.dyn_tree,h = t.max_code,f = t.stat_desc.static_tree,l = t.stat_desc.has_stree,d = t.stat_desc.extra_bits,c = t.stat_desc.extra_base,p = t.stat_desc.max_length,m = 0;for (s = 0; s <= _; s++) e.bl_count[s] = 0;for (u[2 * e.heap[e.heap_max] + 1] = 0, r = e.heap_max + 1; r < 573; r++) p < (s = u[2 * u[2 * (n = e.heap[r]) + 1] + 1] + 1) && (s = p, m++), u[2 * n + 1] = s, h < n || (e.bl_count[s]++, a = 0, c <= n && (a = d[n - c]), o = u[2 * n], e.opt_len += o * (s + a), l && (e.static_len += o * (f[2 * n + 1] + a)));if (0 !== m) {do {for (s = p - 1; 0 === e.bl_count[s];) s--;e.bl_count[s]--, e.bl_count[s + 1] += 2, e.bl_count[p]--, m -= 2;} while (0 < m);for (s = p; 0 !== s; s--) for (n = e.bl_count[s]; 0 !== n;) h < (i = e.heap[--r]) || (u[2 * i + 1] !== s && (e.opt_len += (s - u[2 * i + 1]) * u[2 * i], u[2 * i + 1] = s), n--);}}(e, t), C(s, h, e.bl_count);}function D(e, t, r) {var n,i,s = -1,a = t[1],o = 0,u = 7,h = 4;for (0 === a && (u = 138, h = 3), t[2 * (r + 1) + 1] = 65535, n = 0; n <= r; n++) i = a, a = t[2 * (n + 1) + 1], ++o < u && i === a || (o < h ? e.bl_tree[2 * i] += o : 0 !== i ? (i !== s && e.bl_tree[2 * i]++, e.bl_tree[32]++) : o <= 10 ? e.bl_tree[34]++ : e.bl_tree[36]++, s = i, h = (o = 0) === a ? (u = 138, 3) : i === a ? (u = 6, 3) : (u = 7, 4));}function F(e, t, r) {var n,i,s = -1,a = t[1],o = 0,u = 7,h = 4;for (0 === a && (u = 138, h = 3), n = 0; n <= r; n++) if (i = a, a = t[2 * (n + 1) + 1], !(++o < u && i === a)) {if (o < h) for (; z(e, i, e.bl_tree), 0 != --o;);else 0 !== i ? (i !== s && (z(e, i, e.bl_tree), o--), z(e, 16, e.bl_tree), S(e, o - 3, 2)) : o <= 10 ? (z(e, 17, e.bl_tree), S(e, o - 3, 3)) : (z(e, 18, e.bl_tree), S(e, o - 11, 7));s = i, h = (o = 0) === a ? (u = 138, 3) : i === a ? (u = 6, 3) : (u = 7, 4);}}n(w);var N = !1;function U(e, t, r, n) {var i, s, a;S(e, 0 + (n ? 1 : 0), 3), s = t, a = r, I(i = e), x(i, a), x(i, ~a), o.arraySet(i.pending_buf, i.window, s, a, i.pending), i.pending += a;}r._tr_init = function (e) {N || (function () {var e,t,r,n,i,s = new Array(_ + 1);for (n = r = 0; n < 28; n++) for (m[n] = r, e = 0; e < 1 << u[n]; e++) p[r++] = n;for (p[r - 1] = n, n = i = 0; n < 16; n++) for (w[n] = i, e = 0; e < 1 << h[n]; e++) c[i++] = n;for (i >>= 7; n < 30; n++) for (w[n] = i << 7, e = 0; e < 1 << h[n] - 7; e++) c[256 + i++] = n;for (t = 0; t <= _; t++) s[t] = 0;for (e = 0; e <= 143;) l[2 * e + 1] = 8, e++, s[8]++;for (; e <= 255;) l[2 * e + 1] = 9, e++, s[9]++;for (; e <= 279;) l[2 * e + 1] = 7, e++, s[7]++;for (; e <= 287;) l[2 * e + 1] = 8, e++, s[8]++;for (C(l, 287, s), e = 0; e < 30; e++) d[2 * e + 1] = 5, d[2 * e] = E(e, 5);g = new y(l, u, 257, 286, _), v = new y(d, h, 0, 30, _), b = new y(new Array(0), a, 0, 19, 7);}(), N = !0), e.l_desc = new s(e.dyn_ltree, g), e.d_desc = new s(e.dyn_dtree, v), e.bl_desc = new s(e.bl_tree, b), e.bi_buf = 0, e.bi_valid = 0, A(e);}, r._tr_stored_block = U, r._tr_flush_block = function (e, t, r, n) {var i,s,a = 0;0 < e.level ? (2 === e.strm.data_type && (e.strm.data_type = function (e) {var t,r = 4093624447;for (t = 0; t <= 31; t++, r >>>= 1) if (1 & r && 0 !== e.dyn_ltree[2 * t]) return 0;if (0 !== e.dyn_ltree[18] || 0 !== e.dyn_ltree[20] || 0 !== e.dyn_ltree[26]) return 1;for (t = 32; t < 256; t++) if (0 !== e.dyn_ltree[2 * t]) return 1;return 0;}(e)), R(e, e.l_desc), R(e, e.d_desc), a = function (e) {var t;for (D(e, e.dyn_ltree, e.l_desc.max_code), D(e, e.dyn_dtree, e.d_desc.max_code), R(e, e.bl_desc), t = 18; 3 <= t && 0 === e.bl_tree[2 * f[t] + 1]; t--);return e.opt_len += 3 * (t + 1) + 5 + 5 + 4, t;}(e), i = e.opt_len + 3 + 7 >>> 3, (s = e.static_len + 3 + 7 >>> 3) <= i && (i = s)) : i = s = r + 5, r + 4 <= i && -1 !== t ? U(e, t, r, n) : 4 === e.strategy || s === i ? (S(e, 2 + (n ? 1 : 0), 3), T(e, l, d)) : (S(e, 4 + (n ? 1 : 0), 3), function (e, t, r, n) {var i;for (S(e, t - 257, 5), S(e, r - 1, 5), S(e, n - 4, 4), i = 0; i < n; i++) S(e, e.bl_tree[2 * f[i] + 1], 3);F(e, e.dyn_ltree, t - 1), F(e, e.dyn_dtree, r - 1);}(e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, a + 1), T(e, e.dyn_ltree, e.dyn_dtree)), A(e), n && I(e);}, r._tr_tally = function (e, t, r) {return e.pending_buf[e.d_buf + 2 * e.last_lit] = t >>> 8 & 255, e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t, e.pending_buf[e.l_buf + e.last_lit] = 255 & r, e.last_lit++, 0 === t ? e.dyn_ltree[2 * r]++ : (e.matches++, t--, e.dyn_ltree[2 * (p[r] + 256 + 1)]++, e.dyn_dtree[2 * k(t)]++), e.last_lit === e.lit_bufsize - 1;}, r._tr_align = function (e) {var t;S(e, 2, 3), z(e, 256, l), 16 === (t = e).bi_valid ? (x(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : 8 <= t.bi_valid && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8);};}, { "../utils/common": 41 }], 53: [function (e, t, r) {"use strict";t.exports = function () {this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0;};}, {}], 54: [function (e, t, r) {"use strict";t.exports = "function" == typeof setImmediate ? setImmediate : function () {var e = [].slice.apply(arguments);e.splice(1, 0, 0), setTimeout.apply(null, e);};}, {}] }, {}, [10])(10);});}).call(this, void 0 !== r ? r : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});}, {}] }, {}, [1])(1);});}).call(this, void 0 !== r ? r : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});}, {}] }, {}, [1])(1);});}).call(this, void 0 !== r ? r : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});}, {}] }, {}, [1])(1);});}).call(this, void 0 !== r ? r : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});}, {}] }, {}, [1])(1);});}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});}, {}] }, {}, [1])(1);});
var picker = document.getElementById("picker")
var mergeBtn = document.getElementById("merge")
var log = document.getElementById("log")
var dl = document.getElementById("download")
function append(line) {
log.textContent = log.textContent + line + "\n"
log.scrollTop = log.scrollHeight
}
function replaceLast(line) {
var parts = log.textContent.split("\n")
if (parts.length >= 2) {
parts[parts.length - 2] = line
} else {
parts[0] = line
}
log.textContent = parts.join("\n")
log.scrollTop = log.scrollHeight
}
function fmtMB(n) {
return (n / 1048576).toFixed(1) + " MB"
}
function countFiles(zip) {
var keys = Object.keys(zip.files)
var n = 0
for (var i = 0; i < keys.length; i = i + 1) {
if (!zip.files[keys[i]].dir) {
n = n + 1
}
}
return n
}
function withCallback(promise, cb) {
promise.then(
function (result) {
cb(null, result)
},
function (err) {
cb(err)
}
)
}
function readFileAsArrayBuffer(file, onProgress, cb) {
var reader = new FileReader()
reader.onload = function (e) {
cb(null, e.target.result)
}
reader.onerror = function () {
cb(reader.error)
}
if (onProgress) {
reader.onprogress = function (e) {
if (e.lengthComputable) {
onProgress(e.loaded, e.total)
}
}
}
reader.readAsArrayBuffer(file)
}
// walk every entry of a loaded zip sequentially, copying it into `merged`.
// calls cb(err) when done.
function copyEntries(zip, merged, fileName, cb) {
var names = Object.keys(zip.files)
var totalEntries = names.length
var i = 0
var added = 0
function step() {
// directory entries have no content: recreate them synchronously so
// empty folders are preserved (file-bearing folders are auto-created
// by merged.file(), but empty ones would otherwise be lost).
while (i < totalEntries && zip.files[names[i]].dir) {
merged.folder(names[i]) // idempotent — later paks reuse the folder
i = i + 1
}
if (i >= totalEntries) {
replaceLast(
"reading " +
fileName +
": " +
added +
" files added (merged total: " +
countFiles(merged) +
")"
)
cb(null)
return
}
var name = names[i]
i = i + 1
var entry = zip.files[name]
withCallback(entry.async("uint8array"), function (err, content) {
if (err) {
cb(err)
return
}
merged.file(name, content) // same name overwrites — later paks win
added = added + 1
// throttle dom updates: every 50 entries (or on the last one).
if (i % 50 === 0 || i === totalEntries) {
replaceLast(
"reading " +
fileName +
": copying entries " +
i +
"/" +
totalEntries +
" (" +
added +
" files added)..."
)
}
step()
})
}
step()
}
// process one pk3: read it, load it as a zip, copy its entries into `merged`.
// calls cb(err) when done.
function processOne(merged, file, cb) {
append("reading " + file.name + " 0% of " + fmtMB(file.size) + "...")
readFileAsArrayBuffer(
file,
function (loaded, total) {
var pct = total ? Math.round((loaded / total) * 100) : 0
replaceLast(
"reading " +
file.name +
" " +
pct +
"% of " +
fmtMB(total) +
" (" +
fmtMB(loaded) +
" read)..."
)
},
function (err, buf) {
if (err) {
cb(err)
return
}
replaceLast(
"reading " + file.name + ": parsing ZIP central directory..."
)
withCallback(JSZip.loadAsync(buf), function (err2, zip) {
if (err2) {
cb(err2)
return
}
replaceLast(
"reading " +
file.name +
": copying entries 0/" +
Object.keys(zip.files).length +
"..."
)
copyEntries(zip, merged, file.name, cb)
})
}
)
}
picker.addEventListener("change", function () {
mergeBtn.disabled = picker.files.length === 0
dl.style.display = "none"
log.textContent = picker.files.length + " file(s) selected.\n"
})
mergeBtn.addEventListener("click", function () {
mergeBtn.disabled = true
picker.disabled = true
dl.style.display = "none"
log.textContent = ""
// sort by filename so pak0..pak8 are processed in order
// (later overrides earlier — quake 3 load order).
var files = Array.prototype.slice.call(picker.files).sort(function (a, b) {
if (a.name < b.name) {
return -1
}
if (a.name > b.name) {
return 1
}
return 0
})
var merged = new JSZip()
function finish(err) {
if (err) {
append("ERROR: " + (err && err.message ? err.message : String(err)))
}
mergeBtn.disabled = false
picker.disabled = false
}
function compressAndDownload() {
append("creating Quake III Arena.pk3... 0%")
withCallback(
merged.generateAsync(
{
type: "blob",
compression: "DEFLATE",
compressionOptions: { level: 9 },
mimeType: "application/octet-stream",
},
function (m) {
replaceLast(
"creating Quake III Arena.pk3... " + Math.round(m.percent) + "%"
)
}
),
function (err, blob) {
if (err) {
finish(err)
return
}
append(
"done: " +
blob.size.toLocaleString() +
" bytes (" +
fmtMB(blob.size) +
")"
)
dl.href = URL.createObjectURL(blob)
dl.textContent =
"↓ Download Quake III Arena.pk3 (" + fmtMB(blob.size) + ")"
dl.style.display = "inline-block"
finish(null)
}
)
}
// sequentially process each pak via callback chain
function processNext(idx) {
if (idx >= files.length) {
compressAndDownload()
return
}
processOne(merged, files[idx], function (err) {
if (err) {
finish(err)
return
}
processNext(idx + 1)
})
}
processNext(0)
})
</script>
</body>
</html>