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,1014 @@
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 Wav(KaitaiStruct):
14
+ """The WAVE file format is a subset of Microsoft's RIFF specification for the
15
+ storage of multimedia files. A RIFF file starts out with a file header
16
+ followed by a sequence of data chunks. A WAVE file is often just a RIFF
17
+ file with a single "WAVE" chunk which consists of two sub-chunks --
18
+ a "fmt " chunk specifying the data format and a "data" chunk containing
19
+ the actual sample data, although other chunks exist and are used.
20
+
21
+ An extension of the file format is the Broadcast Wave Format (BWF) for radio
22
+ broadcasts. Sample files can be found at:
23
+
24
+ <https://www.bbc.co.uk/rd/publications/saqas>
25
+
26
+ This Kaitai implementation was written by John Byrd of Gigantic Software
27
+ (jbyrd@giganticsoftware.com), and it is likely to contain bugs.
28
+
29
+ .. seealso::
30
+ Source - http://soundfile.sapp.org/doc/WaveFormat/
31
+
32
+
33
+ .. seealso::
34
+ Source - https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
35
+
36
+
37
+ .. seealso::
38
+ Source - https://web.archive.org/web/20101031101749/http://www.ebu.ch/fr/technical/publications/userguides/bwf_user_guide.php
39
+ """
40
+
41
+ class WFormatTagType(Enum):
42
+ unknown = 0
43
+ pcm = 1
44
+ adpcm = 2
45
+ ieee_float = 3
46
+ vselp = 4
47
+ ibm_cvsd = 5
48
+ alaw = 6
49
+ mulaw = 7
50
+ dts = 8
51
+ drm = 9
52
+ wmavoice9 = 10
53
+ wmavoice10 = 11
54
+ oki_adpcm = 16
55
+ dvi_adpcm = 17
56
+ mediaspace_adpcm = 18
57
+ sierra_adpcm = 19
58
+ g723_adpcm = 20
59
+ digistd = 21
60
+ digifix = 22
61
+ dialogic_oki_adpcm = 23
62
+ mediavision_adpcm = 24
63
+ cu_codec = 25
64
+ hp_dyn_voice = 26
65
+ yamaha_adpcm = 32
66
+ sonarc = 33
67
+ dspgroup_truespeech = 34
68
+ echosc1 = 35
69
+ audiofile_af36 = 36
70
+ aptx = 37
71
+ audiofile_af10 = 38
72
+ prosody_1612 = 39
73
+ lrc = 40
74
+ dolby_ac2 = 48
75
+ gsm610 = 49
76
+ msnaudio = 50
77
+ antex_adpcme = 51
78
+ control_res_vqlpc = 52
79
+ digireal = 53
80
+ digiadpcm = 54
81
+ control_res_cr10 = 55
82
+ nms_vbxadpcm = 56
83
+ cs_imaadpcm = 57
84
+ echosc3 = 58
85
+ rockwell_adpcm = 59
86
+ rockwell_digitalk = 60
87
+ xebec = 61
88
+ g721_adpcm = 64
89
+ g728_celp = 65
90
+ msg723 = 66
91
+ intel_g723_1 = 67
92
+ intel_g729 = 68
93
+ sharp_g726 = 69
94
+ mpeg = 80
95
+ rt24 = 82
96
+ pac = 83
97
+ mpeglayer3 = 85
98
+ lucent_g723 = 89
99
+ cirrus = 96
100
+ espcm = 97
101
+ voxware = 98
102
+ canopus_atrac = 99
103
+ g726_adpcm = 100
104
+ g722_adpcm = 101
105
+ dsat = 102
106
+ dsat_display = 103
107
+ voxware_byte_aligned = 105
108
+ voxware_ac8 = 112
109
+ voxware_ac10 = 113
110
+ voxware_ac16 = 114
111
+ voxware_ac20 = 115
112
+ voxware_rt24 = 116
113
+ voxware_rt29 = 117
114
+ voxware_rt29hw = 118
115
+ voxware_vr12 = 119
116
+ voxware_vr18 = 120
117
+ voxware_tq40 = 121
118
+ voxware_sc3 = 122
119
+ voxware_sc3_1 = 123
120
+ softsound = 128
121
+ voxware_tq60 = 129
122
+ msrt24 = 130
123
+ g729a = 131
124
+ mvi_mvi2 = 132
125
+ df_g726 = 133
126
+ df_gsm610 = 134
127
+ isiaudio = 136
128
+ onlive = 137
129
+ multitude_ft_sx20 = 138
130
+ infocom_its_g721_adpcm = 139
131
+ convedia_g729 = 140
132
+ congruency = 141
133
+ sbc24 = 145
134
+ dolby_ac3_spdif = 146
135
+ mediasonic_g723 = 147
136
+ prosody_8kbps = 148
137
+ zyxel_adpcm = 151
138
+ philips_lpcbb = 152
139
+ packed = 153
140
+ malden_phonytalk = 160
141
+ racal_recorder_gsm = 161
142
+ racal_recorder_g720_a = 162
143
+ racal_recorder_g723_1 = 163
144
+ racal_recorder_tetra_acelp = 164
145
+ nec_aac = 176
146
+ raw_aac1 = 255
147
+ rhetorex_adpcm = 256
148
+ irat = 257
149
+ vivo_g723 = 273
150
+ vivo_siren = 274
151
+ philips_celp = 288
152
+ philips_grundig = 289
153
+ digital_g723 = 291
154
+ sanyo_ld_adpcm = 293
155
+ siprolab_aceplnet = 304
156
+ siprolab_acelp4800 = 305
157
+ siprolab_acelp8v3 = 306
158
+ siprolab_g729 = 307
159
+ siprolab_g729a = 308
160
+ siprolab_kelvin = 309
161
+ voiceage_amr = 310
162
+ g726adpcm = 320
163
+ dictaphone_celp68 = 321
164
+ dictaphone_celp54 = 322
165
+ qualcomm_purevoice = 336
166
+ qualcomm_halfrate = 337
167
+ tubgsm = 341
168
+ msaudio1 = 352
169
+ wmaudio2 = 353
170
+ wmaudio3 = 354
171
+ wmaudio_lossless = 355
172
+ wmaspdif = 356
173
+ unisys_nap_adpcm = 368
174
+ unisys_nap_ulaw = 369
175
+ unisys_nap_alaw = 370
176
+ unisys_nap_16k = 371
177
+ sycom_acm_syc008 = 372
178
+ sycom_acm_syc701_g726l = 373
179
+ sycom_acm_syc701_celp54 = 374
180
+ sycom_acm_syc701_celp68 = 375
181
+ knowledge_adventure_adpcm = 376
182
+ fraunhofer_iis_mpeg2_aac = 384
183
+ dts_ds = 400
184
+ creative_adpcm = 512
185
+ creative_fastspeech8 = 514
186
+ creative_fastspeech10 = 515
187
+ uher_adpcm = 528
188
+ ulead_dv_audio = 533
189
+ ulead_dv_audio_1 = 534
190
+ quarterdeck = 544
191
+ ilink_vc = 560
192
+ raw_sport = 576
193
+ esst_ac3 = 577
194
+ generic_passthru = 585
195
+ ipi_hsx = 592
196
+ ipi_rpelp = 593
197
+ cs2 = 608
198
+ sony_scx = 624
199
+ sony_scy = 625
200
+ sony_atrac3 = 626
201
+ sony_spc = 627
202
+ telum_audio = 640
203
+ telum_ia_audio = 641
204
+ norcom_voice_systems_adpcm = 645
205
+ fm_towns_snd = 768
206
+ micronas = 848
207
+ micronas_celp833 = 849
208
+ btv_digital = 1024
209
+ intel_music_coder = 1025
210
+ indeo_audio = 1026
211
+ qdesign_music = 1104
212
+ on2_vp7_audio = 1280
213
+ on2_vp6_audio = 1281
214
+ vme_vmpcm = 1664
215
+ tpc = 1665
216
+ lightwave_lossless = 2222
217
+ oligsm = 4096
218
+ oliadpcm = 4097
219
+ olicelp = 4098
220
+ olisbc = 4099
221
+ oliopr = 4100
222
+ lh_codec = 4352
223
+ lh_codec_celp = 4353
224
+ lh_codec_sbc8 = 4354
225
+ lh_codec_sbc12 = 4355
226
+ lh_codec_sbc16 = 4356
227
+ norris = 5120
228
+ isiaudio_2 = 5121
229
+ soundspace_musicompress = 5376
230
+ mpeg_adts_aac = 5632
231
+ mpeg_raw_aac = 5633
232
+ mpeg_loas = 5634
233
+ nokia_mpeg_adts_aac = 5640
234
+ nokia_mpeg_raw_aac = 5641
235
+ vodafone_mpeg_adts_aac = 5642
236
+ vodafone_mpeg_raw_aac = 5643
237
+ mpeg_heaac = 5648
238
+ voxware_rt24_speech = 6172
239
+ sonicfoundry_lossless = 6513
240
+ innings_telecom_adpcm = 6521
241
+ lucent_sx8300p = 7175
242
+ lucent_sx5363s = 7180
243
+ cuseeme = 7939
244
+ ntcsoft_alf2cm_acm = 8132
245
+ dvm = 8192
246
+ dts2 = 8193
247
+ makeavis = 13075
248
+ divio_mpeg4_aac = 16707
249
+ nokia_adaptive_multirate = 16897
250
+ divio_g726 = 16963
251
+ lead_speech = 17228
252
+ lead_vorbis = 22092
253
+ wavpack_audio = 22358
254
+ ogg_vorbis_mode_1 = 26447
255
+ ogg_vorbis_mode_2 = 26448
256
+ ogg_vorbis_mode_3 = 26449
257
+ ogg_vorbis_mode_1_plus = 26479
258
+ ogg_vorbis_mode_2_plus = 26480
259
+ ogg_vorbis_mode_3_plus = 26481
260
+ threecom_nbx = 28672
261
+ faad_aac = 28781
262
+ amr_nb = 29537
263
+ amr_wb = 29538
264
+ amr_wp = 29539
265
+ gsm_amr_cbr = 31265
266
+ gsm_amr_vbr_sid = 31266
267
+ comverse_infosys_g723_1 = 41216
268
+ comverse_infosys_avqsbc = 41217
269
+ comverse_infosys_sbc = 41218
270
+ symbol_g729_a = 41219
271
+ voiceage_amr_wb = 41220
272
+ ingenient_g726 = 41221
273
+ mpeg4_aac = 41222
274
+ encore_g726 = 41223
275
+ zoll_asao = 41224
276
+ speex_voice = 41225
277
+ vianix_masc = 41226
278
+ wm9_spectrum_analyzer = 41227
279
+ wmf_spectrum_anayzer = 41228
280
+ gsm_610 = 41229
281
+ gsm_620 = 41230
282
+ gsm_660 = 41231
283
+ gsm_690 = 41232
284
+ gsm_adaptive_multirate_wb = 41233
285
+ polycom_g722 = 41234
286
+ polycom_g728 = 41235
287
+ polycom_g729_a = 41236
288
+ polycom_siren = 41237
289
+ global_ip_ilbc = 41238
290
+ radiotime_time_shift_radio = 41239
291
+ nice_aca = 41240
292
+ nice_adpcm = 41241
293
+ vocord_g721 = 41242
294
+ vocord_g726 = 41243
295
+ vocord_g722_1 = 41244
296
+ vocord_g728 = 41245
297
+ vocord_g729 = 41246
298
+ vocord_g729_a = 41247
299
+ vocord_g723_1 = 41248
300
+ vocord_lbc = 41249
301
+ nice_g728 = 41250
302
+ france_telecom_g729 = 41251
303
+ codian = 41252
304
+ flac = 61868
305
+ extensible = 65534
306
+ development = 65535
307
+
308
+ class Fourcc(Enum):
309
+ id3 = 540238953
310
+ cue = 543520099
311
+ fmt = 544501094
312
+ wave = 1163280727
313
+ riff = 1179011410
314
+ peak = 1262568784
315
+ ixml = 1280137321
316
+ info = 1330007625
317
+ list = 1414744396
318
+ pmx = 1481461855
319
+ chna = 1634625635
320
+ data = 1635017060
321
+ umid = 1684630901
322
+ minf = 1718511981
323
+ axml = 1819113569
324
+ regn = 1852269938
325
+ afsp = 1886611041
326
+ fact = 1952670054
327
+ bext = 1954047330
328
+ SEQ_FIELDS = ["chunk"]
329
+ def __init__(self, _io, _parent=None, _root=None):
330
+ self._io = _io
331
+ self._parent = _parent
332
+ self._root = _root if _root else self
333
+ self._debug = collections.defaultdict(dict)
334
+
335
+ def _read(self):
336
+ self._debug['chunk']['start'] = self._io.pos()
337
+ self.chunk = Riff.Chunk(self._io, self, self._root)
338
+ self.chunk._read()
339
+ self._debug['chunk']['end'] = self._io.pos()
340
+
341
+ class SampleType(KaitaiStruct):
342
+ SEQ_FIELDS = ["sample"]
343
+ def __init__(self, _io, _parent=None, _root=None):
344
+ self._io = _io
345
+ self._parent = _parent
346
+ self._root = _root if _root else self
347
+ self._debug = collections.defaultdict(dict)
348
+
349
+ def _read(self):
350
+ self._debug['sample']['start'] = self._io.pos()
351
+ self.sample = self._io.read_u2le()
352
+ self._debug['sample']['end'] = self._io.pos()
353
+
354
+
355
+ class FormatChunkType(KaitaiStruct):
356
+ SEQ_FIELDS = ["w_format_tag", "n_channels", "n_samples_per_sec", "n_avg_bytes_per_sec", "n_block_align", "w_bits_per_sample", "cb_size", "w_valid_bits_per_sample", "channel_mask_and_subformat"]
357
+ def __init__(self, _io, _parent=None, _root=None):
358
+ self._io = _io
359
+ self._parent = _parent
360
+ self._root = _root if _root else self
361
+ self._debug = collections.defaultdict(dict)
362
+
363
+ def _read(self):
364
+ self._debug['w_format_tag']['start'] = self._io.pos()
365
+ self.w_format_tag = KaitaiStream.resolve_enum(Wav.WFormatTagType, self._io.read_u2le())
366
+ self._debug['w_format_tag']['end'] = self._io.pos()
367
+ self._debug['n_channels']['start'] = self._io.pos()
368
+ self.n_channels = self._io.read_u2le()
369
+ self._debug['n_channels']['end'] = self._io.pos()
370
+ self._debug['n_samples_per_sec']['start'] = self._io.pos()
371
+ self.n_samples_per_sec = self._io.read_u4le()
372
+ self._debug['n_samples_per_sec']['end'] = self._io.pos()
373
+ self._debug['n_avg_bytes_per_sec']['start'] = self._io.pos()
374
+ self.n_avg_bytes_per_sec = self._io.read_u4le()
375
+ self._debug['n_avg_bytes_per_sec']['end'] = self._io.pos()
376
+ self._debug['n_block_align']['start'] = self._io.pos()
377
+ self.n_block_align = self._io.read_u2le()
378
+ self._debug['n_block_align']['end'] = self._io.pos()
379
+ self._debug['w_bits_per_sample']['start'] = self._io.pos()
380
+ self.w_bits_per_sample = self._io.read_u2le()
381
+ self._debug['w_bits_per_sample']['end'] = self._io.pos()
382
+ if not (self.is_basic_pcm):
383
+ self._debug['cb_size']['start'] = self._io.pos()
384
+ self.cb_size = self._io.read_u2le()
385
+ self._debug['cb_size']['end'] = self._io.pos()
386
+
387
+ if self.is_cb_size_meaningful:
388
+ self._debug['w_valid_bits_per_sample']['start'] = self._io.pos()
389
+ self.w_valid_bits_per_sample = self._io.read_u2le()
390
+ self._debug['w_valid_bits_per_sample']['end'] = self._io.pos()
391
+
392
+ if self.is_extensible:
393
+ self._debug['channel_mask_and_subformat']['start'] = self._io.pos()
394
+ self.channel_mask_and_subformat = Wav.ChannelMaskAndSubformatType(self._io, self, self._root)
395
+ self.channel_mask_and_subformat._read()
396
+ self._debug['channel_mask_and_subformat']['end'] = self._io.pos()
397
+
398
+
399
+ @property
400
+ def is_extensible(self):
401
+ if hasattr(self, '_m_is_extensible'):
402
+ return self._m_is_extensible if hasattr(self, '_m_is_extensible') else None
403
+
404
+ self._m_is_extensible = self.w_format_tag == Wav.WFormatTagType.extensible
405
+ return self._m_is_extensible if hasattr(self, '_m_is_extensible') else None
406
+
407
+ @property
408
+ def is_basic_pcm(self):
409
+ if hasattr(self, '_m_is_basic_pcm'):
410
+ return self._m_is_basic_pcm if hasattr(self, '_m_is_basic_pcm') else None
411
+
412
+ self._m_is_basic_pcm = self.w_format_tag == Wav.WFormatTagType.pcm
413
+ return self._m_is_basic_pcm if hasattr(self, '_m_is_basic_pcm') else None
414
+
415
+ @property
416
+ def is_basic_float(self):
417
+ if hasattr(self, '_m_is_basic_float'):
418
+ return self._m_is_basic_float if hasattr(self, '_m_is_basic_float') else None
419
+
420
+ self._m_is_basic_float = self.w_format_tag == Wav.WFormatTagType.ieee_float
421
+ return self._m_is_basic_float if hasattr(self, '_m_is_basic_float') else None
422
+
423
+ @property
424
+ def is_cb_size_meaningful(self):
425
+ if hasattr(self, '_m_is_cb_size_meaningful'):
426
+ return self._m_is_cb_size_meaningful if hasattr(self, '_m_is_cb_size_meaningful') else None
427
+
428
+ self._m_is_cb_size_meaningful = ((not (self.is_basic_pcm)) and (self.cb_size != 0))
429
+ return self._m_is_cb_size_meaningful if hasattr(self, '_m_is_cb_size_meaningful') else None
430
+
431
+
432
+ class PmxChunkType(KaitaiStruct):
433
+ SEQ_FIELDS = ["data"]
434
+ def __init__(self, _io, _parent=None, _root=None):
435
+ self._io = _io
436
+ self._parent = _parent
437
+ self._root = _root if _root else self
438
+ self._debug = collections.defaultdict(dict)
439
+
440
+ def _read(self):
441
+ self._debug['data']['start'] = self._io.pos()
442
+ self.data = (self._io.read_bytes_full()).decode(u"UTF-8")
443
+ self._debug['data']['end'] = self._io.pos()
444
+
445
+
446
+ class FactChunkType(KaitaiStruct):
447
+ """required for all non-PCM formats
448
+ (`w_format_tag != w_format_tag_type::pcm` or `not is_basic_pcm` in
449
+ `format_chunk_type` context)
450
+ """
451
+ SEQ_FIELDS = ["num_samples_per_channel"]
452
+ def __init__(self, _io, _parent=None, _root=None):
453
+ self._io = _io
454
+ self._parent = _parent
455
+ self._root = _root if _root else self
456
+ self._debug = collections.defaultdict(dict)
457
+
458
+ def _read(self):
459
+ self._debug['num_samples_per_channel']['start'] = self._io.pos()
460
+ self.num_samples_per_channel = self._io.read_u4le()
461
+ self._debug['num_samples_per_channel']['end'] = self._io.pos()
462
+
463
+
464
+ class GuidType(KaitaiStruct):
465
+ SEQ_FIELDS = ["data1", "data2", "data3", "data4", "data4a"]
466
+ def __init__(self, _io, _parent=None, _root=None):
467
+ self._io = _io
468
+ self._parent = _parent
469
+ self._root = _root if _root else self
470
+ self._debug = collections.defaultdict(dict)
471
+
472
+ def _read(self):
473
+ self._debug['data1']['start'] = self._io.pos()
474
+ self.data1 = self._io.read_u4le()
475
+ self._debug['data1']['end'] = self._io.pos()
476
+ self._debug['data2']['start'] = self._io.pos()
477
+ self.data2 = self._io.read_u2le()
478
+ self._debug['data2']['end'] = self._io.pos()
479
+ self._debug['data3']['start'] = self._io.pos()
480
+ self.data3 = self._io.read_u2le()
481
+ self._debug['data3']['end'] = self._io.pos()
482
+ self._debug['data4']['start'] = self._io.pos()
483
+ self.data4 = self._io.read_u4be()
484
+ self._debug['data4']['end'] = self._io.pos()
485
+ self._debug['data4a']['start'] = self._io.pos()
486
+ self.data4a = self._io.read_u4be()
487
+ self._debug['data4a']['end'] = self._io.pos()
488
+
489
+
490
+ class IxmlChunkType(KaitaiStruct):
491
+ """
492
+ .. seealso::
493
+ Source - https://en.wikipedia.org/wiki/IXML
494
+ """
495
+ SEQ_FIELDS = ["data"]
496
+ def __init__(self, _io, _parent=None, _root=None):
497
+ self._io = _io
498
+ self._parent = _parent
499
+ self._root = _root if _root else self
500
+ self._debug = collections.defaultdict(dict)
501
+
502
+ def _read(self):
503
+ self._debug['data']['start'] = self._io.pos()
504
+ self.data = (self._io.read_bytes_full()).decode(u"UTF-8")
505
+ self._debug['data']['end'] = self._io.pos()
506
+
507
+
508
+ class InfoChunkType(KaitaiStruct):
509
+ SEQ_FIELDS = ["chunk"]
510
+ def __init__(self, _io, _parent=None, _root=None):
511
+ self._io = _io
512
+ self._parent = _parent
513
+ self._root = _root if _root else self
514
+ self._debug = collections.defaultdict(dict)
515
+
516
+ def _read(self):
517
+ self._debug['chunk']['start'] = self._io.pos()
518
+ self.chunk = Riff.Chunk(self._io, self, self._root)
519
+ self.chunk._read()
520
+ self._debug['chunk']['end'] = self._io.pos()
521
+
522
+ @property
523
+ def chunk_data(self):
524
+ if hasattr(self, '_m_chunk_data'):
525
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
526
+
527
+ io = self.chunk.data_slot._io
528
+ _pos = io.pos()
529
+ io.seek(0)
530
+ self._debug['_m_chunk_data']['start'] = io.pos()
531
+ self._m_chunk_data = (io.read_bytes_term(0, False, True, True)).decode(u"ASCII")
532
+ self._debug['_m_chunk_data']['end'] = io.pos()
533
+ io.seek(_pos)
534
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
535
+
536
+
537
+ class CuePointType(KaitaiStruct):
538
+ SEQ_FIELDS = ["dw_name", "dw_position", "fcc_chunk", "dw_chunk_start", "dw_block_start", "dw_sample_offset"]
539
+ def __init__(self, _io, _parent=None, _root=None):
540
+ self._io = _io
541
+ self._parent = _parent
542
+ self._root = _root if _root else self
543
+ self._debug = collections.defaultdict(dict)
544
+
545
+ def _read(self):
546
+ self._debug['dw_name']['start'] = self._io.pos()
547
+ self.dw_name = self._io.read_u4le()
548
+ self._debug['dw_name']['end'] = self._io.pos()
549
+ self._debug['dw_position']['start'] = self._io.pos()
550
+ self.dw_position = self._io.read_u4le()
551
+ self._debug['dw_position']['end'] = self._io.pos()
552
+ self._debug['fcc_chunk']['start'] = self._io.pos()
553
+ self.fcc_chunk = self._io.read_u4le()
554
+ self._debug['fcc_chunk']['end'] = self._io.pos()
555
+ self._debug['dw_chunk_start']['start'] = self._io.pos()
556
+ self.dw_chunk_start = self._io.read_u4le()
557
+ self._debug['dw_chunk_start']['end'] = self._io.pos()
558
+ self._debug['dw_block_start']['start'] = self._io.pos()
559
+ self.dw_block_start = self._io.read_u4le()
560
+ self._debug['dw_block_start']['end'] = self._io.pos()
561
+ self._debug['dw_sample_offset']['start'] = self._io.pos()
562
+ self.dw_sample_offset = self._io.read_u4le()
563
+ self._debug['dw_sample_offset']['end'] = self._io.pos()
564
+
565
+
566
+ class DataChunkType(KaitaiStruct):
567
+ SEQ_FIELDS = ["data"]
568
+ def __init__(self, _io, _parent=None, _root=None):
569
+ self._io = _io
570
+ self._parent = _parent
571
+ self._root = _root if _root else self
572
+ self._debug = collections.defaultdict(dict)
573
+
574
+ def _read(self):
575
+ self._debug['data']['start'] = self._io.pos()
576
+ self.data = self._io.read_bytes_full()
577
+ self._debug['data']['end'] = self._io.pos()
578
+
579
+
580
+ class SamplesType(KaitaiStruct):
581
+ SEQ_FIELDS = ["samples"]
582
+ def __init__(self, _io, _parent=None, _root=None):
583
+ self._io = _io
584
+ self._parent = _parent
585
+ self._root = _root if _root else self
586
+ self._debug = collections.defaultdict(dict)
587
+
588
+ def _read(self):
589
+ self._debug['samples']['start'] = self._io.pos()
590
+ self.samples = self._io.read_u4le()
591
+ self._debug['samples']['end'] = self._io.pos()
592
+
593
+
594
+ class ChannelMaskAndSubformatType(KaitaiStruct):
595
+ SEQ_FIELDS = ["dw_channel_mask", "subformat"]
596
+ def __init__(self, _io, _parent=None, _root=None):
597
+ self._io = _io
598
+ self._parent = _parent
599
+ self._root = _root if _root else self
600
+ self._debug = collections.defaultdict(dict)
601
+
602
+ def _read(self):
603
+ self._debug['dw_channel_mask']['start'] = self._io.pos()
604
+ self.dw_channel_mask = Wav.ChannelMaskType(self._io, self, self._root)
605
+ self.dw_channel_mask._read()
606
+ self._debug['dw_channel_mask']['end'] = self._io.pos()
607
+ self._debug['subformat']['start'] = self._io.pos()
608
+ self.subformat = Wav.GuidType(self._io, self, self._root)
609
+ self.subformat._read()
610
+ self._debug['subformat']['end'] = self._io.pos()
611
+
612
+
613
+ class CueChunkType(KaitaiStruct):
614
+ SEQ_FIELDS = ["dw_cue_points", "cue_points"]
615
+ def __init__(self, _io, _parent=None, _root=None):
616
+ self._io = _io
617
+ self._parent = _parent
618
+ self._root = _root if _root else self
619
+ self._debug = collections.defaultdict(dict)
620
+
621
+ def _read(self):
622
+ self._debug['dw_cue_points']['start'] = self._io.pos()
623
+ self.dw_cue_points = self._io.read_u4le()
624
+ self._debug['dw_cue_points']['end'] = self._io.pos()
625
+ self._debug['cue_points']['start'] = self._io.pos()
626
+ self.cue_points = [None] * (self.dw_cue_points)
627
+ for i in range(self.dw_cue_points):
628
+ if not 'arr' in self._debug['cue_points']:
629
+ self._debug['cue_points']['arr'] = []
630
+ self._debug['cue_points']['arr'].append({'start': self._io.pos()})
631
+ _t_cue_points = Wav.CuePointType(self._io, self, self._root)
632
+ _t_cue_points._read()
633
+ self.cue_points[i] = _t_cue_points
634
+ self._debug['cue_points']['arr'][i]['end'] = self._io.pos()
635
+
636
+ self._debug['cue_points']['end'] = self._io.pos()
637
+
638
+
639
+ class ListChunkType(KaitaiStruct):
640
+ SEQ_FIELDS = ["parent_chunk_data"]
641
+ def __init__(self, _io, _parent=None, _root=None):
642
+ self._io = _io
643
+ self._parent = _parent
644
+ self._root = _root if _root else self
645
+ self._debug = collections.defaultdict(dict)
646
+
647
+ def _read(self):
648
+ self._debug['parent_chunk_data']['start'] = self._io.pos()
649
+ self.parent_chunk_data = Riff.ParentChunkData(self._io, self, self._root)
650
+ self.parent_chunk_data._read()
651
+ self._debug['parent_chunk_data']['end'] = self._io.pos()
652
+
653
+ @property
654
+ def form_type(self):
655
+ if hasattr(self, '_m_form_type'):
656
+ return self._m_form_type if hasattr(self, '_m_form_type') else None
657
+
658
+ self._m_form_type = KaitaiStream.resolve_enum(Wav.Fourcc, self.parent_chunk_data.form_type)
659
+ return self._m_form_type if hasattr(self, '_m_form_type') else None
660
+
661
+ @property
662
+ def subchunks(self):
663
+ if hasattr(self, '_m_subchunks'):
664
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
665
+
666
+ io = self.parent_chunk_data.subchunks_slot._io
667
+ _pos = io.pos()
668
+ io.seek(0)
669
+ self._debug['_m_subchunks']['start'] = io.pos()
670
+ self._m_subchunks = []
671
+ i = 0
672
+ while not io.is_eof():
673
+ if not 'arr' in self._debug['_m_subchunks']:
674
+ self._debug['_m_subchunks']['arr'] = []
675
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
676
+ _on = self.form_type
677
+ if _on == Wav.Fourcc.info:
678
+ if not 'arr' in self._debug['_m_subchunks']:
679
+ self._debug['_m_subchunks']['arr'] = []
680
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
681
+ _t__m_subchunks = Wav.InfoChunkType(io, self, self._root)
682
+ _t__m_subchunks._read()
683
+ self._m_subchunks.append(_t__m_subchunks)
684
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
685
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
686
+ i += 1
687
+
688
+ self._debug['_m_subchunks']['end'] = io.pos()
689
+ io.seek(_pos)
690
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
691
+
692
+
693
+ class ChannelMaskType(KaitaiStruct):
694
+ SEQ_FIELDS = ["front_right_of_center", "front_left_of_center", "back_right", "back_left", "low_frequency", "front_center", "front_right", "front_left", "top_center", "side_right", "side_left", "back_center", "top_back_left", "top_front_right", "top_front_center", "top_front_left", "unused1", "top_back_right", "top_back_center", "unused2"]
695
+ def __init__(self, _io, _parent=None, _root=None):
696
+ self._io = _io
697
+ self._parent = _parent
698
+ self._root = _root if _root else self
699
+ self._debug = collections.defaultdict(dict)
700
+
701
+ def _read(self):
702
+ self._debug['front_right_of_center']['start'] = self._io.pos()
703
+ self.front_right_of_center = self._io.read_bits_int_be(1) != 0
704
+ self._debug['front_right_of_center']['end'] = self._io.pos()
705
+ self._debug['front_left_of_center']['start'] = self._io.pos()
706
+ self.front_left_of_center = self._io.read_bits_int_be(1) != 0
707
+ self._debug['front_left_of_center']['end'] = self._io.pos()
708
+ self._debug['back_right']['start'] = self._io.pos()
709
+ self.back_right = self._io.read_bits_int_be(1) != 0
710
+ self._debug['back_right']['end'] = self._io.pos()
711
+ self._debug['back_left']['start'] = self._io.pos()
712
+ self.back_left = self._io.read_bits_int_be(1) != 0
713
+ self._debug['back_left']['end'] = self._io.pos()
714
+ self._debug['low_frequency']['start'] = self._io.pos()
715
+ self.low_frequency = self._io.read_bits_int_be(1) != 0
716
+ self._debug['low_frequency']['end'] = self._io.pos()
717
+ self._debug['front_center']['start'] = self._io.pos()
718
+ self.front_center = self._io.read_bits_int_be(1) != 0
719
+ self._debug['front_center']['end'] = self._io.pos()
720
+ self._debug['front_right']['start'] = self._io.pos()
721
+ self.front_right = self._io.read_bits_int_be(1) != 0
722
+ self._debug['front_right']['end'] = self._io.pos()
723
+ self._debug['front_left']['start'] = self._io.pos()
724
+ self.front_left = self._io.read_bits_int_be(1) != 0
725
+ self._debug['front_left']['end'] = self._io.pos()
726
+ self._debug['top_center']['start'] = self._io.pos()
727
+ self.top_center = self._io.read_bits_int_be(1) != 0
728
+ self._debug['top_center']['end'] = self._io.pos()
729
+ self._debug['side_right']['start'] = self._io.pos()
730
+ self.side_right = self._io.read_bits_int_be(1) != 0
731
+ self._debug['side_right']['end'] = self._io.pos()
732
+ self._debug['side_left']['start'] = self._io.pos()
733
+ self.side_left = self._io.read_bits_int_be(1) != 0
734
+ self._debug['side_left']['end'] = self._io.pos()
735
+ self._debug['back_center']['start'] = self._io.pos()
736
+ self.back_center = self._io.read_bits_int_be(1) != 0
737
+ self._debug['back_center']['end'] = self._io.pos()
738
+ self._debug['top_back_left']['start'] = self._io.pos()
739
+ self.top_back_left = self._io.read_bits_int_be(1) != 0
740
+ self._debug['top_back_left']['end'] = self._io.pos()
741
+ self._debug['top_front_right']['start'] = self._io.pos()
742
+ self.top_front_right = self._io.read_bits_int_be(1) != 0
743
+ self._debug['top_front_right']['end'] = self._io.pos()
744
+ self._debug['top_front_center']['start'] = self._io.pos()
745
+ self.top_front_center = self._io.read_bits_int_be(1) != 0
746
+ self._debug['top_front_center']['end'] = self._io.pos()
747
+ self._debug['top_front_left']['start'] = self._io.pos()
748
+ self.top_front_left = self._io.read_bits_int_be(1) != 0
749
+ self._debug['top_front_left']['end'] = self._io.pos()
750
+ self._debug['unused1']['start'] = self._io.pos()
751
+ self.unused1 = self._io.read_bits_int_be(6)
752
+ self._debug['unused1']['end'] = self._io.pos()
753
+ self._debug['top_back_right']['start'] = self._io.pos()
754
+ self.top_back_right = self._io.read_bits_int_be(1) != 0
755
+ self._debug['top_back_right']['end'] = self._io.pos()
756
+ self._debug['top_back_center']['start'] = self._io.pos()
757
+ self.top_back_center = self._io.read_bits_int_be(1) != 0
758
+ self._debug['top_back_center']['end'] = self._io.pos()
759
+ self._debug['unused2']['start'] = self._io.pos()
760
+ self.unused2 = self._io.read_bits_int_be(8)
761
+ self._debug['unused2']['end'] = self._io.pos()
762
+
763
+
764
+ class AfspChunkType(KaitaiStruct):
765
+ """
766
+ .. seealso::
767
+ Source - https://www.mmsp.ece.mcgill.ca/Documents/Downloads/AFsp/
768
+ """
769
+ SEQ_FIELDS = ["magic", "info_records"]
770
+ def __init__(self, _io, _parent=None, _root=None):
771
+ self._io = _io
772
+ self._parent = _parent
773
+ self._root = _root if _root else self
774
+ self._debug = collections.defaultdict(dict)
775
+
776
+ def _read(self):
777
+ self._debug['magic']['start'] = self._io.pos()
778
+ self.magic = self._io.read_bytes(4)
779
+ self._debug['magic']['end'] = self._io.pos()
780
+ if not self.magic == b"\x41\x46\x73\x70":
781
+ raise kaitaistruct.ValidationNotEqualError(b"\x41\x46\x73\x70", self.magic, self._io, u"/types/afsp_chunk_type/seq/0")
782
+ self._debug['info_records']['start'] = self._io.pos()
783
+ self.info_records = []
784
+ i = 0
785
+ while not self._io.is_eof():
786
+ if not 'arr' in self._debug['info_records']:
787
+ self._debug['info_records']['arr'] = []
788
+ self._debug['info_records']['arr'].append({'start': self._io.pos()})
789
+ self.info_records.append((self._io.read_bytes_term(0, False, True, True)).decode(u"ASCII"))
790
+ self._debug['info_records']['arr'][len(self.info_records) - 1]['end'] = self._io.pos()
791
+ i += 1
792
+
793
+ self._debug['info_records']['end'] = self._io.pos()
794
+
795
+
796
+ class AxmlChunkType(KaitaiStruct):
797
+ """
798
+ .. seealso::
799
+ Source - https://tech.ebu.ch/docs/tech/tech3285s5.pdf
800
+ """
801
+ SEQ_FIELDS = ["data"]
802
+ def __init__(self, _io, _parent=None, _root=None):
803
+ self._io = _io
804
+ self._parent = _parent
805
+ self._root = _root if _root else self
806
+ self._debug = collections.defaultdict(dict)
807
+
808
+ def _read(self):
809
+ self._debug['data']['start'] = self._io.pos()
810
+ self.data = (self._io.read_bytes_full()).decode(u"UTF-8")
811
+ self._debug['data']['end'] = self._io.pos()
812
+
813
+
814
+ class ChunkType(KaitaiStruct):
815
+ SEQ_FIELDS = ["chunk"]
816
+ def __init__(self, _io, _parent=None, _root=None):
817
+ self._io = _io
818
+ self._parent = _parent
819
+ self._root = _root if _root else self
820
+ self._debug = collections.defaultdict(dict)
821
+
822
+ def _read(self):
823
+ self._debug['chunk']['start'] = self._io.pos()
824
+ self.chunk = Riff.Chunk(self._io, self, self._root)
825
+ self.chunk._read()
826
+ self._debug['chunk']['end'] = self._io.pos()
827
+
828
+ @property
829
+ def chunk_id(self):
830
+ if hasattr(self, '_m_chunk_id'):
831
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
832
+
833
+ self._m_chunk_id = KaitaiStream.resolve_enum(Wav.Fourcc, self.chunk.id)
834
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
835
+
836
+ @property
837
+ def chunk_data(self):
838
+ if hasattr(self, '_m_chunk_data'):
839
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
840
+
841
+ io = self.chunk.data_slot._io
842
+ _pos = io.pos()
843
+ io.seek(0)
844
+ self._debug['_m_chunk_data']['start'] = io.pos()
845
+ _on = self.chunk_id
846
+ if _on == Wav.Fourcc.fact:
847
+ self._m_chunk_data = Wav.FactChunkType(io, self, self._root)
848
+ self._m_chunk_data._read()
849
+ elif _on == Wav.Fourcc.list:
850
+ self._m_chunk_data = Wav.ListChunkType(io, self, self._root)
851
+ self._m_chunk_data._read()
852
+ elif _on == Wav.Fourcc.fmt:
853
+ self._m_chunk_data = Wav.FormatChunkType(io, self, self._root)
854
+ self._m_chunk_data._read()
855
+ elif _on == Wav.Fourcc.afsp:
856
+ self._m_chunk_data = Wav.AfspChunkType(io, self, self._root)
857
+ self._m_chunk_data._read()
858
+ elif _on == Wav.Fourcc.bext:
859
+ self._m_chunk_data = Wav.BextChunkType(io, self, self._root)
860
+ self._m_chunk_data._read()
861
+ elif _on == Wav.Fourcc.cue:
862
+ self._m_chunk_data = Wav.CueChunkType(io, self, self._root)
863
+ self._m_chunk_data._read()
864
+ elif _on == Wav.Fourcc.ixml:
865
+ self._m_chunk_data = Wav.IxmlChunkType(io, self, self._root)
866
+ self._m_chunk_data._read()
867
+ elif _on == Wav.Fourcc.pmx:
868
+ self._m_chunk_data = Wav.PmxChunkType(io, self, self._root)
869
+ self._m_chunk_data._read()
870
+ elif _on == Wav.Fourcc.axml:
871
+ self._m_chunk_data = Wav.AxmlChunkType(io, self, self._root)
872
+ self._m_chunk_data._read()
873
+ elif _on == Wav.Fourcc.data:
874
+ self._m_chunk_data = Wav.DataChunkType(io, self, self._root)
875
+ self._m_chunk_data._read()
876
+ self._debug['_m_chunk_data']['end'] = io.pos()
877
+ io.seek(_pos)
878
+ return self._m_chunk_data if hasattr(self, '_m_chunk_data') else None
879
+
880
+
881
+ class BextChunkType(KaitaiStruct):
882
+ """
883
+ .. seealso::
884
+ Source - https://en.wikipedia.org/wiki/Broadcast_Wave_Format
885
+ """
886
+ SEQ_FIELDS = ["description", "originator", "originator_reference", "origination_date", "origination_time", "time_reference_low", "time_reference_high", "version", "umid", "loudness_value", "loudness_range", "max_true_peak_level", "max_momentary_loudness", "max_short_term_loudness"]
887
+ def __init__(self, _io, _parent=None, _root=None):
888
+ self._io = _io
889
+ self._parent = _parent
890
+ self._root = _root if _root else self
891
+ self._debug = collections.defaultdict(dict)
892
+
893
+ def _read(self):
894
+ self._debug['description']['start'] = self._io.pos()
895
+ self.description = (KaitaiStream.bytes_terminate(self._io.read_bytes(256), 0, False)).decode(u"ASCII")
896
+ self._debug['description']['end'] = self._io.pos()
897
+ self._debug['originator']['start'] = self._io.pos()
898
+ self.originator = (KaitaiStream.bytes_terminate(self._io.read_bytes(32), 0, False)).decode(u"ASCII")
899
+ self._debug['originator']['end'] = self._io.pos()
900
+ self._debug['originator_reference']['start'] = self._io.pos()
901
+ self.originator_reference = (KaitaiStream.bytes_terminate(self._io.read_bytes(32), 0, False)).decode(u"ASCII")
902
+ self._debug['originator_reference']['end'] = self._io.pos()
903
+ self._debug['origination_date']['start'] = self._io.pos()
904
+ self.origination_date = (self._io.read_bytes(10)).decode(u"ASCII")
905
+ self._debug['origination_date']['end'] = self._io.pos()
906
+ self._debug['origination_time']['start'] = self._io.pos()
907
+ self.origination_time = (self._io.read_bytes(8)).decode(u"ASCII")
908
+ self._debug['origination_time']['end'] = self._io.pos()
909
+ self._debug['time_reference_low']['start'] = self._io.pos()
910
+ self.time_reference_low = self._io.read_u4le()
911
+ self._debug['time_reference_low']['end'] = self._io.pos()
912
+ self._debug['time_reference_high']['start'] = self._io.pos()
913
+ self.time_reference_high = self._io.read_u4le()
914
+ self._debug['time_reference_high']['end'] = self._io.pos()
915
+ self._debug['version']['start'] = self._io.pos()
916
+ self.version = self._io.read_u2le()
917
+ self._debug['version']['end'] = self._io.pos()
918
+ self._debug['umid']['start'] = self._io.pos()
919
+ self.umid = self._io.read_bytes(64)
920
+ self._debug['umid']['end'] = self._io.pos()
921
+ self._debug['loudness_value']['start'] = self._io.pos()
922
+ self.loudness_value = self._io.read_u2le()
923
+ self._debug['loudness_value']['end'] = self._io.pos()
924
+ self._debug['loudness_range']['start'] = self._io.pos()
925
+ self.loudness_range = self._io.read_u2le()
926
+ self._debug['loudness_range']['end'] = self._io.pos()
927
+ self._debug['max_true_peak_level']['start'] = self._io.pos()
928
+ self.max_true_peak_level = self._io.read_u2le()
929
+ self._debug['max_true_peak_level']['end'] = self._io.pos()
930
+ self._debug['max_momentary_loudness']['start'] = self._io.pos()
931
+ self.max_momentary_loudness = self._io.read_u2le()
932
+ self._debug['max_momentary_loudness']['end'] = self._io.pos()
933
+ self._debug['max_short_term_loudness']['start'] = self._io.pos()
934
+ self.max_short_term_loudness = self._io.read_u2le()
935
+ self._debug['max_short_term_loudness']['end'] = self._io.pos()
936
+
937
+
938
+ @property
939
+ def subchunks(self):
940
+ if hasattr(self, '_m_subchunks'):
941
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
942
+
943
+ if self.is_form_type_wave:
944
+ io = self.parent_chunk_data.subchunks_slot._io
945
+ _pos = io.pos()
946
+ io.seek(0)
947
+ self._debug['_m_subchunks']['start'] = io.pos()
948
+ self._m_subchunks = []
949
+ i = 0
950
+ while not io.is_eof():
951
+ if not 'arr' in self._debug['_m_subchunks']:
952
+ self._debug['_m_subchunks']['arr'] = []
953
+ self._debug['_m_subchunks']['arr'].append({'start': io.pos()})
954
+ _t__m_subchunks = Wav.ChunkType(io, self, self._root)
955
+ _t__m_subchunks._read()
956
+ self._m_subchunks.append(_t__m_subchunks)
957
+ self._debug['_m_subchunks']['arr'][len(self._m_subchunks) - 1]['end'] = io.pos()
958
+ i += 1
959
+
960
+ self._debug['_m_subchunks']['end'] = io.pos()
961
+ io.seek(_pos)
962
+
963
+ return self._m_subchunks if hasattr(self, '_m_subchunks') else None
964
+
965
+ @property
966
+ def parent_chunk_data(self):
967
+ if hasattr(self, '_m_parent_chunk_data'):
968
+ return self._m_parent_chunk_data if hasattr(self, '_m_parent_chunk_data') else None
969
+
970
+ if self.is_riff_chunk:
971
+ io = self.chunk.data_slot._io
972
+ _pos = io.pos()
973
+ io.seek(0)
974
+ self._debug['_m_parent_chunk_data']['start'] = io.pos()
975
+ self._m_parent_chunk_data = Riff.ParentChunkData(io, self, self._root)
976
+ self._m_parent_chunk_data._read()
977
+ self._debug['_m_parent_chunk_data']['end'] = io.pos()
978
+ io.seek(_pos)
979
+
980
+ return self._m_parent_chunk_data if hasattr(self, '_m_parent_chunk_data') else None
981
+
982
+ @property
983
+ def is_form_type_wave(self):
984
+ if hasattr(self, '_m_is_form_type_wave'):
985
+ return self._m_is_form_type_wave if hasattr(self, '_m_is_form_type_wave') else None
986
+
987
+ self._m_is_form_type_wave = ((self.is_riff_chunk) and (self.form_type == Wav.Fourcc.wave))
988
+ return self._m_is_form_type_wave if hasattr(self, '_m_is_form_type_wave') else None
989
+
990
+ @property
991
+ def is_riff_chunk(self):
992
+ if hasattr(self, '_m_is_riff_chunk'):
993
+ return self._m_is_riff_chunk if hasattr(self, '_m_is_riff_chunk') else None
994
+
995
+ self._m_is_riff_chunk = self.chunk_id == Wav.Fourcc.riff
996
+ return self._m_is_riff_chunk if hasattr(self, '_m_is_riff_chunk') else None
997
+
998
+ @property
999
+ def chunk_id(self):
1000
+ if hasattr(self, '_m_chunk_id'):
1001
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
1002
+
1003
+ self._m_chunk_id = KaitaiStream.resolve_enum(Wav.Fourcc, self.chunk.id)
1004
+ return self._m_chunk_id if hasattr(self, '_m_chunk_id') else None
1005
+
1006
+ @property
1007
+ def form_type(self):
1008
+ if hasattr(self, '_m_form_type'):
1009
+ return self._m_form_type if hasattr(self, '_m_form_type') else None
1010
+
1011
+ self._m_form_type = KaitaiStream.resolve_enum(Wav.Fourcc, self.parent_chunk_data.form_type)
1012
+ return self._m_form_type if hasattr(self, '_m_form_type') else None
1013
+
1014
+