You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

630 lines
19 KiB
JavaScript

var LZString = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
_f: String.fromCharCode,
compressToBase64: function (e) {
if (e == null) return "";
var t = "";
var n, r, i, s, o, u, a;
var f = 0;
e = LZString.compress(e);
while (f < e.length * 2) {
if (f % 2 == 0) {
n = e.charCodeAt(f / 2) >> 8;
r = e.charCodeAt(f / 2) & 255;
if (f / 2 + 1 < e.length) i = e.charCodeAt(f / 2 + 1) >> 8;
else i = NaN;
} else {
n = e.charCodeAt((f - 1) / 2) & 255;
if ((f + 1) / 2 < e.length) {
r = e.charCodeAt((f + 1) / 2) >> 8;
i = e.charCodeAt((f + 1) / 2) & 255;
} else r = i = NaN;
}
f += 3;
s = n >> 2;
o = ((n & 3) << 4) | (r >> 4);
u = ((r & 15) << 2) | (i >> 6);
a = i & 63;
if (isNaN(r)) {
u = a = 64;
} else if (isNaN(i)) {
a = 64;
}
t =
t +
LZString._keyStr.charAt(s) +
LZString._keyStr.charAt(o) +
LZString._keyStr.charAt(u) +
LZString._keyStr.charAt(a);
}
return t;
},
decompressFromBase64: function (e) {
if (e == null) return "";
var t = "",
n = 0,
r,
i,
s,
o,
u,
a,
f,
l,
c = 0,
h = LZString._f;
e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (c < e.length) {
u = LZString._keyStr.indexOf(e.charAt(c++));
a = LZString._keyStr.indexOf(e.charAt(c++));
f = LZString._keyStr.indexOf(e.charAt(c++));
l = LZString._keyStr.indexOf(e.charAt(c++));
i = (u << 2) | (a >> 4);
s = ((a & 15) << 4) | (f >> 2);
o = ((f & 3) << 6) | l;
if (n % 2 == 0) {
r = i << 8;
if (f != 64) {
t += h(r | s);
}
if (l != 64) {
r = o << 8;
}
} else {
t = t + h(r | i);
if (f != 64) {
r = s << 8;
}
if (l != 64) {
t += h(r | o);
}
}
n += 3;
}
return LZString.decompress(t);
},
compressToUTF16: function (e) {
if (e == null) return "";
var t = "",
n,
r,
i,
s = 0,
o = LZString._f;
e = LZString.compress(e);
for (n = 0; n < e.length; n++) {
r = e.charCodeAt(n);
switch (s++) {
case 0:
t += o((r >> 1) + 32);
i = (r & 1) << 14;
break;
case 1:
t += o(i + (r >> 2) + 32);
i = (r & 3) << 13;
break;
case 2:
t += o(i + (r >> 3) + 32);
i = (r & 7) << 12;
break;
case 3:
t += o(i + (r >> 4) + 32);
i = (r & 15) << 11;
break;
case 4:
t += o(i + (r >> 5) + 32);
i = (r & 31) << 10;
break;
case 5:
t += o(i + (r >> 6) + 32);
i = (r & 63) << 9;
break;
case 6:
t += o(i + (r >> 7) + 32);
i = (r & 127) << 8;
break;
case 7:
t += o(i + (r >> 8) + 32);
i = (r & 255) << 7;
break;
case 8:
t += o(i + (r >> 9) + 32);
i = (r & 511) << 6;
break;
case 9:
t += o(i + (r >> 10) + 32);
i = (r & 1023) << 5;
break;
case 10:
t += o(i + (r >> 11) + 32);
i = (r & 2047) << 4;
break;
case 11:
t += o(i + (r >> 12) + 32);
i = (r & 4095) << 3;
break;
case 12:
t += o(i + (r >> 13) + 32);
i = (r & 8191) << 2;
break;
case 13:
t += o(i + (r >> 14) + 32);
i = (r & 16383) << 1;
break;
case 14:
t += o(i + (r >> 15) + 32, (r & 32767) + 32);
s = 0;
break;
}
}
return t + o(i + 32);
},
decompressFromUTF16: function (e) {
if (e == null) return "";
var t = "",
n,
r,
i = 0,
s = 0,
o = LZString._f;
while (s < e.length) {
r = e.charCodeAt(s) - 32;
switch (i++) {
case 0:
n = r << 1;
break;
case 1:
t += o(n | (r >> 14));
n = (r & 16383) << 2;
break;
case 2:
t += o(n | (r >> 13));
n = (r & 8191) << 3;
break;
case 3:
t += o(n | (r >> 12));
n = (r & 4095) << 4;
break;
case 4:
t += o(n | (r >> 11));
n = (r & 2047) << 5;
break;
case 5:
t += o(n | (r >> 10));
n = (r & 1023) << 6;
break;
case 6:
t += o(n | (r >> 9));
n = (r & 511) << 7;
break;
case 7:
t += o(n | (r >> 8));
n = (r & 255) << 8;
break;
case 8:
t += o(n | (r >> 7));
n = (r & 127) << 9;
break;
case 9:
t += o(n | (r >> 6));
n = (r & 63) << 10;
break;
case 10:
t += o(n | (r >> 5));
n = (r & 31) << 11;
break;
case 11:
t += o(n | (r >> 4));
n = (r & 15) << 12;
break;
case 12:
t += o(n | (r >> 3));
n = (r & 7) << 13;
break;
case 13:
t += o(n | (r >> 2));
n = (r & 3) << 14;
break;
case 14:
t += o(n | (r >> 1));
n = (r & 1) << 15;
break;
case 15:
t += o(n | r);
i = 0;
break;
}
s++;
}
return LZString.decompress(t);
},
compressToUint8Array: function (e) {
var t = LZString.compress(e);
var n = new Uint8Array(t.length * 2);
for (var r = 0, i = t.length; r < i; r++) {
var s = t.charCodeAt(r);
n[r * 2] = s >>> 8;
n[r * 2 + 1] = s % 256;
}
return n;
},
decompressFromUint8Array: function (e) {
if (e === null || e === undefined) {
return LZString.decompress(e);
} else {
var t = new Array(e.length / 2);
for (var n = 0, r = t.length; n < r; n++) {
t[n] = e[n * 2] * 256 + e[n * 2 + 1];
}
return LZString.decompress(String.fromCharCode.apply(null, t));
}
},
compressToEncodedURIComponent: function (e) {
return LZString.compressToBase64(e).replace(/=/g, "$").replace(/\//g, "-");
},
decompressFromEncodedURIComponent: function (e) {
if (e) e = e.replace(/$/g, "=").replace(/-/g, "/");
return LZString.decompressFromBase64(e);
},
compress: function (e) {
if (e == null) return "";
var t,
n,
r = {},
i = {},
s = "",
o = "",
u = "",
a = 2,
f = 3,
l = 2,
c = "",
h = 0,
p = 0,
d,
v = LZString._f;
for (d = 0; d < e.length; d += 1) {
s = e.charAt(d);
if (!Object.prototype.hasOwnProperty.call(r, s)) {
r[s] = f++;
i[s] = true;
}
o = u + s;
if (Object.prototype.hasOwnProperty.call(r, o)) {
u = o;
} else {
if (Object.prototype.hasOwnProperty.call(i, u)) {
if (u.charCodeAt(0) < 256) {
for (t = 0; t < l; t++) {
h = h << 1;
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
}
n = u.charCodeAt(0);
for (t = 0; t < 8; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
} else {
n = 1;
for (t = 0; t < l; t++) {
h = (h << 1) | n;
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = 0;
}
n = u.charCodeAt(0);
for (t = 0; t < 16; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
}
a--;
if (a == 0) {
a = Math.pow(2, l);
l++;
}
delete i[u];
} else {
n = r[u];
for (t = 0; t < l; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
}
a--;
if (a == 0) {
a = Math.pow(2, l);
l++;
}
r[o] = f++;
u = String(s);
}
}
if (u !== "") {
if (Object.prototype.hasOwnProperty.call(i, u)) {
if (u.charCodeAt(0) < 256) {
for (t = 0; t < l; t++) {
h = h << 1;
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
}
n = u.charCodeAt(0);
for (t = 0; t < 8; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
} else {
n = 1;
for (t = 0; t < l; t++) {
h = (h << 1) | n;
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = 0;
}
n = u.charCodeAt(0);
for (t = 0; t < 16; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
}
a--;
if (a == 0) {
a = Math.pow(2, l);
l++;
}
delete i[u];
} else {
n = r[u];
for (t = 0; t < l; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
}
a--;
if (a == 0) {
a = Math.pow(2, l);
l++;
}
}
n = 2;
for (t = 0; t < l; t++) {
h = (h << 1) | (n & 1);
if (p == 15) {
p = 0;
c += v(h);
h = 0;
} else {
p++;
}
n = n >> 1;
}
while (true) {
h = h << 1;
if (p == 15) {
c += v(h);
break;
} else p++;
}
return c;
},
decompress: function (e) {
if (e == null) return "";
if (e == "") return null;
var t = [],
n,
r = 4,
i = 4,
s = 3,
o = "",
u = "",
a,
f,
l,
c,
h,
p,
d,
v = LZString._f,
m = { string: e, val: e.charCodeAt(0), position: 32768, index: 1 };
for (a = 0; a < 3; a += 1) {
t[a] = a;
}
l = 0;
h = Math.pow(2, 2);
p = 1;
while (p != h) {
c = m.val & m.position;
m.position >>= 1;
if (m.position == 0) {
m.position = 32768;
m.val = m.string.charCodeAt(m.index++);
}
l |= (c > 0 ? 1 : 0) * p;
p <<= 1;
}
switch ((n = l)) {
case 0:
l = 0;
h = Math.pow(2, 8);
p = 1;
while (p != h) {
c = m.val & m.position;
m.position >>= 1;
if (m.position == 0) {
m.position = 32768;
m.val = m.string.charCodeAt(m.index++);
}
l |= (c > 0 ? 1 : 0) * p;
p <<= 1;
}
d = v(l);
break;
case 1:
l = 0;
h = Math.pow(2, 16);
p = 1;
while (p != h) {
c = m.val & m.position;
m.position >>= 1;
if (m.position == 0) {
m.position = 32768;
m.val = m.string.charCodeAt(m.index++);
}
l |= (c > 0 ? 1 : 0) * p;
p <<= 1;
}
d = v(l);
break;
case 2:
return "";
}
t[3] = d;
f = u = d;
while (true) {
if (m.index > m.string.length) {
return "";
}
l = 0;
h = Math.pow(2, s);
p = 1;
while (p != h) {
c = m.val & m.position;
m.position >>= 1;
if (m.position == 0) {
m.position = 32768;
m.val = m.string.charCodeAt(m.index++);
}
l |= (c > 0 ? 1 : 0) * p;
p <<= 1;
}
switch ((d = l)) {
case 0:
l = 0;
h = Math.pow(2, 8);
p = 1;
while (p != h) {
c = m.val & m.position;
m.position >>= 1;
if (m.position == 0) {
m.position = 32768;
m.val = m.string.charCodeAt(m.index++);
}
l |= (c > 0 ? 1 : 0) * p;
p <<= 1;
}
t[i++] = v(l);
d = i - 1;
r--;
break;
case 1:
l = 0;
h = Math.pow(2, 16);
p = 1;
while (p != h) {
c = m.val & m.position;
m.position >>= 1;
if (m.position == 0) {
m.position = 32768;
m.val = m.string.charCodeAt(m.index++);
}
l |= (c > 0 ? 1 : 0) * p;
p <<= 1;
}
t[i++] = v(l);
d = i - 1;
r--;
break;
case 2:
return u;
}
if (r == 0) {
r = Math.pow(2, s);
s++;
}
if (t[d]) {
o = t[d];
} else {
if (d === i) {
o = f + f.charAt(0);
} else {
return null;
}
}
u += o;
t[i++] = f + o.charAt(0);
r--;
f = o;
if (r == 0) {
r = Math.pow(2, s);
s++;
}
}
},
};
if (typeof module !== "undefined" && module != null) {
module.exports = LZString;
}