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,409 @@
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
+ from enum import Enum
7
+ import collections
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
+ class Riff(KaitaiStruct):
14
+ """The Resource Interchange File Format (RIFF) is a generic file container format
15
+ for storing data in tagged chunks. It is primarily used to store multimedia
16
+ such as sound and video, though it may also be used to store any arbitrary data.
17
+
18
+ The Microsoft implementation is mostly known through container formats
19
+ like AVI, ANI and WAV, which use RIFF as their basis.
20
+
21
+ .. seealso::
22
+ Source - https://www.johnloomis.org/cpe102/asgn/asgn1/riff.html
23
+ """
24
+
25
+ class Fourcc(Enum):
26
+ riff = 1179011410
27
+ info = 1330007625
28
+ list = 1414744396
29
+ SEQ_FIELDS = ["chunk"]
30
+ def __init__(self, _io, _parent=None, _root=None):
31
+ self._io = _io
32
+ self._parent = _parent
33
+ self._root = _root if _root else self
34
+ self._debug = collections.defaultdict(dict)
35
+
36
+ def _read(self):
37
+ self._debug['chunk']['start'] = self._io.pos()
38
+ self.chunk = Riff.Chunk(self._io, self, self._root)
39
+ self.chunk._read()
40
+ self._debug['chunk']['end'] = self._io.pos()
41
+
42
+ class ListChunkData(KaitaiStruct):
43
+ SEQ_FIELDS = ["save_parent_chunk_data_ofs", "parent_chunk_data"]
44
+ def __init__(self, _io, _parent=None, _root=None):
45
+ self._io = _io
46
+ self._parent = _parent
47
+ self._root = _root if _root else self
48
+ self._debug = collections.defaultdict(dict)
49
+
50
+ def _read(self):
51
+ if self.parent_chunk_data_ofs < 0:
52
+ self._debug['save_parent_chunk_data_ofs']['start'] = self._io.pos()
53
+ self.save_parent_chunk_data_ofs = self._io.read_bytes(0)
54
+ self._debug['save_parent_chunk_data_ofs']['end'] = self._io.pos()
55
+
56
+ self._debug['parent_chunk_data']['start'] = self._io.pos()
57
+ self.parent_chunk_data = Riff.ParentChunkData(self._io, self, self._root)
58
+ self.parent_chunk_data._read()
59
+ self._debug['parent_chunk_data']['end'] = self._io.pos()
60
+
61
+ @property
62
+ def parent_chunk_data_ofs(self):
63
+ if hasattr(self, '_m_parent_chunk_data_ofs'):
64
+ return self._m_parent_chunk_data_ofs if hasattr(self, '_m_parent_chunk_data_ofs') else None
65
+
66
+ self._m_parent_chunk_data_ofs = self._io.pos()
67
+ return self._m_parent_chunk_data_ofs if hasattr(self, '_m_parent_chunk_data_ofs') else None
68
+
69
+ @property
70
+ def form_type(self):
71
+ if hasattr(self, '_m_form_type'):
72
+ return self._m_form_type if hasattr(self, '_m_form_type') else None
73
+
74
+ self._m_form_type = KaitaiStream.resolve_enum(Riff.Fourcc, self.parent_chunk_data.form_type)
75
+ return self._m_form_type if hasattr(self, '_m_form_type') else None
76
+
77
+ @property
78
+ def form_type_readable(self):
79
+ if hasattr(self, '_m_form_type_readable'):
80
+ return self._m_form_type_readable if hasattr(self, '_m_form_type_readable') else None
81
+
82
+ _pos = self._io.pos()
83
+ self._io.seek(self.parent_chunk_data_ofs)
84
+ self._debug['_m_form_type_readable']['start'] = self._io.pos()
85
+ self._m_form_type_readable = (self._io.read_bytes(4)).decode(u"ASCII")
86
+ self._debug['_m_form_type_readable']['end'] = self._io.pos()
87
+ self._io.seek(_pos)
88
+ return self._m_form_type_readable if hasattr(self, '_m_form_type_readable') else None
89
+
90
+ @property
91
+ def subchunks(self):
92
+ if hasattr(self, '_m_subchunks'):
93
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
94
+
95
+ io = self.parent_chunk_data.subchunks_slot._io
96
+ _pos = io.pos()
97
+ io.seek(0)
98
+ self._debug['_m_subchunks']['start'] = io.pos()
99
+ self._m_subchunks = []
100
+ i = 0
101
+ while not io.is_eof():
102
+ if not 'arr' in self._debug['_m_subchunks']:
103
+ self._debug['_m_subchunks']['arr'] = []
104
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
105
+ _on = self.form_type
106
+ if _on == Riff.Fourcc.info:
107
+ if not 'arr' in self._debug['_m_subchunks']:
108
+ self._debug['_m_subchunks']['arr'] = []
109
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
110
+ _t__m_subchunks = Riff.InfoSubchunk(io, self, self._root)
111
+ _t__m_subchunks._read()
112
+ self._m_subchunks.append(_t__m_subchunks)
113
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
114
+ else:
115
+ if not 'arr' in self._debug['_m_subchunks']:
116
+ self._debug['_m_subchunks']['arr'] = []
117
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
118
+ _t__m_subchunks = Riff.ChunkType(io, self, self._root)
119
+ _t__m_subchunks._read()
120
+ self._m_subchunks.append(_t__m_subchunks)
121
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
122
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
123
+ i += 1
124
+
125
+ self._debug['_m_subchunks']['end'] = io.pos()
126
+ io.seek(_pos)
127
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
128
+
129
+
130
+ class Chunk(KaitaiStruct):
131
+ SEQ_FIELDS = ["id", "len", "data_slot", "pad_byte"]
132
+ def __init__(self, _io, _parent=None, _root=None):
133
+ self._io = _io
134
+ self._parent = _parent
135
+ self._root = _root if _root else self
136
+ self._debug = collections.defaultdict(dict)
137
+
138
+ def _read(self):
139
+ self._debug['id']['start'] = self._io.pos()
140
+ self.id = self._io.read_u4le()
141
+ self._debug['id']['end'] = self._io.pos()
142
+ self._debug['len']['start'] = self._io.pos()
143
+ self.len = self._io.read_u4le()
144
+ self._debug['len']['end'] = self._io.pos()
145
+ self._debug['data_slot']['start'] = self._io.pos()
146
+ self._raw_data_slot = self._io.read_bytes(self.len)
147
+ _io__raw_data_slot = KaitaiStream(BytesIO(self._raw_data_slot))
148
+ self.data_slot = Riff.Chunk.Slot(_io__raw_data_slot, self, self._root)
149
+ self.data_slot._read()
150
+ self._debug['data_slot']['end'] = self._io.pos()
151
+ self._debug['pad_byte']['start'] = self._io.pos()
152
+ self.pad_byte = self._io.read_bytes((self.len % 2))
153
+ self._debug['pad_byte']['end'] = self._io.pos()
154
+
155
+ class Slot(KaitaiStruct):
156
+ SEQ_FIELDS = []
157
+ def __init__(self, _io, _parent=None, _root=None):
158
+ self._io = _io
159
+ self._parent = _parent
160
+ self._root = _root if _root else self
161
+ self._debug = collections.defaultdict(dict)
162
+
163
+ def _read(self):
164
+ pass
165
+
166
+
167
+
168
+ class ParentChunkData(KaitaiStruct):
169
+ SEQ_FIELDS = ["form_type", "subchunks_slot"]
170
+ def __init__(self, _io, _parent=None, _root=None):
171
+ self._io = _io
172
+ self._parent = _parent
173
+ self._root = _root if _root else self
174
+ self._debug = collections.defaultdict(dict)
175
+
176
+ def _read(self):
177
+ self._debug['form_type']['start'] = self._io.pos()
178
+ self.form_type = self._io.read_u4le()
179
+ self._debug['form_type']['end'] = self._io.pos()
180
+ self._debug['subchunks_slot']['start'] = self._io.pos()
181
+ self._raw_subchunks_slot = self._io.read_bytes_full()
182
+ _io__raw_subchunks_slot = KaitaiStream(BytesIO(self._raw_subchunks_slot))
183
+ self.subchunks_slot = Riff.ParentChunkData.Slot(_io__raw_subchunks_slot, self, self._root)
184
+ self.subchunks_slot._read()
185
+ self._debug['subchunks_slot']['end'] = self._io.pos()
186
+
187
+ class Slot(KaitaiStruct):
188
+ SEQ_FIELDS = []
189
+ def __init__(self, _io, _parent=None, _root=None):
190
+ self._io = _io
191
+ self._parent = _parent
192
+ self._root = _root if _root else self
193
+ self._debug = collections.defaultdict(dict)
194
+
195
+ def _read(self):
196
+ pass
197
+
198
+
199
+
200
+ class InfoSubchunk(KaitaiStruct):
201
+ """All registered subchunks in the INFO chunk are NULL-terminated strings,
202
+ but the unregistered might not be. By convention, the registered
203
+ chunk IDs are in uppercase and the unregistered IDs are in lowercase.
204
+
205
+ If the chunk ID of an INFO subchunk contains a lowercase
206
+ letter, this chunk is considered as unregistered and thus we can make
207
+ no assumptions about the type of data.
208
+ """
209
+ SEQ_FIELDS = ["save_chunk_ofs", "chunk"]
210
+ def __init__(self, _io, _parent=None, _root=None):
211
+ self._io = _io
212
+ self._parent = _parent
213
+ self._root = _root if _root else self
214
+ self._debug = collections.defaultdict(dict)
215
+
216
+ def _read(self):
217
+ if self.chunk_ofs < 0:
218
+ self._debug['save_chunk_ofs']['start'] = self._io.pos()
219
+ self.save_chunk_ofs = self._io.read_bytes(0)
220
+ self._debug['save_chunk_ofs']['end'] = self._io.pos()
221
+
222
+ self._debug['chunk']['start'] = self._io.pos()
223
+ self.chunk = Riff.Chunk(self._io, self, self._root)
224
+ self.chunk._read()
225
+ self._debug['chunk']['end'] = self._io.pos()
226
+
227
+ @property
228
+ def chunk_data(self):
229
+ if hasattr(self, '_m_chunk_data'):
230
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
231
+
232
+ io = self.chunk.data_slot._io
233
+ _pos = io.pos()
234
+ io.seek(0)
235
+ self._debug['_m_chunk_data']['start'] = io.pos()
236
+ _on = self.is_unregistered_tag
237
+ if _on == False:
238
+ self._m_chunk_data = (io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
239
+ self._debug['_m_chunk_data']['end'] = io.pos()
240
+ io.seek(_pos)
241
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
242
+
243
+ @property
244
+ def is_unregistered_tag(self):
245
+ """Check if chunk_id contains lowercase characters ([a-z], ASCII 97 = a, ASCII 122 = z).
246
+ """
247
+ if hasattr(self, '_m_is_unregistered_tag'):
248
+ return self._m_is_unregistered_tag if hasattr(self, '_m_is_unregistered_tag') else None
249
+
250
+ self._m_is_unregistered_tag = (( ((KaitaiStream.byte_array_index(self.id_chars, 0) >= 97) and (KaitaiStream.byte_array_index(self.id_chars, 0) <= 122)) ) or ( ((KaitaiStream.byte_array_index(self.id_chars, 1) >= 97) and (KaitaiStream.byte_array_index(self.id_chars, 1) <= 122)) ) or ( ((KaitaiStream.byte_array_index(self.id_chars, 2) >= 97) and (KaitaiStream.byte_array_index(self.id_chars, 2) <= 122)) ) or ( ((KaitaiStream.byte_array_index(self.id_chars, 3) >= 97) and (KaitaiStream.byte_array_index(self.id_chars, 3) <= 122)) ))
251
+ return self._m_is_unregistered_tag if hasattr(self, '_m_is_unregistered_tag') else None
252
+
253
+ @property
254
+ def id_chars(self):
255
+ if hasattr(self, '_m_id_chars'):
256
+ return self._m_id_chars if hasattr(self, '_m_id_chars') else None
257
+
258
+ _pos = self._io.pos()
259
+ self._io.seek(self.chunk_ofs)
260
+ self._debug['_m_id_chars']['start'] = self._io.pos()
261
+ self._m_id_chars = self._io.read_bytes(4)
262
+ self._debug['_m_id_chars']['end'] = self._io.pos()
263
+ self._io.seek(_pos)
264
+ return self._m_id_chars if hasattr(self, '_m_id_chars') else None
265
+
266
+ @property
267
+ def chunk_id_readable(self):
268
+ if hasattr(self, '_m_chunk_id_readable'):
269
+ return self._m_chunk_id_readable if hasattr(self, '_m_chunk_id_readable') else None
270
+
271
+ self._m_chunk_id_readable = (self.id_chars).decode(u"ASCII")
272
+ return self._m_chunk_id_readable if hasattr(self, '_m_chunk_id_readable') else None
273
+
274
+ @property
275
+ def chunk_ofs(self):
276
+ if hasattr(self, '_m_chunk_ofs'):
277
+ return self._m_chunk_ofs if hasattr(self, '_m_chunk_ofs') else None
278
+
279
+ self._m_chunk_ofs = self._io.pos()
280
+ return self._m_chunk_ofs if hasattr(self, '_m_chunk_ofs') else None
281
+
282
+
283
+ class ChunkType(KaitaiStruct):
284
+ SEQ_FIELDS = ["save_chunk_ofs", "chunk"]
285
+ def __init__(self, _io, _parent=None, _root=None):
286
+ self._io = _io
287
+ self._parent = _parent
288
+ self._root = _root if _root else self
289
+ self._debug = collections.defaultdict(dict)
290
+
291
+ def _read(self):
292
+ if self.chunk_ofs < 0:
293
+ self._debug['save_chunk_ofs']['start'] = self._io.pos()
294
+ self.save_chunk_ofs = self._io.read_bytes(0)
295
+ self._debug['save_chunk_ofs']['end'] = self._io.pos()
296
+
297
+ self._debug['chunk']['start'] = self._io.pos()
298
+ self.chunk = Riff.Chunk(self._io, self, self._root)
299
+ self.chunk._read()
300
+ self._debug['chunk']['end'] = self._io.pos()
301
+
302
+ @property
303
+ def chunk_ofs(self):
304
+ if hasattr(self, '_m_chunk_ofs'):
305
+ return self._m_chunk_ofs if hasattr(self, '_m_chunk_ofs') else None
306
+
307
+ self._m_chunk_ofs = self._io.pos()
308
+ return self._m_chunk_ofs if hasattr(self, '_m_chunk_ofs') else None
309
+
310
+ @property
311
+ def chunk_id(self):
312
+ if hasattr(self, '_m_chunk_id'):
313
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
314
+
315
+ self._m_chunk_id = KaitaiStream.resolve_enum(Riff.Fourcc, self.chunk.id)
316
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
317
+
318
+ @property
319
+ def chunk_id_readable(self):
320
+ if hasattr(self, '_m_chunk_id_readable'):
321
+ return self._m_chunk_id_readable if hasattr(self, '_m_chunk_id_readable') else None
322
+
323
+ _pos = self._io.pos()
324
+ self._io.seek(self.chunk_ofs)
325
+ self._debug['_m_chunk_id_readable']['start'] = self._io.pos()
326
+ self._m_chunk_id_readable = (self._io.read_bytes(4)).decode(u"ASCII")
327
+ self._debug['_m_chunk_id_readable']['end'] = self._io.pos()
328
+ self._io.seek(_pos)
329
+ return self._m_chunk_id_readable if hasattr(self, '_m_chunk_id_readable') else None
330
+
331
+ @property
332
+ def chunk_data(self):
333
+ if hasattr(self, '_m_chunk_data'):
334
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
335
+
336
+ io = self.chunk.data_slot._io
337
+ _pos = io.pos()
338
+ io.seek(0)
339
+ self._debug['_m_chunk_data']['start'] = io.pos()
340
+ _on = self.chunk_id
341
+ if _on == Riff.Fourcc.list:
342
+ self._m_chunk_data = Riff.ListChunkData(io, self, self._root)
343
+ self._m_chunk_data._read()
344
+ self._debug['_m_chunk_data']['end'] = io.pos()
345
+ io.seek(_pos)
346
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
347
+
348
+
349
+ @property
350
+ def chunk_id(self):
351
+ if hasattr(self, '_m_chunk_id'):
352
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
353
+
354
+ self._m_chunk_id = KaitaiStream.resolve_enum(Riff.Fourcc, self.chunk.id)
355
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
356
+
357
+ @property
358
+ def is_riff_chunk(self):
359
+ if hasattr(self, '_m_is_riff_chunk'):
360
+ return self._m_is_riff_chunk if hasattr(self, '_m_is_riff_chunk') else None
361
+
362
+ self._m_is_riff_chunk = self.chunk_id == Riff.Fourcc.riff
363
+ return self._m_is_riff_chunk if hasattr(self, '_m_is_riff_chunk') else None
364
+
365
+ @property
366
+ def parent_chunk_data(self):
367
+ if hasattr(self, '_m_parent_chunk_data'):
368
+ return self._m_parent_chunk_data if hasattr(self, '_m_parent_chunk_data') else None
369
+
370
+ if self.is_riff_chunk:
371
+ io = self.chunk.data_slot._io
372
+ _pos = io.pos()
373
+ io.seek(0)
374
+ self._debug['_m_parent_chunk_data']['start'] = io.pos()
375
+ self._m_parent_chunk_data = Riff.ParentChunkData(io, self, self._root)
376
+ self._m_parent_chunk_data._read()
377
+ self._debug['_m_parent_chunk_data']['end'] = io.pos()
378
+ io.seek(_pos)
379
+
380
+ return self._m_parent_chunk_data if hasattr(self, '_m_parent_chunk_data') else None
381
+
382
+ @property
383
+ def subchunks(self):
384
+ if hasattr(self, '_m_subchunks'):
385
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
386
+
387
+ if self.is_riff_chunk:
388
+ io = self.parent_chunk_data.subchunks_slot._io
389
+ _pos = io.pos()
390
+ io.seek(0)
391
+ self._debug['_m_subchunks']['start'] = io.pos()
392
+ self._m_subchunks = []
393
+ i = 0
394
+ while not io.is_eof():
395
+ if not 'arr' in self._debug['_m_subchunks']:
396
+ self._debug['_m_subchunks']['arr'] = []
397
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
398
+ _t__m_subchunks = Riff.ChunkType(io, self, self._root)
399
+ _t__m_subchunks._read()
400
+ self._m_subchunks.append(_t__m_subchunks)
401
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
402
+ i += 1
403
+
404
+ self._debug['_m_subchunks']['end'] = io.pos()
405
+ io.seek(_pos)
406
+
407
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
408
+
409
+