js逆向实战之某妈妈返回数据解密
声明:本篇文章仅用于知识分享,不得用于其他用途网址:aHR0cHM6Ly93d3cuY2hhbm1hbWEuY29tL3Byb21vdGlvblJhbmsvdGlrR29vZHNTYWxlLz9jYXRlZ29yeV9pZD0tMQ==
解密逻辑
[*]刷新网页,抓流量包。
[*]data中的数据一看肯定是加过密的,需要知道其解密逻辑,data这个词比较普遍,直接搜索肯定会出现很多,可以看到is_encrypt和data属于同一个组的,直接搜索is_encrypt。
总共4处,上面两处的data是定值,不是我们想要的,下面两处无法判断,全部打上断点。
[*]ctrl+shift+r刷新网页,断在了最后一处。
看看这一行代码,出现了很多赋值操作,重点关注c.data。
第一次触发的这个没有出现想要的数据,一直释放断点,直到c.data的数据如下。
[*]从这行代码可知c.data赋给了i、o、r、s,往下看几行代码,却没有跟这几个变量相关的。只能单步调试了,if判断不成立,直接进入return语句。
[*](0,Z.ZP)看着比较突兀,找到其定义的地方,打个断点。
[*]需要解密的数据传给了p函数,return中又把它传给了m函数,定位m函数,可以很明显看到是个AES解密了。
[*]打断点,知道了e和填充方式,n的定义在其上面,三要素齐全就可以解密了。拷贝代码,梭一把。
var s = require("crypto-js")
var e = "要解密的数据"
function decrypt(e) {
var n = s.enc.Utf8.parse(27..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + 24901..toString(36).toLowerCase() + 33..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + 976..toString(36).toLowerCase() + 20..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + function () {
var t = Array.prototype.slice.call(arguments)
, e = t.shift();
return t.reverse().map((function (t, n) {
return String.fromCharCode(t - e - 24 - n)
}
)).join("")
}(10, 127, 154, 91, 151, 91, 136) + 11..toString(36).toLowerCase() + 13..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -13)
}
)).join("")),
a = s.AES.decrypt(e, n, {
mode: s.mode.ECB,
padding: s.pad.Pkcs7
})
console.log(a);
}
decrypt(e);运行结果如下,是个字节组。
8. 继续看源代码,a还经过l函数的处理,得到的结果o还传给了c.ungzip函数处理。
将l函数弄出来,都是些位运算,o的结果是个数组。
9. 还是得经过c.ungzip函数的处理,定位。
看这个函数里的内容,看不到一点处理的方式。先拷出来,看缺少什么补什么吧。(注:这个过程非常痛苦,一环套一环,花费了我半天的功夫,代码能运行了,但是没有结果)
完整代码如下:
var CryptoJS = require("crypto-js")
var e = "";
function decrypt(e) {
var n = CryptoJS.enc.Utf8.parse(27..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + 24901..toString(36).toLowerCase() + 33..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + 976..toString(36).toLowerCase() + 20..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + function () {
var t = Array.prototype.slice.call(arguments)
, e = t.shift();
return t.reverse().map((function (t, n) {
return String.fromCharCode(t - e - 24 - n)
}
)).join("")
}(10, 127, 154, 91, 151, 91, 136) + 11..toString(36).toLowerCase() + 13..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -13)
}
)).join(""));
a = CryptoJS.AES.decrypt(e, n, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
o = l(a);
r = ungzip(o, {
to: "string"
})
console.log(r);
}
const t = (e, t) => Object.prototype.hasOwnProperty.call(e, t);
function assign(e) {
const n = Array.prototype.slice.call(arguments, 1);
while (n.length) {
const r = n.shift();
if (r) {
if ("object" !== typeof r)
throw new TypeError(r + "must be non-object");
for (const n in r)
t(r, "to") && (e = r)
}
}
return e
}
var options = {};
function s() {
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
}
function ie() {
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 Uint16Array(320),
this.work = new Uint16Array(288),
this.lendyn = null,
this.distdyn = null,
this.sane = 0,
this.back = 0,
this.was = 0
}
const oe = e => {
if (!e || !e.state)
return v;
const t = e.state;
return e.total_in = e.total_out = t.total = 0,
e.msg = "",
t.wrap && (e.adler = 1 & t.wrap),
t.mode = 1,
t.last = 0,
t.havedict = 0,
t.dmax = 32768,
t.head = null,
t.hold = 0,
t.bits = 0,
t.lencode = t.lendyn = new Int32Array(852),
t.distcode = t.distdyn = new Int32Array(592),
t.sane = 1,
t.back = -1,
0
}
, ae = e => {
if (!e || !e.state)
return v;
const t = e.state;
return t.wsize = 0,
t.whave = 0,
t.wnext = 0,
oe(e)
}
, se = (e, t) => {
let n;
if (!e || !e.state)
return v;
const r = e.state;
return t < 0 ? (n = 0,
t = -t) : (n = 1 + (t >> 4),
t < 48 && (t &= 15)),
t && (t < 8 || t > 15) ? v : (null !== r.window && r.wbits !== t && (r.window = null),
r.wrap = n,
r.wbits = t,
ae(e))
}
, le = (e, t) => {
if (!e)
return v;
const n = new ie;
e.state = n,
n.window = null;
const r = se(e, t);
return r !== d && (e.state = null),
r
}
, ue = e => le(e, ne);
function inflateInit2(e, t) {
if (!e)
return v;
const n = new ie;
e.state = n,
n.window = null;
const r = se(e, t);
return r !== 0 && (e.state = null),
r
}
function y(e) {
this.options = assign({
chunkSize: 65536,
windowBits: 47,
to: ""
}, e || {});
const t = this.options;
t.raw && t.windowBits >= 0 && t.windowBits < 16 && (t.windowBits = -t.windowBits,
0 === t.windowBits && (t.windowBits = -15)),
!(t.windowBits >= 0 && t.windowBits < 16) || e && e.windowBits || (t.windowBits += 32),
t.windowBits > 15 && t.windowBits < 48 && 0 === (15 & t.windowBits) && (t.windowBits |= 15),
this.err = 0,
this.msg = "",
this.ended = !1,
this.chunks = [],
this.strm = new s,
this.strm.avail_out = 0;
let n = inflateInit2(this.strm, t.windowBits);
if (n !== 0)
throw new Error(a);
if (this.header = new lll,
inflateGetHeader(this.strm, this.header),
t.dictionary && ("string" === typeof t.dictionary ? t.dictionary = o.string2buf(t.dictionary) : "" === u.call(t.dictionary) && (t.dictionary = new Uint8Array(t.dictionary)),
t.raw && (n = r.inflateSetDictionary(this.strm, t.dictionary),
n !== f)))
throw new Error(a)
}
function inflateGetHeader(e, t) {
if (!e || !e.state)
return v;
const n = e.state;
return 0 === (2 & n.wrap) ? v : (n.head = t,
t.done = !1,
0)
}
function lll() {
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
}
function iiii(e, t, r, i) {
const o = {
"0": 0,
"1": 1996959894,
"2": 3993919788,
"3": 2567524794,
"4": 124634137,
"5": 1886057615,
"6": 3915621685,
"7": 2657392035,
"8": 249268274,
"9": 2044508324,
"10": 3772115230,
"11": 2547177864,
"12": 162941995,
"13": 2125561021,
"14": 3887607047,
"15": 2428444049,
"16": 498536548,
"17": 1789927666,
"18": 4089016648,
"19": 2227061214,
"20": 450548861,
"21": 1843258603,
"22": 4107580753,
"23": 2211677639,
"24": 325883990,
"25": 1684777152,
"26": 4251122042,
"27": 2321926636,
"28": 335633487,
"29": 1661365465,
"30": 4195302755,
"31": 2366115317,
"32": 997073096,
"33": 1281953886,
"34": 3579855332,
"35": 2724688242,
"36": 1006888145,
"37": 1258607687,
"38": 3524101629,
"39": 2768942443,
"40": 901097722,
"41": 1119000684,
"42": 3686517206,
"43": 2898065728,
"44": 853044451,
"45": 1172266101,
"46": 3705015759,
"47": 2882616665,
"48": 651767980,
"49": 1373503546,
"50": 3369554304,
"51": 3218104598,
"52": 565507253,
"53": 1454621731,
"54": 3485111705,
"55": 3099436303,
"56": 671266974,
"57": 1594198024,
"58": 3322730930,
"59": 2970347812,
"60": 795835527,
"61": 1483230225,
"62": 3244367275,
"63": 3060149565,
"64": 1994146192,
"65": 31158534,
"66": 2563907772,
"67": 4023717930,
"68": 1907459465,
"69": 112637215,
"70": 2680153253,
"71": 3904427059,
"72": 2013776290,
"73": 251722036,
"74": 2517215374,
"75": 3775830040,
"76": 2137656763,
"77": 141376813,
"78": 2439277719,
"79": 3865271297,
"80": 1802195444,
"81": 476864866,
"82": 2238001368,
"83": 4066508878,
"84": 1812370925,
"85": 453092731,
"86": 2181625025,
"87": 4111451223,
"88": 1706088902,
"89": 314042704,
"90": 2344532202,
"91": 4240017532,
"92": 1658658271,
"93": 366619977,
"94": 2362670323,
"95": 4224994405,
"96": 1303535960,
"97": 984961486,
"98": 2747007092,
"99": 3569037538,
"100": 1256170817,
"101": 1037604311,
"102": 2765210733,
"103": 3554079995,
"104": 1131014506,
"105": 879679996,
"106": 2909243462,
"107": 3663771856,
"108": 1141124467,
"109": 855842277,
"110": 2852801631,
"111": 3708648649,
"112": 1342533948,
"113": 654459306,
"114": 3188396048,
"115": 3373015174,
"116": 1466479909,
"117": 544179635,
"118": 3110523913,
"119": 3462522015,
"120": 1591671054,
"121": 702138776,
"122": 2966460450,
"123": 3352799412,
"124": 1504918807,
"125": 783551873,
"126": 3082640443,
"127": 3233442989,
"128": 3988292384,
"129": 2596254646,
"130": 62317068,
"131": 1957810842,
"132": 3939845945,
"133": 2647816111,
"134": 81470997,
"135": 1943803523,
"136": 3814918930,
"137": 2489596804,
"138": 225274430,
"139": 2053790376,
"140": 3826175755,
"141": 2466906013,
"142": 167816743,
"143": 2097651377,
"144": 4027552580,
"145": 2265490386,
"146": 503444072,
"147": 1762050814,
"148": 4150417245,
"149": 2154129355,
"150": 426522225,
"151": 1852507879,
"152": 4275313526,
"153": 2312317920,
"154": 282753626,
"155": 1742555852,
"156": 4189708143,
"157": 2394877945,
"158": 397917763,
"159": 1622183637,
"160": 3604390888,
"161": 2714866558,
"162": 953729732,
"163": 1340076626,
"164": 3518719985,
"165": 2797360999,
"166": 1068828381,
"167": 1219638859,
"168": 3624741850,
"169": 2936675148,
"170": 906185462,
"171": 1090812512,
"172": 3747672003,
"173": 2825379669,
"174": 829329135,
"175": 1181335161,
"176": 3412177804,
"177": 3160834842,
"178": 628085408,
"179": 1382605366,
"180": 3423369109,
"181": 3138078467,
"182": 570562233,
"183": 1426400815,
"184": 3317316542,
"185": 2998733608,
"186": 733239954,
"187": 1555261956,
"188": 3268935591,
"189": 3050360625,
"190": 752459403,
"191": 1541320221,
"192": 2607071920,
"193": 3965973030,
"194": 1969922972,
"195": 40735498,
"196": 2617837225,
"197": 3943577151,
"198": 1913087877,
"199": 83908371,
"200": 2512341634,
"201": 3803740692,
"202": 2075208622,
"203": 213261112,
"204": 2463272603,
"205": 3855990285,
"206": 2094854071,
"207": 198958881,
"208": 2262029012,
"209": 4057260610,
"210": 1759359992,
"211": 534414190,
"212": 2176718541,
"213": 4139329115,
"214": 1873836001,
"215": 414664567,
"216": 2282248934,
"217": 4279200368,
"218": 1711684554,
"219": 285281116,
"220": 2405801727,
"221": 4167216745,
"222": 1634467795,
"223": 376229701,
"224": 2685067896,
"225": 3608007406,
"226": 1308918612,
"227": 956543938,
"228": 2808555105,
"229": 3495958263,
"230": 1231636301,
"231": 1047427035,
"232": 2932959818,
"233": 3654703836,
"234": 1088359270,
"235": 936918000,
"236": 2847714899,
"237": 3736837829,
"238": 1202900863,
"239": 817233897,
"240": 3183342108,
"241": 3401237130,
"242": 1404277552,
"243": 615818150,
"244": 3134207493,
"245": 3453421203,
"246": 1423857449,
"247": 601450431,
"248": 3009837614,
"249": 3294710456,
"250": 1567103746,
"251": 711928724,
"252": 3020668471,
"253": 3272380065,
"254": 1510334235,
"255": 755167117
}
, a = i + r;
e ^= -1;
for (let n = i; n < a; n++)
e = e >>> 8 ^ o)];
return ~e
}
function inflate(e, t) {
let n, Q, ee, te, ne, ie, oe, ae, se, le, ue, ce, he, fe, me, ve, ge, ye, be, xe, we, _e, Se = 0;
const Ce = new Uint8Array(4);
let Ee, ke;
const Te = new Uint8Array();
if (!e || !e.state || !e.output || !e.input && 0 !== e.avail_in)
return v;
n = e.state,
n.mode === 12 && (n.mode = j),
ne = e.next_out,
ee = e.output,
oe = e.avail_out,
te = e.next_in,
Q = e.input,
ie = e.avail_in,
ae = n.hold,
se = n.bits,
le = ie,
ue = oe,
_e = 0;
e: for (; ;)
switch (n.mode) {
case 1:
if (0 === n.wrap) {
n.mode = j;
break
}
while (se < 16) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (2 & n.wrap && 35615 === ae) {
n.check = 0,
Ce = 255 & ae,
Ce = ae >>> 8 & 255,
n.check = iiii(n.check, Ce, 2, 0),
ae = 0,
se = 0,
n.mode = 2;
break
}
if (n.flags = 0,
n.head && (n.head.done = !1),
!(1 & n.wrap) || (((255 & ae) << 8) + (ae >> 8)) % 31) {
e.msg = "incorrect header check",
n.mode = X;
break
}
if ((15 & ae) !== x) {
e.msg = "unknown compression method",
n.mode = X;
break
}
if (ae >>>= 4,
se -= 4,
we = 8 + (15 & ae),
0 === n.wbits)
n.wbits = we;
else if (we > n.wbits) {
e.msg = "invalid window size",
n.mode = X;
break
}
n.dmax = 1 << n.wbits,
e.adler = n.check = 1,
n.mode = 512 & ae ? M : D,
ae = 0,
se = 0;
break;
case 2:
while (se < 16) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (n.flags = ae,
(255 & n.flags) !== 8) {
e.msg = "unknown compression method",
n.mode = X;
break
}
if (57344 & n.flags) {
e.msg = "unknown header flags set",
n.mode = X;
break
}
n.head && (n.head.text = ae >> 8 & 1),
512 & n.flags && (Ce = 255 & ae,
Ce = ae >>> 8 & 255,
n.check = i(n.check, Ce, 2, 0)),
ae = 0,
se = 0,
n.mode = 3;
case 3:
while (se < 32) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
n.head && (n.head.time = ae),
512 & n.flags && (Ce = 255 & ae,
Ce = ae >>> 8 & 255,
Ce = ae >>> 16 & 255,
Ce = ae >>> 24 & 255,
n.check = i(n.check, Ce, 4, 0)),
ae = 0,
se = 0,
n.mode = 4;
case 4:
while (se < 16) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
n.head && (n.head.xflags = 255 & ae,
n.head.os = ae >> 8),
512 & n.flags && (Ce = 255 & ae,
Ce = ae >>> 8 & 255,
n.check = i(n.check, Ce, 2, 0)),
ae = 0,
se = 0,
n.mode = 5;
case 5:
if (1024 & n.flags) {
while (se < 16) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
n.length = ae,
n.head && (n.head.extra_len = ae),
512 & n.flags && (Ce = 255 & ae,
Ce = ae >>> 8 & 255,
n.check = i(n.check, Ce, 2, 0)),
ae = 0,
se = 0
} else
n.head && (n.head.extra = null);
n.mode = 6;
case 6:
if (1024 & n.flags && (ce = n.length,
ce > ie && (ce = ie),
ce && (n.head && (we = n.head.extra_len - n.length,
n.head.extra || (n.head.extra = new Uint8Array(n.head.extra_len)),
n.head.extra.set(Q.subarray(te, te + ce), we)),
512 & n.flags && (n.check = i(n.check, Q, ce, te)),
ie -= ce,
te += ce,
n.length -= ce),
n.length))
break e;
n.length = 0,
n.mode = 7;
case 7:
if (2048 & n.flags) {
if (0 === ie)
break e;
ce = 0;
do {
we = Q,
n.head && we && n.length < 65536 && (n.head.name += String.fromCharCode(we))
} while (we && ce < ie);
if (512 & n.flags && (n.check = i(n.check, Q, ce, te)),
ie -= ce,
te += ce,
we)
break e
} else
n.head && (n.head.name = null);
n.length = 0,
n.mode = 8;
case 8:
if (4096 & n.flags) {
if (0 === ie)
break e;
ce = 0;
do {
we = Q,
n.head && we && n.length < 65536 && (n.head.comment += String.fromCharCode(we))
} while (we && ce < ie);
if (512 & n.flags && (n.check = i(n.check, Q, ce, te)),
ie -= ce,
te += ce,
we)
break e
} else
n.head && (n.head.comment = null);
n.mode = 9;
case 9:
if (512 & n.flags) {
while (se < 16) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (ae !== (65535 & n.check)) {
e.msg = "header crc mismatch",
n.mode = X;
break
}
ae = 0,
se = 0
}
n.head && (n.head.hcrc = n.flags >> 9 & 1,
n.head.done = !0),
e.adler = n.check = 0,
n.mode = 12;
break;
case 10:
while (se < 32) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
e.adler = n.check = re(ae),
ae = 0,
se = 0,
n.mode = 11;
case 11:
if (0 === n.havedict)
return e.next_out = ne,
e.avail_out = oe,
e.next_in = te,
e.avail_in = ie,
n.hold = ae,
n.bits = se,
m;
e.adler = n.check = 1,
n.mode = 12;
case 12:
if (t === 5 || t === 6)
break e;
case 13:
if (n.last) {
ae >>>= 7 & se,
se -= 7 & se,
n.mode = G;
break
}
while (se < 3) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
switch (n.last = 1 & ae,
ae >>>= 1,
se -= 1,
3 & ae) {
case 0:
n.mode = I;
break;
case 1:
if (de(n),
n.mode = B,
t === f) {
ae >>>= 2,
se -= 2;
break e
}
break;
case 2:
n.mode = 17;
break;
case 3:
e.msg = "invalid block type",
n.mode = X
}
ae >>>= 2,
se -= 2;
break;
case 14:
ae >>>= 7 & se,
se -= 7 & se;
while (se < 32) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if ((65535 & ae) !== (ae >>> 16 ^ 65535)) {
e.msg = "invalid stored block lengths",
n.mode = X;
break
}
if (n.length = 65535 & ae,
ae = 0,
se = 0,
n.mode = R,
t === f)
break e;
case 15:
n.mode = $;
case 16:
if (ce = n.length,
ce) {
if (ce > ie && (ce = ie),
ce > oe && (ce = oe),
0 === ce)
break e;
ee.set(Q.subarray(te, te + ce), ne),
ie -= ce,
te += ce,
oe -= ce,
ne += ce,
n.length -= ce;
break
}
n.mode = D;
break;
case 17:
while (se < 14) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (n.nlen = 257 + (31 & ae),
ae >>>= 5,
se -= 5,
n.ndist = 1 + (31 & ae),
ae >>>= 5,
se -= 5,
n.ncode = 4 + (15 & ae),
ae >>>= 4,
se -= 4,
n.nlen > 286 || n.ndist > 30) {
e.msg = "too many length or distance symbols",
n.mode = X;
break
}
n.have = 0,
n.mode = 18;
case 18:
while (n.have < n.ncode) {
while (se < 3) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
n.lens] = 7 & ae,
ae >>>= 3,
se -= 3
}
while (n.have < 19)
n.lens] = 0;
if (n.lencode = n.lendyn,
n.lenbits = 7,
Ee = {
bits: n.lenbits
},
_e = aaaaaa(0, n.lens, 0, 19, n.lencode, 0, n.work, Ee),
n.lenbits = Ee.bits,
_e) {
e.msg = "invalid code lengths set",
n.mode = 30;
break
}
n.have = 0,
n.mode = 19;
case 19:
while (n.have < n.nlen + n.ndist) {
for (; ;) {
if (Se = n.lencode,
me = Se >>> 24,
ve = Se >>> 16 & 255,
ge = 65535 & Se,
me <= se)
break;
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (ge < 16)
ae >>>= me,
se -= me,
n.lens = ge;
else {
if (16 === ge) {
ke = me + 2;
while (se < ke) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (ae >>>= me,
se -= me,
0 === n.have) {
e.msg = "invalid bit length repeat",
n.mode = X;
break
}
we = n.lens,
ce = 3 + (3 & ae),
ae >>>= 2,
se -= 2
} else if (17 === ge) {
ke = me + 3;
while (se < ke) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
ae >>>= me,
se -= me,
we = 0,
ce = 3 + (7 & ae),
ae >>>= 3,
se -= 3
} else {
ke = me + 7;
while (se < ke) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
ae >>>= me,
se -= me,
we = 0,
ce = 11 + (127 & ae),
ae >>>= 7,
se -= 7
}
if (n.have + ce > n.nlen + n.ndist) {
e.msg = "invalid bit length repeat",
n.mode = X;
break
}
while (ce--)
n.lens = we
}
}
if (n.mode === X)
break;
if (0 === n.lens) {
e.msg = "invalid code -- missing end-of-block",
n.mode = X;
break
}
if (n.lenbits = 9,
Ee = {
bits: n.lenbits
},
_e = a(l, n.lens, 0, n.nlen, n.lencode, 0, n.work, Ee),
n.lenbits = Ee.bits,
_e) {
e.msg = "invalid literal/lengths set",
n.mode = X;
break
}
if (n.distbits = 6,
n.distcode = n.distdyn,
Ee = {
bits: n.distbits
},
_e = a(u, n.lens, n.nlen, n.ndist, n.distcode, 0, n.work, Ee),
n.distbits = Ee.bits,
_e) {
e.msg = "invalid distances set",
n.mode = X;
break
}
if (n.mode = 20,
t === 6)
break e;
case 20:
n.mode = 21;
case 21:
if (ie >= 6 && oe >= 258) {
e.next_out = ne,
e.avail_out = oe,
e.next_in = te,
e.avail_in = ie,
n.hold = ae,
n.bits = se,
o(e, ue),
ne = e.next_out,
ee = e.output,
oe = e.avail_out,
te = e.next_in,
Q = e.input,
ie = e.avail_in,
ae = n.hold,
se = n.bits,
n.mode === D && (n.back = -1);
break
}
for (n.back = 0; ;) {
if (Se = n.lencode,
me = Se >>> 24,
ve = Se >>> 16 & 255,
ge = 65535 & Se,
me <= se)
break;
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (ve && 0 === (240 & ve)) {
for (ye = me,
be = ve,
xe = ge; ;) {
if (Se = n.lencode,
me = Se >>> 24,
ve = Se >>> 16 & 255,
ge = 65535 & Se,
ye + me <= se)
break;
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
ae >>>= ye,
se -= ye,
n.back += ye
}
if (ae >>>= me,
se -= me,
n.back += me,
n.length = ge,
0 === ve) {
n.mode = W;
break
}
if (32 & ve) {
n.back = -1,
n.mode = D;
break
}
if (64 & ve) {
e.msg = "invalid literal/length code",
n.mode = X;
break
}
n.extra = 15 & ve,
n.mode = 22;
case 22:
if (n.extra) {
ke = n.extra;
while (se < ke) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
n.length += ae & (1 << n.extra) - 1,
ae >>>= n.extra,
se -= n.extra,
n.back += n.extra
}
n.was = n.length,
n.mode = 23;
case 23:
for (; ;) {
if (Se = n.distcode,
me = Se >>> 24,
ve = Se >>> 16 & 255,
ge = 65535 & Se,
me <= se)
break;
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (0 === (240 & ve)) {
for (ye = me,
be = ve,
xe = ge; ;) {
if (Se = n.distcode,
me = Se >>> 24,
ve = Se >>> 16 & 255,
ge = 65535 & Se,
ye + me <= se)
break;
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
ae >>>= ye,
se -= ye,
n.back += ye
}
if (ae >>>= me,
se -= me,
n.back += me,
64 & ve) {
e.msg = "invalid distance code",
n.mode = X;
break
}
n.offset = ge,
n.extra = 15 & ve,
n.mode = 24;
case 24:
if (n.extra) {
ke = n.extra;
while (se < ke) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
n.offset += ae & (1 << n.extra) - 1,
ae >>>= n.extra,
se -= n.extra,
n.back += n.extra
}
if (n.offset > n.dmax) {
e.msg = "invalid distance too far back",
n.mode = X;
break
}
n.mode = 25;
case 25:
if (0 === oe)
break e;
if (ce = ue - oe,
n.offset > ce) {
if (ce = n.offset - ce,
ce > n.whave && n.sane) {
e.msg = "invalid distance too far back",
n.mode = 30;
break
}
ce > n.wnext ? (ce -= n.wnext,
he = n.wsize - ce) : he = n.wnext - ce,
ce > n.length && (ce = n.length),
fe = n.window
} else
fe = ee,
he = ne - n.offset,
ce = n.length;
ce > oe && (ce = oe),
oe -= ce,
n.length -= ce;
do {
ee = fe
} while (--ce);
0 === n.length && (n.mode = z);
break;
case 26:
if (0 === oe)
break e;
ee = n.length,
oe--,
n.mode = 21;
break;
case 27:
if (n.wrap) {
while (se < 32) {
if (0 === ie)
break e;
ie--,
ae |= Q << se,
se += 8
}
if (ue -= oe,
e.total_out += ue,
n.total += ue,
ue && (e.adler = n.check = n.flags ? i(n.check, ee, ue, ne - ue) : r(n.check, ee, ue, ne - ue)),
ue = oe,
(n.flags ? ae : re(ae)) !== n.check) {
e.msg = "incorrect data check",
n.mode = X;
break
}
ae = 0,
se = 0
}
n.mode = 28;
case 28:
if (n.wrap && n.flags) {
while (se < 32) {
if (0 === ie)
break e;
ie--,
ae += Q << se,
se += 8
}
if (ae !== (4294967295 & n.total)) {
e.msg = "incorrect length check",
n.mode = X;
break
}
ae = 0,
se = 0
}
n.mode = 29;
case 29:
_e = 1;
break e;
case 30:
_e = -3;
break e;
case 31:
return y;
case 32:
default:
return v
}
return e.next_out = ne,
e.avail_out = oe,
e.next_in = te,
e.avail_in = ie,
n.hold = ae,
n.bits = se,
(n.wsize || ue !== e.avail_out && n.mode < 30 && (n.mode < 27 || t !== 4)) && pe(e, e.output, e.next_out, ue - e.avail_out) ? (n.mode = 31,
-4) : (le -= e.avail_in,
ue -= e.avail_out,
e.total_in += le,
e.total_out += ue,
n.total += ue,
n.wrap && ue && (e.adler = n.check = n.flags ? i(n.check, ee, ue, e.next_out - ue) : r(n.check, ee, ue, e.next_out - ue)),
e.data_type = n.bits + (n.last ? 64 : 0) + (n.mode === 12 ? 128 : 0) + (n.mode === 20 || n.mode === 15 ? 256 : 0),
(0 === le && 0 === ue || t === 4) && _e === d && (_e = b),
_e)
}
function pusher(e, t) {
const n = {
"input": null,
"next_in": 0,
"avail_in": 0,
"total_in": 0,
"output": null,
"next_out": 0,
"avail_out": 0,
"total_out": 0,
"msg": "",
"state": {
"mode": 1,
"last": 0,
"wrap": 3,
"havedict": 0,
"flags": 0,
"dmax": 32768,
"check": 0,
"total": 0,
"head": {
"text": 0,
"time": 0,
"xflags": 0,
"os": 0,
"extra": null,
"extra_len": 0,
"name": "",
"comment": "",
"hcrc": 0,
"done": false
},
"wbits": 15,
"wsize": 0,
"whave": 0,
"wnext": 0,
"window": null,
"hold": 0,
"bits": 0,
"length": 0,
"offset": 0,
"extra": 0,
"lencode": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0,
"23": 0,
"24": 0,
"25": 0,
"26": 0,
"27": 0,
"28": 0,
"29": 0,
"30": 0,
"31": 0,
"32": 0,
"33": 0,
"34": 0,
"35": 0,
"36": 0,
"37": 0,
"38": 0,
"39": 0,
"40": 0,
"41": 0,
"42": 0,
"43": 0,
"44": 0,
"45": 0,
"46": 0,
"47": 0,
"48": 0,
"49": 0,
"50": 0,
"51": 0,
"52": 0,
"53": 0,
"54": 0,
"55": 0,
"56": 0,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 0,
"62": 0,
"63": 0,
"64": 0,
"65": 0,
"66": 0,
"67": 0,
"68": 0,
"69": 0,
"70": 0,
"71": 0,
"72": 0,
"73": 0,
"74": 0,
"75": 0,
"76": 0,
"77": 0,
"78": 0,
"79": 0,
"80": 0,
"81": 0,
"82": 0,
"83": 0,
"84": 0,
"85": 0,
"86": 0,
"87": 0,
"88": 0,
"89": 0,
"90": 0,
"91": 0,
"92": 0,
"93": 0,
"94": 0,
"95": 0,
"96": 0,
"97": 0,
"98": 0,
"99": 0,
"100": 0,
"101": 0,
"102": 0,
"103": 0,
"104": 0,
"105": 0,
"106": 0,
"107": 0,
"108": 0,
"109": 0,
"110": 0,
"111": 0,
"112": 0,
"113": 0,
"114": 0,
"115": 0,
"116": 0,
"117": 0,
"118": 0,
"119": 0,
"120": 0,
"121": 0,
"122": 0,
"123": 0,
"124": 0,
"125": 0,
"126": 0,
"127": 0,
"128": 0,
"129": 0,
"130": 0,
"131": 0,
"132": 0,
"133": 0,
"134": 0,
"135": 0,
"136": 0,
"137": 0,
"138": 0,
"139": 0,
"140": 0,
"141": 0,
"142": 0,
"143": 0,
"144": 0,
"145": 0,
"146": 0,
"147": 0,
"148": 0,
"149": 0,
"150": 0,
"151": 0,
"152": 0,
"153": 0,
"154": 0,
"155": 0,
"156": 0,
"157": 0,
"158": 0,
"159": 0,
"160": 0,
"161": 0,
"162": 0,
"163": 0,
"164": 0,
"165": 0,
"166": 0,
"167": 0,
"168": 0,
"169": 0,
"170": 0,
"171": 0,
"172": 0,
"173": 0,
"174": 0,
"175": 0,
"176": 0,
"177": 0,
"178": 0,
"179": 0,
"180": 0,
"181": 0,
"182": 0,
"183": 0,
"184": 0,
"185": 0,
"186": 0,
"187": 0,
"188": 0,
"189": 0,
"190": 0,
"191": 0,
"192": 0,
"193": 0,
"194": 0,
"195": 0,
"196": 0,
"197": 0,
"198": 0,
"199": 0,
"200": 0,
"201": 0,
"202": 0,
"203": 0,
"204": 0,
"205": 0,
"206": 0,
"207": 0,
"208": 0,
"209": 0,
"210": 0,
"211": 0,
"212": 0,
"213": 0,
"214": 0,
"215": 0,
"216": 0,
"217": 0,
"218": 0,
"219": 0,
"220": 0,
"221": 0,
"222": 0,
"223": 0,
"224": 0,
"225": 0,
"226": 0,
"227": 0,
"228": 0,
"229": 0,
"230": 0,
"231": 0,
"232": 0,
"233": 0,
"234": 0,
"235": 0,
"236": 0,
"237": 0,
"238": 0,
"239": 0,
"240": 0,
"241": 0,
"242": 0,
"243": 0,
"244": 0,
"245": 0,
"246": 0,
"247": 0,
"248": 0,
"249": 0,
"250": 0,
"251": 0,
"252": 0,
"253": 0,
"254": 0,
"255": 0,
"256": 0,
"257": 0,
"258": 0,
"259": 0,
"260": 0,
"261": 0,
"262": 0,
"263": 0,
"264": 0,
"265": 0,
"266": 0,
"267": 0,
"268": 0,
"269": 0,
"270": 0,
"271": 0,
"272": 0,
"273": 0,
"274": 0,
"275": 0,
"276": 0,
"277": 0,
"278": 0,
"279": 0,
"280": 0,
"281": 0,
"282": 0,
"283": 0,
"284": 0,
"285": 0,
"286": 0,
"287": 0,
"288": 0,
"289": 0,
"290": 0,
"291": 0,
"292": 0,
"293": 0,
"294": 0,
"295": 0,
"296": 0,
"297": 0,
"298": 0,
"299": 0,
"300": 0,
"301": 0,
"302": 0,
"303": 0,
"304": 0,
"305": 0,
"306": 0,
"307": 0,
"308": 0,
"309": 0,
"310": 0,
"311": 0,
"312": 0,
"313": 0,
"314": 0,
"315": 0,
"316": 0,
"317": 0,
"318": 0,
"319": 0,
"320": 0,
"321": 0,
"322": 0,
"323": 0,
"324": 0,
"325": 0,
"326": 0,
"327": 0,
"328": 0,
"329": 0,
"330": 0,
"331": 0,
"332": 0,
"333": 0,
"334": 0,
"335": 0,
"336": 0,
"337": 0,
"338": 0,
"339": 0,
"340": 0,
"341": 0,
"342": 0,
"343": 0,
"344": 0,
"345": 0,
"346": 0,
"347": 0,
"348": 0,
"349": 0,
"350": 0,
"351": 0,
"352": 0,
"353": 0,
"354": 0,
"355": 0,
"356": 0,
"357": 0,
"358": 0,
"359": 0,
"360": 0,
"361": 0,
"362": 0,
"363": 0,
"364": 0,
"365": 0,
"366": 0,
"367": 0,
"368": 0,
"369": 0,
"370": 0,
"371": 0,
"372": 0,
"373": 0,
"374": 0,
"375": 0,
"376": 0,
"377": 0,
"378": 0,
"379": 0,
"380": 0,
"381": 0,
"382": 0,
"383": 0,
"384": 0,
"385": 0,
"386": 0,
"387": 0,
"388": 0,
"389": 0,
"390": 0,
"391": 0,
"392": 0,
"393": 0,
"394": 0,
"395": 0,
"396": 0,
"397": 0,
"398": 0,
"399": 0,
"400": 0,
"401": 0,
"402": 0,
"403": 0,
"404": 0,
"405": 0,
"406": 0,
"407": 0,
"408": 0,
"409": 0,
"410": 0,
"411": 0,
"412": 0,
"413": 0,
"414": 0,
"415": 0,
"416": 0,
"417": 0,
"418": 0,
"419": 0,
"420": 0,
"421": 0,
"422": 0,
"423": 0,
"424": 0,
"425": 0,
"426": 0,
"427": 0,
"428": 0,
"429": 0,
"430": 0,
"431": 0,
"432": 0,
"433": 0,
"434": 0,
"435": 0,
"436": 0,
"437": 0,
"438": 0,
"439": 0,
"440": 0,
"441": 0,
"442": 0,
"443": 0,
"444": 0,
"445": 0,
"446": 0,
"447": 0,
"448": 0,
"449": 0,
"450": 0,
"451": 0,
"452": 0,
"453": 0,
"454": 0,
"455": 0,
"456": 0,
"457": 0,
"458": 0,
"459": 0,
"460": 0,
"461": 0,
"462": 0,
"463": 0,
"464": 0,
"465": 0,
"466": 0,
"467": 0,
"468": 0,
"469": 0,
"470": 0,
"471": 0,
"472": 0,
"473": 0,
"474": 0,
"475": 0,
"476": 0,
"477": 0,
"478": 0,
"479": 0,
"480": 0,
"481": 0,
"482": 0,
"483": 0,
"484": 0,
"485": 0,
"486": 0,
"487": 0,
"488": 0,
"489": 0,
"490": 0,
"491": 0,
"492": 0,
"493": 0,
"494": 0,
"495": 0,
"496": 0,
"497": 0,
"498": 0,
"499": 0,
"500": 0,
"501": 0,
"502": 0,
"503": 0,
"504": 0,
"505": 0,
"506": 0,
"507": 0,
"508": 0,
"509": 0,
"510": 0,
"511": 0,
"512": 0,
"513": 0,
"514": 0,
"515": 0,
"516": 0,
"517": 0,
"518": 0,
"519": 0,
"520": 0,
"521": 0,
"522": 0,
"523": 0,
"524": 0,
"525": 0,
"526": 0,
"527": 0,
"528": 0,
"529": 0,
"530": 0,
"531": 0,
"532": 0,
"533": 0,
"534": 0,
"535": 0,
"536": 0,
"537": 0,
"538": 0,
"539": 0,
"540": 0,
"541": 0,
"542": 0,
"543": 0,
"544": 0,
"545": 0,
"546": 0,
"547": 0,
"548": 0,
"549": 0,
"550": 0,
"551": 0,
"552": 0,
"553": 0,
"554": 0,
"555": 0,
"556": 0,
"557": 0,
"558": 0,
"559": 0,
"560": 0,
"561": 0,
"562": 0,
"563": 0,
"564": 0,
"565": 0,
"566": 0,
"567": 0,
"568": 0,
"569": 0,
"570": 0,
"571": 0,
"572": 0,
"573": 0,
"574": 0,
"575": 0,
"576": 0,
"577": 0,
"578": 0,
"579": 0,
"580": 0,
"581": 0,
"582": 0,
"583": 0,
"584": 0,
"585": 0,
"586": 0,
"587": 0,
"588": 0,
"589": 0,
"590": 0,
"591": 0,
"592": 0,
"593": 0,
"594": 0,
"595": 0,
"596": 0,
"597": 0,
"598": 0,
"599": 0,
"600": 0,
"601": 0,
"602": 0,
"603": 0,
"604": 0,
"605": 0,
"606": 0,
"607": 0,
"608": 0,
"609": 0,
"610": 0,
"611": 0,
"612": 0,
"613": 0,
"614": 0,
"615": 0,
"616": 0,
"617": 0,
"618": 0,
"619": 0,
"620": 0,
"621": 0,
"622": 0,
"623": 0,
"624": 0,
"625": 0,
"626": 0,
"627": 0,
"628": 0,
"629": 0,
"630": 0,
"631": 0,
"632": 0,
"633": 0,
"634": 0,
"635": 0,
"636": 0,
"637": 0,
"638": 0,
"639": 0,
"640": 0,
"641": 0,
"642": 0,
"643": 0,
"644": 0,
"645": 0,
"646": 0,
"647": 0,
"648": 0,
"649": 0,
"650": 0,
"651": 0,
"652": 0,
"653": 0,
"654": 0,
"655": 0,
"656": 0,
"657": 0,
"658": 0,
"659": 0,
"660": 0,
"661": 0,
"662": 0,
"663": 0,
"664": 0,
"665": 0,
"666": 0,
"667": 0,
"668": 0,
"669": 0,
"670": 0,
"671": 0,
"672": 0,
"673": 0,
"674": 0,
"675": 0,
"676": 0,
"677": 0,
"678": 0,
"679": 0,
"680": 0,
"681": 0,
"682": 0,
"683": 0,
"684": 0,
"685": 0,
"686": 0,
"687": 0,
"688": 0,
"689": 0,
"690": 0,
"691": 0,
"692": 0,
"693": 0,
"694": 0,
"695": 0,
"696": 0,
"697": 0,
"698": 0,
"699": 0,
"700": 0,
"701": 0,
"702": 0,
"703": 0,
"704": 0,
"705": 0,
"706": 0,
"707": 0,
"708": 0,
"709": 0,
"710": 0,
"711": 0,
"712": 0,
"713": 0,
"714": 0,
"715": 0,
"716": 0,
"717": 0,
"718": 0,
"719": 0,
"720": 0,
"721": 0,
"722": 0,
"723": 0,
"724": 0,
"725": 0,
"726": 0,
"727": 0,
"728": 0,
"729": 0,
"730": 0,
"731": 0,
"732": 0,
"733": 0,
"734": 0,
"735": 0,
"736": 0,
"737": 0,
"738": 0,
"739": 0,
"740": 0,
"741": 0,
"742": 0,
"743": 0,
"744": 0,
"745": 0,
"746": 0,
"747": 0,
"748": 0,
"749": 0,
"750": 0,
"751": 0,
"752": 0,
"753": 0,
"754": 0,
"755": 0,
"756": 0,
"757": 0,
"758": 0,
"759": 0,
"760": 0,
"761": 0,
"762": 0,
"763": 0,
"764": 0,
"765": 0,
"766": 0,
"767": 0,
"768": 0,
"769": 0,
"770": 0,
"771": 0,
"772": 0,
"773": 0,
"774": 0,
"775": 0,
"776": 0,
"777": 0,
"778": 0,
"779": 0,
"780": 0,
"781": 0,
"782": 0,
"783": 0,
"784": 0,
"785": 0,
"786": 0,
"787": 0,
"788": 0,
"789": 0,
"790": 0,
"791": 0,
"792": 0,
"793": 0,
"794": 0,
"795": 0,
"796": 0,
"797": 0,
"798": 0,
"799": 0,
"800": 0,
"801": 0,
"802": 0,
"803": 0,
"804": 0,
"805": 0,
"806": 0,
"807": 0,
"808": 0,
"809": 0,
"810": 0,
"811": 0,
"812": 0,
"813": 0,
"814": 0,
"815": 0,
"816": 0,
"817": 0,
"818": 0,
"819": 0,
"820": 0,
"821": 0,
"822": 0,
"823": 0,
"824": 0,
"825": 0,
"826": 0,
"827": 0,
"828": 0,
"829": 0,
"830": 0,
"831": 0,
"832": 0,
"833": 0,
"834": 0,
"835": 0,
"836": 0,
"837": 0,
"838": 0,
"839": 0,
"840": 0,
"841": 0,
"842": 0,
"843": 0,
"844": 0,
"845": 0,
"846": 0,
"847": 0,
"848": 0,
"849": 0,
"850": 0,
"851": 0
},
"distcode": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0,
"23": 0,
"24": 0,
"25": 0,
"26": 0,
"27": 0,
"28": 0,
"29": 0,
"30": 0,
"31": 0,
"32": 0,
"33": 0,
"34": 0,
"35": 0,
"36": 0,
"37": 0,
"38": 0,
"39": 0,
"40": 0,
"41": 0,
"42": 0,
"43": 0,
"44": 0,
"45": 0,
"46": 0,
"47": 0,
"48": 0,
"49": 0,
"50": 0,
"51": 0,
"52": 0,
"53": 0,
"54": 0,
"55": 0,
"56": 0,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 0,
"62": 0,
"63": 0,
"64": 0,
"65": 0,
"66": 0,
"67": 0,
"68": 0,
"69": 0,
"70": 0,
"71": 0,
"72": 0,
"73": 0,
"74": 0,
"75": 0,
"76": 0,
"77": 0,
"78": 0,
"79": 0,
"80": 0,
"81": 0,
"82": 0,
"83": 0,
"84": 0,
"85": 0,
"86": 0,
"87": 0,
"88": 0,
"89": 0,
"90": 0,
"91": 0,
"92": 0,
"93": 0,
"94": 0,
"95": 0,
"96": 0,
"97": 0,
"98": 0,
"99": 0,
"100": 0,
"101": 0,
"102": 0,
"103": 0,
"104": 0,
"105": 0,
"106": 0,
"107": 0,
"108": 0,
"109": 0,
"110": 0,
"111": 0,
"112": 0,
"113": 0,
"114": 0,
"115": 0,
"116": 0,
"117": 0,
"118": 0,
"119": 0,
"120": 0,
"121": 0,
"122": 0,
"123": 0,
"124": 0,
"125": 0,
"126": 0,
"127": 0,
"128": 0,
"129": 0,
"130": 0,
"131": 0,
"132": 0,
"133": 0,
"134": 0,
"135": 0,
"136": 0,
"137": 0,
"138": 0,
"139": 0,
"140": 0,
"141": 0,
"142": 0,
"143": 0,
"144": 0,
"145": 0,
"146": 0,
"147": 0,
"148": 0,
"149": 0,
"150": 0,
"151": 0,
"152": 0,
"153": 0,
"154": 0,
"155": 0,
"156": 0,
"157": 0,
"158": 0,
"159": 0,
"160": 0,
"161": 0,
"162": 0,
"163": 0,
"164": 0,
"165": 0,
"166": 0,
"167": 0,
"168": 0,
"169": 0,
"170": 0,
"171": 0,
"172": 0,
"173": 0,
"174": 0,
"175": 0,
"176": 0,
"177": 0,
"178": 0,
"179": 0,
"180": 0,
"181": 0,
"182": 0,
"183": 0,
"184": 0,
"185": 0,
"186": 0,
"187": 0,
"188": 0,
"189": 0,
"190": 0,
"191": 0,
"192": 0,
"193": 0,
"194": 0,
"195": 0,
"196": 0,
"197": 0,
"198": 0,
"199": 0,
"200": 0,
"201": 0,
"202": 0,
"203": 0,
"204": 0,
"205": 0,
"206": 0,
"207": 0,
"208": 0,
"209": 0,
"210": 0,
"211": 0,
"212": 0,
"213": 0,
"214": 0,
"215": 0,
"216": 0,
"217": 0,
"218": 0,
"219": 0,
"220": 0,
"221": 0,
"222": 0,
"223": 0,
"224": 0,
"225": 0,
"226": 0,
"227": 0,
"228": 0,
"229": 0,
"230": 0,
"231": 0,
"232": 0,
"233": 0,
"234": 0,
"235": 0,
"236": 0,
"237": 0,
"238": 0,
"239": 0,
"240": 0,
"241": 0,
"242": 0,
"243": 0,
"244": 0,
"245": 0,
"246": 0,
"247": 0,
"248": 0,
"249": 0,
"250": 0,
"251": 0,
"252": 0,
"253": 0,
"254": 0,
"255": 0,
"256": 0,
"257": 0,
"258": 0,
"259": 0,
"260": 0,
"261": 0,
"262": 0,
"263": 0,
"264": 0,
"265": 0,
"266": 0,
"267": 0,
"268": 0,
"269": 0,
"270": 0,
"271": 0,
"272": 0,
"273": 0,
"274": 0,
"275": 0,
"276": 0,
"277": 0,
"278": 0,
"279": 0,
"280": 0,
"281": 0,
"282": 0,
"283": 0,
"284": 0,
"285": 0,
"286": 0,
"287": 0,
"288": 0,
"289": 0,
"290": 0,
"291": 0,
"292": 0,
"293": 0,
"294": 0,
"295": 0,
"296": 0,
"297": 0,
"298": 0,
"299": 0,
"300": 0,
"301": 0,
"302": 0,
"303": 0,
"304": 0,
"305": 0,
"306": 0,
"307": 0,
"308": 0,
"309": 0,
"310": 0,
"311": 0,
"312": 0,
"313": 0,
"314": 0,
"315": 0,
"316": 0,
"317": 0,
"318": 0,
"319": 0,
"320": 0,
"321": 0,
"322": 0,
"323": 0,
"324": 0,
"325": 0,
"326": 0,
"327": 0,
"328": 0,
"329": 0,
"330": 0,
"331": 0,
"332": 0,
"333": 0,
"334": 0,
"335": 0,
"336": 0,
"337": 0,
"338": 0,
"339": 0,
"340": 0,
"341": 0,
"342": 0,
"343": 0,
"344": 0,
"345": 0,
"346": 0,
"347": 0,
"348": 0,
"349": 0,
"350": 0,
"351": 0,
"352": 0,
"353": 0,
"354": 0,
"355": 0,
"356": 0,
"357": 0,
"358": 0,
"359": 0,
"360": 0,
"361": 0,
"362": 0,
"363": 0,
"364": 0,
"365": 0,
"366": 0,
"367": 0,
"368": 0,
"369": 0,
"370": 0,
"371": 0,
"372": 0,
"373": 0,
"374": 0,
"375": 0,
"376": 0,
"377": 0,
"378": 0,
"379": 0,
"380": 0,
"381": 0,
"382": 0,
"383": 0,
"384": 0,
"385": 0,
"386": 0,
"387": 0,
"388": 0,
"389": 0,
"390": 0,
"391": 0,
"392": 0,
"393": 0,
"394": 0,
"395": 0,
"396": 0,
"397": 0,
"398": 0,
"399": 0,
"400": 0,
"401": 0,
"402": 0,
"403": 0,
"404": 0,
"405": 0,
"406": 0,
"407": 0,
"408": 0,
"409": 0,
"410": 0,
"411": 0,
"412": 0,
"413": 0,
"414": 0,
"415": 0,
"416": 0,
"417": 0,
"418": 0,
"419": 0,
"420": 0,
"421": 0,
"422": 0,
"423": 0,
"424": 0,
"425": 0,
"426": 0,
"427": 0,
"428": 0,
"429": 0,
"430": 0,
"431": 0,
"432": 0,
"433": 0,
"434": 0,
"435": 0,
"436": 0,
"437": 0,
"438": 0,
"439": 0,
"440": 0,
"441": 0,
"442": 0,
"443": 0,
"444": 0,
"445": 0,
"446": 0,
"447": 0,
"448": 0,
"449": 0,
"450": 0,
"451": 0,
"452": 0,
"453": 0,
"454": 0,
"455": 0,
"456": 0,
"457": 0,
"458": 0,
"459": 0,
"460": 0,
"461": 0,
"462": 0,
"463": 0,
"464": 0,
"465": 0,
"466": 0,
"467": 0,
"468": 0,
"469": 0,
"470": 0,
"471": 0,
"472": 0,
"473": 0,
"474": 0,
"475": 0,
"476": 0,
"477": 0,
"478": 0,
"479": 0,
"480": 0,
"481": 0,
"482": 0,
"483": 0,
"484": 0,
"485": 0,
"486": 0,
"487": 0,
"488": 0,
"489": 0,
"490": 0,
"491": 0,
"492": 0,
"493": 0,
"494": 0,
"495": 0,
"496": 0,
"497": 0,
"498": 0,
"499": 0,
"500": 0,
"501": 0,
"502": 0,
"503": 0,
"504": 0,
"505": 0,
"506": 0,
"507": 0,
"508": 0,
"509": 0,
"510": 0,
"511": 0,
"512": 0,
"513": 0,
"514": 0,
"515": 0,
"516": 0,
"517": 0,
"518": 0,
"519": 0,
"520": 0,
"521": 0,
"522": 0,
"523": 0,
"524": 0,
"525": 0,
"526": 0,
"527": 0,
"528": 0,
"529": 0,
"530": 0,
"531": 0,
"532": 0,
"533": 0,
"534": 0,
"535": 0,
"536": 0,
"537": 0,
"538": 0,
"539": 0,
"540": 0,
"541": 0,
"542": 0,
"543": 0,
"544": 0,
"545": 0,
"546": 0,
"547": 0,
"548": 0,
"549": 0,
"550": 0,
"551": 0,
"552": 0,
"553": 0,
"554": 0,
"555": 0,
"556": 0,
"557": 0,
"558": 0,
"559": 0,
"560": 0,
"561": 0,
"562": 0,
"563": 0,
"564": 0,
"565": 0,
"566": 0,
"567": 0,
"568": 0,
"569": 0,
"570": 0,
"571": 0,
"572": 0,
"573": 0,
"574": 0,
"575": 0,
"576": 0,
"577": 0,
"578": 0,
"579": 0,
"580": 0,
"581": 0,
"582": 0,
"583": 0,
"584": 0,
"585": 0,
"586": 0,
"587": 0,
"588": 0,
"589": 0,
"590": 0,
"591": 0
},
"lenbits": 0,
"distbits": 0,
"ncode": 0,
"nlen": 0,
"ndist": 0,
"have": 0,
"next": null,
"lens": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0,
"23": 0,
"24": 0,
"25": 0,
"26": 0,
"27": 0,
"28": 0,
"29": 0,
"30": 0,
"31": 0,
"32": 0,
"33": 0,
"34": 0,
"35": 0,
"36": 0,
"37": 0,
"38": 0,
"39": 0,
"40": 0,
"41": 0,
"42": 0,
"43": 0,
"44": 0,
"45": 0,
"46": 0,
"47": 0,
"48": 0,
"49": 0,
"50": 0,
"51": 0,
"52": 0,
"53": 0,
"54": 0,
"55": 0,
"56": 0,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 0,
"62": 0,
"63": 0,
"64": 0,
"65": 0,
"66": 0,
"67": 0,
"68": 0,
"69": 0,
"70": 0,
"71": 0,
"72": 0,
"73": 0,
"74": 0,
"75": 0,
"76": 0,
"77": 0,
"78": 0,
"79": 0,
"80": 0,
"81": 0,
"82": 0,
"83": 0,
"84": 0,
"85": 0,
"86": 0,
"87": 0,
"88": 0,
"89": 0,
"90": 0,
"91": 0,
"92": 0,
"93": 0,
"94": 0,
"95": 0,
"96": 0,
"97": 0,
"98": 0,
"99": 0,
"100": 0,
"101": 0,
"102": 0,
"103": 0,
"104": 0,
"105": 0,
"106": 0,
"107": 0,
"108": 0,
"109": 0,
"110": 0,
"111": 0,
"112": 0,
"113": 0,
"114": 0,
"115": 0,
"116": 0,
"117": 0,
"118": 0,
"119": 0,
"120": 0,
"121": 0,
"122": 0,
"123": 0,
"124": 0,
"125": 0,
"126": 0,
"127": 0,
"128": 0,
"129": 0,
"130": 0,
"131": 0,
"132": 0,
"133": 0,
"134": 0,
"135": 0,
"136": 0,
"137": 0,
"138": 0,
"139": 0,
"140": 0,
"141": 0,
"142": 0,
"143": 0,
"144": 0,
"145": 0,
"146": 0,
"147": 0,
"148": 0,
"149": 0,
"150": 0,
"151": 0,
"152": 0,
"153": 0,
"154": 0,
"155": 0,
"156": 0,
"157": 0,
"158": 0,
"159": 0,
"160": 0,
"161": 0,
"162": 0,
"163": 0,
"164": 0,
"165": 0,
"166": 0,
"167": 0,
"168": 0,
"169": 0,
"170": 0,
"171": 0,
"172": 0,
"173": 0,
"174": 0,
"175": 0,
"176": 0,
"177": 0,
"178": 0,
"179": 0,
"180": 0,
"181": 0,
"182": 0,
"183": 0,
"184": 0,
"185": 0,
"186": 0,
"187": 0,
"188": 0,
"189": 0,
"190": 0,
"191": 0,
"192": 0,
"193": 0,
"194": 0,
"195": 0,
"196": 0,
"197": 0,
"198": 0,
"199": 0,
"200": 0,
"201": 0,
"202": 0,
"203": 0,
"204": 0,
"205": 0,
"206": 0,
"207": 0,
"208": 0,
"209": 0,
"210": 0,
"211": 0,
"212": 0,
"213": 0,
"214": 0,
"215": 0,
"216": 0,
"217": 0,
"218": 0,
"219": 0,
"220": 0,
"221": 0,
"222": 0,
"223": 0,
"224": 0,
"225": 0,
"226": 0,
"227": 0,
"228": 0,
"229": 0,
"230": 0,
"231": 0,
"232": 0,
"233": 0,
"234": 0,
"235": 0,
"236": 0,
"237": 0,
"238": 0,
"239": 0,
"240": 0,
"241": 0,
"242": 0,
"243": 0,
"244": 0,
"245": 0,
"246": 0,
"247": 0,
"248": 0,
"249": 0,
"250": 0,
"251": 0,
"252": 0,
"253": 0,
"254": 0,
"255": 0,
"256": 0,
"257": 0,
"258": 0,
"259": 0,
"260": 0,
"261": 0,
"262": 0,
"263": 0,
"264": 0,
"265": 0,
"266": 0,
"267": 0,
"268": 0,
"269": 0,
"270": 0,
"271": 0,
"272": 0,
"273": 0,
"274": 0,
"275": 0,
"276": 0,
"277": 0,
"278": 0,
"279": 0,
"280": 0,
"281": 0,
"282": 0,
"283": 0,
"284": 0,
"285": 0,
"286": 0,
"287": 0,
"288": 0,
"289": 0,
"290": 0,
"291": 0,
"292": 0,
"293": 0,
"294": 0,
"295": 0,
"296": 0,
"297": 0,
"298": 0,
"299": 0,
"300": 0,
"301": 0,
"302": 0,
"303": 0,
"304": 0,
"305": 0,
"306": 0,
"307": 0,
"308": 0,
"309": 0,
"310": 0,
"311": 0,
"312": 0,
"313": 0,
"314": 0,
"315": 0,
"316": 0,
"317": 0,
"318": 0,
"319": 0
},
"work": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0,
"23": 0,
"24": 0,
"25": 0,
"26": 0,
"27": 0,
"28": 0,
"29": 0,
"30": 0,
"31": 0,
"32": 0,
"33": 0,
"34": 0,
"35": 0,
"36": 0,
"37": 0,
"38": 0,
"39": 0,
"40": 0,
"41": 0,
"42": 0,
"43": 0,
"44": 0,
"45": 0,
"46": 0,
"47": 0,
"48": 0,
"49": 0,
"50": 0,
"51": 0,
"52": 0,
"53": 0,
"54": 0,
"55": 0,
"56": 0,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 0,
"62": 0,
"63": 0,
"64": 0,
"65": 0,
"66": 0,
"67": 0,
"68": 0,
"69": 0,
"70": 0,
"71": 0,
"72": 0,
"73": 0,
"74": 0,
"75": 0,
"76": 0,
"77": 0,
"78": 0,
"79": 0,
"80": 0,
"81": 0,
"82": 0,
"83": 0,
"84": 0,
"85": 0,
"86": 0,
"87": 0,
"88": 0,
"89": 0,
"90": 0,
"91": 0,
"92": 0,
"93": 0,
"94": 0,
"95": 0,
"96": 0,
"97": 0,
"98": 0,
"99": 0,
"100": 0,
"101": 0,
"102": 0,
"103": 0,
"104": 0,
"105": 0,
"106": 0,
"107": 0,
"108": 0,
"109": 0,
"110": 0,
"111": 0,
"112": 0,
"113": 0,
"114": 0,
"115": 0,
"116": 0,
"117": 0,
"118": 0,
"119": 0,
"120": 0,
"121": 0,
"122": 0,
"123": 0,
"124": 0,
"125": 0,
"126": 0,
"127": 0,
"128": 0,
"129": 0,
"130": 0,
"131": 0,
"132": 0,
"133": 0,
"134": 0,
"135": 0,
"136": 0,
"137": 0,
"138": 0,
"139": 0,
"140": 0,
"141": 0,
"142": 0,
"143": 0,
"144": 0,
"145": 0,
"146": 0,
"147": 0,
"148": 0,
"149": 0,
"150": 0,
"151": 0,
"152": 0,
"153": 0,
"154": 0,
"155": 0,
"156": 0,
"157": 0,
"158": 0,
"159": 0,
"160": 0,
"161": 0,
"162": 0,
"163": 0,
"164": 0,
"165": 0,
"166": 0,
"167": 0,
"168": 0,
"169": 0,
"170": 0,
"171": 0,
"172": 0,
"173": 0,
"174": 0,
"175": 0,
"176": 0,
"177": 0,
"178": 0,
"179": 0,
"180": 0,
"181": 0,
"182": 0,
"183": 0,
"184": 0,
"185": 0,
"186": 0,
"187": 0,
"188": 0,
"189": 0,
"190": 0,
"191": 0,
"192": 0,
"193": 0,
"194": 0,
"195": 0,
"196": 0,
"197": 0,
"198": 0,
"199": 0,
"200": 0,
"201": 0,
"202": 0,
"203": 0,
"204": 0,
"205": 0,
"206": 0,
"207": 0,
"208": 0,
"209": 0,
"210": 0,
"211": 0,
"212": 0,
"213": 0,
"214": 0,
"215": 0,
"216": 0,
"217": 0,
"218": 0,
"219": 0,
"220": 0,
"221": 0,
"222": 0,
"223": 0,
"224": 0,
"225": 0,
"226": 0,
"227": 0,
"228": 0,
"229": 0,
"230": 0,
"231": 0,
"232": 0,
"233": 0,
"234": 0,
"235": 0,
"236": 0,
"237": 0,
"238": 0,
"239": 0,
"240": 0,
"241": 0,
"242": 0,
"243": 0,
"244": 0,
"245": 0,
"246": 0,
"247": 0,
"248": 0,
"249": 0,
"250": 0,
"251": 0,
"252": 0,
"253": 0,
"254": 0,
"255": 0,
"256": 0,
"257": 0,
"258": 0,
"259": 0,
"260": 0,
"261": 0,
"262": 0,
"263": 0,
"264": 0,
"265": 0,
"266": 0,
"267": 0,
"268": 0,
"269": 0,
"270": 0,
"271": 0,
"272": 0,
"273": 0,
"274": 0,
"275": 0,
"276": 0,
"277": 0,
"278": 0,
"279": 0,
"280": 0,
"281": 0,
"282": 0,
"283": 0,
"284": 0,
"285": 0,
"286": 0,
"287": 0
},
"lendyn": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0,
"23": 0,
"24": 0,
"25": 0,
"26": 0,
"27": 0,
"28": 0,
"29": 0,
"30": 0,
"31": 0,
"32": 0,
"33": 0,
"34": 0,
"35": 0,
"36": 0,
"37": 0,
"38": 0,
"39": 0,
"40": 0,
"41": 0,
"42": 0,
"43": 0,
"44": 0,
"45": 0,
"46": 0,
"47": 0,
"48": 0,
"49": 0,
"50": 0,
"51": 0,
"52": 0,
"53": 0,
"54": 0,
"55": 0,
"56": 0,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 0,
"62": 0,
"63": 0,
"64": 0,
"65": 0,
"66": 0,
"67": 0,
"68": 0,
"69": 0,
"70": 0,
"71": 0,
"72": 0,
"73": 0,
"74": 0,
"75": 0,
"76": 0,
"77": 0,
"78": 0,
"79": 0,
"80": 0,
"81": 0,
"82": 0,
"83": 0,
"84": 0,
"85": 0,
"86": 0,
"87": 0,
"88": 0,
"89": 0,
"90": 0,
"91": 0,
"92": 0,
"93": 0,
"94": 0,
"95": 0,
"96": 0,
"97": 0,
"98": 0,
"99": 0,
"100": 0,
"101": 0,
"102": 0,
"103": 0,
"104": 0,
"105": 0,
"106": 0,
"107": 0,
"108": 0,
"109": 0,
"110": 0,
"111": 0,
"112": 0,
"113": 0,
"114": 0,
"115": 0,
"116": 0,
"117": 0,
"118": 0,
"119": 0,
"120": 0,
"121": 0,
"122": 0,
"123": 0,
"124": 0,
"125": 0,
"126": 0,
"127": 0,
"128": 0,
"129": 0,
"130": 0,
"131": 0,
"132": 0,
"133": 0,
"134": 0,
"135": 0,
"136": 0,
"137": 0,
"138": 0,
"139": 0,
"140": 0,
"141": 0,
"142": 0,
"143": 0,
"144": 0,
"145": 0,
"146": 0,
"147": 0,
"148": 0,
"149": 0,
"150": 0,
"151": 0,
"152": 0,
"153": 0,
"154": 0,
"155": 0,
"156": 0,
"157": 0,
"158": 0,
"159": 0,
"160": 0,
"161": 0,
"162": 0,
"163": 0,
"164": 0,
"165": 0,
"166": 0,
"167": 0,
"168": 0,
"169": 0,
"170": 0,
"171": 0,
"172": 0,
"173": 0,
"174": 0,
"175": 0,
"176": 0,
"177": 0,
"178": 0,
"179": 0,
"180": 0,
"181": 0,
"182": 0,
"183": 0,
"184": 0,
"185": 0,
"186": 0,
"187": 0,
"188": 0,
"189": 0,
"190": 0,
"191": 0,
"192": 0,
"193": 0,
"194": 0,
"195": 0,
"196": 0,
"197": 0,
"198": 0,
"199": 0,
"200": 0,
"201": 0,
"202": 0,
"203": 0,
"204": 0,
"205": 0,
"206": 0,
"207": 0,
"208": 0,
"209": 0,
"210": 0,
"211": 0,
"212": 0,
"213": 0,
"214": 0,
"215": 0,
"216": 0,
"217": 0,
"218": 0,
"219": 0,
"220": 0,
"221": 0,
"222": 0,
"223": 0,
"224": 0,
"225": 0,
"226": 0,
"227": 0,
"228": 0,
"229": 0,
"230": 0,
"231": 0,
"232": 0,
"233": 0,
"234": 0,
"235": 0,
"236": 0,
"237": 0,
"238": 0,
"239": 0,
"240": 0,
"241": 0,
"242": 0,
"243": 0,
"244": 0,
"245": 0,
"246": 0,
"247": 0,
"248": 0,
"249": 0,
"250": 0,
"251": 0,
"252": 0,
"253": 0,
"254": 0,
"255": 0,
"256": 0,
"257": 0,
"258": 0,
"259": 0,
"260": 0,
"261": 0,
"262": 0,
"263": 0,
"264": 0,
"265": 0,
"266": 0,
"267": 0,
"268": 0,
"269": 0,
"270": 0,
"271": 0,
"272": 0,
"273": 0,
"274": 0,
"275": 0,
"276": 0,
"277": 0,
"278": 0,
"279": 0,
"280": 0,
"281": 0,
"282": 0,
"283": 0,
"284": 0,
"285": 0,
"286": 0,
"287": 0,
"288": 0,
"289": 0,
"290": 0,
"291": 0,
"292": 0,
"293": 0,
"294": 0,
"295": 0,
"296": 0,
"297": 0,
"298": 0,
"299": 0,
"300": 0,
"301": 0,
"302": 0,
"303": 0,
"304": 0,
"305": 0,
"306": 0,
"307": 0,
"308": 0,
"309": 0,
"310": 0,
"311": 0,
"312": 0,
"313": 0,
"314": 0,
"315": 0,
"316": 0,
"317": 0,
"318": 0,
"319": 0,
"320": 0,
"321": 0,
"322": 0,
"323": 0,
"324": 0,
"325": 0,
"326": 0,
"327": 0,
"328": 0,
"329": 0,
"330": 0,
"331": 0,
"332": 0,
"333": 0,
"334": 0,
"335": 0,
"336": 0,
"337": 0,
"338": 0,
"339": 0,
"340": 0,
"341": 0,
"342": 0,
"343": 0,
"344": 0,
"345": 0,
"346": 0,
"347": 0,
"348": 0,
"349": 0,
"350": 0,
"351": 0,
"352": 0,
"353": 0,
"354": 0,
"355": 0,
"356": 0,
"357": 0,
"358": 0,
"359": 0,
"360": 0,
"361": 0,
"362": 0,
"363": 0,
"364": 0,
"365": 0,
"366": 0,
"367": 0,
"368": 0,
"369": 0,
"370": 0,
"371": 0,
"372": 0,
"373": 0,
"374": 0,
"375": 0,
"376": 0,
"377": 0,
"378": 0,
"379": 0,
"380": 0,
"381": 0,
"382": 0,
"383": 0,
"384": 0,
"385": 0,
"386": 0,
"387": 0,
"388": 0,
"389": 0,
"390": 0,
"391": 0,
"392": 0,
"393": 0,
"394": 0,
"395": 0,
"396": 0,
"397": 0,
"398": 0,
"399": 0,
"400": 0,
"401": 0,
"402": 0,
"403": 0,
"404": 0,
"405": 0,
"406": 0,
"407": 0,
"408": 0,
"409": 0,
"410": 0,
"411": 0,
"412": 0,
"413": 0,
"414": 0,
"415": 0,
"416": 0,
"417": 0,
"418": 0,
"419": 0,
"420": 0,
"421": 0,
"422": 0,
"423": 0,
"424": 0,
"425": 0,
"426": 0,
"427": 0,
"428": 0,
"429": 0,
"430": 0,
"431": 0,
"432": 0,
"433": 0,
"434": 0,
"435": 0,
"436": 0,
"437": 0,
"438": 0,
"439": 0,
"440": 0,
"441": 0,
"442": 0,
"443": 0,
"444": 0,
"445": 0,
"446": 0,
"447": 0,
"448": 0,
"449": 0,
"450": 0,
"451": 0,
"452": 0,
"453": 0,
"454": 0,
"455": 0,
"456": 0,
"457": 0,
"458": 0,
"459": 0,
"460": 0,
"461": 0,
"462": 0,
"463": 0,
"464": 0,
"465": 0,
"466": 0,
"467": 0,
"468": 0,
"469": 0,
"470": 0,
"471": 0,
"472": 0,
"473": 0,
"474": 0,
"475": 0,
"476": 0,
"477": 0,
"478": 0,
"479": 0,
"480": 0,
"481": 0,
"482": 0,
"483": 0,
"484": 0,
"485": 0,
"486": 0,
"487": 0,
"488": 0,
"489": 0,
"490": 0,
"491": 0,
"492": 0,
"493": 0,
"494": 0,
"495": 0,
"496": 0,
"497": 0,
"498": 0,
"499": 0,
"500": 0,
"501": 0,
"502": 0,
"503": 0,
"504": 0,
"505": 0,
"506": 0,
"507": 0,
"508": 0,
"509": 0,
"510": 0,
"511": 0,
"512": 0,
"513": 0,
"514": 0,
"515": 0,
"516": 0,
"517": 0,
"518": 0,
"519": 0,
"520": 0,
"521": 0,
"522": 0,
"523": 0,
"524": 0,
"525": 0,
"526": 0,
"527": 0,
"528": 0,
"529": 0,
"530": 0,
"531": 0,
"532": 0,
"533": 0,
"534": 0,
"535": 0,
"536": 0,
"537": 0,
"538": 0,
"539": 0,
"540": 0,
"541": 0,
"542": 0,
"543": 0,
"544": 0,
"545": 0,
"546": 0,
"547": 0,
"548": 0,
"549": 0,
"550": 0,
"551": 0,
"552": 0,
"553": 0,
"554": 0,
"555": 0,
"556": 0,
"557": 0,
"558": 0,
"559": 0,
"560": 0,
"561": 0,
"562": 0,
"563": 0,
"564": 0,
"565": 0,
"566": 0,
"567": 0,
"568": 0,
"569": 0,
"570": 0,
"571": 0,
"572": 0,
"573": 0,
"574": 0,
"575": 0,
"576": 0,
"577": 0,
"578": 0,
"579": 0,
"580": 0,
"581": 0,
"582": 0,
"583": 0,
"584": 0,
"585": 0,
"586": 0,
"587": 0,
"588": 0,
"589": 0,
"590": 0,
"591": 0,
"592": 0,
"593": 0,
"594": 0,
"595": 0,
"596": 0,
"597": 0,
"598": 0,
"599": 0,
"600": 0,
"601": 0,
"602": 0,
"603": 0,
"604": 0,
"605": 0,
"606": 0,
"607": 0,
"608": 0,
"609": 0,
"610": 0,
"611": 0,
"612": 0,
"613": 0,
"614": 0,
"615": 0,
"616": 0,
"617": 0,
"618": 0,
"619": 0,
"620": 0,
"621": 0,
"622": 0,
"623": 0,
"624": 0,
"625": 0,
"626": 0,
"627": 0,
"628": 0,
"629": 0,
"630": 0,
"631": 0,
"632": 0,
"633": 0,
"634": 0,
"635": 0,
"636": 0,
"637": 0,
"638": 0,
"639": 0,
"640": 0,
"641": 0,
"642": 0,
"643": 0,
"644": 0,
"645": 0,
"646": 0,
"647": 0,
"648": 0,
"649": 0,
"650": 0,
"651": 0,
"652": 0,
"653": 0,
"654": 0,
"655": 0,
"656": 0,
"657": 0,
"658": 0,
"659": 0,
"660": 0,
"661": 0,
"662": 0,
"663": 0,
"664": 0,
"665": 0,
"666": 0,
"667": 0,
"668": 0,
"669": 0,
"670": 0,
"671": 0,
"672": 0,
"673": 0,
"674": 0,
"675": 0,
"676": 0,
"677": 0,
"678": 0,
"679": 0,
"680": 0,
"681": 0,
"682": 0,
"683": 0,
"684": 0,
"685": 0,
"686": 0,
"687": 0,
"688": 0,
"689": 0,
"690": 0,
"691": 0,
"692": 0,
"693": 0,
"694": 0,
"695": 0,
"696": 0,
"697": 0,
"698": 0,
"699": 0,
"700": 0,
"701": 0,
"702": 0,
"703": 0,
"704": 0,
"705": 0,
"706": 0,
"707": 0,
"708": 0,
"709": 0,
"710": 0,
"711": 0,
"712": 0,
"713": 0,
"714": 0,
"715": 0,
"716": 0,
"717": 0,
"718": 0,
"719": 0,
"720": 0,
"721": 0,
"722": 0,
"723": 0,
"724": 0,
"725": 0,
"726": 0,
"727": 0,
"728": 0,
"729": 0,
"730": 0,
"731": 0,
"732": 0,
"733": 0,
"734": 0,
"735": 0,
"736": 0,
"737": 0,
"738": 0,
"739": 0,
"740": 0,
"741": 0,
"742": 0,
"743": 0,
"744": 0,
"745": 0,
"746": 0,
"747": 0,
"748": 0,
"749": 0,
"750": 0,
"751": 0,
"752": 0,
"753": 0,
"754": 0,
"755": 0,
"756": 0,
"757": 0,
"758": 0,
"759": 0,
"760": 0,
"761": 0,
"762": 0,
"763": 0,
"764": 0,
"765": 0,
"766": 0,
"767": 0,
"768": 0,
"769": 0,
"770": 0,
"771": 0,
"772": 0,
"773": 0,
"774": 0,
"775": 0,
"776": 0,
"777": 0,
"778": 0,
"779": 0,
"780": 0,
"781": 0,
"782": 0,
"783": 0,
"784": 0,
"785": 0,
"786": 0,
"787": 0,
"788": 0,
"789": 0,
"790": 0,
"791": 0,
"792": 0,
"793": 0,
"794": 0,
"795": 0,
"796": 0,
"797": 0,
"798": 0,
"799": 0,
"800": 0,
"801": 0,
"802": 0,
"803": 0,
"804": 0,
"805": 0,
"806": 0,
"807": 0,
"808": 0,
"809": 0,
"810": 0,
"811": 0,
"812": 0,
"813": 0,
"814": 0,
"815": 0,
"816": 0,
"817": 0,
"818": 0,
"819": 0,
"820": 0,
"821": 0,
"822": 0,
"823": 0,
"824": 0,
"825": 0,
"826": 0,
"827": 0,
"828": 0,
"829": 0,
"830": 0,
"831": 0,
"832": 0,
"833": 0,
"834": 0,
"835": 0,
"836": 0,
"837": 0,
"838": 0,
"839": 0,
"840": 0,
"841": 0,
"842": 0,
"843": 0,
"844": 0,
"845": 0,
"846": 0,
"847": 0,
"848": 0,
"849": 0,
"850": 0,
"851": 0
},
"distdyn": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0,
"23": 0,
"24": 0,
"25": 0,
"26": 0,
"27": 0,
"28": 0,
"29": 0,
"30": 0,
"31": 0,
"32": 0,
"33": 0,
"34": 0,
"35": 0,
"36": 0,
"37": 0,
"38": 0,
"39": 0,
"40": 0,
"41": 0,
"42": 0,
"43": 0,
"44": 0,
"45": 0,
"46": 0,
"47": 0,
"48": 0,
"49": 0,
"50": 0,
"51": 0,
"52": 0,
"53": 0,
"54": 0,
"55": 0,
"56": 0,
"57": 0,
"58": 0,
"59": 0,
"60": 0,
"61": 0,
"62": 0,
"63": 0,
"64": 0,
"65": 0,
"66": 0,
"67": 0,
"68": 0,
"69": 0,
"70": 0,
"71": 0,
"72": 0,
"73": 0,
"74": 0,
"75": 0,
"76": 0,
"77": 0,
"78": 0,
"79": 0,
"80": 0,
"81": 0,
"82": 0,
"83": 0,
"84": 0,
"85": 0,
"86": 0,
"87": 0,
"88": 0,
"89": 0,
"90": 0,
"91": 0,
"92": 0,
"93": 0,
"94": 0,
"95": 0,
"96": 0,
"97": 0,
"98": 0,
"99": 0,
"100": 0,
"101": 0,
"102": 0,
"103": 0,
"104": 0,
"105": 0,
"106": 0,
"107": 0,
"108": 0,
"109": 0,
"110": 0,
"111": 0,
"112": 0,
"113": 0,
"114": 0,
"115": 0,
"116": 0,
"117": 0,
"118": 0,
"119": 0,
"120": 0,
"121": 0,
"122": 0,
"123": 0,
"124": 0,
"125": 0,
"126": 0,
"127": 0,
"128": 0,
"129": 0,
"130": 0,
"131": 0,
"132": 0,
"133": 0,
"134": 0,
"135": 0,
"136": 0,
"137": 0,
"138": 0,
"139": 0,
"140": 0,
"141": 0,
"142": 0,
"143": 0,
"144": 0,
"145": 0,
"146": 0,
"147": 0,
"148": 0,
"149": 0,
"150": 0,
"151": 0,
"152": 0,
"153": 0,
"154": 0,
"155": 0,
"156": 0,
"157": 0,
"158": 0,
"159": 0,
"160": 0,
"161": 0,
"162": 0,
"163": 0,
"164": 0,
"165": 0,
"166": 0,
"167": 0,
"168": 0,
"169": 0,
"170": 0,
"171": 0,
"172": 0,
"173": 0,
"174": 0,
"175": 0,
"176": 0,
"177": 0,
"178": 0,
"179": 0,
"180": 0,
"181": 0,
"182": 0,
"183": 0,
"184": 0,
"185": 0,
"186": 0,
"187": 0,
"188": 0,
"189": 0,
"190": 0,
"191": 0,
"192": 0,
"193": 0,
"194": 0,
"195": 0,
"196": 0,
"197": 0,
"198": 0,
"199": 0,
"200": 0,
"201": 0,
"202": 0,
"203": 0,
"204": 0,
"205": 0,
"206": 0,
"207": 0,
"208": 0,
"209": 0,
"210": 0,
"211": 0,
"212": 0,
"213": 0,
"214": 0,
"215": 0,
"216": 0,
"217": 0,
"218": 0,
"219": 0,
"220": 0,
"221": 0,
"222": 0,
"223": 0,
"224": 0,
"225": 0,
"226": 0,
"227": 0,
"228": 0,
"229": 0,
"230": 0,
"231": 0,
"232": 0,
"233": 0,
"234": 0,
"235": 0,
"236": 0,
"237": 0,
"238": 0,
"239": 0,
"240": 0,
"241": 0,
"242": 0,
"243": 0,
"244": 0,
"245": 0,
"246": 0,
"247": 0,
"248": 0,
"249": 0,
"250": 0,
"251": 0,
"252": 0,
"253": 0,
"254": 0,
"255": 0,
"256": 0,
"257": 0,
"258": 0,
"259": 0,
"260": 0,
"261": 0,
"262": 0,
"263": 0,
"264": 0,
"265": 0,
"266": 0,
"267": 0,
"268": 0,
"269": 0,
"270": 0,
"271": 0,
"272": 0,
"273": 0,
"274": 0,
"275": 0,
"276": 0,
"277": 0,
"278": 0,
"279": 0,
"280": 0,
"281": 0,
"282": 0,
"283": 0,
"284": 0,
"285": 0,
"286": 0,
"287": 0,
"288": 0,
"289": 0,
"290": 0,
"291": 0,
"292": 0,
"293": 0,
"294": 0,
"295": 0,
"296": 0,
"297": 0,
"298": 0,
"299": 0,
"300": 0,
"301": 0,
"302": 0,
"303": 0,
"304": 0,
"305": 0,
"306": 0,
"307": 0,
"308": 0,
"309": 0,
"310": 0,
"311": 0,
"312": 0,
"313": 0,
"314": 0,
"315": 0,
"316": 0,
"317": 0,
"318": 0,
"319": 0,
"320": 0,
"321": 0,
"322": 0,
"323": 0,
"324": 0,
"325": 0,
"326": 0,
"327": 0,
"328": 0,
"329": 0,
"330": 0,
"331": 0,
"332": 0,
"333": 0,
"334": 0,
"335": 0,
"336": 0,
"337": 0,
"338": 0,
"339": 0,
"340": 0,
"341": 0,
"342": 0,
"343": 0,
"344": 0,
"345": 0,
"346": 0,
"347": 0,
"348": 0,
"349": 0,
"350": 0,
"351": 0,
"352": 0,
"353": 0,
"354": 0,
"355": 0,
"356": 0,
"357": 0,
"358": 0,
"359": 0,
"360": 0,
"361": 0,
"362": 0,
"363": 0,
"364": 0,
"365": 0,
"366": 0,
"367": 0,
"368": 0,
"369": 0,
"370": 0,
"371": 0,
"372": 0,
"373": 0,
"374": 0,
"375": 0,
"376": 0,
"377": 0,
"378": 0,
"379": 0,
"380": 0,
"381": 0,
"382": 0,
"383": 0,
"384": 0,
"385": 0,
"386": 0,
"387": 0,
"388": 0,
"389": 0,
"390": 0,
"391": 0,
"392": 0,
"393": 0,
"394": 0,
"395": 0,
"396": 0,
"397": 0,
"398": 0,
"399": 0,
"400": 0,
"401": 0,
"402": 0,
"403": 0,
"404": 0,
"405": 0,
"406": 0,
"407": 0,
"408": 0,
"409": 0,
"410": 0,
"411": 0,
"412": 0,
"413": 0,
"414": 0,
"415": 0,
"416": 0,
"417": 0,
"418": 0,
"419": 0,
"420": 0,
"421": 0,
"422": 0,
"423": 0,
"424": 0,
"425": 0,
"426": 0,
"427": 0,
"428": 0,
"429": 0,
"430": 0,
"431": 0,
"432": 0,
"433": 0,
"434": 0,
"435": 0,
"436": 0,
"437": 0,
"438": 0,
"439": 0,
"440": 0,
"441": 0,
"442": 0,
"443": 0,
"444": 0,
"445": 0,
"446": 0,
"447": 0,
"448": 0,
"449": 0,
"450": 0,
"451": 0,
"452": 0,
"453": 0,
"454": 0,
"455": 0,
"456": 0,
"457": 0,
"458": 0,
"459": 0,
"460": 0,
"461": 0,
"462": 0,
"463": 0,
"464": 0,
"465": 0,
"466": 0,
"467": 0,
"468": 0,
"469": 0,
"470": 0,
"471": 0,
"472": 0,
"473": 0,
"474": 0,
"475": 0,
"476": 0,
"477": 0,
"478": 0,
"479": 0,
"480": 0,
"481": 0,
"482": 0,
"483": 0,
"484": 0,
"485": 0,
"486": 0,
"487": 0,
"488": 0,
"489": 0,
"490": 0,
"491": 0,
"492": 0,
"493": 0,
"494": 0,
"495": 0,
"496": 0,
"497": 0,
"498": 0,
"499": 0,
"500": 0,
"501": 0,
"502": 0,
"503": 0,
"504": 0,
"505": 0,
"506": 0,
"507": 0,
"508": 0,
"509": 0,
"510": 0,
"511": 0,
"512": 0,
"513": 0,
"514": 0,
"515": 0,
"516": 0,
"517": 0,
"518": 0,
"519": 0,
"520": 0,
"521": 0,
"522": 0,
"523": 0,
"524": 0,
"525": 0,
"526": 0,
"527": 0,
"528": 0,
"529": 0,
"530": 0,
"531": 0,
"532": 0,
"533": 0,
"534": 0,
"535": 0,
"536": 0,
"537": 0,
"538": 0,
"539": 0,
"540": 0,
"541": 0,
"542": 0,
"543": 0,
"544": 0,
"545": 0,
"546": 0,
"547": 0,
"548": 0,
"549": 0,
"550": 0,
"551": 0,
"552": 0,
"553": 0,
"554": 0,
"555": 0,
"556": 0,
"557": 0,
"558": 0,
"559": 0,
"560": 0,
"561": 0,
"562": 0,
"563": 0,
"564": 0,
"565": 0,
"566": 0,
"567": 0,
"568": 0,
"569": 0,
"570": 0,
"571": 0,
"572": 0,
"573": 0,
"574": 0,
"575": 0,
"576": 0,
"577": 0,
"578": 0,
"579": 0,
"580": 0,
"581": 0,
"582": 0,
"583": 0,
"584": 0,
"585": 0,
"586": 0,
"587": 0,
"588": 0,
"589": 0,
"590": 0,
"591": 0
},
"sane": 1,
"back": -1,
"was": 0
},
"data_type": 2,
"adler": 1
}
, i = 65536
, a = undefined;
let s, l, y;
if (this.ended)
return !1;
for (l = t === ~~t ? t : !0 === t ? h : 0,
"" === toString.call(e) ? n.input = new Uint8Array(e) : n.input = e,
n.next_in = 0,
n.avail_in = n.input.length; ;) {
0 === n.avail_out && (n.output = new Uint8Array(i),
n.next_out = 0,
n.avail_out = i),
s = inflate(n, l),
s === 2 && a && (s = r.inflateSetDictionary(n, a),
s === 0 ? s = r.inflate(n, l) : s === -3 && (s = 2));
while (n.avail_in > 0 && s === 1 && n.state.wrap > 0 && 0 !== e)
r.inflateReset(n),
s = r.inflate(n, l);
switch (s) {
case -2:
case -3:
case 2:
case -4:
return onEnd(s),
this.ended = !0,
!1
}
if (y = n.avail_out,
n.next_out && (0 === n.avail_out || s === d))
if ("string" === this.options.to) {
let e = o.utf8border(n.output, n.next_out)
, t = n.next_out - e
, r = o.buf2string(n.output, e);
n.next_out = t,
n.avail_out = i - t,
t && n.output.set(n.output.subarray(e, e + t), 0),
this.onData(r)
} else
this.onData(n.output.length === n.next_out ? n.output : n.output.subarray(0, n.next_out));
if (s !== f || 0 !== y) {
if (s === d)
return s = r.inflateEnd(this.strm),
this.onEnd(s),
this.ended = !0,
!0;
if (0 === n.avail_in)
break
}
}
return !0
}
function onEnd(e) {
e === 0 && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = i.flattenChunks(this.chunks)),
this.chunks = [],
this.err = e,
this.msg = ""
}
function ii(e,t,r,i){
const o = n
, a = i + r;
e ^= -1;
for (let n = i; n < a; n++)
e = e >>> 8 ^ o)];
return ~e
}
function aaaaaa(e,h,f,d,p,m,v,g){
const y = g.bits;
let b, x, w, _, S, C, E = 0, k = 0, T = 0, O = 0, P = 0, M = 0, A = 0, D = 0, j = 0, I = 0, R = null, $ = 0;
const N = new Uint16Array(t + 1)
, F = new Uint16Array(t + 1);
let L, B, z, V = null, H = 0;
for (E = 0; E <= t; E++)
N = 0;
for (k = 0; k < d; k++)
N]++;
for (P = y,
O = t; O >= 1; O--)
if (0 !== N)
break;
if (P > O && (P = O),
0 === O)
return p = 20971520,
p = 20971520,
g.bits = 1,
0;
for (T = 1; T < O; T++)
if (0 !== N)
break;
for (P < T && (P = T),
D = 1,
E = 1; E <= t; E++)
if (D <<= 1,
D -= N,
D < 0)
return -1;
if (D > 0 && (e === ii || 1 !== O))
return -1;
for (F = 0,
E = 1; E < t; E++)
F = F + N;
for (k = 0; k < d; k++)
0 !== h && (v]++] = k);
if (e === i ? (R = V = v,
C = 19) : e === o ? (R = s,
$ -= 257,
V = l,
H -= 257,
C = 256) : (R = u,
V = c,
C = -1),
I = 0,
k = 0,
E = T,
S = m,
M = P,
A = 0,
w = -1,
j = 1 << P,
_ = j - 1,
e === o && j > n || e === a && j > r)
return 1;
for (; ; ) {
L = E - A,
v < C ? (B = 0,
z = v) : v > C ? (B = V],
z = R[$ + v]) : (B = 96,
z = 0),
b = 1 << E - A,
x = 1 << M,
T = x;
do {
x -= b,
p = L << 24 | B << 16 | z
} while (0 !== x);
b = 1 << E - 1;
while (I & b)
b >>= 1;
if (0 !== b ? (I &= b - 1,
I += b) : I = 0,
k++,
0 === --N) {
if (E === O)
break;
E = h]
}
if (E > P && (I & _) !== w) {
0 === A && (A = P),
S += T,
M = E - A,
D = 1 << M;
while (M + A < O) {
if (D -= N,
D <= 0)
break;
M++,
D <<= 1
}
if (j += 1 << M,
e === o && j > n || e === a && j > r)
return 1;
w = I & _,
p = P << 24 | M << 16 | S - m
}
}
return 0 !== I && (p = E - A << 24 | 64 << 16),
g.bits = P,
0
}
function ungzip(e, t) {
const n = new y(t);
if (pusher(e),
n.err)
throw n.msg || a;
return n.result
}
function l(t) {
var e, n, i = t.words.length, a = new Uint8Array(t.sigBytes), o = 0;
for (n = 0; n < i; n++)
e = t.words,
a = e >> 24,
a = e >> 16 & 255,
a = e >> 8 & 255,
a = 255 & e;
return a
}
decrypt(e);结果如下,成功解密。
[*]编写python代码,联动js代码,实现实时数据的解密。
var CryptoJS = require("crypto-js")
var pako = require("pako")
var e = "数据";
function decrypt(e) {
var n = CryptoJS.enc.Utf8.parse(27..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + 24901..toString(36).toLowerCase() + 33..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + 976..toString(36).toLowerCase() + 20..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -39)
}
)).join("") + function () {
var t = Array.prototype.slice.call(arguments)
, e = t.shift();
return t.reverse().map((function (t, n) {
return String.fromCharCode(t - e - 24 - n)
}
)).join("")
}(10, 127, 154, 91, 151, 91, 136) + 11..toString(36).toLowerCase() + 13..toString(36).toLowerCase().split("").map((function (t) {
return String.fromCharCode(t.charCodeAt() + -13)
}
)).join(""));
a = CryptoJS.AES.decrypt(e, n, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
o = l(a);
r = pako.ungzip(o, {
to: "string"
})
console.log(JSON.parse(r));
}
function l(t) {
var e, n, i = t.words.length, a = new Uint8Array(t.sigBytes), o = 0;
for (n = 0; n < i; n++)
e = t.words,
a = e >> 24,
a = e >> 16 & 255,
a = e >> 8 & 255,
a = 255 & e;
return a
}
decrypt(e);运行结果老是报错。
经过检查,发现是通过python获取的数据跟页面上的数据不太一致造成的,直接复制页面上的响应结果没有一点问题,不知道是什么原因造成的,如果有大佬知道问题所在,教教小弟。
小总结
一点小经验,有时候找代码的时候可以看看它是写在哪个文件下的,如果是位于chunk开头的文件里,基本上是使用了第三方库;如果是位于app开头的文件里,基本上是自己写的。
ungzip函数位于chunk开头的文件里,如果抠代码感觉到有难度,可以直接先上网搜搜。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]