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,541 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+
8
+
9
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
10
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
11
+
12
+ class GettextMo(KaitaiStruct):
13
+ """[GNU gettext](https://www.gnu.org/software/gettext/) is a popular
14
+ solution in free/open source software world to do i18n/l10n of
15
+ software, by providing translated strings that will substitute
16
+ strings in original language (typically, English).
17
+
18
+ gettext .mo is a binary database format which stores these string
19
+ translation pairs in an efficient binary format, ready to be used by
20
+ gettext-enabled software. .mo format is a result of compilation of
21
+ text-based .po files using
22
+ [msgfmt](https://www.gnu.org/software/gettext/manual/html_node/msgfmt-Invocation.html#msgfmt-Invocation)
23
+ utility. The reverse conversion (.mo -> .po) is also possible using
24
+ [msgunfmt](https://www.gnu.org/software/gettext/manual/html_node/msgunfmt-Invocation.html#msgunfmt-Invocation)
25
+ decompiler utility.
26
+
27
+ .. seealso::
28
+ Source - https://gitlab.com/worr/libintl
29
+ """
30
+ SEQ_FIELDS = ["signature", "mo"]
31
+ def __init__(self, _io, _parent=None, _root=None):
32
+ self._io = _io
33
+ self._parent = _parent
34
+ self._root = _root if _root else self
35
+ self._debug = collections.defaultdict(dict)
36
+
37
+ def _read(self):
38
+ self._debug['signature']['start'] = self._io.pos()
39
+ self.signature = self._io.read_bytes(4)
40
+ self._debug['signature']['end'] = self._io.pos()
41
+ self._debug['mo']['start'] = self._io.pos()
42
+ self.mo = GettextMo.Mo(self._io, self, self._root)
43
+ self.mo._read()
44
+ self._debug['mo']['end'] = self._io.pos()
45
+
46
+ class HashLookupIteration(KaitaiStruct):
47
+ SEQ_FIELDS = []
48
+ def __init__(self, idx, collision_step, _io, _parent=None, _root=None):
49
+ self._io = _io
50
+ self._parent = _parent
51
+ self._root = _root if _root else self
52
+ self.idx = idx
53
+ self.collision_step = collision_step
54
+ self._debug = collections.defaultdict(dict)
55
+
56
+ def _read(self):
57
+ pass
58
+
59
+ @property
60
+ def original(self):
61
+ if hasattr(self, '_m_original'):
62
+ return self._m_original if hasattr(self, '_m_original') else None
63
+
64
+ self._m_original = self._root.mo.originals[self.idx].str
65
+ return self._m_original if hasattr(self, '_m_original') else None
66
+
67
+ @property
68
+ def translation(self):
69
+ if hasattr(self, '_m_translation'):
70
+ return self._m_translation if hasattr(self, '_m_translation') else None
71
+
72
+ self._m_translation = self._root.mo.translations[self.idx].str
73
+ return self._m_translation if hasattr(self, '_m_translation') else None
74
+
75
+ @property
76
+ def next_idx(self):
77
+ if hasattr(self, '_m_next_idx'):
78
+ return self._m_next_idx if hasattr(self, '_m_next_idx') else None
79
+
80
+ self._m_next_idx = ((self.idx + self.collision_step) - (self._root.mo.num_hashtable_items if self.idx >= (self._root.mo.num_hashtable_items - self.collision_step) else 0))
81
+ return self._m_next_idx if hasattr(self, '_m_next_idx') else None
82
+
83
+ @property
84
+ def next(self):
85
+ if hasattr(self, '_m_next'):
86
+ return self._m_next if hasattr(self, '_m_next') else None
87
+
88
+ _pos = self._io.pos()
89
+ self._io.seek(0)
90
+ self._debug['_m_next']['start'] = self._io.pos()
91
+ self._m_next = GettextMo.HashLookupIteration(self._root.mo.hashtable_items[self.next_idx].val, self.collision_step, self._io, self, self._root)
92
+ self._m_next._read()
93
+ self._debug['_m_next']['end'] = self._io.pos()
94
+ self._io.seek(_pos)
95
+ return self._m_next if hasattr(self, '_m_next') else None
96
+
97
+
98
+ class LookupIteration(KaitaiStruct):
99
+ SEQ_FIELDS = []
100
+ def __init__(self, current, query, _io, _parent=None, _root=None):
101
+ self._io = _io
102
+ self._parent = _parent
103
+ self._root = _root if _root else self
104
+ self.current = current
105
+ self.query = query
106
+ self._debug = collections.defaultdict(dict)
107
+
108
+ def _read(self):
109
+ pass
110
+
111
+ @property
112
+ def found(self):
113
+ if hasattr(self, '_m_found'):
114
+ return self._m_found if hasattr(self, '_m_found') else None
115
+
116
+ self._m_found = self.query == self.current.original
117
+ return self._m_found if hasattr(self, '_m_found') else None
118
+
119
+ @property
120
+ def next(self):
121
+ if hasattr(self, '_m_next'):
122
+ return self._m_next if hasattr(self, '_m_next') else None
123
+
124
+ if not (self.found):
125
+ _pos = self._io.pos()
126
+ self._io.seek(0)
127
+ self._debug['_m_next']['start'] = self._io.pos()
128
+ self._m_next = GettextMo.LookupIteration(self.current.next, self.query, self._io, self, self._root)
129
+ self._m_next._read()
130
+ self._debug['_m_next']['end'] = self._io.pos()
131
+ self._io.seek(_pos)
132
+
133
+ return self._m_next if hasattr(self, '_m_next') else None
134
+
135
+
136
+ class HashtableLookup(KaitaiStruct):
137
+ """def lookup(s:str, t:gettext_mo.GettextMo):
138
+ try:
139
+ l=gettext_mo.GettextMo.HashtableLookup(s, string_hash(s), t._io, _parent=t, _root=t)
140
+ e=l.entry
141
+ while(not e.found):
142
+ e=e.next
143
+ return e.current
144
+ except:
145
+ raise Exception("Not found "+s+" in the hashtable!")
146
+
147
+ lookup(t.mo.originals[145].str, t)
148
+
149
+ .. seealso::
150
+ Source - https://gitlab.com/worr/libintl/raw/master/src/lib/libintl/gettext.c
151
+ """
152
+ SEQ_FIELDS = []
153
+ def __init__(self, query, hash, _io, _parent=None, _root=None):
154
+ self._io = _io
155
+ self._parent = _parent
156
+ self._root = _root if _root else self
157
+ self.query = query
158
+ self.hash = hash
159
+ self._debug = collections.defaultdict(dict)
160
+
161
+ def _read(self):
162
+ pass
163
+
164
+ @property
165
+ def collision_step(self):
166
+ if hasattr(self, '_m_collision_step'):
167
+ return self._m_collision_step if hasattr(self, '_m_collision_step') else None
168
+
169
+ self._m_collision_step = ((self.hash % (self._root.mo.num_hashtable_items - 2)) + 1)
170
+ return self._m_collision_step if hasattr(self, '_m_collision_step') else None
171
+
172
+ @property
173
+ def idx(self):
174
+ if hasattr(self, '_m_idx'):
175
+ return self._m_idx if hasattr(self, '_m_idx') else None
176
+
177
+ self._m_idx = (self.hash % self._root.mo.num_hashtable_items)
178
+ return self._m_idx if hasattr(self, '_m_idx') else None
179
+
180
+ @property
181
+ def hash_lookup_iteration(self):
182
+ if hasattr(self, '_m_hash_lookup_iteration'):
183
+ return self._m_hash_lookup_iteration if hasattr(self, '_m_hash_lookup_iteration') else None
184
+
185
+ _pos = self._io.pos()
186
+ self._io.seek(0)
187
+ self._debug['_m_hash_lookup_iteration']['start'] = self._io.pos()
188
+ self._m_hash_lookup_iteration = GettextMo.HashLookupIteration(self._root.mo.hashtable_items[self.idx].val, self.collision_step, self._io, self, self._root)
189
+ self._m_hash_lookup_iteration._read()
190
+ self._debug['_m_hash_lookup_iteration']['end'] = self._io.pos()
191
+ self._io.seek(_pos)
192
+ return self._m_hash_lookup_iteration if hasattr(self, '_m_hash_lookup_iteration') else None
193
+
194
+ @property
195
+ def entry(self):
196
+ if hasattr(self, '_m_entry'):
197
+ return self._m_entry if hasattr(self, '_m_entry') else None
198
+
199
+ _pos = self._io.pos()
200
+ self._io.seek(0)
201
+ self._debug['_m_entry']['start'] = self._io.pos()
202
+ self._m_entry = GettextMo.LookupIteration(self.hash_lookup_iteration, self.query, self._io, self, self._root)
203
+ self._m_entry._read()
204
+ self._debug['_m_entry']['end'] = self._io.pos()
205
+ self._io.seek(_pos)
206
+ return self._m_entry if hasattr(self, '_m_entry') else None
207
+
208
+
209
+ class Mo(KaitaiStruct):
210
+ SEQ_FIELDS = ["version", "num_translations", "ofs_originals", "ofs_translations", "num_hashtable_items", "ofs_hashtable_items"]
211
+ def __init__(self, _io, _parent=None, _root=None):
212
+ self._io = _io
213
+ self._parent = _parent
214
+ self._root = _root if _root else self
215
+ self._debug = collections.defaultdict(dict)
216
+
217
+ def _read(self):
218
+ _on = self._root.signature
219
+ if _on == b"\xDE\x12\x04\x95":
220
+ self._is_le = True
221
+ elif _on == b"\x95\x04\x12\xDE":
222
+ self._is_le = False
223
+ if not hasattr(self, '_is_le'):
224
+ raise kaitaistruct.UndecidedEndiannessError("/types/mo")
225
+ elif self._is_le == True:
226
+ self._read_le()
227
+ elif self._is_le == False:
228
+ self._read_be()
229
+
230
+ def _read_le(self):
231
+ self._debug['version']['start'] = self._io.pos()
232
+ self.version = GettextMo.Mo.Version(self._io, self, self._root, self._is_le)
233
+ self.version._read()
234
+ self._debug['version']['end'] = self._io.pos()
235
+ self._debug['num_translations']['start'] = self._io.pos()
236
+ self.num_translations = self._io.read_u4le()
237
+ self._debug['num_translations']['end'] = self._io.pos()
238
+ self._debug['ofs_originals']['start'] = self._io.pos()
239
+ self.ofs_originals = self._io.read_u4le()
240
+ self._debug['ofs_originals']['end'] = self._io.pos()
241
+ self._debug['ofs_translations']['start'] = self._io.pos()
242
+ self.ofs_translations = self._io.read_u4le()
243
+ self._debug['ofs_translations']['end'] = self._io.pos()
244
+ self._debug['num_hashtable_items']['start'] = self._io.pos()
245
+ self.num_hashtable_items = self._io.read_u4le()
246
+ self._debug['num_hashtable_items']['end'] = self._io.pos()
247
+ self._debug['ofs_hashtable_items']['start'] = self._io.pos()
248
+ self.ofs_hashtable_items = self._io.read_u4le()
249
+ self._debug['ofs_hashtable_items']['end'] = self._io.pos()
250
+
251
+ def _read_be(self):
252
+ self._debug['version']['start'] = self._io.pos()
253
+ self.version = GettextMo.Mo.Version(self._io, self, self._root, self._is_le)
254
+ self.version._read()
255
+ self._debug['version']['end'] = self._io.pos()
256
+ self._debug['num_translations']['start'] = self._io.pos()
257
+ self.num_translations = self._io.read_u4be()
258
+ self._debug['num_translations']['end'] = self._io.pos()
259
+ self._debug['ofs_originals']['start'] = self._io.pos()
260
+ self.ofs_originals = self._io.read_u4be()
261
+ self._debug['ofs_originals']['end'] = self._io.pos()
262
+ self._debug['ofs_translations']['start'] = self._io.pos()
263
+ self.ofs_translations = self._io.read_u4be()
264
+ self._debug['ofs_translations']['end'] = self._io.pos()
265
+ self._debug['num_hashtable_items']['start'] = self._io.pos()
266
+ self.num_hashtable_items = self._io.read_u4be()
267
+ self._debug['num_hashtable_items']['end'] = self._io.pos()
268
+ self._debug['ofs_hashtable_items']['start'] = self._io.pos()
269
+ self.ofs_hashtable_items = self._io.read_u4be()
270
+ self._debug['ofs_hashtable_items']['end'] = self._io.pos()
271
+
272
+ class Version(KaitaiStruct):
273
+ SEQ_FIELDS = ["version_raw"]
274
+ def __init__(self, _io, _parent=None, _root=None, _is_le=None):
275
+ self._io = _io
276
+ self._parent = _parent
277
+ self._root = _root if _root else self
278
+ self._is_le = _is_le
279
+ self._debug = collections.defaultdict(dict)
280
+
281
+ def _read(self):
282
+ if not hasattr(self, '_is_le'):
283
+ raise kaitaistruct.UndecidedEndiannessError("/types/mo/types/version")
284
+ elif self._is_le == True:
285
+ self._read_le()
286
+ elif self._is_le == False:
287
+ self._read_be()
288
+
289
+ def _read_le(self):
290
+ self._debug['version_raw']['start'] = self._io.pos()
291
+ self.version_raw = self._io.read_u4le()
292
+ self._debug['version_raw']['end'] = self._io.pos()
293
+
294
+ def _read_be(self):
295
+ self._debug['version_raw']['start'] = self._io.pos()
296
+ self.version_raw = self._io.read_u4be()
297
+ self._debug['version_raw']['end'] = self._io.pos()
298
+
299
+ @property
300
+ def major(self):
301
+ if hasattr(self, '_m_major'):
302
+ return self._m_major if hasattr(self, '_m_major') else None
303
+
304
+ self._m_major = (self.version_raw >> 16)
305
+ return self._m_major if hasattr(self, '_m_major') else None
306
+
307
+ @property
308
+ def minor(self):
309
+ if hasattr(self, '_m_minor'):
310
+ return self._m_minor if hasattr(self, '_m_minor') else None
311
+
312
+ self._m_minor = (self.version_raw & 65535)
313
+ return self._m_minor if hasattr(self, '_m_minor') else None
314
+
315
+
316
+ class HashtableItem(KaitaiStruct):
317
+ SEQ_FIELDS = ["raw_val"]
318
+ def __init__(self, _io, _parent=None, _root=None, _is_le=None):
319
+ self._io = _io
320
+ self._parent = _parent
321
+ self._root = _root if _root else self
322
+ self._is_le = _is_le
323
+ self._debug = collections.defaultdict(dict)
324
+
325
+ def _read(self):
326
+ if not hasattr(self, '_is_le'):
327
+ raise kaitaistruct.UndecidedEndiannessError("/types/mo/types/hashtable_item")
328
+ elif self._is_le == True:
329
+ self._read_le()
330
+ elif self._is_le == False:
331
+ self._read_be()
332
+
333
+ def _read_le(self):
334
+ self._debug['raw_val']['start'] = self._io.pos()
335
+ self.raw_val = self._io.read_u4le()
336
+ self._debug['raw_val']['end'] = self._io.pos()
337
+
338
+ def _read_be(self):
339
+ self._debug['raw_val']['start'] = self._io.pos()
340
+ self.raw_val = self._io.read_u4be()
341
+ self._debug['raw_val']['end'] = self._io.pos()
342
+
343
+ @property
344
+ def mask(self):
345
+ if hasattr(self, '_m_mask'):
346
+ return self._m_mask if hasattr(self, '_m_mask') else None
347
+
348
+ self._m_mask = 2147483648
349
+ return self._m_mask if hasattr(self, '_m_mask') else None
350
+
351
+ @property
352
+ def val_1(self):
353
+ if hasattr(self, '_m_val_1'):
354
+ return self._m_val_1 if hasattr(self, '_m_val_1') else None
355
+
356
+ if self.raw_val != 0:
357
+ self._m_val_1 = (self.raw_val - 1)
358
+
359
+ return self._m_val_1 if hasattr(self, '_m_val_1') else None
360
+
361
+ @property
362
+ def is_system_dependent(self):
363
+ if hasattr(self, '_m_is_system_dependent'):
364
+ return self._m_is_system_dependent if hasattr(self, '_m_is_system_dependent') else None
365
+
366
+ if self.raw_val != 0:
367
+ self._m_is_system_dependent = (self.val_1 & self.mask) == 1
368
+
369
+ return self._m_is_system_dependent if hasattr(self, '_m_is_system_dependent') else None
370
+
371
+ @property
372
+ def val(self):
373
+ if hasattr(self, '_m_val'):
374
+ return self._m_val if hasattr(self, '_m_val') else None
375
+
376
+ if self.raw_val != 0:
377
+ self._m_val = (self.val_1 & ~(self.mask))
378
+
379
+ return self._m_val if hasattr(self, '_m_val') else None
380
+
381
+
382
+ class Descriptor(KaitaiStruct):
383
+ SEQ_FIELDS = ["len_str", "ofs_str"]
384
+ def __init__(self, _io, _parent=None, _root=None, _is_le=None):
385
+ self._io = _io
386
+ self._parent = _parent
387
+ self._root = _root if _root else self
388
+ self._is_le = _is_le
389
+ self._debug = collections.defaultdict(dict)
390
+
391
+ def _read(self):
392
+ if not hasattr(self, '_is_le'):
393
+ raise kaitaistruct.UndecidedEndiannessError("/types/mo/types/descriptor")
394
+ elif self._is_le == True:
395
+ self._read_le()
396
+ elif self._is_le == False:
397
+ self._read_be()
398
+
399
+ def _read_le(self):
400
+ self._debug['len_str']['start'] = self._io.pos()
401
+ self.len_str = self._io.read_u4le()
402
+ self._debug['len_str']['end'] = self._io.pos()
403
+ self._debug['ofs_str']['start'] = self._io.pos()
404
+ self.ofs_str = self._io.read_u4le()
405
+ self._debug['ofs_str']['end'] = self._io.pos()
406
+
407
+ def _read_be(self):
408
+ self._debug['len_str']['start'] = self._io.pos()
409
+ self.len_str = self._io.read_u4be()
410
+ self._debug['len_str']['end'] = self._io.pos()
411
+ self._debug['ofs_str']['start'] = self._io.pos()
412
+ self.ofs_str = self._io.read_u4be()
413
+ self._debug['ofs_str']['end'] = self._io.pos()
414
+
415
+ @property
416
+ def str(self):
417
+ if hasattr(self, '_m_str'):
418
+ return self._m_str if hasattr(self, '_m_str') else None
419
+
420
+ io = self._root._io
421
+ _pos = io.pos()
422
+ io.seek(self.ofs_str)
423
+ self._debug['_m_str']['start'] = io.pos()
424
+ if self._is_le:
425
+ self._m_str = (KaitaiStream.bytes_terminate(io.read_bytes(self.len_str), 0, False)).decode(u"UTF-8")
426
+ else:
427
+ self._m_str = (KaitaiStream.bytes_terminate(io.read_bytes(self.len_str), 0, False)).decode(u"UTF-8")
428
+ self._debug['_m_str']['end'] = io.pos()
429
+ io.seek(_pos)
430
+ return self._m_str if hasattr(self, '_m_str') else None
431
+
432
+
433
+ @property
434
+ def originals(self):
435
+ if hasattr(self, '_m_originals'):
436
+ return self._m_originals if hasattr(self, '_m_originals') else None
437
+
438
+ io = self._root._io
439
+ _pos = io.pos()
440
+ io.seek(self.ofs_originals)
441
+ self._debug['_m_originals']['start'] = io.pos()
442
+ if self._is_le:
443
+ self._m_originals = [None] * (self.num_translations)
444
+ for i in range(self.num_translations):
445
+ if not 'arr' in self._debug['_m_originals']:
446
+ self._debug['_m_originals']['arr'] = []
447
+ self._debug['_m_originals']['arr'].append({'start': io.pos()})
448
+ _t__m_originals = GettextMo.Mo.Descriptor(io, self, self._root, self._is_le)
449
+ _t__m_originals._read()
450
+ self._m_originals[i] = _t__m_originals
451
+ self._debug['_m_originals']['arr'][i]['end'] = io.pos()
452
+
453
+ else:
454
+ self._m_originals = [None] * (self.num_translations)
455
+ for i in range(self.num_translations):
456
+ if not 'arr' in self._debug['_m_originals']:
457
+ self._debug['_m_originals']['arr'] = []
458
+ self._debug['_m_originals']['arr'].append({'start': io.pos()})
459
+ _t__m_originals = GettextMo.Mo.Descriptor(io, self, self._root, self._is_le)
460
+ _t__m_originals._read()
461
+ self._m_originals[i] = _t__m_originals
462
+ self._debug['_m_originals']['arr'][i]['end'] = io.pos()
463
+
464
+ self._debug['_m_originals']['end'] = io.pos()
465
+ io.seek(_pos)
466
+ return self._m_originals if hasattr(self, '_m_originals') else None
467
+
468
+ @property
469
+ def translations(self):
470
+ if hasattr(self, '_m_translations'):
471
+ return self._m_translations if hasattr(self, '_m_translations') else None
472
+
473
+ io = self._root._io
474
+ _pos = io.pos()
475
+ io.seek(self.ofs_translations)
476
+ self._debug['_m_translations']['start'] = io.pos()
477
+ if self._is_le:
478
+ self._m_translations = [None] * (self.num_translations)
479
+ for i in range(self.num_translations):
480
+ if not 'arr' in self._debug['_m_translations']:
481
+ self._debug['_m_translations']['arr'] = []
482
+ self._debug['_m_translations']['arr'].append({'start': io.pos()})
483
+ _t__m_translations = GettextMo.Mo.Descriptor(io, self, self._root, self._is_le)
484
+ _t__m_translations._read()
485
+ self._m_translations[i] = _t__m_translations
486
+ self._debug['_m_translations']['arr'][i]['end'] = io.pos()
487
+
488
+ else:
489
+ self._m_translations = [None] * (self.num_translations)
490
+ for i in range(self.num_translations):
491
+ if not 'arr' in self._debug['_m_translations']:
492
+ self._debug['_m_translations']['arr'] = []
493
+ self._debug['_m_translations']['arr'].append({'start': io.pos()})
494
+ _t__m_translations = GettextMo.Mo.Descriptor(io, self, self._root, self._is_le)
495
+ _t__m_translations._read()
496
+ self._m_translations[i] = _t__m_translations
497
+ self._debug['_m_translations']['arr'][i]['end'] = io.pos()
498
+
499
+ self._debug['_m_translations']['end'] = io.pos()
500
+ io.seek(_pos)
501
+ return self._m_translations if hasattr(self, '_m_translations') else None
502
+
503
+ @property
504
+ def hashtable_items(self):
505
+ if hasattr(self, '_m_hashtable_items'):
506
+ return self._m_hashtable_items if hasattr(self, '_m_hashtable_items') else None
507
+
508
+ if self.ofs_hashtable_items != 0:
509
+ io = self._root._io
510
+ _pos = io.pos()
511
+ io.seek(self.ofs_hashtable_items)
512
+ self._debug['_m_hashtable_items']['start'] = io.pos()
513
+ if self._is_le:
514
+ self._m_hashtable_items = [None] * (self.num_hashtable_items)
515
+ for i in range(self.num_hashtable_items):
516
+ if not 'arr' in self._debug['_m_hashtable_items']:
517
+ self._debug['_m_hashtable_items']['arr'] = []
518
+ self._debug['_m_hashtable_items']['arr'].append({'start': io.pos()})
519
+ _t__m_hashtable_items = GettextMo.Mo.HashtableItem(io, self, self._root, self._is_le)
520
+ _t__m_hashtable_items._read()
521
+ self._m_hashtable_items[i] = _t__m_hashtable_items
522
+ self._debug['_m_hashtable_items']['arr'][i]['end'] = io.pos()
523
+
524
+ else:
525
+ self._m_hashtable_items = [None] * (self.num_hashtable_items)
526
+ for i in range(self.num_hashtable_items):
527
+ if not 'arr' in self._debug['_m_hashtable_items']:
528
+ self._debug['_m_hashtable_items']['arr'] = []
529
+ self._debug['_m_hashtable_items']['arr'].append({'start': io.pos()})
530
+ _t__m_hashtable_items = GettextMo.Mo.HashtableItem(io, self, self._root, self._is_le)
531
+ _t__m_hashtable_items._read()
532
+ self._m_hashtable_items[i] = _t__m_hashtable_items
533
+ self._debug['_m_hashtable_items']['arr'][i]['end'] = io.pos()
534
+
535
+ self._debug['_m_hashtable_items']['end'] = io.pos()
536
+ io.seek(_pos)
537
+
538
+ return self._m_hashtable_items if hasattr(self, '_m_hashtable_items') else None
539
+
540
+
541
+