polyfile-weave 0.5.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of polyfile-weave might be problematic. Click here for more details.

Files changed (585) hide show
  1. polyfile/__init__.py +15 -0
  2. polyfile/__main__.py +394 -0
  3. polyfile/arithmetic.py +27 -0
  4. polyfile/ast.py +114 -0
  5. polyfile/debugger.py +1039 -0
  6. polyfile/expressions.py +346 -0
  7. polyfile/fileutils.py +343 -0
  8. polyfile/html.py +135 -0
  9. polyfile/http/__init__.py +1 -0
  10. polyfile/http/defacto.py +37 -0
  11. polyfile/http/deprecated.py +51 -0
  12. polyfile/http/experimental.py +67 -0
  13. polyfile/http/http_11.py +548 -0
  14. polyfile/http/matcher.py +37 -0
  15. polyfile/http/structured_headers.py +48 -0
  16. polyfile/iterators.py +72 -0
  17. polyfile/jpeg.py +24 -0
  18. polyfile/kaitai/__init__.py +0 -0
  19. polyfile/kaitai/compiler.py +156 -0
  20. polyfile/kaitai/parser.py +312 -0
  21. polyfile/kaitai/parsers/__init__.py +0 -0
  22. polyfile/kaitai/parsers/aix_utmp.py +116 -0
  23. polyfile/kaitai/parsers/allegro_dat.py +367 -0
  24. polyfile/kaitai/parsers/andes_firmware.py +64 -0
  25. polyfile/kaitai/parsers/android_bootldr_asus.py +105 -0
  26. polyfile/kaitai/parsers/android_bootldr_huawei.py +181 -0
  27. polyfile/kaitai/parsers/android_bootldr_qcom.py +217 -0
  28. polyfile/kaitai/parsers/android_dto.py +138 -0
  29. polyfile/kaitai/parsers/android_img.py +319 -0
  30. polyfile/kaitai/parsers/android_nanoapp_header.py +83 -0
  31. polyfile/kaitai/parsers/android_opengl_shaders_cache.py +151 -0
  32. polyfile/kaitai/parsers/android_sparse.py +237 -0
  33. polyfile/kaitai/parsers/android_super.py +401 -0
  34. polyfile/kaitai/parsers/apm_partition_table.py +196 -0
  35. polyfile/kaitai/parsers/apple_single_double.py +180 -0
  36. polyfile/kaitai/parsers/asn1_der.py +235 -0
  37. polyfile/kaitai/parsers/au.py +138 -0
  38. polyfile/kaitai/parsers/avantes_roh60.py +112 -0
  39. polyfile/kaitai/parsers/avi.py +296 -0
  40. polyfile/kaitai/parsers/bcd.py +111 -0
  41. polyfile/kaitai/parsers/bitcoin_transaction.py +210 -0
  42. polyfile/kaitai/parsers/blender_blend.py +334 -0
  43. polyfile/kaitai/parsers/bmp.py +780 -0
  44. polyfile/kaitai/parsers/bson.py +411 -0
  45. polyfile/kaitai/parsers/btrfs_stream.py +318 -0
  46. polyfile/kaitai/parsers/bytes_with_io.py +27 -0
  47. polyfile/kaitai/parsers/chrome_pak.py +194 -0
  48. polyfile/kaitai/parsers/code_6502.py +456 -0
  49. polyfile/kaitai/parsers/compressed_resource.py +217 -0
  50. polyfile/kaitai/parsers/cpio_old_le.py +154 -0
  51. polyfile/kaitai/parsers/cramfs.py +344 -0
  52. polyfile/kaitai/parsers/creative_voice_file.py +342 -0
  53. polyfile/kaitai/parsers/dbf.py +274 -0
  54. polyfile/kaitai/parsers/dcmp_0.py +664 -0
  55. polyfile/kaitai/parsers/dcmp_1.py +422 -0
  56. polyfile/kaitai/parsers/dcmp_2.py +312 -0
  57. polyfile/kaitai/parsers/dcmp_variable_length_integer.py +66 -0
  58. polyfile/kaitai/parsers/dex.py +1086 -0
  59. polyfile/kaitai/parsers/dicom.py +4370 -0
  60. polyfile/kaitai/parsers/dime_message.py +201 -0
  61. polyfile/kaitai/parsers/dns_packet.py +569 -0
  62. polyfile/kaitai/parsers/doom_wad.py +654 -0
  63. polyfile/kaitai/parsers/dos_datetime.py +191 -0
  64. polyfile/kaitai/parsers/dos_mz.py +172 -0
  65. polyfile/kaitai/parsers/ds_store.py +513 -0
  66. polyfile/kaitai/parsers/dtb.py +310 -0
  67. polyfile/kaitai/parsers/dune_2_pak.py +126 -0
  68. polyfile/kaitai/parsers/edid.py +472 -0
  69. polyfile/kaitai/parsers/efivar_signature_list.py +331 -0
  70. polyfile/kaitai/parsers/elf.py +2482 -0
  71. polyfile/kaitai/parsers/ethernet_frame.py +114 -0
  72. polyfile/kaitai/parsers/exif.py +723 -0
  73. polyfile/kaitai/parsers/ext2.py +537 -0
  74. polyfile/kaitai/parsers/fallout2_dat.py +187 -0
  75. polyfile/kaitai/parsers/fallout_dat.py +156 -0
  76. polyfile/kaitai/parsers/fasttracker_xm_module.py +558 -0
  77. polyfile/kaitai/parsers/ftl_dat.py +90 -0
  78. polyfile/kaitai/parsers/genmidi_op2.py +161 -0
  79. polyfile/kaitai/parsers/gettext_mo.py +541 -0
  80. polyfile/kaitai/parsers/gif.py +492 -0
  81. polyfile/kaitai/parsers/gimp_brush.py +244 -0
  82. polyfile/kaitai/parsers/glibc_utmp.py +114 -0
  83. polyfile/kaitai/parsers/gltf_binary.py +132 -0
  84. polyfile/kaitai/parsers/google_protobuf.py +151 -0
  85. polyfile/kaitai/parsers/gpt_partition_table.py +175 -0
  86. polyfile/kaitai/parsers/gran_turismo_vol.py +140 -0
  87. polyfile/kaitai/parsers/grub2_font.py +337 -0
  88. polyfile/kaitai/parsers/gzip.py +232 -0
  89. polyfile/kaitai/parsers/hashcat_restore.py +60 -0
  90. polyfile/kaitai/parsers/hccap.py +111 -0
  91. polyfile/kaitai/parsers/hccapx.py +103 -0
  92. polyfile/kaitai/parsers/heaps_pak.py +177 -0
  93. polyfile/kaitai/parsers/heroes_of_might_and_magic_agg.py +116 -0
  94. polyfile/kaitai/parsers/heroes_of_might_and_magic_bmp.py +34 -0
  95. polyfile/kaitai/parsers/icmp_packet.py +136 -0
  96. polyfile/kaitai/parsers/ico.py +129 -0
  97. polyfile/kaitai/parsers/id3v1_1.py +220 -0
  98. polyfile/kaitai/parsers/id3v2_3.py +324 -0
  99. polyfile/kaitai/parsers/id3v2_4.py +423 -0
  100. polyfile/kaitai/parsers/ines.py +282 -0
  101. polyfile/kaitai/parsers/ipv4_packet.py +158 -0
  102. polyfile/kaitai/parsers/ipv6_packet.py +55 -0
  103. polyfile/kaitai/parsers/iso9660.py +544 -0
  104. polyfile/kaitai/parsers/java_class.py +1113 -0
  105. polyfile/kaitai/parsers/jpeg.py +361 -0
  106. polyfile/kaitai/parsers/luks.py +149 -0
  107. polyfile/kaitai/parsers/lzh.py +165 -0
  108. polyfile/kaitai/parsers/mac_os_resource_snd.py +493 -0
  109. polyfile/kaitai/parsers/mach_o.py +3033 -0
  110. polyfile/kaitai/parsers/mach_o_fat.py +92 -0
  111. polyfile/kaitai/parsers/magicavoxel_vox.py +391 -0
  112. polyfile/kaitai/parsers/manifest.json +1 -0
  113. polyfile/kaitai/parsers/mbr_partition_table.py +119 -0
  114. polyfile/kaitai/parsers/mcap.py +1015 -0
  115. polyfile/kaitai/parsers/microsoft_cfb.py +293 -0
  116. polyfile/kaitai/parsers/microsoft_network_monitor_v2.py +309 -0
  117. polyfile/kaitai/parsers/microsoft_pe.py +765 -0
  118. polyfile/kaitai/parsers/mifare_classic.py +706 -0
  119. polyfile/kaitai/parsers/minecraft_nbt.py +449 -0
  120. polyfile/kaitai/parsers/monomakh_sapr_chg.py +69 -0
  121. polyfile/kaitai/parsers/mozilla_mar.py +239 -0
  122. polyfile/kaitai/parsers/mp4.py +333 -0
  123. polyfile/kaitai/parsers/msgpack.py +467 -0
  124. polyfile/kaitai/parsers/nitf.py +1189 -0
  125. polyfile/kaitai/parsers/nt_mdt_pal.py +155 -0
  126. polyfile/kaitai/parsers/ogg.py +118 -0
  127. polyfile/kaitai/parsers/openpgp_message.py +993 -0
  128. polyfile/kaitai/parsers/packet_ppi.py +515 -0
  129. polyfile/kaitai/parsers/pcap.py +344 -0
  130. polyfile/kaitai/parsers/pcf_font.py +506 -0
  131. polyfile/kaitai/parsers/pcx.py +195 -0
  132. polyfile/kaitai/parsers/pcx_dcx.py +79 -0
  133. polyfile/kaitai/parsers/phar_without_stub.py +399 -0
  134. polyfile/kaitai/parsers/php_serialized_value.py +505 -0
  135. polyfile/kaitai/parsers/png.py +721 -0
  136. polyfile/kaitai/parsers/protocol_body.py +260 -0
  137. polyfile/kaitai/parsers/psx_tim.py +104 -0
  138. polyfile/kaitai/parsers/python_pickle.py +718 -0
  139. polyfile/kaitai/parsers/python_pyc_27.py +510 -0
  140. polyfile/kaitai/parsers/quake_mdl.py +441 -0
  141. polyfile/kaitai/parsers/quake_pak.py +112 -0
  142. polyfile/kaitai/parsers/quicktime_mov.py +634 -0
  143. polyfile/kaitai/parsers/rar.py +265 -0
  144. polyfile/kaitai/parsers/regf.py +569 -0
  145. polyfile/kaitai/parsers/renderware_binary_stream.py +877 -0
  146. polyfile/kaitai/parsers/resource_fork.py +611 -0
  147. polyfile/kaitai/parsers/respack.py +57 -0
  148. polyfile/kaitai/parsers/riff.py +409 -0
  149. polyfile/kaitai/parsers/rpm.py +964 -0
  150. polyfile/kaitai/parsers/rtcp_payload.py +579 -0
  151. polyfile/kaitai/parsers/rtp_packet.py +150 -0
  152. polyfile/kaitai/parsers/rtpdump.py +115 -0
  153. polyfile/kaitai/parsers/ruby_marshal.py +423 -0
  154. polyfile/kaitai/parsers/s3m.py +493 -0
  155. polyfile/kaitai/parsers/saints_row_2_vpp_pc.py +254 -0
  156. polyfile/kaitai/parsers/shapefile_index.py +174 -0
  157. polyfile/kaitai/parsers/shapefile_main.py +893 -0
  158. polyfile/kaitai/parsers/some_ip.py +209 -0
  159. polyfile/kaitai/parsers/some_ip_container.py +37 -0
  160. polyfile/kaitai/parsers/some_ip_sd.py +86 -0
  161. polyfile/kaitai/parsers/some_ip_sd_entries.py +160 -0
  162. polyfile/kaitai/parsers/some_ip_sd_options.py +374 -0
  163. polyfile/kaitai/parsers/specpr.py +404 -0
  164. polyfile/kaitai/parsers/sqlite3.py +472 -0
  165. polyfile/kaitai/parsers/ssh_public_key.py +252 -0
  166. polyfile/kaitai/parsers/standard_midi_file.py +390 -0
  167. polyfile/kaitai/parsers/stl.py +111 -0
  168. polyfile/kaitai/parsers/sudoers_ts.py +201 -0
  169. polyfile/kaitai/parsers/swf.py +406 -0
  170. polyfile/kaitai/parsers/systemd_journal.py +361 -0
  171. polyfile/kaitai/parsers/tcp_segment.py +57 -0
  172. polyfile/kaitai/parsers/tga.py +213 -0
  173. polyfile/kaitai/parsers/tls_client_hello.py +293 -0
  174. polyfile/kaitai/parsers/tr_dos_image.py +322 -0
  175. polyfile/kaitai/parsers/tsm.py +198 -0
  176. polyfile/kaitai/parsers/ttf.py +1847 -0
  177. polyfile/kaitai/parsers/udp_datagram.py +42 -0
  178. polyfile/kaitai/parsers/uefi_te.py +236 -0
  179. polyfile/kaitai/parsers/uimage.py +198 -0
  180. polyfile/kaitai/parsers/utf8_string.py +137 -0
  181. polyfile/kaitai/parsers/vfat.py +410 -0
  182. polyfile/kaitai/parsers/vlq_base128_be.py +104 -0
  183. polyfile/kaitai/parsers/vlq_base128_le.py +129 -0
  184. polyfile/kaitai/parsers/vmware_vmdk.py +167 -0
  185. polyfile/kaitai/parsers/vp8_ivf.py +112 -0
  186. polyfile/kaitai/parsers/warcraft_2_pud.py +423 -0
  187. polyfile/kaitai/parsers/wav.py +1014 -0
  188. polyfile/kaitai/parsers/websocket.py +167 -0
  189. polyfile/kaitai/parsers/windows_evt_log.py +304 -0
  190. polyfile/kaitai/parsers/windows_lnk_file.py +467 -0
  191. polyfile/kaitai/parsers/windows_minidump.py +575 -0
  192. polyfile/kaitai/parsers/windows_resource_file.py +243 -0
  193. polyfile/kaitai/parsers/windows_shell_items.py +190 -0
  194. polyfile/kaitai/parsers/windows_systemtime.py +52 -0
  195. polyfile/kaitai/parsers/wmf.py +502 -0
  196. polyfile/kaitai/parsers/xar.py +181 -0
  197. polyfile/kaitai/parsers/xwd.py +189 -0
  198. polyfile/kaitai/parsers/zip.py +685 -0
  199. polyfile/kaitai/parsers/zisofs.py +158 -0
  200. polyfile/kaitai/parsers/zx_spectrum_tap.py +184 -0
  201. polyfile/kaitaimatcher.py +113 -0
  202. polyfile/languagematcher.py +217 -0
  203. polyfile/logger.py +135 -0
  204. polyfile/magic.py +2983 -0
  205. polyfile/magic_defs/COPYING +29 -0
  206. polyfile/magic_defs/__init__.py +0 -0
  207. polyfile/magic_defs/acorn +102 -0
  208. polyfile/magic_defs/adi +13 -0
  209. polyfile/magic_defs/adventure +122 -0
  210. polyfile/magic_defs/aes +29 -0
  211. polyfile/magic_defs/algol68 +35 -0
  212. polyfile/magic_defs/allegro +9 -0
  213. polyfile/magic_defs/alliant +18 -0
  214. polyfile/magic_defs/alpha +32 -0
  215. polyfile/magic_defs/amanda +12 -0
  216. polyfile/magic_defs/amigaos +218 -0
  217. polyfile/magic_defs/android +259 -0
  218. polyfile/magic_defs/animation +1197 -0
  219. polyfile/magic_defs/aout +46 -0
  220. polyfile/magic_defs/apache +28 -0
  221. polyfile/magic_defs/apl +7 -0
  222. polyfile/magic_defs/apple +773 -0
  223. polyfile/magic_defs/application +7 -0
  224. polyfile/magic_defs/applix +13 -0
  225. polyfile/magic_defs/apt +52 -0
  226. polyfile/magic_defs/archive +2586 -0
  227. polyfile/magic_defs/aria +38 -0
  228. polyfile/magic_defs/arm +50 -0
  229. polyfile/magic_defs/asf +132 -0
  230. polyfile/magic_defs/assembler +18 -0
  231. polyfile/magic_defs/asterix +18 -0
  232. polyfile/magic_defs/att3b +41 -0
  233. polyfile/magic_defs/audio +1291 -0
  234. polyfile/magic_defs/avm +33 -0
  235. polyfile/magic_defs/basis +18 -0
  236. polyfile/magic_defs/beetle +7 -0
  237. polyfile/magic_defs/ber +65 -0
  238. polyfile/magic_defs/bflt +14 -0
  239. polyfile/magic_defs/bhl +10 -0
  240. polyfile/magic_defs/bioinformatics +178 -0
  241. polyfile/magic_defs/biosig +154 -0
  242. polyfile/magic_defs/blackberry +8 -0
  243. polyfile/magic_defs/blcr +25 -0
  244. polyfile/magic_defs/blender +50 -0
  245. polyfile/magic_defs/blit +24 -0
  246. polyfile/magic_defs/bm +10 -0
  247. polyfile/magic_defs/bout +11 -0
  248. polyfile/magic_defs/bsdi +33 -0
  249. polyfile/magic_defs/bsi +10 -0
  250. polyfile/magic_defs/btsnoop +13 -0
  251. polyfile/magic_defs/burp +7 -0
  252. polyfile/magic_defs/bytecode +41 -0
  253. polyfile/magic_defs/c-lang +110 -0
  254. polyfile/magic_defs/c64 +531 -0
  255. polyfile/magic_defs/cad +437 -0
  256. polyfile/magic_defs/cafebabe +107 -0
  257. polyfile/magic_defs/cbor +21 -0
  258. polyfile/magic_defs/ccf +14 -0
  259. polyfile/magic_defs/cddb +12 -0
  260. polyfile/magic_defs/chord +15 -0
  261. polyfile/magic_defs/cisco +12 -0
  262. polyfile/magic_defs/citrus +12 -0
  263. polyfile/magic_defs/clarion +27 -0
  264. polyfile/magic_defs/claris +48 -0
  265. polyfile/magic_defs/clipper +65 -0
  266. polyfile/magic_defs/clojure +30 -0
  267. polyfile/magic_defs/coff +98 -0
  268. polyfile/magic_defs/commands +201 -0
  269. polyfile/magic_defs/communications +22 -0
  270. polyfile/magic_defs/compress +461 -0
  271. polyfile/magic_defs/console +1213 -0
  272. polyfile/magic_defs/convex +69 -0
  273. polyfile/magic_defs/coverage +91 -0
  274. polyfile/magic_defs/cracklib +14 -0
  275. polyfile/magic_defs/crypto +31 -0
  276. polyfile/magic_defs/csv +8 -0
  277. polyfile/magic_defs/ctags +6 -0
  278. polyfile/magic_defs/ctf +23 -0
  279. polyfile/magic_defs/cubemap +8 -0
  280. polyfile/magic_defs/cups +56 -0
  281. polyfile/magic_defs/dact +11 -0
  282. polyfile/magic_defs/database +886 -0
  283. polyfile/magic_defs/dataone +47 -0
  284. polyfile/magic_defs/dbpf +15 -0
  285. polyfile/magic_defs/der +146 -0
  286. polyfile/magic_defs/diamond +12 -0
  287. polyfile/magic_defs/dif +33 -0
  288. polyfile/magic_defs/diff +41 -0
  289. polyfile/magic_defs/digital +59 -0
  290. polyfile/magic_defs/dolby +69 -0
  291. polyfile/magic_defs/dsf +25 -0
  292. polyfile/magic_defs/dump +96 -0
  293. polyfile/magic_defs/dwarfs +45 -0
  294. polyfile/magic_defs/dyadic +61 -0
  295. polyfile/magic_defs/ebml +8 -0
  296. polyfile/magic_defs/edid +11 -0
  297. polyfile/magic_defs/editors +43 -0
  298. polyfile/magic_defs/efi +15 -0
  299. polyfile/magic_defs/elf +379 -0
  300. polyfile/magic_defs/encore +22 -0
  301. polyfile/magic_defs/epoc +62 -0
  302. polyfile/magic_defs/erlang +21 -0
  303. polyfile/magic_defs/espressif +57 -0
  304. polyfile/magic_defs/esri +28 -0
  305. polyfile/magic_defs/etf +33 -0
  306. polyfile/magic_defs/fcs +9 -0
  307. polyfile/magic_defs/filesystems +2694 -0
  308. polyfile/magic_defs/finger +16 -0
  309. polyfile/magic_defs/firmware +133 -0
  310. polyfile/magic_defs/flash +62 -0
  311. polyfile/magic_defs/flif +36 -0
  312. polyfile/magic_defs/fonts +449 -0
  313. polyfile/magic_defs/forth +82 -0
  314. polyfile/magic_defs/fortran +9 -0
  315. polyfile/magic_defs/frame +62 -0
  316. polyfile/magic_defs/freebsd +164 -0
  317. polyfile/magic_defs/fsav +128 -0
  318. polyfile/magic_defs/fusecompress +12 -0
  319. polyfile/magic_defs/games +696 -0
  320. polyfile/magic_defs/gcc +17 -0
  321. polyfile/magic_defs/gconv +10 -0
  322. polyfile/magic_defs/gentoo +85 -0
  323. polyfile/magic_defs/geo +166 -0
  324. polyfile/magic_defs/geos +20 -0
  325. polyfile/magic_defs/gimp +77 -0
  326. polyfile/magic_defs/git +13 -0
  327. polyfile/magic_defs/glibc +21 -0
  328. polyfile/magic_defs/gnome +59 -0
  329. polyfile/magic_defs/gnu +173 -0
  330. polyfile/magic_defs/gnumeric +8 -0
  331. polyfile/magic_defs/gpt +240 -0
  332. polyfile/magic_defs/gpu +28 -0
  333. polyfile/magic_defs/grace +21 -0
  334. polyfile/magic_defs/graphviz +12 -0
  335. polyfile/magic_defs/gringotts +48 -0
  336. polyfile/magic_defs/guile +13 -0
  337. polyfile/magic_defs/hardware +12 -0
  338. polyfile/magic_defs/hitachi-sh +30 -0
  339. polyfile/magic_defs/hp +433 -0
  340. polyfile/magic_defs/human68k +26 -0
  341. polyfile/magic_defs/ibm370 +52 -0
  342. polyfile/magic_defs/ibm6000 +35 -0
  343. polyfile/magic_defs/icc +214 -0
  344. polyfile/magic_defs/iff +80 -0
  345. polyfile/magic_defs/images +4210 -0
  346. polyfile/magic_defs/inform +9 -0
  347. polyfile/magic_defs/intel +310 -0
  348. polyfile/magic_defs/interleaf +9 -0
  349. polyfile/magic_defs/island +10 -0
  350. polyfile/magic_defs/ispell +63 -0
  351. polyfile/magic_defs/isz +15 -0
  352. polyfile/magic_defs/java +52 -0
  353. polyfile/magic_defs/javascript +171 -0
  354. polyfile/magic_defs/jpeg +252 -0
  355. polyfile/magic_defs/json +8 -0
  356. polyfile/magic_defs/karma +9 -0
  357. polyfile/magic_defs/kde +11 -0
  358. polyfile/magic_defs/keepass +20 -0
  359. polyfile/magic_defs/kerberos +45 -0
  360. polyfile/magic_defs/kicad +85 -0
  361. polyfile/magic_defs/kml +34 -0
  362. polyfile/magic_defs/lammps +64 -0
  363. polyfile/magic_defs/lecter +6 -0
  364. polyfile/magic_defs/lex +12 -0
  365. polyfile/magic_defs/lif +50 -0
  366. polyfile/magic_defs/linux +557 -0
  367. polyfile/magic_defs/lisp +78 -0
  368. polyfile/magic_defs/llvm +22 -0
  369. polyfile/magic_defs/locoscript +12 -0
  370. polyfile/magic_defs/lua +31 -0
  371. polyfile/magic_defs/luks +126 -0
  372. polyfile/magic_defs/m4 +11 -0
  373. polyfile/magic_defs/mach +303 -0
  374. polyfile/magic_defs/macintosh +505 -0
  375. polyfile/magic_defs/macos +7 -0
  376. polyfile/magic_defs/magic +10 -0
  377. polyfile/magic_defs/magic.mgc +0 -0
  378. polyfile/magic_defs/mail.news +132 -0
  379. polyfile/magic_defs/make +21 -0
  380. polyfile/magic_defs/map +413 -0
  381. polyfile/magic_defs/maple +109 -0
  382. polyfile/magic_defs/marc21 +30 -0
  383. polyfile/magic_defs/mathcad +8 -0
  384. polyfile/magic_defs/mathematica +188 -0
  385. polyfile/magic_defs/matroska +17 -0
  386. polyfile/magic_defs/mcrypt +52 -0
  387. polyfile/magic_defs/measure +44 -0
  388. polyfile/magic_defs/mercurial +13 -0
  389. polyfile/magic_defs/metastore +8 -0
  390. polyfile/magic_defs/meteorological +53 -0
  391. polyfile/magic_defs/microfocus +21 -0
  392. polyfile/magic_defs/mime +9 -0
  393. polyfile/magic_defs/mips +120 -0
  394. polyfile/magic_defs/mirage +8 -0
  395. polyfile/magic_defs/misctools +140 -0
  396. polyfile/magic_defs/mkid +11 -0
  397. polyfile/magic_defs/mlssa +8 -0
  398. polyfile/magic_defs/mmdf +6 -0
  399. polyfile/magic_defs/modem +92 -0
  400. polyfile/magic_defs/modulefile +9 -0
  401. polyfile/magic_defs/motorola +71 -0
  402. polyfile/magic_defs/mozilla +37 -0
  403. polyfile/magic_defs/msdos +2304 -0
  404. polyfile/magic_defs/msooxml +68 -0
  405. polyfile/magic_defs/msvc +222 -0
  406. polyfile/magic_defs/msx +309 -0
  407. polyfile/magic_defs/mup +24 -0
  408. polyfile/magic_defs/music +17 -0
  409. polyfile/magic_defs/nasa +7 -0
  410. polyfile/magic_defs/natinst +24 -0
  411. polyfile/magic_defs/ncr +49 -0
  412. polyfile/magic_defs/neko +12 -0
  413. polyfile/magic_defs/netbsd +251 -0
  414. polyfile/magic_defs/netscape +26 -0
  415. polyfile/magic_defs/netware +11 -0
  416. polyfile/magic_defs/news +13 -0
  417. polyfile/magic_defs/nifty +202 -0
  418. polyfile/magic_defs/nim-lang +29 -0
  419. polyfile/magic_defs/nitpicker +14 -0
  420. polyfile/magic_defs/numpy +9 -0
  421. polyfile/magic_defs/oasis +12 -0
  422. polyfile/magic_defs/ocaml +14 -0
  423. polyfile/magic_defs/octave +6 -0
  424. polyfile/magic_defs/ole2compounddocs +760 -0
  425. polyfile/magic_defs/olf +98 -0
  426. polyfile/magic_defs/openfst +17 -0
  427. polyfile/magic_defs/opentimestamps +16 -0
  428. polyfile/magic_defs/oric +16 -0
  429. polyfile/magic_defs/os2 +186 -0
  430. polyfile/magic_defs/os400 +39 -0
  431. polyfile/magic_defs/os9 +80 -0
  432. polyfile/magic_defs/osf1 +10 -0
  433. polyfile/magic_defs/palm +156 -0
  434. polyfile/magic_defs/parix +13 -0
  435. polyfile/magic_defs/parrot +22 -0
  436. polyfile/magic_defs/pascal +39 -0
  437. polyfile/magic_defs/pbf +11 -0
  438. polyfile/magic_defs/pbm +8 -0
  439. polyfile/magic_defs/pc88 +24 -0
  440. polyfile/magic_defs/pc98 +77 -0
  441. polyfile/magic_defs/pci_ids +116 -0
  442. polyfile/magic_defs/pcjr +8 -0
  443. polyfile/magic_defs/pdf +51 -0
  444. polyfile/magic_defs/pdp +42 -0
  445. polyfile/magic_defs/perl +100 -0
  446. polyfile/magic_defs/pgf +52 -0
  447. polyfile/magic_defs/pgp +581 -0
  448. polyfile/magic_defs/pgp-binary-keys +388 -0
  449. polyfile/magic_defs/pkgadd +7 -0
  450. polyfile/magic_defs/plan9 +25 -0
  451. polyfile/magic_defs/playdate +57 -0
  452. polyfile/magic_defs/plus5 +18 -0
  453. polyfile/magic_defs/pmem +46 -0
  454. polyfile/magic_defs/polyfile_zip +5 -0
  455. polyfile/magic_defs/polyml +23 -0
  456. polyfile/magic_defs/printer +269 -0
  457. polyfile/magic_defs/project +10 -0
  458. polyfile/magic_defs/psdbms +14 -0
  459. polyfile/magic_defs/psl +14 -0
  460. polyfile/magic_defs/pulsar +13 -0
  461. polyfile/magic_defs/puzzle +17 -0
  462. polyfile/magic_defs/pwsafe +14 -0
  463. polyfile/magic_defs/pyramid +12 -0
  464. polyfile/magic_defs/python +305 -0
  465. polyfile/magic_defs/qt +30 -0
  466. polyfile/magic_defs/revision +66 -0
  467. polyfile/magic_defs/riff +840 -0
  468. polyfile/magic_defs/rinex +44 -0
  469. polyfile/magic_defs/ringdove +45 -0
  470. polyfile/magic_defs/rpi +52 -0
  471. polyfile/magic_defs/rpm +45 -0
  472. polyfile/magic_defs/rpmsg +7 -0
  473. polyfile/magic_defs/rst +11 -0
  474. polyfile/magic_defs/rtf +94 -0
  475. polyfile/magic_defs/ruby +55 -0
  476. polyfile/magic_defs/rust +21 -0
  477. polyfile/magic_defs/sc +7 -0
  478. polyfile/magic_defs/sccs +24 -0
  479. polyfile/magic_defs/scientific +144 -0
  480. polyfile/magic_defs/securitycerts +6 -0
  481. polyfile/magic_defs/selinux +24 -0
  482. polyfile/magic_defs/sendmail +37 -0
  483. polyfile/magic_defs/sequent +42 -0
  484. polyfile/magic_defs/sereal +35 -0
  485. polyfile/magic_defs/sgi +144 -0
  486. polyfile/magic_defs/sgml +161 -0
  487. polyfile/magic_defs/sharc +23 -0
  488. polyfile/magic_defs/sinclair +40 -0
  489. polyfile/magic_defs/sisu +18 -0
  490. polyfile/magic_defs/sketch +6 -0
  491. polyfile/magic_defs/smalltalk +25 -0
  492. polyfile/magic_defs/smile +34 -0
  493. polyfile/magic_defs/sniffer +482 -0
  494. polyfile/magic_defs/softquad +40 -0
  495. polyfile/magic_defs/sosi +40 -0
  496. polyfile/magic_defs/spec +21 -0
  497. polyfile/magic_defs/spectrum +184 -0
  498. polyfile/magic_defs/sql +288 -0
  499. polyfile/magic_defs/ssh +39 -0
  500. polyfile/magic_defs/ssl +20 -0
  501. polyfile/magic_defs/statistics +45 -0
  502. polyfile/magic_defs/subtitle +38 -0
  503. polyfile/magic_defs/sun +141 -0
  504. polyfile/magic_defs/svf +5 -0
  505. polyfile/magic_defs/sylk +36 -0
  506. polyfile/magic_defs/symbos +42 -0
  507. polyfile/magic_defs/sysex +429 -0
  508. polyfile/magic_defs/tcl +29 -0
  509. polyfile/magic_defs/teapot +6 -0
  510. polyfile/magic_defs/terminfo +63 -0
  511. polyfile/magic_defs/tex +141 -0
  512. polyfile/magic_defs/tgif +7 -0
  513. polyfile/magic_defs/ti-8x +239 -0
  514. polyfile/magic_defs/timezone +42 -0
  515. polyfile/magic_defs/tplink +95 -0
  516. polyfile/magic_defs/troff +38 -0
  517. polyfile/magic_defs/tuxedo +8 -0
  518. polyfile/magic_defs/typeset +8 -0
  519. polyfile/magic_defs/uf2 +72 -0
  520. polyfile/magic_defs/unicode +15 -0
  521. polyfile/magic_defs/unisig +12 -0
  522. polyfile/magic_defs/unknown +34 -0
  523. polyfile/magic_defs/usd +21 -0
  524. polyfile/magic_defs/uterus +16 -0
  525. polyfile/magic_defs/uuencode +28 -0
  526. polyfile/magic_defs/vacuum-cleaner +54 -0
  527. polyfile/magic_defs/varied.out +46 -0
  528. polyfile/magic_defs/varied.script +21 -0
  529. polyfile/magic_defs/vax +32 -0
  530. polyfile/magic_defs/vicar +17 -0
  531. polyfile/magic_defs/virtual +307 -0
  532. polyfile/magic_defs/virtutech +12 -0
  533. polyfile/magic_defs/visx +32 -0
  534. polyfile/magic_defs/vms +30 -0
  535. polyfile/magic_defs/vmware +6 -0
  536. polyfile/magic_defs/vorbis +155 -0
  537. polyfile/magic_defs/vxl +14 -0
  538. polyfile/magic_defs/warc +16 -0
  539. polyfile/magic_defs/weak +16 -0
  540. polyfile/magic_defs/web +18 -0
  541. polyfile/magic_defs/webassembly +17 -0
  542. polyfile/magic_defs/windows +1811 -0
  543. polyfile/magic_defs/wireless +7 -0
  544. polyfile/magic_defs/wordprocessors +630 -0
  545. polyfile/magic_defs/wsdl +23 -0
  546. polyfile/magic_defs/x68000 +25 -0
  547. polyfile/magic_defs/xdelta +13 -0
  548. polyfile/magic_defs/xenix +106 -0
  549. polyfile/magic_defs/xilinx +58 -0
  550. polyfile/magic_defs/xo65 +37 -0
  551. polyfile/magic_defs/xwindows +43 -0
  552. polyfile/magic_defs/yara +17 -0
  553. polyfile/magic_defs/zfs +96 -0
  554. polyfile/magic_defs/zilog +12 -0
  555. polyfile/magic_defs/zip +126 -0
  556. polyfile/magic_defs/zyxel +17 -0
  557. polyfile/nes.py +144 -0
  558. polyfile/nitf.py +15 -0
  559. polyfile/pdf.py +1264 -0
  560. polyfile/pickles.py +45 -0
  561. polyfile/polyfile.py +409 -0
  562. polyfile/profiling.py +115 -0
  563. polyfile/repl.py +624 -0
  564. polyfile/search.py +310 -0
  565. polyfile/serialization.py +323 -0
  566. polyfile/structmatcher.py +46 -0
  567. polyfile/structs.py +281 -0
  568. polyfile/templates/download.js +162 -0
  569. polyfile/templates/hexdump.css +268 -0
  570. polyfile/templates/hexdump.js +756 -0
  571. polyfile/templates/jquery-3.4.1.min.js +2 -0
  572. polyfile/templates/template.html +119 -0
  573. polyfile/wildcards.py +62 -0
  574. polyfile/zipmatcher.py +183 -0
  575. polyfile_weave-0.5.5.dist-info/METADATA +173 -0
  576. polyfile_weave-0.5.5.dist-info/RECORD +585 -0
  577. polyfile_weave-0.5.5.dist-info/WHEEL +5 -0
  578. polyfile_weave-0.5.5.dist-info/entry_points.txt +2 -0
  579. polyfile_weave-0.5.5.dist-info/licenses/LICENSE +202 -0
  580. polyfile_weave-0.5.5.dist-info/top_level.txt +2 -0
  581. polymerge/__init__.py +1 -0
  582. polymerge/__main__.py +296 -0
  583. polymerge/cfg.py +127 -0
  584. polymerge/polymerge.py +227 -0
  585. polymerge/polytracker.py +190 -0
@@ -0,0 +1,422 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+ from enum import Enum
8
+
9
+
10
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
11
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
12
+
13
+ from polyfile.kaitai.parsers import dcmp_variable_length_integer
14
+ class Dcmp1(KaitaiStruct):
15
+ """Compressed resource data in `'dcmp' (1)` format,
16
+ as stored in compressed resources with header type `8` and decompressor ID `1`.
17
+
18
+ The `'dcmp' (1)` decompressor resource is included in the System file of System 7.0 and later.
19
+ This compression format is used for a few compressed resources in System 7.0's files
20
+ (such as the Finder Help file).
21
+ This decompressor is also included with and used by some other Apple applications,
22
+ such as ResEdit.
23
+ (Note: ResEdit includes the `'dcmp' (1)` resource,
24
+ but none of its resources actually use this decompressor.)
25
+
26
+ This compression format supports some basic general-purpose compression schemes,
27
+ including backreferences to previous data and run-length encoding.
28
+ It also includes some types of compression tailored specifically to Mac OS resources,
29
+ including a set of single-byte codes that correspond to entries in a hard-coded lookup table.
30
+
31
+ The `'dcmp' (0)` compression format (see dcmp_0.ksy) is very similar to this format,
32
+ with the main difference that it operates mostly on units of 2 or 4 bytes.
33
+ This makes the ``dcmp' (0)` format more suitable for word-aligned data,
34
+ such as executable code, bitmaps, sounds, etc.
35
+ The `'dcmp' (0)` format also appears to be generally preferred over `'dcmp' (1)`,
36
+ with the latter only being used in resource files that contain mostly unaligned data,
37
+ such as text.
38
+
39
+ .. seealso::
40
+ Source - https://github.com/dgelessus/python-rsrcfork/blob/f891a6e/src/rsrcfork/compress/dcmp1.py
41
+ """
42
+ SEQ_FIELDS = ["chunks"]
43
+ def __init__(self, _io, _parent=None, _root=None):
44
+ self._io = _io
45
+ self._parent = _parent
46
+ self._root = _root if _root else self
47
+ self._debug = collections.defaultdict(dict)
48
+
49
+ def _read(self):
50
+ self._debug['chunks']['start'] = self._io.pos()
51
+ self.chunks = []
52
+ i = 0
53
+ while True:
54
+ if not 'arr' in self._debug['chunks']:
55
+ self._debug['chunks']['arr'] = []
56
+ self._debug['chunks']['arr'].append({'start': self._io.pos()})
57
+ _t_chunks = Dcmp1.Chunk(self._io, self, self._root)
58
+ _t_chunks._read()
59
+ _ = _t_chunks
60
+ self.chunks.append(_)
61
+ self._debug['chunks']['arr'][len(self.chunks) - 1]['end'] = self._io.pos()
62
+ if _.tag == 255:
63
+ break
64
+ i += 1
65
+ self._debug['chunks']['end'] = self._io.pos()
66
+
67
+ class Chunk(KaitaiStruct):
68
+ """A single chunk of compressed data.
69
+ Each chunk in the compressed data expands to a sequence of bytes in the uncompressed data,
70
+ except when `tag == 0xff`,
71
+ which marks the end of the data and does not correspond to any bytes in the uncompressed data.
72
+
73
+ Most chunks are stateless and always expand to the same data,
74
+ regardless of where the chunk appears in the sequence.
75
+ However,
76
+ some chunks affect the behavior of future chunks,
77
+ or expand to different data depending on which chunks came before them.
78
+ """
79
+
80
+ class TagKind(Enum):
81
+ invalid = -1
82
+ literal = 0
83
+ backreference = 1
84
+ table_lookup = 2
85
+ extended = 3
86
+ end = 4
87
+ SEQ_FIELDS = ["tag", "body"]
88
+ def __init__(self, _io, _parent=None, _root=None):
89
+ self._io = _io
90
+ self._parent = _parent
91
+ self._root = _root if _root else self
92
+ self._debug = collections.defaultdict(dict)
93
+
94
+ def _read(self):
95
+ self._debug['tag']['start'] = self._io.pos()
96
+ self.tag = self._io.read_u1()
97
+ self._debug['tag']['end'] = self._io.pos()
98
+ self._debug['body']['start'] = self._io.pos()
99
+ _on = (Dcmp1.Chunk.TagKind.literal if ((self.tag >= 0) and (self.tag <= 31)) else (Dcmp1.Chunk.TagKind.backreference if ((self.tag >= 32) and (self.tag <= 207)) else (Dcmp1.Chunk.TagKind.literal if ((self.tag >= 208) and (self.tag <= 209)) else (Dcmp1.Chunk.TagKind.backreference if self.tag == 210 else (Dcmp1.Chunk.TagKind.table_lookup if ((self.tag >= 213) and (self.tag <= 253)) else (Dcmp1.Chunk.TagKind.extended if self.tag == 254 else (Dcmp1.Chunk.TagKind.end if self.tag == 255 else Dcmp1.Chunk.TagKind.invalid)))))))
100
+ if _on == Dcmp1.Chunk.TagKind.extended:
101
+ self.body = Dcmp1.Chunk.ExtendedBody(self._io, self, self._root)
102
+ self.body._read()
103
+ elif _on == Dcmp1.Chunk.TagKind.literal:
104
+ self.body = Dcmp1.Chunk.LiteralBody(self.tag, self._io, self, self._root)
105
+ self.body._read()
106
+ elif _on == Dcmp1.Chunk.TagKind.end:
107
+ self.body = Dcmp1.Chunk.EndBody(self._io, self, self._root)
108
+ self.body._read()
109
+ elif _on == Dcmp1.Chunk.TagKind.table_lookup:
110
+ self.body = Dcmp1.Chunk.TableLookupBody(self.tag, self._io, self, self._root)
111
+ self.body._read()
112
+ elif _on == Dcmp1.Chunk.TagKind.backreference:
113
+ self.body = Dcmp1.Chunk.BackreferenceBody(self.tag, self._io, self, self._root)
114
+ self.body._read()
115
+ self._debug['body']['end'] = self._io.pos()
116
+
117
+ class LiteralBody(KaitaiStruct):
118
+ """The body of a literal data chunk.
119
+
120
+ The data that this chunk expands to is stored literally in the body (`literal`).
121
+ Optionally,
122
+ the literal data may also be stored for use by future backreference chunks (`do_store`).
123
+ """
124
+ SEQ_FIELDS = ["len_literal_separate", "literal"]
125
+ def __init__(self, tag, _io, _parent=None, _root=None):
126
+ self._io = _io
127
+ self._parent = _parent
128
+ self._root = _root if _root else self
129
+ self.tag = tag
130
+ self._debug = collections.defaultdict(dict)
131
+
132
+ def _read(self):
133
+ if self.is_len_literal_separate:
134
+ self._debug['len_literal_separate']['start'] = self._io.pos()
135
+ self.len_literal_separate = self._io.read_u1()
136
+ self._debug['len_literal_separate']['end'] = self._io.pos()
137
+
138
+ self._debug['literal']['start'] = self._io.pos()
139
+ self.literal = self._io.read_bytes(self.len_literal)
140
+ self._debug['literal']['end'] = self._io.pos()
141
+
142
+ @property
143
+ def do_store(self):
144
+ """Whether this literal should be stored for use by future backreference chunks.
145
+
146
+ See the documentation of the `backreference_body` type for details about backreference chunks.
147
+ """
148
+ if hasattr(self, '_m_do_store'):
149
+ return self._m_do_store if hasattr(self, '_m_do_store') else None
150
+
151
+ self._m_do_store = (self.tag == 209 if self.is_len_literal_separate else (self.tag & 16) != 0)
152
+ return self._m_do_store if hasattr(self, '_m_do_store') else None
153
+
154
+ @property
155
+ def len_literal_m1_in_tag(self):
156
+ """The part of the tag byte that indicates the length of the literal data,
157
+ in bytes,
158
+ minus one.
159
+
160
+ If the tag byte is 0xd0 or 0xd1,
161
+ the length is stored in a separate byte after the tag byte and before the literal data.
162
+ """
163
+ if hasattr(self, '_m_len_literal_m1_in_tag'):
164
+ return self._m_len_literal_m1_in_tag if hasattr(self, '_m_len_literal_m1_in_tag') else None
165
+
166
+ if not (self.is_len_literal_separate):
167
+ self._m_len_literal_m1_in_tag = (self.tag & 15)
168
+
169
+ return self._m_len_literal_m1_in_tag if hasattr(self, '_m_len_literal_m1_in_tag') else None
170
+
171
+ @property
172
+ def is_len_literal_separate(self):
173
+ """Whether the length of the literal is stored separately from the tag.
174
+ """
175
+ if hasattr(self, '_m_is_len_literal_separate'):
176
+ return self._m_is_len_literal_separate if hasattr(self, '_m_is_len_literal_separate') else None
177
+
178
+ self._m_is_len_literal_separate = self.tag >= 208
179
+ return self._m_is_len_literal_separate if hasattr(self, '_m_is_len_literal_separate') else None
180
+
181
+ @property
182
+ def len_literal(self):
183
+ """The length of the literal data,
184
+ in bytes.
185
+
186
+ In practice,
187
+ this value is always greater than zero,
188
+ as there is no use in storing a zero-length literal.
189
+ """
190
+ if hasattr(self, '_m_len_literal'):
191
+ return self._m_len_literal if hasattr(self, '_m_len_literal') else None
192
+
193
+ self._m_len_literal = (self.len_literal_separate if self.is_len_literal_separate else (self.len_literal_m1_in_tag + 1))
194
+ return self._m_len_literal if hasattr(self, '_m_len_literal') else None
195
+
196
+
197
+ class BackreferenceBody(KaitaiStruct):
198
+ """The body of a backreference chunk.
199
+
200
+ This chunk expands to the data stored in a preceding literal chunk,
201
+ indicated by an index number (`index`).
202
+ """
203
+ SEQ_FIELDS = ["index_separate_minus"]
204
+ def __init__(self, tag, _io, _parent=None, _root=None):
205
+ self._io = _io
206
+ self._parent = _parent
207
+ self._root = _root if _root else self
208
+ self.tag = tag
209
+ self._debug = collections.defaultdict(dict)
210
+
211
+ def _read(self):
212
+ if self.is_index_separate:
213
+ self._debug['index_separate_minus']['start'] = self._io.pos()
214
+ self.index_separate_minus = self._io.read_u1()
215
+ self._debug['index_separate_minus']['end'] = self._io.pos()
216
+
217
+
218
+ @property
219
+ def is_index_separate(self):
220
+ """Whether the index is stored separately from the tag.
221
+ """
222
+ if hasattr(self, '_m_is_index_separate'):
223
+ return self._m_is_index_separate if hasattr(self, '_m_is_index_separate') else None
224
+
225
+ self._m_is_index_separate = self.tag == 210
226
+ return self._m_is_index_separate if hasattr(self, '_m_is_index_separate') else None
227
+
228
+ @property
229
+ def index_in_tag(self):
230
+ """The index of the referenced literal chunk,
231
+ as stored in the tag byte.
232
+ """
233
+ if hasattr(self, '_m_index_in_tag'):
234
+ return self._m_index_in_tag if hasattr(self, '_m_index_in_tag') else None
235
+
236
+ self._m_index_in_tag = (self.tag - 32)
237
+ return self._m_index_in_tag if hasattr(self, '_m_index_in_tag') else None
238
+
239
+ @property
240
+ def index_separate(self):
241
+ """The index of the referenced literal chunk,
242
+ as stored separately from the tag byte,
243
+ with the implicit offset corrected for.
244
+ """
245
+ if hasattr(self, '_m_index_separate'):
246
+ return self._m_index_separate if hasattr(self, '_m_index_separate') else None
247
+
248
+ if self.is_index_separate:
249
+ self._m_index_separate = (self.index_separate_minus + 176)
250
+
251
+ return self._m_index_separate if hasattr(self, '_m_index_separate') else None
252
+
253
+ @property
254
+ def index(self):
255
+ """The index of the referenced literal chunk.
256
+
257
+ Stored literals are assigned index numbers in the order in which they appear in the compressed data,
258
+ starting at 0.
259
+ Non-stored literals are not counted in the numbering and cannot be referenced using backreferences.
260
+ Once an index is assigned to a stored literal,
261
+ it is never changed or unassigned for the entire length of the compressed data.
262
+
263
+ As the name indicates,
264
+ a backreference can only reference stored literal chunks found *before* the backreference,
265
+ not ones that come after it.
266
+ """
267
+ if hasattr(self, '_m_index'):
268
+ return self._m_index if hasattr(self, '_m_index') else None
269
+
270
+ self._m_index = (self.index_separate if self.is_index_separate else self.index_in_tag)
271
+ return self._m_index if hasattr(self, '_m_index') else None
272
+
273
+
274
+ class TableLookupBody(KaitaiStruct):
275
+ """The body of a table lookup chunk.
276
+ This body is always empty.
277
+
278
+ This chunk always expands to two bytes (`value`),
279
+ determined from the tag byte using a fixed lookup table (`lookup_table`).
280
+ This lookup table is hardcoded in the decompressor and always the same for all compressed data.
281
+ """
282
+ SEQ_FIELDS = []
283
+ def __init__(self, tag, _io, _parent=None, _root=None):
284
+ self._io = _io
285
+ self._parent = _parent
286
+ self._root = _root if _root else self
287
+ self.tag = tag
288
+ self._debug = collections.defaultdict(dict)
289
+
290
+ def _read(self):
291
+ pass
292
+
293
+ @property
294
+ def lookup_table(self):
295
+ """Fixed lookup table that maps tag byte numbers to two bytes each.
296
+
297
+ The entries in the lookup table are offset -
298
+ index 0 stands for tag 0xd5, 1 for 0xd6, etc.
299
+ """
300
+ if hasattr(self, '_m_lookup_table'):
301
+ return self._m_lookup_table if hasattr(self, '_m_lookup_table') else None
302
+
303
+ self._m_lookup_table = [b"\x00\x00", b"\x00\x01", b"\x00\x02", b"\x00\x03", b"\x2E\x01", b"\x3E\x01", b"\x01\x01", b"\x1E\x01", b"\xFF\xFF", b"\x0E\x01", b"\x31\x00", b"\x11\x12", b"\x01\x07", b"\x33\x32", b"\x12\x39", b"\xED\x10", b"\x01\x27", b"\x23\x22", b"\x01\x37", b"\x07\x06", b"\x01\x17", b"\x01\x23", b"\x00\xFF", b"\x00\x2F", b"\x07\x0E", b"\xFD\x3C", b"\x01\x35", b"\x01\x15", b"\x01\x02", b"\x00\x07", b"\x00\x3E", b"\x05\xD5", b"\x02\x01", b"\x06\x07", b"\x07\x08", b"\x30\x01", b"\x01\x33", b"\x00\x10", b"\x17\x16", b"\x37\x3E", b"\x36\x37"]
304
+ return self._m_lookup_table if hasattr(self, '_m_lookup_table') else None
305
+
306
+ @property
307
+ def value(self):
308
+ """The two bytes that the tag byte expands to,
309
+ based on the fixed lookup table.
310
+ """
311
+ if hasattr(self, '_m_value'):
312
+ return self._m_value if hasattr(self, '_m_value') else None
313
+
314
+ self._m_value = self.lookup_table[(self.tag - 213)]
315
+ return self._m_value if hasattr(self, '_m_value') else None
316
+
317
+
318
+ class EndBody(KaitaiStruct):
319
+ """The body of an end chunk.
320
+ This body is always empty.
321
+
322
+ The last chunk in the compressed data must always be an end chunk.
323
+ An end chunk cannot appear elsewhere in the compressed data.
324
+ """
325
+ SEQ_FIELDS = []
326
+ def __init__(self, _io, _parent=None, _root=None):
327
+ self._io = _io
328
+ self._parent = _parent
329
+ self._root = _root if _root else self
330
+ self._debug = collections.defaultdict(dict)
331
+
332
+ def _read(self):
333
+ pass
334
+
335
+
336
+ class ExtendedBody(KaitaiStruct):
337
+ """The body of an extended chunk.
338
+ The meaning of this chunk depends on the extended tag byte stored in the chunk data.
339
+ """
340
+ SEQ_FIELDS = ["tag", "body"]
341
+ def __init__(self, _io, _parent=None, _root=None):
342
+ self._io = _io
343
+ self._parent = _parent
344
+ self._root = _root if _root else self
345
+ self._debug = collections.defaultdict(dict)
346
+
347
+ def _read(self):
348
+ self._debug['tag']['start'] = self._io.pos()
349
+ self.tag = self._io.read_u1()
350
+ self._debug['tag']['end'] = self._io.pos()
351
+ self._debug['body']['start'] = self._io.pos()
352
+ _on = self.tag
353
+ if _on == 2:
354
+ self.body = Dcmp1.Chunk.ExtendedBody.RepeatBody(self._io, self, self._root)
355
+ self.body._read()
356
+ self._debug['body']['end'] = self._io.pos()
357
+
358
+ class RepeatBody(KaitaiStruct):
359
+ """The body of a repeat chunk.
360
+
361
+ This chunk expands to the same byte repeated a number of times,
362
+ i. e. it implements a form of run-length encoding.
363
+ """
364
+ SEQ_FIELDS = ["to_repeat_raw", "repeat_count_m1_raw"]
365
+ def __init__(self, _io, _parent=None, _root=None):
366
+ self._io = _io
367
+ self._parent = _parent
368
+ self._root = _root if _root else self
369
+ self._debug = collections.defaultdict(dict)
370
+
371
+ def _read(self):
372
+ self._debug['to_repeat_raw']['start'] = self._io.pos()
373
+ self.to_repeat_raw = dcmp_variable_length_integer.DcmpVariableLengthInteger(self._io)
374
+ self.to_repeat_raw._read()
375
+ self._debug['to_repeat_raw']['end'] = self._io.pos()
376
+ self._debug['repeat_count_m1_raw']['start'] = self._io.pos()
377
+ self.repeat_count_m1_raw = dcmp_variable_length_integer.DcmpVariableLengthInteger(self._io)
378
+ self.repeat_count_m1_raw._read()
379
+ self._debug['repeat_count_m1_raw']['end'] = self._io.pos()
380
+
381
+ @property
382
+ def to_repeat(self):
383
+ """The value to repeat.
384
+
385
+ Although it is stored as a variable-length integer,
386
+ this value must fit into an unsigned 8-bit integer.
387
+ """
388
+ if hasattr(self, '_m_to_repeat'):
389
+ return self._m_to_repeat if hasattr(self, '_m_to_repeat') else None
390
+
391
+ self._m_to_repeat = self.to_repeat_raw.value
392
+ return self._m_to_repeat if hasattr(self, '_m_to_repeat') else None
393
+
394
+ @property
395
+ def repeat_count_m1(self):
396
+ """The number of times to repeat the value,
397
+ minus one.
398
+
399
+ This value must not be negative.
400
+ """
401
+ if hasattr(self, '_m_repeat_count_m1'):
402
+ return self._m_repeat_count_m1 if hasattr(self, '_m_repeat_count_m1') else None
403
+
404
+ self._m_repeat_count_m1 = self.repeat_count_m1_raw.value
405
+ return self._m_repeat_count_m1 if hasattr(self, '_m_repeat_count_m1') else None
406
+
407
+ @property
408
+ def repeat_count(self):
409
+ """The number of times to repeat the value.
410
+
411
+ This value must be positive.
412
+ """
413
+ if hasattr(self, '_m_repeat_count'):
414
+ return self._m_repeat_count if hasattr(self, '_m_repeat_count') else None
415
+
416
+ self._m_repeat_count = (self.repeat_count_m1 + 1)
417
+ return self._m_repeat_count if hasattr(self, '_m_repeat_count') else None
418
+
419
+
420
+
421
+
422
+