2021-05-27 05:50:04 +00:00
|
|
|
# import zlib
|
2015-01-28 01:04:11 +00:00
|
|
|
import uzlib as zlib
|
|
|
|
|
2021-05-27 05:50:04 +00:00
|
|
|
FTEXT = 1
|
|
|
|
FHCRC = 2
|
|
|
|
FEXTRA = 4
|
|
|
|
FNAME = 8
|
2015-01-28 01:04:11 +00:00
|
|
|
FCOMMENT = 16
|
|
|
|
|
2021-05-27 05:50:04 +00:00
|
|
|
|
2015-01-28 01:04:11 +00:00
|
|
|
def decompress(data):
|
2021-05-27 05:50:04 +00:00
|
|
|
assert data[0] == 0x1F and data[1] == 0x8B
|
2015-01-28 01:04:11 +00:00
|
|
|
assert data[2] == 8
|
|
|
|
flg = data[3]
|
2021-05-27 05:50:04 +00:00
|
|
|
assert flg & 0xE0 == 0
|
2015-01-28 01:04:11 +00:00
|
|
|
i = 10
|
|
|
|
if flg & FEXTRA:
|
|
|
|
i += data[11] << 8 + data[10] + 2
|
|
|
|
if flg & FNAME:
|
|
|
|
while data[i]:
|
|
|
|
i += 1
|
|
|
|
i += 1
|
|
|
|
if flg & FCOMMENT:
|
|
|
|
while data[i]:
|
|
|
|
i += 1
|
|
|
|
i += 1
|
|
|
|
if flg & FHCRC:
|
|
|
|
i += 2
|
|
|
|
return zlib.decompress(memoryview(data)[i:], -15)
|