7zip-native 0.0.0-stage → 0.0.5

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.
Files changed (1327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -2
  3. package/THIRD_PARTY_NOTICES.md +23 -0
  4. package/bench/args.mts +69 -0
  5. package/bench/benchmark.mts +102 -0
  6. package/bench/compare.mts +546 -0
  7. package/bench/concurrency.mts +196 -0
  8. package/binding.gyp +51 -0
  9. package/dist/index.cjs +528 -0
  10. package/dist/index.d.cts +63 -0
  11. package/dist/index.d.mts +63 -0
  12. package/dist/index.d.ts +63 -0
  13. package/dist/index.mjs +524 -0
  14. package/docs/architecture.md +112 -0
  15. package/examples/basic.mts +19 -0
  16. package/native/addon.cpp +2154 -0
  17. package/package.json +85 -5
  18. package/prebuilds/darwin-arm64/7zip_native.node +0 -0
  19. package/prebuilds/darwin-arm64/lib7z.dylib +0 -0
  20. package/prebuilds/darwin-x64/7zip_native.node +0 -0
  21. package/prebuilds/darwin-x64/lib7z.dylib +0 -0
  22. package/prebuilds/linux-arm/7z.so +0 -0
  23. package/prebuilds/linux-arm/7zip_native.node +0 -0
  24. package/prebuilds/linux-arm64/7z.so +0 -0
  25. package/prebuilds/linux-arm64/7zip_native.node +0 -0
  26. package/prebuilds/linux-ia32/7z.so +0 -0
  27. package/prebuilds/linux-ia32/7zip_native.node +0 -0
  28. package/prebuilds/linux-x64/7z.so +0 -0
  29. package/prebuilds/linux-x64/7zip_native.node +0 -0
  30. package/prebuilds/win32-arm64/7z.dll +0 -0
  31. package/prebuilds/win32-arm64/7zip_native.node +0 -0
  32. package/prebuilds/win32-x64/7z.dll +0 -0
  33. package/prebuilds/win32-x64/7zip_native.node +0 -0
  34. package/vendor/7zip/.gitattributes +2 -0
  35. package/vendor/7zip/Asm/arm/7zCrcOpt.asm +100 -0
  36. package/vendor/7zip/Asm/arm64/7zAsm.S +187 -0
  37. package/vendor/7zip/Asm/arm64/LzmaDecOpt.S +1487 -0
  38. package/vendor/7zip/Asm/x86/7zAsm.asm +341 -0
  39. package/vendor/7zip/Asm/x86/7zCrcOpt.asm +258 -0
  40. package/vendor/7zip/Asm/x86/AesOpt.asm +742 -0
  41. package/vendor/7zip/Asm/x86/LzFindOpt.asm +540 -0
  42. package/vendor/7zip/Asm/x86/LzmaDecOpt.asm +1339 -0
  43. package/vendor/7zip/Asm/x86/Sha1Opt.asm +263 -0
  44. package/vendor/7zip/Asm/x86/Sha256Opt.asm +275 -0
  45. package/vendor/7zip/Asm/x86/Sort.asm +860 -0
  46. package/vendor/7zip/Asm/x86/XzCrc64Opt.asm +523 -0
  47. package/vendor/7zip/C/7z.h +204 -0
  48. package/vendor/7zip/C/7zAlloc.c +89 -0
  49. package/vendor/7zip/C/7zAlloc.h +19 -0
  50. package/vendor/7zip/C/7zArcIn.c +1701 -0
  51. package/vendor/7zip/C/7zBuf.c +36 -0
  52. package/vendor/7zip/C/7zBuf.h +35 -0
  53. package/vendor/7zip/C/7zBuf2.c +52 -0
  54. package/vendor/7zip/C/7zCrc.c +420 -0
  55. package/vendor/7zip/C/7zCrc.h +28 -0
  56. package/vendor/7zip/C/7zCrcOpt.c +199 -0
  57. package/vendor/7zip/C/7zDec.c +672 -0
  58. package/vendor/7zip/C/7zFile.c +443 -0
  59. package/vendor/7zip/C/7zFile.h +91 -0
  60. package/vendor/7zip/C/7zStream.c +199 -0
  61. package/vendor/7zip/C/7zTypes.h +600 -0
  62. package/vendor/7zip/C/7zVersion.h +27 -0
  63. package/vendor/7zip/C/7zVersion.rc +55 -0
  64. package/vendor/7zip/C/7zWindows.h +107 -0
  65. package/vendor/7zip/C/7zip_gcc_c.mak +366 -0
  66. package/vendor/7zip/C/Aes.c +429 -0
  67. package/vendor/7zip/C/Aes.h +60 -0
  68. package/vendor/7zip/C/AesOpt.c +1002 -0
  69. package/vendor/7zip/C/Alloc.c +774 -0
  70. package/vendor/7zip/C/Alloc.h +76 -0
  71. package/vendor/7zip/C/Asm_c.mak +12 -0
  72. package/vendor/7zip/C/Bcj2.c +290 -0
  73. package/vendor/7zip/C/Bcj2.h +332 -0
  74. package/vendor/7zip/C/Bcj2Enc.c +509 -0
  75. package/vendor/7zip/C/Blake2.h +105 -0
  76. package/vendor/7zip/C/Blake2s.c +2672 -0
  77. package/vendor/7zip/C/Bra.c +709 -0
  78. package/vendor/7zip/C/Bra.h +105 -0
  79. package/vendor/7zip/C/Bra86.c +187 -0
  80. package/vendor/7zip/C/BraIA64.c +14 -0
  81. package/vendor/7zip/C/BwtSort.c +630 -0
  82. package/vendor/7zip/C/BwtSort.h +27 -0
  83. package/vendor/7zip/C/Compiler.h +287 -0
  84. package/vendor/7zip/C/CpuArch.c +970 -0
  85. package/vendor/7zip/C/CpuArch.h +719 -0
  86. package/vendor/7zip/C/Delta.c +169 -0
  87. package/vendor/7zip/C/Delta.h +19 -0
  88. package/vendor/7zip/C/DllSecur.c +99 -0
  89. package/vendor/7zip/C/DllSecur.h +20 -0
  90. package/vendor/7zip/C/HuffEnc.c +361 -0
  91. package/vendor/7zip/C/HuffEnc.h +23 -0
  92. package/vendor/7zip/C/LzFind.c +1746 -0
  93. package/vendor/7zip/C/LzFind.h +160 -0
  94. package/vendor/7zip/C/LzFindMt.c +1422 -0
  95. package/vendor/7zip/C/LzFindMt.h +114 -0
  96. package/vendor/7zip/C/LzFindOpt.c +578 -0
  97. package/vendor/7zip/C/LzHash.h +34 -0
  98. package/vendor/7zip/C/Lzma2Dec.c +493 -0
  99. package/vendor/7zip/C/Lzma2Dec.h +121 -0
  100. package/vendor/7zip/C/Lzma2DecMt.c +1095 -0
  101. package/vendor/7zip/C/Lzma2DecMt.h +81 -0
  102. package/vendor/7zip/C/Lzma2Enc.c +799 -0
  103. package/vendor/7zip/C/Lzma2Enc.h +58 -0
  104. package/vendor/7zip/C/Lzma86.h +111 -0
  105. package/vendor/7zip/C/Lzma86Dec.c +53 -0
  106. package/vendor/7zip/C/Lzma86Enc.c +103 -0
  107. package/vendor/7zip/C/LzmaDec.c +1367 -0
  108. package/vendor/7zip/C/LzmaDec.h +237 -0
  109. package/vendor/7zip/C/LzmaEnc.c +3154 -0
  110. package/vendor/7zip/C/LzmaEnc.h +85 -0
  111. package/vendor/7zip/C/LzmaLib.c +42 -0
  112. package/vendor/7zip/C/LzmaLib.h +138 -0
  113. package/vendor/7zip/C/Md5.c +206 -0
  114. package/vendor/7zip/C/Md5.h +34 -0
  115. package/vendor/7zip/C/MtCoder.c +604 -0
  116. package/vendor/7zip/C/MtCoder.h +144 -0
  117. package/vendor/7zip/C/MtDec.c +1124 -0
  118. package/vendor/7zip/C/MtDec.h +202 -0
  119. package/vendor/7zip/C/Ppmd.h +169 -0
  120. package/vendor/7zip/C/Ppmd7.c +1131 -0
  121. package/vendor/7zip/C/Ppmd7.h +181 -0
  122. package/vendor/7zip/C/Ppmd7Dec.c +312 -0
  123. package/vendor/7zip/C/Ppmd7Enc.c +340 -0
  124. package/vendor/7zip/C/Ppmd7aDec.c +295 -0
  125. package/vendor/7zip/C/Ppmd8.c +1574 -0
  126. package/vendor/7zip/C/Ppmd8.h +181 -0
  127. package/vendor/7zip/C/Ppmd8Dec.c +295 -0
  128. package/vendor/7zip/C/Ppmd8Enc.c +337 -0
  129. package/vendor/7zip/C/Precomp.h +127 -0
  130. package/vendor/7zip/C/RotateDefs.h +50 -0
  131. package/vendor/7zip/C/Sha1.c +441 -0
  132. package/vendor/7zip/C/Sha1.h +86 -0
  133. package/vendor/7zip/C/Sha1Opt.c +424 -0
  134. package/vendor/7zip/C/Sha256.c +492 -0
  135. package/vendor/7zip/C/Sha256.h +86 -0
  136. package/vendor/7zip/C/Sha256Opt.c +451 -0
  137. package/vendor/7zip/C/Sha3.c +359 -0
  138. package/vendor/7zip/C/Sha3.h +36 -0
  139. package/vendor/7zip/C/Sha512.c +711 -0
  140. package/vendor/7zip/C/Sha512.h +86 -0
  141. package/vendor/7zip/C/Sha512Opt.c +395 -0
  142. package/vendor/7zip/C/Sort.c +268 -0
  143. package/vendor/7zip/C/Sort.h +15 -0
  144. package/vendor/7zip/C/SwapBytes.c +835 -0
  145. package/vendor/7zip/C/SwapBytes.h +17 -0
  146. package/vendor/7zip/C/Threads.c +826 -0
  147. package/vendor/7zip/C/Threads.h +260 -0
  148. package/vendor/7zip/C/Util/7z/7z.dsp +249 -0
  149. package/vendor/7zip/C/Util/7z/7z.dsw +29 -0
  150. package/vendor/7zip/C/Util/7z/7zMain.c +1210 -0
  151. package/vendor/7zip/C/Util/7z/Precomp.c +4 -0
  152. package/vendor/7zip/C/Util/7z/Precomp.h +13 -0
  153. package/vendor/7zip/C/Util/7z/makefile +44 -0
  154. package/vendor/7zip/C/Util/7z/makefile.gcc +32 -0
  155. package/vendor/7zip/C/Util/7zipInstall/7zip.ico +0 -0
  156. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.c +1699 -0
  157. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsp +248 -0
  158. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsw +29 -0
  159. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.manifest +18 -0
  160. package/vendor/7zip/C/Util/7zipInstall/Precomp.c +4 -0
  161. package/vendor/7zip/C/Util/7zipInstall/Precomp.h +13 -0
  162. package/vendor/7zip/C/Util/7zipInstall/makefile +47 -0
  163. package/vendor/7zip/C/Util/7zipInstall/resource.h +9 -0
  164. package/vendor/7zip/C/Util/7zipInstall/resource.rc +48 -0
  165. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.c +1234 -0
  166. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsp +132 -0
  167. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsw +29 -0
  168. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.ico +0 -0
  169. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.manifest +18 -0
  170. package/vendor/7zip/C/Util/7zipUninstall/Precomp.c +4 -0
  171. package/vendor/7zip/C/Util/7zipUninstall/Precomp.h +13 -0
  172. package/vendor/7zip/C/Util/7zipUninstall/makefile +18 -0
  173. package/vendor/7zip/C/Util/7zipUninstall/resource.h +9 -0
  174. package/vendor/7zip/C/Util/7zipUninstall/resource.rc +48 -0
  175. package/vendor/7zip/C/Util/Lzma/LzmaUtil.c +313 -0
  176. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsp +192 -0
  177. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsw +29 -0
  178. package/vendor/7zip/C/Util/Lzma/Precomp.h +13 -0
  179. package/vendor/7zip/C/Util/Lzma/makefile +30 -0
  180. package/vendor/7zip/C/Util/Lzma/makefile.gcc +21 -0
  181. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.def +4 -0
  182. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsp +206 -0
  183. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  184. package/vendor/7zip/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  185. package/vendor/7zip/C/Util/LzmaLib/Precomp.c +4 -0
  186. package/vendor/7zip/C/Util/LzmaLib/Precomp.h +13 -0
  187. package/vendor/7zip/C/Util/LzmaLib/makefile +59 -0
  188. package/vendor/7zip/C/Util/LzmaLib/resource.rc +3 -0
  189. package/vendor/7zip/C/Util/SfxSetup/Precomp.c +4 -0
  190. package/vendor/7zip/C/Util/SfxSetup/Precomp.h +13 -0
  191. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.c +657 -0
  192. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  193. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  194. package/vendor/7zip/C/Util/SfxSetup/makefile +44 -0
  195. package/vendor/7zip/C/Util/SfxSetup/makefile_con +40 -0
  196. package/vendor/7zip/C/Util/SfxSetup/resource.rc +5 -0
  197. package/vendor/7zip/C/Util/SfxSetup/setup.ico +0 -0
  198. package/vendor/7zip/C/Xxh64.c +389 -0
  199. package/vendor/7zip/C/Xxh64.h +50 -0
  200. package/vendor/7zip/C/Xz.c +92 -0
  201. package/vendor/7zip/C/Xz.h +542 -0
  202. package/vendor/7zip/C/XzCrc64.c +140 -0
  203. package/vendor/7zip/C/XzCrc64.h +26 -0
  204. package/vendor/7zip/C/XzCrc64Opt.c +261 -0
  205. package/vendor/7zip/C/XzDec.c +2865 -0
  206. package/vendor/7zip/C/XzEnc.c +1374 -0
  207. package/vendor/7zip/C/XzEnc.h +62 -0
  208. package/vendor/7zip/C/XzIn.c +385 -0
  209. package/vendor/7zip/C/ZstdDec.c +4067 -0
  210. package/vendor/7zip/C/ZstdDec.h +173 -0
  211. package/vendor/7zip/C/var_clang.mak +11 -0
  212. package/vendor/7zip/C/var_clang_arm64.mak +12 -0
  213. package/vendor/7zip/C/var_clang_x64.mak +11 -0
  214. package/vendor/7zip/C/var_clang_x86.mak +11 -0
  215. package/vendor/7zip/C/var_gcc.mak +12 -0
  216. package/vendor/7zip/C/var_gcc_arm64.mak +12 -0
  217. package/vendor/7zip/C/var_gcc_x64.mak +10 -0
  218. package/vendor/7zip/C/var_gcc_x86.mak +10 -0
  219. package/vendor/7zip/C/var_mac_arm64.mak +13 -0
  220. package/vendor/7zip/C/var_mac_x64.mak +13 -0
  221. package/vendor/7zip/C/warn_clang.mak +1 -0
  222. package/vendor/7zip/C/warn_clang_mac.mak +1 -0
  223. package/vendor/7zip/C/warn_gcc.mak +51 -0
  224. package/vendor/7zip/CPP/7zip/7zip.mak +240 -0
  225. package/vendor/7zip/CPP/7zip/7zip_gcc.mak +1376 -0
  226. package/vendor/7zip/CPP/7zip/Aes.mak +10 -0
  227. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsp +650 -0
  228. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsw +29 -0
  229. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  230. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +92 -0
  231. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  232. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  233. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.cpp +702 -0
  234. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  235. package/vendor/7zip/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  236. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  237. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  238. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.cpp +800 -0
  239. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  240. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1162 -0
  241. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  242. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  243. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.cpp +1815 -0
  244. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.h +454 -0
  245. package/vendor/7zip/CPP/7zip/Archive/7z/7zItem.h +207 -0
  246. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  247. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.h +346 -0
  248. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  249. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  250. package/vendor/7zip/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  251. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  252. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  253. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +3087 -0
  254. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  255. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  256. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  257. package/vendor/7zip/CPP/7zip/Archive/7z/makefile +81 -0
  258. package/vendor/7zip/CPP/7zip/Archive/7z/resource.rc +11 -0
  259. package/vendor/7zip/CPP/7zip/Archive/ApfsHandler.cpp +4470 -0
  260. package/vendor/7zip/CPP/7zip/Archive/ApmHandler.cpp +420 -0
  261. package/vendor/7zip/CPP/7zip/Archive/ArHandler.cpp +844 -0
  262. package/vendor/7zip/CPP/7zip/Archive/Archive.def +15 -0
  263. package/vendor/7zip/CPP/7zip/Archive/Archive2.def +22 -0
  264. package/vendor/7zip/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  265. package/vendor/7zip/CPP/7zip/Archive/ArjHandler.cpp +977 -0
  266. package/vendor/7zip/CPP/7zip/Archive/AvbHandler.cpp +616 -0
  267. package/vendor/7zip/CPP/7zip/Archive/Base64Handler.cpp +488 -0
  268. package/vendor/7zip/CPP/7zip/Archive/Bz2Handler.cpp +482 -0
  269. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +122 -0
  270. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +28 -0
  271. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +1270 -0
  272. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.h +29 -0
  273. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  274. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.h +41 -0
  275. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.cpp +485 -0
  276. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.h +169 -0
  277. package/vendor/7zip/CPP/7zip/Archive/Cab/CabItem.h +69 -0
  278. package/vendor/7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +19 -0
  279. package/vendor/7zip/CPP/7zip/Archive/Cab/StdAfx.h +11 -0
  280. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +790 -0
  281. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.h +27 -0
  282. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +1026 -0
  283. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.h +282 -0
  284. package/vendor/7zip/CPP/7zip/Archive/Chm/StdAfx.h +11 -0
  285. package/vendor/7zip/CPP/7zip/Archive/ComHandler.cpp +1449 -0
  286. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  287. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  288. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  289. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  290. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.cpp +90 -0
  291. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  292. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +315 -0
  293. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.h +169 -0
  294. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  295. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  296. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +140 -0
  297. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +33 -0
  298. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  299. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  300. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  301. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  302. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +29 -0
  303. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +61 -0
  304. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  305. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  306. package/vendor/7zip/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  307. package/vendor/7zip/CPP/7zip/Archive/CpioHandler.cpp +1110 -0
  308. package/vendor/7zip/CPP/7zip/Archive/CramfsHandler.cpp +784 -0
  309. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.cpp +3 -0
  310. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.h +6 -0
  311. package/vendor/7zip/CPP/7zip/Archive/DllExports.cpp +96 -0
  312. package/vendor/7zip/CPP/7zip/Archive/DllExports2.cpp +184 -0
  313. package/vendor/7zip/CPP/7zip/Archive/DmgHandler.cpp +2336 -0
  314. package/vendor/7zip/CPP/7zip/Archive/ElfHandler.cpp +1284 -0
  315. package/vendor/7zip/CPP/7zip/Archive/ExtHandler.cpp +2860 -0
  316. package/vendor/7zip/CPP/7zip/Archive/FatHandler.cpp +1325 -0
  317. package/vendor/7zip/CPP/7zip/Archive/FlvHandler.cpp +521 -0
  318. package/vendor/7zip/CPP/7zip/Archive/GptHandler.cpp +473 -0
  319. package/vendor/7zip/CPP/7zip/Archive/GzHandler.cpp +1200 -0
  320. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.cpp +320 -0
  321. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.h +134 -0
  322. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.cpp +2631 -0
  323. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.h +87 -0
  324. package/vendor/7zip/CPP/7zip/Archive/IArchive.h +755 -0
  325. package/vendor/7zip/CPP/7zip/Archive/Icons/7z.ico +0 -0
  326. package/vendor/7zip/CPP/7zip/Archive/Icons/apfs.ico +0 -0
  327. package/vendor/7zip/CPP/7zip/Archive/Icons/arj.ico +0 -0
  328. package/vendor/7zip/CPP/7zip/Archive/Icons/bz2.ico +0 -0
  329. package/vendor/7zip/CPP/7zip/Archive/Icons/cab.ico +0 -0
  330. package/vendor/7zip/CPP/7zip/Archive/Icons/cpio.ico +0 -0
  331. package/vendor/7zip/CPP/7zip/Archive/Icons/deb.ico +0 -0
  332. package/vendor/7zip/CPP/7zip/Archive/Icons/dmg.ico +0 -0
  333. package/vendor/7zip/CPP/7zip/Archive/Icons/fat.ico +0 -0
  334. package/vendor/7zip/CPP/7zip/Archive/Icons/gz.ico +0 -0
  335. package/vendor/7zip/CPP/7zip/Archive/Icons/hfs.ico +0 -0
  336. package/vendor/7zip/CPP/7zip/Archive/Icons/iso.ico +0 -0
  337. package/vendor/7zip/CPP/7zip/Archive/Icons/lzh.ico +0 -0
  338. package/vendor/7zip/CPP/7zip/Archive/Icons/lzma.ico +0 -0
  339. package/vendor/7zip/CPP/7zip/Archive/Icons/ntfs.ico +0 -0
  340. package/vendor/7zip/CPP/7zip/Archive/Icons/rar.ico +0 -0
  341. package/vendor/7zip/CPP/7zip/Archive/Icons/rpm.ico +0 -0
  342. package/vendor/7zip/CPP/7zip/Archive/Icons/split.ico +0 -0
  343. package/vendor/7zip/CPP/7zip/Archive/Icons/squashfs.ico +0 -0
  344. package/vendor/7zip/CPP/7zip/Archive/Icons/tar.ico +0 -0
  345. package/vendor/7zip/CPP/7zip/Archive/Icons/vhd.ico +0 -0
  346. package/vendor/7zip/CPP/7zip/Archive/Icons/wim.ico +0 -0
  347. package/vendor/7zip/CPP/7zip/Archive/Icons/xar.ico +0 -0
  348. package/vendor/7zip/CPP/7zip/Archive/Icons/xz.ico +0 -0
  349. package/vendor/7zip/CPP/7zip/Archive/Icons/z.ico +0 -0
  350. package/vendor/7zip/CPP/7zip/Archive/Icons/zip.ico +0 -0
  351. package/vendor/7zip/CPP/7zip/Archive/Icons/zst.ico +0 -0
  352. package/vendor/7zip/CPP/7zip/Archive/IhexHandler.cpp +493 -0
  353. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +498 -0
  354. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.h +24 -0
  355. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +12 -0
  356. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.h +64 -0
  357. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +801 -0
  358. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.h +328 -0
  359. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoItem.h +316 -0
  360. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +21 -0
  361. package/vendor/7zip/CPP/7zip/Archive/Iso/StdAfx.h +11 -0
  362. package/vendor/7zip/CPP/7zip/Archive/LpHandler.cpp +1172 -0
  363. package/vendor/7zip/CPP/7zip/Archive/LvmHandler.cpp +1108 -0
  364. package/vendor/7zip/CPP/7zip/Archive/LzhHandler.cpp +719 -0
  365. package/vendor/7zip/CPP/7zip/Archive/LzmaHandler.cpp +606 -0
  366. package/vendor/7zip/CPP/7zip/Archive/MachoHandler.cpp +1075 -0
  367. package/vendor/7zip/CPP/7zip/Archive/MbrHandler.cpp +648 -0
  368. package/vendor/7zip/CPP/7zip/Archive/MslzHandler.cpp +389 -0
  369. package/vendor/7zip/CPP/7zip/Archive/MubHandler.cpp +248 -0
  370. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +295 -0
  371. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +97 -0
  372. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +703 -0
  373. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +30 -0
  374. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +6231 -0
  375. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.h +462 -0
  376. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +20 -0
  377. package/vendor/7zip/CPP/7zip/Archive/Nsis/StdAfx.h +11 -0
  378. package/vendor/7zip/CPP/7zip/Archive/NtfsHandler.cpp +2944 -0
  379. package/vendor/7zip/CPP/7zip/Archive/PeHandler.cpp +3427 -0
  380. package/vendor/7zip/CPP/7zip/Archive/PpmdHandler.cpp +414 -0
  381. package/vendor/7zip/CPP/7zip/Archive/QcowHandler.cpp +713 -0
  382. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +3483 -0
  383. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +527 -0
  384. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1775 -0
  385. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.h +115 -0
  386. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHeader.h +209 -0
  387. package/vendor/7zip/CPP/7zip/Archive/Rar/RarItem.h +97 -0
  388. package/vendor/7zip/CPP/7zip/Archive/Rar/RarVol.h +136 -0
  389. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.cpp +3 -0
  390. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.h +11 -0
  391. package/vendor/7zip/CPP/7zip/Archive/RpmHandler.cpp +775 -0
  392. package/vendor/7zip/CPP/7zip/Archive/SparseHandler.cpp +558 -0
  393. package/vendor/7zip/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  394. package/vendor/7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2373 -0
  395. package/vendor/7zip/CPP/7zip/Archive/StdAfx.h +11 -0
  396. package/vendor/7zip/CPP/7zip/Archive/SwfHandler.cpp +996 -0
  397. package/vendor/7zip/CPP/7zip/Archive/Tar/StdAfx.h +11 -0
  398. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +1105 -0
  399. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.h +57 -0
  400. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +332 -0
  401. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +99 -0
  402. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.h +90 -0
  403. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.cpp +1151 -0
  404. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.h +151 -0
  405. package/vendor/7zip/CPP/7zip/Archive/Tar/TarItem.h +365 -0
  406. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.cpp +644 -0
  407. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.h +53 -0
  408. package/vendor/7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +31 -0
  409. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +563 -0
  410. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.h +74 -0
  411. package/vendor/7zip/CPP/7zip/Archive/Udf/StdAfx.h +11 -0
  412. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +427 -0
  413. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.h +32 -0
  414. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +1756 -0
  415. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.h +508 -0
  416. package/vendor/7zip/CPP/7zip/Archive/UefiHandler.cpp +1884 -0
  417. package/vendor/7zip/CPP/7zip/Archive/VdiHandler.cpp +433 -0
  418. package/vendor/7zip/CPP/7zip/Archive/VhdHandler.cpp +1106 -0
  419. package/vendor/7zip/CPP/7zip/Archive/VhdxHandler.cpp +2085 -0
  420. package/vendor/7zip/CPP/7zip/Archive/VmdkHandler.cpp +1530 -0
  421. package/vendor/7zip/CPP/7zip/Archive/Wim/StdAfx.h +11 -0
  422. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +1291 -0
  423. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.h +117 -0
  424. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +2008 -0
  425. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.cpp +2104 -0
  426. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.h +719 -0
  427. package/vendor/7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +29 -0
  428. package/vendor/7zip/CPP/7zip/Archive/XarHandler.cpp +1316 -0
  429. package/vendor/7zip/CPP/7zip/Archive/XzHandler.cpp +1452 -0
  430. package/vendor/7zip/CPP/7zip/Archive/XzHandler.h +11 -0
  431. package/vendor/7zip/CPP/7zip/Archive/ZHandler.cpp +208 -0
  432. package/vendor/7zip/CPP/7zip/Archive/Zip/StdAfx.h +11 -0
  433. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +484 -0
  434. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +76 -0
  435. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +62 -0
  436. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +1679 -0
  437. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.h +94 -0
  438. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +626 -0
  439. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHeader.h +201 -0
  440. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +3474 -0
  441. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.h +456 -0
  442. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +464 -0
  443. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.h +356 -0
  444. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +428 -0
  445. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.h +103 -0
  446. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +38 -0
  447. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +2165 -0
  448. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +107 -0
  449. package/vendor/7zip/CPP/7zip/Archive/ZstdHandler.cpp +1147 -0
  450. package/vendor/7zip/CPP/7zip/Archive/makefile +23 -0
  451. package/vendor/7zip/CPP/7zip/Asm.mak +12 -0
  452. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsp +3324 -0
  453. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsw +29 -0
  454. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.cpp +3 -0
  455. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.h +11 -0
  456. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile +245 -0
  457. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile.gcc +354 -0
  458. package/vendor/7zip/CPP/7zip/Bundles/Alone/resource.rc +7 -0
  459. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.cpp +3 -0
  460. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.h +11 -0
  461. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile +31 -0
  462. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile.gcc +108 -0
  463. package/vendor/7zip/CPP/7zip/Bundles/Alone2/resource.rc +7 -0
  464. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  465. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  466. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  467. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  468. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  469. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile.gcc +276 -0
  470. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  471. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsp +2275 -0
  472. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsw +29 -0
  473. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.cpp +3 -0
  474. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.h +6 -0
  475. package/vendor/7zip/CPP/7zip/Bundles/Fm/makefile +82 -0
  476. package/vendor/7zip/CPP/7zip/Bundles/Fm/resource.rc +7 -0
  477. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.cpp +3 -0
  478. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.h +11 -0
  479. package/vendor/7zip/CPP/7zip/Bundles/Format7z/makefile +148 -0
  480. package/vendor/7zip/CPP/7zip/Bundles/Format7z/resource.rc +5 -0
  481. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.cpp +3 -0
  482. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.h +11 -0
  483. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/makefile +116 -0
  484. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/resource.rc +5 -0
  485. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  486. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  487. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  488. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  489. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc.mak +310 -0
  490. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +395 -0
  491. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsp +3486 -0
  492. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsw +29 -0
  493. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.cpp +3 -0
  494. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.h +11 -0
  495. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile +20 -0
  496. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile.gcc +55 -0
  497. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/resource.rc +39 -0
  498. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  499. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  500. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  501. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  502. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +815 -0
  503. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  504. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  505. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  506. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  507. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  508. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  509. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  510. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  511. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  512. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  513. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  514. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  515. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  516. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  517. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  518. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  519. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  520. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  521. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  522. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  523. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  524. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  525. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +359 -0
  526. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  527. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  528. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  529. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  530. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  531. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  532. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  533. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  534. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  535. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  536. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  537. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  538. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  539. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  540. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  541. package/vendor/7zip/CPP/7zip/Bundles/makefile +19 -0
  542. package/vendor/7zip/CPP/7zip/Common/CWrappers.cpp +358 -0
  543. package/vendor/7zip/CPP/7zip/Common/CWrappers.h +182 -0
  544. package/vendor/7zip/CPP/7zip/Common/CreateCoder.cpp +548 -0
  545. package/vendor/7zip/CPP/7zip/Common/CreateCoder.h +200 -0
  546. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  547. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  548. package/vendor/7zip/CPP/7zip/Common/FileStreams.cpp +923 -0
  549. package/vendor/7zip/CPP/7zip/Common/FileStreams.h +205 -0
  550. package/vendor/7zip/CPP/7zip/Common/FilterCoder.cpp +582 -0
  551. package/vendor/7zip/CPP/7zip/Common/FilterCoder.h +201 -0
  552. package/vendor/7zip/CPP/7zip/Common/InBuffer.cpp +182 -0
  553. package/vendor/7zip/CPP/7zip/Common/InBuffer.h +121 -0
  554. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  555. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  556. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.cpp +395 -0
  557. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.h +221 -0
  558. package/vendor/7zip/CPP/7zip/Common/LockedStream.cpp +3 -0
  559. package/vendor/7zip/CPP/7zip/Common/LockedStream.h +6 -0
  560. package/vendor/7zip/CPP/7zip/Common/MemBlocks.cpp +215 -0
  561. package/vendor/7zip/CPP/7zip/Common/MemBlocks.h +72 -0
  562. package/vendor/7zip/CPP/7zip/Common/MethodId.cpp +3 -0
  563. package/vendor/7zip/CPP/7zip/Common/MethodId.h +10 -0
  564. package/vendor/7zip/CPP/7zip/Common/MethodProps.cpp +765 -0
  565. package/vendor/7zip/CPP/7zip/Common/MethodProps.h +348 -0
  566. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  567. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.h +160 -0
  568. package/vendor/7zip/CPP/7zip/Common/OffsetStream.cpp +37 -0
  569. package/vendor/7zip/CPP/7zip/Common/OffsetStream.h +22 -0
  570. package/vendor/7zip/CPP/7zip/Common/OutBuffer.cpp +111 -0
  571. package/vendor/7zip/CPP/7zip/Common/OutBuffer.h +133 -0
  572. package/vendor/7zip/CPP/7zip/Common/OutMemStream.cpp +158 -0
  573. package/vendor/7zip/CPP/7zip/Common/OutMemStream.h +104 -0
  574. package/vendor/7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  575. package/vendor/7zip/CPP/7zip/Common/ProgressMt.h +43 -0
  576. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  577. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.h +33 -0
  578. package/vendor/7zip/CPP/7zip/Common/PropId.cpp +115 -0
  579. package/vendor/7zip/CPP/7zip/Common/RegisterArc.h +80 -0
  580. package/vendor/7zip/CPP/7zip/Common/RegisterCodec.h +106 -0
  581. package/vendor/7zip/CPP/7zip/Common/StdAfx.h +11 -0
  582. package/vendor/7zip/CPP/7zip/Common/StreamBinder.cpp +151 -0
  583. package/vendor/7zip/CPP/7zip/Common/StreamBinder.h +78 -0
  584. package/vendor/7zip/CPP/7zip/Common/StreamObjects.cpp +290 -0
  585. package/vendor/7zip/CPP/7zip/Common/StreamObjects.h +146 -0
  586. package/vendor/7zip/CPP/7zip/Common/StreamUtils.cpp +101 -0
  587. package/vendor/7zip/CPP/7zip/Common/StreamUtils.h +31 -0
  588. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  589. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.h +41 -0
  590. package/vendor/7zip/CPP/7zip/Common/VirtThread.cpp +47 -0
  591. package/vendor/7zip/CPP/7zip/Common/VirtThread.h +24 -0
  592. package/vendor/7zip/CPP/7zip/Compress/BZip2Const.h +71 -0
  593. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.cpp +28 -0
  594. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  595. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.cpp +1777 -0
  596. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.h +388 -0
  597. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.cpp +1116 -0
  598. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.h +273 -0
  599. package/vendor/7zip/CPP/7zip/Compress/BZip2Register.cpp +25 -0
  600. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  601. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  602. package/vendor/7zip/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  603. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  604. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.h +37 -0
  605. package/vendor/7zip/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  606. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.cpp +32 -0
  607. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.h +225 -0
  608. package/vendor/7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  609. package/vendor/7zip/CPP/7zip/Compress/BitmDecoder.h +106 -0
  610. package/vendor/7zip/CPP/7zip/Compress/BitmEncoder.h +90 -0
  611. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  612. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.h +59 -0
  613. package/vendor/7zip/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  614. package/vendor/7zip/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  615. package/vendor/7zip/CPP/7zip/Compress/Codec.def +7 -0
  616. package/vendor/7zip/CPP/7zip/Compress/CodecExports.cpp +378 -0
  617. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  618. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  619. package/vendor/7zip/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  620. package/vendor/7zip/CPP/7zip/Compress/Deflate64Register.cpp +25 -0
  621. package/vendor/7zip/CPP/7zip/Compress/DeflateConst.h +131 -0
  622. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.cpp +566 -0
  623. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.h +154 -0
  624. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.cpp +1045 -0
  625. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.h +203 -0
  626. package/vendor/7zip/CPP/7zip/Compress/DeflateRegister.cpp +25 -0
  627. package/vendor/7zip/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  628. package/vendor/7zip/CPP/7zip/Compress/DllExports2Compress.cpp +38 -0
  629. package/vendor/7zip/CPP/7zip/Compress/DllExportsCompress.cpp +59 -0
  630. package/vendor/7zip/CPP/7zip/Compress/HuffmanDecoder.h +528 -0
  631. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +250 -0
  632. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.h +61 -0
  633. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +3 -0
  634. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +6 -0
  635. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  636. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.h +102 -0
  637. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.cpp +950 -0
  638. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.h +63 -0
  639. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  640. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.h +68 -0
  641. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  642. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  643. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +134 -0
  644. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  645. package/vendor/7zip/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  646. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  647. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  648. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.cpp +374 -0
  649. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  650. package/vendor/7zip/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  651. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.cpp +619 -0
  652. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.h +209 -0
  653. package/vendor/7zip/CPP/7zip/Compress/Lzx.h +61 -0
  654. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.cpp +1517 -0
  655. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.h +106 -0
  656. package/vendor/7zip/CPP/7zip/Compress/Mtf8.h +225 -0
  657. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  658. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  659. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  660. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  661. package/vendor/7zip/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  662. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.cpp +309 -0
  663. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.h +78 -0
  664. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.cpp +355 -0
  665. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.h +60 -0
  666. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.cpp +518 -0
  667. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.h +70 -0
  668. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.cpp +472 -0
  669. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.h +111 -0
  670. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.cpp +939 -0
  671. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.h +283 -0
  672. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.cpp +1153 -0
  673. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.h +195 -0
  674. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.cpp +2060 -0
  675. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.h +132 -0
  676. package/vendor/7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +33 -0
  677. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +290 -0
  678. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  679. package/vendor/7zip/CPP/7zip/Compress/StdAfx.h +11 -0
  680. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.cpp +399 -0
  681. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.h +18 -0
  682. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  683. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.h +86 -0
  684. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  685. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.h +35 -0
  686. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.cpp +392 -0
  687. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.h +41 -0
  688. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.cpp +136 -0
  689. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.h +78 -0
  690. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  691. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.h +42 -0
  692. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.cpp +437 -0
  693. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.h +98 -0
  694. package/vendor/7zip/CPP/7zip/Compress/makefile +7 -0
  695. package/vendor/7zip/CPP/7zip/Crc.mak +8 -0
  696. package/vendor/7zip/CPP/7zip/Crc64.mak +8 -0
  697. package/vendor/7zip/CPP/7zip/Crypto/7zAes.cpp +315 -0
  698. package/vendor/7zip/CPP/7zip/Crypto/7zAes.h +130 -0
  699. package/vendor/7zip/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  700. package/vendor/7zip/CPP/7zip/Crypto/Codec.def +4 -0
  701. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.cpp +94 -0
  702. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.h +31 -0
  703. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.cpp +53 -0
  704. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  705. package/vendor/7zip/CPP/7zip/Crypto/MyAes.cpp +277 -0
  706. package/vendor/7zip/CPP/7zip/Crypto/MyAes.h +122 -0
  707. package/vendor/7zip/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  708. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +48 -0
  709. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +19 -0
  710. package/vendor/7zip/CPP/7zip/Crypto/RandGen.cpp +242 -0
  711. package/vendor/7zip/CPP/7zip/Crypto/RandGen.h +41 -0
  712. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +130 -0
  713. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.h +54 -0
  714. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.cpp +273 -0
  715. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.h +97 -0
  716. package/vendor/7zip/CPP/7zip/Crypto/RarAes.cpp +202 -0
  717. package/vendor/7zip/CPP/7zip/Crypto/RarAes.h +54 -0
  718. package/vendor/7zip/CPP/7zip/Crypto/Sha1Cls.h +37 -0
  719. package/vendor/7zip/CPP/7zip/Crypto/StdAfx.h +11 -0
  720. package/vendor/7zip/CPP/7zip/Crypto/WzAes.cpp +231 -0
  721. package/vendor/7zip/CPP/7zip/Crypto/WzAes.h +161 -0
  722. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.cpp +114 -0
  723. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.h +80 -0
  724. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.cpp +265 -0
  725. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.h +73 -0
  726. package/vendor/7zip/CPP/7zip/GuiCommon.rc +119 -0
  727. package/vendor/7zip/CPP/7zip/Guid.txt +243 -0
  728. package/vendor/7zip/CPP/7zip/ICoder.h +480 -0
  729. package/vendor/7zip/CPP/7zip/IDecl.h +76 -0
  730. package/vendor/7zip/CPP/7zip/IPassword.h +54 -0
  731. package/vendor/7zip/CPP/7zip/IProgress.h +20 -0
  732. package/vendor/7zip/CPP/7zip/IStream.h +210 -0
  733. package/vendor/7zip/CPP/7zip/LzFindOpt.mak +7 -0
  734. package/vendor/7zip/CPP/7zip/LzmaDec.mak +7 -0
  735. package/vendor/7zip/CPP/7zip/LzmaDec_gcc.mak +14 -0
  736. package/vendor/7zip/CPP/7zip/MyVersion.h +2 -0
  737. package/vendor/7zip/CPP/7zip/MyVersionInfo.rc +2 -0
  738. package/vendor/7zip/CPP/7zip/PropID.h +178 -0
  739. package/vendor/7zip/CPP/7zip/Sha1.mak +13 -0
  740. package/vendor/7zip/CPP/7zip/Sha256.mak +13 -0
  741. package/vendor/7zip/CPP/7zip/Sort.mak +6 -0
  742. package/vendor/7zip/CPP/7zip/SubBuild.mak +3 -0
  743. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.cpp +2003 -0
  744. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.h +365 -0
  745. package/vendor/7zip/CPP/7zip/UI/Agent/AgentOut.cpp +776 -0
  746. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.cpp +1098 -0
  747. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.h +198 -0
  748. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolder.cpp +57 -0
  749. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOpen.cpp +243 -0
  750. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOut.cpp +457 -0
  751. package/vendor/7zip/CPP/7zip/UI/Agent/IFolderArchive.h +123 -0
  752. package/vendor/7zip/CPP/7zip/UI/Agent/StdAfx.h +11 -0
  753. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.cpp +208 -0
  754. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.h +22 -0
  755. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  756. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  757. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  758. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  759. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  760. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile +29 -0
  761. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  762. package/vendor/7zip/CPP/7zip/UI/Client7z/resource.rc +3 -0
  763. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1913 -0
  764. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  765. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +3243 -0
  766. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.h +640 -0
  767. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  768. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  769. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +403 -0
  770. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  771. package/vendor/7zip/CPP/7zip/UI/Common/Bench.cpp +5036 -0
  772. package/vendor/7zip/CPP/7zip/UI/Common/Bench.h +121 -0
  773. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.cpp +343 -0
  774. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.h +28 -0
  775. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall2.cpp +327 -0
  776. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  777. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.h +11 -0
  778. package/vendor/7zip/CPP/7zip/UI/Common/DirItem.h +407 -0
  779. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.cpp +1637 -0
  780. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  781. package/vendor/7zip/CPP/7zip/UI/Common/ExitCode.h +27 -0
  782. package/vendor/7zip/CPP/7zip/UI/Common/Extract.cpp +593 -0
  783. package/vendor/7zip/CPP/7zip/UI/Common/Extract.h +118 -0
  784. package/vendor/7zip/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  785. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.cpp +299 -0
  786. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  787. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.cpp +2273 -0
  788. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.h +322 -0
  789. package/vendor/7zip/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  790. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.cpp +1354 -0
  791. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  792. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.cpp +3690 -0
  793. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  794. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.cpp +746 -0
  795. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  796. package/vendor/7zip/CPP/7zip/UI/Common/Property.h +14 -0
  797. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  798. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.h +10 -0
  799. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  800. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.h +10 -0
  801. package/vendor/7zip/CPP/7zip/UI/Common/StdAfx.h +11 -0
  802. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  803. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.h +19 -0
  804. package/vendor/7zip/CPP/7zip/UI/Common/Update.cpp +1931 -0
  805. package/vendor/7zip/CPP/7zip/UI/Common/Update.h +221 -0
  806. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  807. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  808. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.cpp +1078 -0
  809. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  810. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.cpp +303 -0
  811. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  812. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.cpp +75 -0
  813. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  814. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  815. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.h +30 -0
  816. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.cpp +599 -0
  817. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  818. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  819. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.h +14 -0
  820. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsp +1052 -0
  821. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsw +29 -0
  822. package/vendor/7zip/CPP/7zip/UI/Console/Console.mak +45 -0
  823. package/vendor/7zip/CPP/7zip/UI/Console/Console.manifest +16 -0
  824. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  825. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  826. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +954 -0
  827. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  828. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  829. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.h +58 -0
  830. package/vendor/7zip/CPP/7zip/UI/Console/List.cpp +1417 -0
  831. package/vendor/7zip/CPP/7zip/UI/Console/List.h +42 -0
  832. package/vendor/7zip/CPP/7zip/UI/Console/Main.cpp +1663 -0
  833. package/vendor/7zip/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  834. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  835. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  836. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  837. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  838. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  839. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.h +11 -0
  840. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +1012 -0
  841. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  842. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  843. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  844. package/vendor/7zip/CPP/7zip/UI/Console/makefile +68 -0
  845. package/vendor/7zip/CPP/7zip/UI/Console/makefile.gcc +184 -0
  846. package/vendor/7zip/CPP/7zip/UI/Console/resource.rc +7 -0
  847. package/vendor/7zip/CPP/7zip/UI/Explorer/7-zip.dll.manifest +1 -0
  848. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.cpp +1837 -0
  849. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.h +173 -0
  850. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenuFlags.h +27 -0
  851. package/vendor/7zip/CPP/7zip/UI/Explorer/DllExportsExplorer.cpp +268 -0
  852. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.def +9 -0
  853. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsp +620 -0
  854. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsw +29 -0
  855. package/vendor/7zip/CPP/7zip/UI/Explorer/MenuLogo.bmp +0 -0
  856. package/vendor/7zip/CPP/7zip/UI/Explorer/MyExplorerCommand.h +217 -0
  857. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  858. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  859. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.cpp +225 -0
  860. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.h +13 -0
  861. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.cpp +3 -0
  862. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.h +6 -0
  863. package/vendor/7zip/CPP/7zip/UI/Explorer/makefile +76 -0
  864. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.h +15 -0
  865. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.rc +10 -0
  866. package/vendor/7zip/CPP/7zip/UI/Explorer/resource2.rc +19 -0
  867. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.cpp +274 -0
  868. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.h +43 -0
  869. package/vendor/7zip/CPP/7zip/UI/Far/Far.cpp +588 -0
  870. package/vendor/7zip/CPP/7zip/UI/Far/Far.def +35 -0
  871. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsp +831 -0
  872. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsw +29 -0
  873. package/vendor/7zip/CPP/7zip/UI/Far/FarPlugin.h +560 -0
  874. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.cpp +523 -0
  875. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.h +203 -0
  876. package/vendor/7zip/CPP/7zip/UI/Far/Messages.h +136 -0
  877. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.cpp +145 -0
  878. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.h +37 -0
  879. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.cpp +937 -0
  880. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.h +97 -0
  881. package/vendor/7zip/CPP/7zip/UI/Far/PluginCommon.cpp +50 -0
  882. package/vendor/7zip/CPP/7zip/UI/Far/PluginDelete.cpp +144 -0
  883. package/vendor/7zip/CPP/7zip/UI/Far/PluginRead.cpp +301 -0
  884. package/vendor/7zip/CPP/7zip/UI/Far/PluginWrite.cpp +840 -0
  885. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.cpp +305 -0
  886. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.h +85 -0
  887. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.cpp +3 -0
  888. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.h +11 -0
  889. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.cpp +327 -0
  890. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.h +58 -0
  891. package/vendor/7zip/CPP/7zip/UI/Far/makefile +105 -0
  892. package/vendor/7zip/CPP/7zip/UI/Far/resource.rc +3 -0
  893. package/vendor/7zip/CPP/7zip/UI/FileManager/7zFM.exe.manifest +23 -0
  894. package/vendor/7zip/CPP/7zip/UI/FileManager/7zipLogo.ico +0 -0
  895. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.cpp +81 -0
  896. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.h +19 -0
  897. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.rc +26 -0
  898. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialogRes.h +8 -0
  899. package/vendor/7zip/CPP/7zip/UI/FileManager/Add.bmp +0 -0
  900. package/vendor/7zip/CPP/7zip/UI/FileManager/Add2.bmp +0 -0
  901. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.cpp +865 -0
  902. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.h +92 -0
  903. package/vendor/7zip/CPP/7zip/UI/FileManager/App.cpp +1004 -0
  904. package/vendor/7zip/CPP/7zip/UI/FileManager/App.h +314 -0
  905. package/vendor/7zip/CPP/7zip/UI/FileManager/AppState.h +95 -0
  906. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  907. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  908. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.rc +25 -0
  909. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.cpp +1873 -0
  910. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.h +10 -0
  911. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.rc +32 -0
  912. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2Res.h +9 -0
  913. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  914. package/vendor/7zip/CPP/7zip/UI/FileManager/ClassDefs.cpp +12 -0
  915. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  916. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  917. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.rc +16 -0
  918. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  919. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy.bmp +0 -0
  920. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy2.bmp +0 -0
  921. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.cpp +103 -0
  922. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.h +31 -0
  923. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.rc +20 -0
  924. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialogRes.h +8 -0
  925. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete.bmp +0 -0
  926. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete2.bmp +0 -0
  927. package/vendor/7zip/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  928. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.cpp +57 -0
  929. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.h +25 -0
  930. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.rc +15 -0
  931. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialogRes.h +2 -0
  932. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.cpp +159 -0
  933. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.h +30 -0
  934. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.rc +19 -0
  935. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage2.rc +14 -0
  936. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPageRes.h +15 -0
  937. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.cpp +109 -0
  938. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.h +10 -0
  939. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract.bmp +0 -0
  940. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract2.bmp +0 -0
  941. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1284 -0
  942. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  943. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.cpp +1230 -0
  944. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsp +1699 -0
  945. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsw +29 -0
  946. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.ico +0 -0
  947. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.mak +102 -0
  948. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.cpp +512 -0
  949. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.h +52 -0
  950. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.cpp +1179 -0
  951. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.h +220 -0
  952. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolderCopy.cpp +871 -0
  953. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.cpp +394 -0
  954. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.h +27 -0
  955. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp +78 -0
  956. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.h +33 -0
  957. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.cpp +172 -0
  958. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.h +32 -0
  959. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.rc +23 -0
  960. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage2.rc +11 -0
  961. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPageRes.h +12 -0
  962. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  963. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  964. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.cpp +78 -0
  965. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.h +10 -0
  966. package/vendor/7zip/CPP/7zip/UI/FileManager/IFolder.h +187 -0
  967. package/vendor/7zip/CPP/7zip/UI/FileManager/Info.bmp +0 -0
  968. package/vendor/7zip/CPP/7zip/UI/FileManager/Info2.bmp +0 -0
  969. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.cpp +359 -0
  970. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.h +36 -0
  971. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.rc +40 -0
  972. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPageRes.h +9 -0
  973. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.cpp +333 -0
  974. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  975. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.cpp +402 -0
  976. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.h +34 -0
  977. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.rc +38 -0
  978. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialogRes.h +22 -0
  979. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.cpp +321 -0
  980. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.h +46 -0
  981. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.rc +14 -0
  982. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialogRes.h +2 -0
  983. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  984. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  985. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.rc +49 -0
  986. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  987. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.cpp +439 -0
  988. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.h +57 -0
  989. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.rc +24 -0
  990. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage2.rc +28 -0
  991. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPageRes.h +15 -0
  992. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.cpp +76 -0
  993. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.h +25 -0
  994. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.rc +14 -0
  995. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialogRes.h +3 -0
  996. package/vendor/7zip/CPP/7zip/UI/FileManager/Move.bmp +0 -0
  997. package/vendor/7zip/CPP/7zip/UI/FileManager/Move2.bmp +0 -0
  998. package/vendor/7zip/CPP/7zip/UI/FileManager/MyCom2.h +46 -0
  999. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.cpp +964 -0
  1000. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.h +40 -0
  1001. package/vendor/7zip/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  1002. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.cpp +276 -0
  1003. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.h +36 -0
  1004. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp +86 -0
  1005. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.h +69 -0
  1006. package/vendor/7zip/CPP/7zip/UI/FileManager/OptionsDialog.cpp +89 -0
  1007. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  1008. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  1009. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  1010. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  1011. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.cpp +1177 -0
  1012. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.h +1020 -0
  1013. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCopy.cpp +477 -0
  1014. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCrc.cpp +422 -0
  1015. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelDrag.cpp +3006 -0
  1016. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelFolderChange.cpp +1122 -0
  1017. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +1836 -0
  1018. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItems.cpp +1476 -0
  1019. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelKey.cpp +357 -0
  1020. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelListNotify.cpp +838 -0
  1021. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelMenu.cpp +1160 -0
  1022. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelOperations.cpp +533 -0
  1023. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSelect.cpp +317 -0
  1024. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSort.cpp +288 -0
  1025. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSplitFile.cpp +562 -0
  1026. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  1027. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  1028. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  1029. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  1030. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginInterface.h +32 -0
  1031. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginLoader.h +33 -0
  1032. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.cpp +3 -0
  1033. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.h +6 -0
  1034. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  1035. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  1036. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  1037. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1484 -0
  1038. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  1039. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  1040. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  1041. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  1042. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  1043. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  1044. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  1045. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.rc +109 -0
  1046. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  1047. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.cpp +167 -0
  1048. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.h +31 -0
  1049. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.cpp +145 -0
  1050. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.h +29 -0
  1051. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.cpp +194 -0
  1052. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.h +50 -0
  1053. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.cpp +342 -0
  1054. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.h +24 -0
  1055. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.cpp +453 -0
  1056. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.h +37 -0
  1057. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.rc +22 -0
  1058. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage2.rc +37 -0
  1059. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPageRes.h +23 -0
  1060. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.cpp +114 -0
  1061. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.h +28 -0
  1062. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.rc +16 -0
  1063. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialogRes.h +8 -0
  1064. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.cpp +96 -0
  1065. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.h +15 -0
  1066. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.cpp +3 -0
  1067. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  1068. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.cpp +39 -0
  1069. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.h +11 -0
  1070. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.cpp +352 -0
  1071. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  1072. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.cpp +472 -0
  1073. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.h +126 -0
  1074. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.rc +43 -0
  1075. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPageRes.h +9 -0
  1076. package/vendor/7zip/CPP/7zip/UI/FileManager/Test.bmp +0 -0
  1077. package/vendor/7zip/CPP/7zip/UI/FileManager/Test2.bmp +0 -0
  1078. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.cpp +193 -0
  1079. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.h +32 -0
  1080. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.cpp +147 -0
  1081. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.h +49 -0
  1082. package/vendor/7zip/CPP/7zip/UI/FileManager/VerCtrl.cpp +428 -0
  1083. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.cpp +315 -0
  1084. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.h +115 -0
  1085. package/vendor/7zip/CPP/7zip/UI/FileManager/makefile +110 -0
  1086. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.h +199 -0
  1087. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.rc +296 -0
  1088. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  1089. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.rc +30 -0
  1090. package/vendor/7zip/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  1091. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.cpp +1921 -0
  1092. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.h +15 -0
  1093. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.rc +288 -0
  1094. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialogRes.h +79 -0
  1095. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.cpp +3821 -0
  1096. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.h +483 -0
  1097. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.rc +233 -0
  1098. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialogRes.h +125 -0
  1099. package/vendor/7zip/CPP/7zip/UI/GUI/CompressOptionsDialog.rc +79 -0
  1100. package/vendor/7zip/CPP/7zip/UI/GUI/Extract.rc +59 -0
  1101. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.cpp +420 -0
  1102. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  1103. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  1104. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  1105. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  1106. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  1107. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  1108. package/vendor/7zip/CPP/7zip/UI/GUI/FM.ico +0 -0
  1109. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.cpp +502 -0
  1110. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsp +1275 -0
  1111. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsw +29 -0
  1112. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.cpp +341 -0
  1113. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  1114. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.cpp +3 -0
  1115. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.h +6 -0
  1116. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.cpp +295 -0
  1117. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.h +31 -0
  1118. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.cpp +130 -0
  1119. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.h +53 -0
  1120. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.cpp +605 -0
  1121. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.h +33 -0
  1122. package/vendor/7zip/CPP/7zip/UI/GUI/makefile +148 -0
  1123. package/vendor/7zip/CPP/7zip/UI/GUI/resource.rc +26 -0
  1124. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.h +2 -0
  1125. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.rc +10 -0
  1126. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.h +10 -0
  1127. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.rc +15 -0
  1128. package/vendor/7zip/CPP/7zip/UI/makefile +12 -0
  1129. package/vendor/7zip/CPP/7zip/cmpl_clang.mak +3 -0
  1130. package/vendor/7zip/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  1131. package/vendor/7zip/CPP/7zip/cmpl_clang_x64.mak +3 -0
  1132. package/vendor/7zip/CPP/7zip/cmpl_clang_x86.mak +3 -0
  1133. package/vendor/7zip/CPP/7zip/cmpl_gcc.mak +3 -0
  1134. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm.mak +3 -0
  1135. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  1136. package/vendor/7zip/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  1137. package/vendor/7zip/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  1138. package/vendor/7zip/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  1139. package/vendor/7zip/CPP/7zip/cmpl_mac_x64.mak +3 -0
  1140. package/vendor/7zip/CPP/7zip/makefile +10 -0
  1141. package/vendor/7zip/CPP/7zip/var_clang.mak +11 -0
  1142. package/vendor/7zip/CPP/7zip/var_clang_arm64.mak +19 -0
  1143. package/vendor/7zip/CPP/7zip/var_clang_x64.mak +11 -0
  1144. package/vendor/7zip/CPP/7zip/var_clang_x86.mak +11 -0
  1145. package/vendor/7zip/CPP/7zip/var_gcc.mak +12 -0
  1146. package/vendor/7zip/CPP/7zip/var_gcc_arm.mak +34 -0
  1147. package/vendor/7zip/CPP/7zip/var_gcc_arm64.mak +12 -0
  1148. package/vendor/7zip/CPP/7zip/var_gcc_x64.mak +11 -0
  1149. package/vendor/7zip/CPP/7zip/var_gcc_x86.mak +10 -0
  1150. package/vendor/7zip/CPP/7zip/var_mac_arm64.mak +13 -0
  1151. package/vendor/7zip/CPP/7zip/var_mac_x64.mak +13 -0
  1152. package/vendor/7zip/CPP/7zip/warn_clang.mak +3 -0
  1153. package/vendor/7zip/CPP/7zip/warn_clang_mac.mak +9 -0
  1154. package/vendor/7zip/CPP/7zip/warn_gcc.mak +55 -0
  1155. package/vendor/7zip/CPP/Build.mak +259 -0
  1156. package/vendor/7zip/CPP/Common/AutoPtr.h +46 -0
  1157. package/vendor/7zip/CPP/Common/CRC.cpp +7 -0
  1158. package/vendor/7zip/CPP/Common/C_FileIO.cpp +3 -0
  1159. package/vendor/7zip/CPP/Common/C_FileIO.h +6 -0
  1160. package/vendor/7zip/CPP/Common/CksumReg.cpp +55 -0
  1161. package/vendor/7zip/CPP/Common/ComTry.h +21 -0
  1162. package/vendor/7zip/CPP/Common/CommandLineParser.cpp +231 -0
  1163. package/vendor/7zip/CPP/Common/CommandLineParser.h +63 -0
  1164. package/vendor/7zip/CPP/Common/Common.h +28 -0
  1165. package/vendor/7zip/CPP/Common/Common0.h +342 -0
  1166. package/vendor/7zip/CPP/Common/CrcReg.cpp +77 -0
  1167. package/vendor/7zip/CPP/Common/Defs.h +16 -0
  1168. package/vendor/7zip/CPP/Common/DynLimBuf.cpp +93 -0
  1169. package/vendor/7zip/CPP/Common/DynLimBuf.h +41 -0
  1170. package/vendor/7zip/CPP/Common/DynamicBuffer.h +76 -0
  1171. package/vendor/7zip/CPP/Common/IntToString.cpp +215 -0
  1172. package/vendor/7zip/CPP/Common/IntToString.h +54 -0
  1173. package/vendor/7zip/CPP/Common/Lang.cpp +173 -0
  1174. package/vendor/7zip/CPP/Common/Lang.h +30 -0
  1175. package/vendor/7zip/CPP/Common/ListFileUtils.cpp +150 -0
  1176. package/vendor/7zip/CPP/Common/ListFileUtils.h +18 -0
  1177. package/vendor/7zip/CPP/Common/LzFindPrepare.cpp +7 -0
  1178. package/vendor/7zip/CPP/Common/Md5Reg.cpp +44 -0
  1179. package/vendor/7zip/CPP/Common/MyBuffer.h +343 -0
  1180. package/vendor/7zip/CPP/Common/MyBuffer2.h +185 -0
  1181. package/vendor/7zip/CPP/Common/MyCom.h +693 -0
  1182. package/vendor/7zip/CPP/Common/MyException.h +14 -0
  1183. package/vendor/7zip/CPP/Common/MyGuidDef.h +63 -0
  1184. package/vendor/7zip/CPP/Common/MyInitGuid.h +57 -0
  1185. package/vendor/7zip/CPP/Common/MyLinux.h +75 -0
  1186. package/vendor/7zip/CPP/Common/MyMap.cpp +140 -0
  1187. package/vendor/7zip/CPP/Common/MyMap.h +28 -0
  1188. package/vendor/7zip/CPP/Common/MyString.cpp +1842 -0
  1189. package/vendor/7zip/CPP/Common/MyString.h +1079 -0
  1190. package/vendor/7zip/CPP/Common/MyTypes.h +38 -0
  1191. package/vendor/7zip/CPP/Common/MyUnknown.h +8 -0
  1192. package/vendor/7zip/CPP/Common/MyVector.cpp +3 -0
  1193. package/vendor/7zip/CPP/Common/MyVector.h +772 -0
  1194. package/vendor/7zip/CPP/Common/MyWindows.cpp +292 -0
  1195. package/vendor/7zip/CPP/Common/MyWindows.h +325 -0
  1196. package/vendor/7zip/CPP/Common/MyXml.cpp +349 -0
  1197. package/vendor/7zip/CPP/Common/MyXml.h +45 -0
  1198. package/vendor/7zip/CPP/Common/NewHandler.cpp +340 -0
  1199. package/vendor/7zip/CPP/Common/NewHandler.h +121 -0
  1200. package/vendor/7zip/CPP/Common/Random.cpp +28 -0
  1201. package/vendor/7zip/CPP/Common/Random.h +14 -0
  1202. package/vendor/7zip/CPP/Common/Sha1Prepare.cpp +7 -0
  1203. package/vendor/7zip/CPP/Common/Sha1Reg.cpp +67 -0
  1204. package/vendor/7zip/CPP/Common/Sha256Prepare.cpp +7 -0
  1205. package/vendor/7zip/CPP/Common/Sha256Reg.cpp +67 -0
  1206. package/vendor/7zip/CPP/Common/Sha3Reg.cpp +76 -0
  1207. package/vendor/7zip/CPP/Common/Sha512Prepare.cpp +7 -0
  1208. package/vendor/7zip/CPP/Common/Sha512Reg.cpp +83 -0
  1209. package/vendor/7zip/CPP/Common/StdAfx.h +8 -0
  1210. package/vendor/7zip/CPP/Common/StdInStream.cpp +98 -0
  1211. package/vendor/7zip/CPP/Common/StdInStream.h +46 -0
  1212. package/vendor/7zip/CPP/Common/StdOutStream.cpp +271 -0
  1213. package/vendor/7zip/CPP/Common/StdOutStream.h +87 -0
  1214. package/vendor/7zip/CPP/Common/StringConvert.cpp +762 -0
  1215. package/vendor/7zip/CPP/Common/StringConvert.h +110 -0
  1216. package/vendor/7zip/CPP/Common/StringToInt.cpp +154 -0
  1217. package/vendor/7zip/CPP/Common/StringToInt.h +38 -0
  1218. package/vendor/7zip/CPP/Common/TextConfig.cpp +123 -0
  1219. package/vendor/7zip/CPP/Common/TextConfig.h +19 -0
  1220. package/vendor/7zip/CPP/Common/UTFConvert.cpp +863 -0
  1221. package/vendor/7zip/CPP/Common/UTFConvert.h +384 -0
  1222. package/vendor/7zip/CPP/Common/Wildcard.cpp +789 -0
  1223. package/vendor/7zip/CPP/Common/Wildcard.h +231 -0
  1224. package/vendor/7zip/CPP/Common/Xxh64Reg.cpp +97 -0
  1225. package/vendor/7zip/CPP/Common/XzCrc64Init.cpp +7 -0
  1226. package/vendor/7zip/CPP/Common/XzCrc64Reg.cpp +39 -0
  1227. package/vendor/7zip/CPP/Windows/COM.cpp +41 -0
  1228. package/vendor/7zip/CPP/Windows/COM.h +86 -0
  1229. package/vendor/7zip/CPP/Windows/Clipboard.cpp +130 -0
  1230. package/vendor/7zip/CPP/Windows/Clipboard.h +28 -0
  1231. package/vendor/7zip/CPP/Windows/CommonDialog.cpp +269 -0
  1232. package/vendor/7zip/CPP/Windows/CommonDialog.h +43 -0
  1233. package/vendor/7zip/CPP/Windows/Console.cpp +10 -0
  1234. package/vendor/7zip/CPP/Windows/Console.h +52 -0
  1235. package/vendor/7zip/CPP/Windows/Control/ComboBox.cpp +75 -0
  1236. package/vendor/7zip/CPP/Windows/Control/ComboBox.h +79 -0
  1237. package/vendor/7zip/CPP/Windows/Control/CommandBar.h +52 -0
  1238. package/vendor/7zip/CPP/Windows/Control/Dialog.cpp +446 -0
  1239. package/vendor/7zip/CPP/Windows/Control/Dialog.h +213 -0
  1240. package/vendor/7zip/CPP/Windows/Control/Edit.h +19 -0
  1241. package/vendor/7zip/CPP/Windows/Control/ImageList.cpp +10 -0
  1242. package/vendor/7zip/CPP/Windows/Control/ImageList.h +87 -0
  1243. package/vendor/7zip/CPP/Windows/Control/ListView.cpp +162 -0
  1244. package/vendor/7zip/CPP/Windows/Control/ListView.h +156 -0
  1245. package/vendor/7zip/CPP/Windows/Control/ProgressBar.h +35 -0
  1246. package/vendor/7zip/CPP/Windows/Control/PropertyPage.cpp +165 -0
  1247. package/vendor/7zip/CPP/Windows/Control/PropertyPage.h +50 -0
  1248. package/vendor/7zip/CPP/Windows/Control/ReBar.h +34 -0
  1249. package/vendor/7zip/CPP/Windows/Control/Static.h +28 -0
  1250. package/vendor/7zip/CPP/Windows/Control/StatusBar.h +42 -0
  1251. package/vendor/7zip/CPP/Windows/Control/StdAfx.h +11 -0
  1252. package/vendor/7zip/CPP/Windows/Control/ToolBar.h +43 -0
  1253. package/vendor/7zip/CPP/Windows/Control/Trackbar.h +27 -0
  1254. package/vendor/7zip/CPP/Windows/Control/Window2.cpp +202 -0
  1255. package/vendor/7zip/CPP/Windows/Control/Window2.h +53 -0
  1256. package/vendor/7zip/CPP/Windows/DLL.cpp +178 -0
  1257. package/vendor/7zip/CPP/Windows/DLL.h +103 -0
  1258. package/vendor/7zip/CPP/Windows/ErrorMsg.cpp +133 -0
  1259. package/vendor/7zip/CPP/Windows/ErrorMsg.h +16 -0
  1260. package/vendor/7zip/CPP/Windows/FileDir.cpp +1388 -0
  1261. package/vendor/7zip/CPP/Windows/FileDir.h +173 -0
  1262. package/vendor/7zip/CPP/Windows/FileFind.cpp +1458 -0
  1263. package/vendor/7zip/CPP/Windows/FileFind.h +345 -0
  1264. package/vendor/7zip/CPP/Windows/FileIO.cpp +1188 -0
  1265. package/vendor/7zip/CPP/Windows/FileIO.h +508 -0
  1266. package/vendor/7zip/CPP/Windows/FileLink.cpp +697 -0
  1267. package/vendor/7zip/CPP/Windows/FileMapping.cpp +12 -0
  1268. package/vendor/7zip/CPP/Windows/FileMapping.h +66 -0
  1269. package/vendor/7zip/CPP/Windows/FileName.cpp +911 -0
  1270. package/vendor/7zip/CPP/Windows/FileName.h +142 -0
  1271. package/vendor/7zip/CPP/Windows/FileSystem.cpp +187 -0
  1272. package/vendor/7zip/CPP/Windows/FileSystem.h +31 -0
  1273. package/vendor/7zip/CPP/Windows/Handle.h +39 -0
  1274. package/vendor/7zip/CPP/Windows/MemoryGlobal.cpp +36 -0
  1275. package/vendor/7zip/CPP/Windows/MemoryGlobal.h +55 -0
  1276. package/vendor/7zip/CPP/Windows/MemoryLock.cpp +127 -0
  1277. package/vendor/7zip/CPP/Windows/MemoryLock.h +40 -0
  1278. package/vendor/7zip/CPP/Windows/Menu.cpp +265 -0
  1279. package/vendor/7zip/CPP/Windows/Menu.h +170 -0
  1280. package/vendor/7zip/CPP/Windows/NationalTime.cpp +37 -0
  1281. package/vendor/7zip/CPP/Windows/NationalTime.h +20 -0
  1282. package/vendor/7zip/CPP/Windows/Net.cpp +398 -0
  1283. package/vendor/7zip/CPP/Windows/Net.h +87 -0
  1284. package/vendor/7zip/CPP/Windows/NtCheck.h +58 -0
  1285. package/vendor/7zip/CPP/Windows/ProcessMessages.cpp +22 -0
  1286. package/vendor/7zip/CPP/Windows/ProcessMessages.h +12 -0
  1287. package/vendor/7zip/CPP/Windows/ProcessUtils.cpp +102 -0
  1288. package/vendor/7zip/CPP/Windows/ProcessUtils.h +138 -0
  1289. package/vendor/7zip/CPP/Windows/PropVariant.cpp +393 -0
  1290. package/vendor/7zip/CPP/Windows/PropVariant.h +173 -0
  1291. package/vendor/7zip/CPP/Windows/PropVariantConv.cpp +274 -0
  1292. package/vendor/7zip/CPP/Windows/PropVariantConv.h +47 -0
  1293. package/vendor/7zip/CPP/Windows/PropVariantUtils.cpp +161 -0
  1294. package/vendor/7zip/CPP/Windows/PropVariantUtils.h +34 -0
  1295. package/vendor/7zip/CPP/Windows/Registry.cpp +474 -0
  1296. package/vendor/7zip/CPP/Windows/Registry.h +96 -0
  1297. package/vendor/7zip/CPP/Windows/ResourceString.cpp +103 -0
  1298. package/vendor/7zip/CPP/Windows/ResourceString.h +17 -0
  1299. package/vendor/7zip/CPP/Windows/SecurityUtils.cpp +186 -0
  1300. package/vendor/7zip/CPP/Windows/SecurityUtils.h +154 -0
  1301. package/vendor/7zip/CPP/Windows/Shell.cpp +839 -0
  1302. package/vendor/7zip/CPP/Windows/Shell.h +129 -0
  1303. package/vendor/7zip/CPP/Windows/StdAfx.h +11 -0
  1304. package/vendor/7zip/CPP/Windows/Synchronization.cpp +87 -0
  1305. package/vendor/7zip/CPP/Windows/Synchronization.h +386 -0
  1306. package/vendor/7zip/CPP/Windows/System.cpp +423 -0
  1307. package/vendor/7zip/CPP/Windows/System.h +209 -0
  1308. package/vendor/7zip/CPP/Windows/SystemInfo.cpp +1312 -0
  1309. package/vendor/7zip/CPP/Windows/SystemInfo.h +19 -0
  1310. package/vendor/7zip/CPP/Windows/Thread.h +46 -0
  1311. package/vendor/7zip/CPP/Windows/TimeUtils.cpp +467 -0
  1312. package/vendor/7zip/CPP/Windows/TimeUtils.h +154 -0
  1313. package/vendor/7zip/CPP/Windows/WinDefs.h +17 -0
  1314. package/vendor/7zip/CPP/Windows/Window.cpp +179 -0
  1315. package/vendor/7zip/CPP/Windows/Window.h +363 -0
  1316. package/vendor/7zip/DOC/7zC.txt +187 -0
  1317. package/vendor/7zip/DOC/7zFormat.txt +469 -0
  1318. package/vendor/7zip/DOC/7zip.hhp +84 -0
  1319. package/vendor/7zip/DOC/7zip.wxs +403 -0
  1320. package/vendor/7zip/DOC/License.txt +151 -0
  1321. package/vendor/7zip/DOC/Methods.txt +177 -0
  1322. package/vendor/7zip/DOC/copying.txt +502 -0
  1323. package/vendor/7zip/DOC/lzma.txt +345 -0
  1324. package/vendor/7zip/DOC/readme.txt +299 -0
  1325. package/vendor/7zip/DOC/src-history.txt +884 -0
  1326. package/vendor/7zip/DOC/unRarLicense.txt +41 -0
  1327. package/vendor/7zip/README.md +2 -0
@@ -0,0 +1,2085 @@
1
+ // VhdxHandler.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ // #include <stdio.h>
6
+
7
+ #include "../../../C/CpuArch.h"
8
+
9
+ #include "../../Common/ComTry.h"
10
+ #include "../../Common/IntToString.h"
11
+ #include "../../Common/StringToInt.h"
12
+ #include "../../Common/MyBuffer.h"
13
+
14
+ #include "../../Windows/PropVariant.h"
15
+
16
+ #include "../Common/RegisterArc.h"
17
+ #include "../Common/StreamUtils.h"
18
+
19
+ #include "HandlerCont.h"
20
+
21
+ #define Get16(p) GetUi16(p)
22
+ #define Get32(p) GetUi32(p)
23
+ #define Get64(p) GetUi64(p)
24
+
25
+ #define G32(_offs_, dest) dest = Get32(p + (_offs_))
26
+ #define G64(_offs_, dest) dest = Get64(p + (_offs_))
27
+
28
+ using namespace NWindows;
29
+
30
+
31
+ EXTERN_C_BEGIN
32
+
33
+ // CRC-32C (Castagnoli) : reversed for poly 0x1EDC6F41
34
+ #define k_Crc32c_Poly 0x82f63b78
35
+
36
+ MY_ALIGN(64)
37
+ static UInt32 g_Crc32c_Table[256];
38
+
39
+ static void Z7_FASTCALL Crc32c_GenerateTable()
40
+ {
41
+ UInt32 i;
42
+ for (i = 0; i < 256; i++)
43
+ {
44
+ UInt32 r = i;
45
+ unsigned j;
46
+ for (j = 0; j < 8; j++)
47
+ r = (r >> 1) ^ (k_Crc32c_Poly & ((UInt32)0 - (r & 1)));
48
+ g_Crc32c_Table[i] = r;
49
+ }
50
+ }
51
+
52
+
53
+ #define CRC32C_INIT_VAL 0xFFFFFFFF
54
+
55
+ #define CRC_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8))
56
+
57
+ // UInt32 Z7_FASTCALL CrcUpdateT1(UInt32 v, const void *data, size_t size, const UInt32 *table);
58
+ static UInt32 Z7_FASTCALL CrcUpdateT1_vhdx(UInt32 v, const void *data, size_t size, const UInt32 *table)
59
+ {
60
+ const Byte *p = (const Byte *)data;
61
+ const Byte *pEnd = p + size;
62
+ for (; p != pEnd; p++)
63
+ v = CRC_UPDATE_BYTE_2(v, *p);
64
+ return v;
65
+ }
66
+
67
+ static UInt32 Z7_FASTCALL Crc32c_Calc(const void *data, size_t size)
68
+ {
69
+ return CrcUpdateT1_vhdx(CRC32C_INIT_VAL, data, size, g_Crc32c_Table) ^ CRC32C_INIT_VAL;
70
+ }
71
+
72
+ EXTERN_C_END
73
+
74
+
75
+ namespace NArchive {
76
+ namespace NVhdx {
77
+
78
+ static struct C_CRC32c_TableInit { C_CRC32c_TableInit() { Crc32c_GenerateTable(); } } g_CRC32c_TableInit;
79
+
80
+ static const unsigned kSignatureSize = 8;
81
+ static const Byte kSignature[kSignatureSize] =
82
+ { 'v', 'h', 'd', 'x', 'f', 'i', 'l', 'e' };
83
+
84
+ static const unsigned kBitmapSize_Log = 20;
85
+ static const size_t kBitmapSize = (size_t)1 << kBitmapSize_Log;
86
+
87
+
88
+ static bool IsZeroArr(const Byte *p, size_t size)
89
+ {
90
+ for (size_t i = 0; i < size; i++)
91
+ if (p[i] != 0)
92
+ return false;
93
+ return true;
94
+ }
95
+
96
+
97
+
98
+ Z7_FORCE_INLINE
99
+ static int DecodeFrom2HexChars(const wchar_t *s)
100
+ {
101
+ unsigned v0 = (unsigned)s[0]; Z7_PARSE_HEX_DIGIT(v0, return -1;)
102
+ unsigned v1 = (unsigned)s[1]; Z7_PARSE_HEX_DIGIT(v1, return -1;)
103
+ return (int)((v0 << 4) | v1);
104
+ }
105
+
106
+
107
+ struct CGuid
108
+ {
109
+ Byte Data[16];
110
+
111
+ bool IsZero() const { return IsZeroArr(Data, 16); }
112
+ bool IsEqualTo(const Byte *a) const { return memcmp(Data, a, 16) == 0; }
113
+ bool IsEqualTo(const CGuid &g) const { return IsEqualTo(g.Data); }
114
+ void AddHexToString(UString &s) const;
115
+
116
+ void SetFrom(const Byte *p) { memcpy(Data, p, 16); }
117
+
118
+ bool ParseFromFormatedHexString(const UString &s)
119
+ {
120
+ const unsigned kLen = 16 * 2 + 4 + 2;
121
+ if (s.Len() != kLen || s[0] != '{' || s[kLen - 1] != '}')
122
+ return false;
123
+ unsigned pos = 0;
124
+ for (unsigned i = 1; i < kLen - 1;)
125
+ {
126
+ if (i == 9 || i == 14 || i == 19 || i == 24)
127
+ {
128
+ if (s[i] != '-')
129
+ return false;
130
+ i++;
131
+ continue;
132
+ }
133
+ const int v = DecodeFrom2HexChars(s.Ptr(i));
134
+ if (v < 0)
135
+ return false;
136
+ unsigned pos2 = pos;
137
+ if (pos < 8)
138
+ pos2 ^= (pos < 4 ? 3 : 1);
139
+ Data[pos2] = (Byte)v;
140
+ pos++;
141
+ i += 2;
142
+ }
143
+ return true; // pos == 16;
144
+ }
145
+ };
146
+
147
+ void CGuid::AddHexToString(UString &s) const
148
+ {
149
+ char temp[sizeof(Data) * 2 + 2];
150
+ ConvertDataToHex_Lower(temp, Data, sizeof(Data));
151
+ s += temp;
152
+ }
153
+
154
+
155
+ #define IS_NON_ALIGNED(v) (((v) & 0xFFFFF) != 0)
156
+
157
+ static const unsigned kHeader_GUID_Index_FileWriteGuid = 0;
158
+ static const unsigned kHeader_GUID_Index_DataWriteGuid = 1;
159
+ static const unsigned kHeader_GUID_Index_LogGuid = 2;
160
+
161
+ struct CHeader
162
+ {
163
+ UInt64 SequenceNumber;
164
+ // UInt16 LogVersion;
165
+ // UInt16 Version;
166
+ UInt32 LogLength;
167
+ UInt64 LogOffset;
168
+ CGuid Guids[3];
169
+
170
+ bool IsEqualTo(const CHeader &h) const
171
+ {
172
+ if (SequenceNumber != h.SequenceNumber)
173
+ return false;
174
+ if (LogLength != h.LogLength)
175
+ return false;
176
+ if (LogOffset != h.LogOffset)
177
+ return false;
178
+ for (unsigned i = 0; i < 3; i++)
179
+ if (!Guids[i].IsEqualTo(h.Guids[i]))
180
+ return false;
181
+ return true;
182
+ }
183
+
184
+ bool Parse(Byte *p);
185
+ };
186
+
187
+ static const unsigned kHeader2Size = 1 << 12;
188
+
189
+ bool CHeader::Parse(Byte *p)
190
+ {
191
+ if (Get32(p) != 0x64616568) // "head"
192
+ return false;
193
+ const UInt32 crc = Get32(p + 4);
194
+ SetUi32(p + 4, 0)
195
+ if (Crc32c_Calc(p, kHeader2Size) != crc)
196
+ return false;
197
+ G64(8, SequenceNumber);
198
+ for (unsigned i = 0; i < 3; i++)
199
+ Guids[i].SetFrom(p + 0x10 + 0x10 * i);
200
+ // LogVersion = Get16(p + 0x40);
201
+ /* LogVersion MUST be set to zero, for known log format
202
+ but we don't parse log so we ignore it */
203
+ G32(0x44, LogLength);
204
+ G64(0x48, LogOffset);
205
+ if (Get16(p + 0x42) != 1) // Header format Version
206
+ return false;
207
+ if (IS_NON_ALIGNED(LogLength))
208
+ return false;
209
+ if (IS_NON_ALIGNED(LogOffset))
210
+ return false;
211
+ return true;
212
+ // return IsZeroArr(p + 0x50, kHeader2Size - 0x50);
213
+ }
214
+
215
+
216
+
217
+ static const Byte kBat[16] =
218
+ { 0x66,0x77,0xC2,0x2D,0x23,0xF6,0x00,0x42,0x9D,0x64,0x11,0x5E,0x9B,0xFD,0x4A,0x08 };
219
+ static const Byte kMetadataRegion[16] =
220
+ { 0x06,0xA2,0x7C,0x8B,0x90,0x47,0x9A,0x4B,0xB8,0xFE,0x57,0x5F,0x05,0x0F,0x88,0x6E };
221
+
222
+ struct CRegionEntry
223
+ {
224
+ // CGuid Guid;
225
+ UInt64 Offset;
226
+ UInt32 Len;
227
+ UInt32 Required;
228
+
229
+ UInt64 GetEndPos() const { return Offset + Len; }
230
+ bool Parse(const Byte *p);
231
+ };
232
+
233
+ bool CRegionEntry::Parse(const Byte *p)
234
+ {
235
+ // Guid.SetFrom(p);
236
+ G64(0x10, Offset);
237
+ G32(0x18, Len);
238
+ G32(0x1c, Required);
239
+ if (IS_NON_ALIGNED(Offset))
240
+ return false;
241
+ if (IS_NON_ALIGNED(Len))
242
+ return false;
243
+ if (Offset + Len < Offset)
244
+ return false;
245
+ return true;
246
+ }
247
+
248
+
249
+ struct CRegion
250
+ {
251
+ bool Bat_Defined;
252
+ bool Meta_Defined;
253
+ UInt64 EndPos;
254
+ UInt64 DataSize;
255
+
256
+ CRegionEntry BatEntry;
257
+ CRegionEntry MetaEntry;
258
+
259
+ bool Parse(Byte *p);
260
+ };
261
+
262
+
263
+ static const size_t kRegionSize = 1 << 16;
264
+ static const unsigned kNumRegionEntriesMax = (1 << 11) - 1;
265
+
266
+ bool CRegion::Parse(Byte *p)
267
+ {
268
+ Bat_Defined = false;
269
+ Meta_Defined = false;
270
+ EndPos = 0;
271
+ DataSize = 0;
272
+
273
+ if (Get32(p) != 0x69676572) // "regi"
274
+ return false;
275
+ const UInt32 crc = Get32(p + 4);
276
+ SetUi32(p + 4, 0)
277
+ const UInt32 crc_calced = Crc32c_Calc(p, kRegionSize);
278
+ if (crc_calced != crc)
279
+ return false;
280
+
281
+ const UInt32 EntryCount = Get32(p + 8);
282
+ if (Get32(p + 12) != 0) // reserved field must be set to 0.
283
+ return false;
284
+ if (EntryCount > kNumRegionEntriesMax)
285
+ return false;
286
+ for (UInt32 i = 0; i < EntryCount; i++)
287
+ {
288
+ CRegionEntry e;
289
+ const Byte *p2 = p + 0x10 + 0x20 * (size_t)i;
290
+ if (!e.Parse(p2))
291
+ return false;
292
+ DataSize += e.Len;
293
+ const UInt64 endPos = e.GetEndPos();
294
+ if (EndPos < endPos)
295
+ EndPos = endPos;
296
+ CGuid Guid;
297
+ Guid.SetFrom(p2);
298
+ if (Guid.IsEqualTo(kBat))
299
+ {
300
+ if (Bat_Defined)
301
+ return false;
302
+ BatEntry = e;
303
+ Bat_Defined = true;
304
+ }
305
+ else if (Guid.IsEqualTo(kMetadataRegion))
306
+ {
307
+ if (Meta_Defined)
308
+ return false;
309
+ MetaEntry = e;
310
+ Meta_Defined = true;
311
+ }
312
+ else
313
+ {
314
+ if (e.Required != 0)
315
+ return false;
316
+ // it's allowed to ignore unknown non-required region entries
317
+ }
318
+ }
319
+ /*
320
+ const size_t k = 0x10 + 0x20 * EntryCount;
321
+ return IsZeroArr(p + k, kRegionSize - k);
322
+ */
323
+ return true;
324
+ }
325
+
326
+
327
+
328
+
329
+ struct CMetaEntry
330
+ {
331
+ CGuid Guid;
332
+ UInt32 Offset;
333
+ UInt32 Len;
334
+ UInt32 Flags0;
335
+ // UInt32 Flags1;
336
+
337
+ bool IsUser() const { return (Flags0 & 1) != 0; }
338
+ bool IsVirtualDisk() const { return (Flags0 & 2) != 0; }
339
+ bool IsRequired() const { return (Flags0 & 4) != 0; }
340
+
341
+ bool CheckLimit(size_t regionSize) const
342
+ {
343
+ return Offset <= regionSize && Len <= regionSize - Offset;
344
+ }
345
+
346
+ bool Parse(const Byte *p);
347
+ };
348
+
349
+
350
+ bool CMetaEntry::Parse(const Byte *p)
351
+ {
352
+ Guid.SetFrom(p);
353
+
354
+ G32(0x10, Offset);
355
+ G32(0x14, Len);
356
+ G32(0x18, Flags0);
357
+ UInt32 Flags1;
358
+ G32(0x1C, Flags1);
359
+
360
+ if (Offset != 0 && Offset < (1 << 16))
361
+ return false;
362
+ if (Len > (1 << 20))
363
+ return false;
364
+ if (Len == 0 && Offset != 0)
365
+ return false;
366
+ if ((Flags0 >> 3) != 0) // Reserved
367
+ return false;
368
+ if ((Flags1 & 3) != 0) // Reserved2
369
+ return false;
370
+ return true;
371
+ }
372
+
373
+
374
+ struct CParentPair
375
+ {
376
+ UString Key;
377
+ UString Value;
378
+ };
379
+
380
+
381
+ struct CMetaHeader
382
+ {
383
+ // UInt16 EntryCount;
384
+ bool Guid_Defined;
385
+ bool VirtualDiskSize_Defined;
386
+ bool Locator_Defined;
387
+
388
+ unsigned BlockSize_Log;
389
+ unsigned LogicalSectorSize_Log;
390
+ unsigned PhysicalSectorSize_Log;
391
+
392
+ UInt32 Flags;
393
+ UInt64 VirtualDiskSize;
394
+ CGuid Guid;
395
+ // CGuid LocatorType;
396
+
397
+ CObjectVector<CParentPair> ParentPairs;
398
+
399
+ int FindParentKey(const char *name) const
400
+ {
401
+ FOR_VECTOR (i, ParentPairs)
402
+ {
403
+ const CParentPair &pair = ParentPairs[i];
404
+ if (pair.Key.IsEqualTo(name))
405
+ return (int)i;
406
+ }
407
+ return -1;
408
+ }
409
+
410
+ bool Is_LeaveBlockAllocated() const { return (Flags & 1) != 0; }
411
+ bool Is_HasParent() const { return (Flags & 2) != 0; }
412
+
413
+ void Clear()
414
+ {
415
+ Guid_Defined = false;
416
+ VirtualDiskSize_Defined = false;
417
+ Locator_Defined = false;
418
+ BlockSize_Log = 0;
419
+ LogicalSectorSize_Log = 0;
420
+ PhysicalSectorSize_Log = 0;
421
+ Flags = 0;
422
+ VirtualDiskSize = 0;
423
+ ParentPairs.Clear();
424
+ }
425
+
426
+ bool Parse(const Byte *p, size_t size);
427
+ };
428
+
429
+
430
+ static unsigned GetLogSize(UInt32 size)
431
+ {
432
+ unsigned k;
433
+ for (k = 0; k < 32; k++)
434
+ if (((UInt32)1 << k) == size)
435
+ return k;
436
+ return k;
437
+ }
438
+
439
+
440
+ static const unsigned kMetadataSize = 8;
441
+ static const Byte kMetadata[kMetadataSize] =
442
+ { 'm','e','t','a','d','a','t','a' };
443
+
444
+ static const unsigned k_Num_MetaEntries_Max = (1 << 11) - 1;
445
+
446
+ static const Byte kFileParameters[16] =
447
+ { 0x37,0x67,0xa1,0xca,0x36,0xfa,0x43,0x4d,0xb3,0xb6,0x33,0xf0,0xaa,0x44,0xe7,0x6b };
448
+ static const Byte kVirtualDiskSize[16] =
449
+ { 0x24,0x42,0xa5,0x2f,0x1b,0xcd,0x76,0x48,0xb2,0x11,0x5d,0xbe,0xd8,0x3b,0xf4,0xb8 };
450
+ static const Byte kVirtualDiskID[16] =
451
+ { 0xab,0x12,0xca,0xbe,0xe6,0xb2,0x23,0x45,0x93,0xef,0xc3,0x09,0xe0,0x00,0xc7,0x46 };
452
+ static const Byte kLogicalSectorSize[16] =
453
+ { 0x1d,0xbf,0x41,0x81,0x6f,0xa9,0x09,0x47,0xba,0x47,0xf2,0x33,0xa8,0xfa,0xab,0x5f };
454
+ static const Byte kPhysicalSectorSize[16] =
455
+ { 0xc7,0x48,0xa3,0xcd,0x5d,0x44,0x71,0x44,0x9c,0xc9,0xe9,0x88,0x52,0x51,0xc5,0x56 };
456
+ static const Byte kParentLocator[16] =
457
+ { 0x2d,0x5f,0xd3,0xa8,0x0b,0xb3,0x4d,0x45,0xab,0xf7,0xd3,0xd8,0x48,0x34,0xab,0x0c };
458
+
459
+ static bool GetString16(UString &s, const Byte *p, size_t size)
460
+ {
461
+ s.Empty();
462
+ if (size & 1)
463
+ return false;
464
+ for (size_t i = 0; i < size; i += 2)
465
+ {
466
+ const wchar_t c = Get16(p + i);
467
+ if (c == 0)
468
+ return false;
469
+ s += c;
470
+ }
471
+ return true;
472
+ }
473
+
474
+
475
+ bool CMetaHeader::Parse(const Byte *p, size_t size)
476
+ {
477
+ if (memcmp(p, kMetadata, kMetadataSize) != 0)
478
+ return false;
479
+ if (Get16(p + 8) != 0) // Reserved
480
+ return false;
481
+ const UInt32 EntryCount = Get16(p + 10);
482
+ if (EntryCount > k_Num_MetaEntries_Max)
483
+ return false;
484
+ if (!IsZeroArr(p + 12, 20)) // Reserved
485
+ return false;
486
+
487
+ for (unsigned i = 0; i < EntryCount; i++)
488
+ {
489
+ CMetaEntry e;
490
+ if (!e.Parse(p + 32 + 32 * (size_t)i))
491
+ return false;
492
+ if (!e.CheckLimit(size))
493
+ return false;
494
+ const Byte *p2 = p + e.Offset;
495
+
496
+ if (e.Guid.IsEqualTo(kFileParameters))
497
+ {
498
+ if (BlockSize_Log != 0)
499
+ return false;
500
+ if (e.Len != 8)
501
+ return false;
502
+ const UInt32 v = Get32(p2);
503
+ Flags = Get32(p2 + 4);
504
+ BlockSize_Log = GetLogSize(v);
505
+ if (BlockSize_Log < 20 || BlockSize_Log > 28) // specification from 1 MB to 256 MB
506
+ return false;
507
+ if ((Flags >> 2) != 0) // reserved
508
+ return false;
509
+ }
510
+ else if (e.Guid.IsEqualTo(kVirtualDiskSize))
511
+ {
512
+ if (VirtualDiskSize_Defined)
513
+ return false;
514
+ if (e.Len != 8)
515
+ return false;
516
+ VirtualDiskSize = Get64(p2);
517
+ VirtualDiskSize_Defined = true;
518
+ }
519
+ else if (e.Guid.IsEqualTo(kVirtualDiskID))
520
+ {
521
+ if (e.Len != 16)
522
+ return false;
523
+ Guid.SetFrom(p2);
524
+ Guid_Defined = true;
525
+ }
526
+ else if (e.Guid.IsEqualTo(kLogicalSectorSize))
527
+ {
528
+ if (LogicalSectorSize_Log != 0)
529
+ return false;
530
+ if (e.Len != 4)
531
+ return false;
532
+ const UInt32 v = Get32(p2);
533
+ LogicalSectorSize_Log = GetLogSize(v);
534
+ if (LogicalSectorSize_Log != 9 && LogicalSectorSize_Log != 12)
535
+ return false;
536
+ }
537
+ else if (e.Guid.IsEqualTo(kPhysicalSectorSize))
538
+ {
539
+ if (PhysicalSectorSize_Log != 0)
540
+ return false;
541
+ if (e.Len != 4)
542
+ return false;
543
+ const UInt32 v = Get32(p2);
544
+ PhysicalSectorSize_Log = GetLogSize(v);
545
+ if (PhysicalSectorSize_Log != 9 && PhysicalSectorSize_Log != 12)
546
+ return false;
547
+ }
548
+ else if (e.Guid.IsEqualTo(kParentLocator))
549
+ {
550
+ if (Locator_Defined)
551
+ return false;
552
+ if (e.Len < 20)
553
+ return false;
554
+ // LocatorType.SetFrom(p2);
555
+ /* Specifies the type of the parent virtual disk.
556
+ is different for each type: VHDX, VHD or iSCSI.
557
+ only "B04AEFB7-D19E-4A81-B789-25B8E9445913" (for VHDX) is supported now
558
+ */
559
+ Locator_Defined = true;
560
+ if (Get16(p2 + 16) != 0) // reserved
561
+ return false;
562
+ const UInt32 KeyValueCount = Get16(p2 + 18);
563
+ if (20 + (UInt32)KeyValueCount * 12 > e.Len)
564
+ return false;
565
+ for (unsigned k = 0; k < KeyValueCount; k++)
566
+ {
567
+ const Byte *p3 = p2 + 20 + (size_t)k * 12;
568
+ const UInt32 KeyOffset = Get32(p3);
569
+ const UInt32 ValueOffset = Get32(p3 + 4);
570
+ const UInt32 KeyLength = Get16(p3 + 8);
571
+ const UInt32 ValueLength = Get16(p3 + 10);
572
+ if (KeyOffset > e.Len || KeyLength > e.Len - KeyOffset)
573
+ return false;
574
+ if (ValueOffset > e.Len || ValueLength > e.Len - ValueOffset)
575
+ return false;
576
+ CParentPair pair;
577
+ if (!GetString16(pair.Key, p2 + KeyOffset, KeyLength))
578
+ return false;
579
+ if (!GetString16(pair.Value, p2 + ValueOffset, ValueLength))
580
+ return false;
581
+ ParentPairs.Add(pair);
582
+ }
583
+ }
584
+ else
585
+ {
586
+ if (e.IsRequired())
587
+ return false;
588
+ // return false; // unknown metadata;
589
+ }
590
+ }
591
+
592
+ // some properties are required for correct processing
593
+
594
+ if (BlockSize_Log == 0)
595
+ return false;
596
+ if (LogicalSectorSize_Log == 0)
597
+ return false;
598
+ if (!VirtualDiskSize_Defined)
599
+ return false;
600
+ if (((UInt32)VirtualDiskSize & ((UInt32)1 << LogicalSectorSize_Log)) != 0)
601
+ return false;
602
+
603
+ // vhdx specification sets limit for 64 TB.
604
+ // do we need to check over same limit ?
605
+ const UInt64 kVirtualDiskSize_Max = (UInt64)1 << 46;
606
+ if (VirtualDiskSize > kVirtualDiskSize_Max)
607
+ return false;
608
+
609
+ return true;
610
+ }
611
+
612
+
613
+
614
+ struct CBat
615
+ {
616
+ CByteBuffer Data;
617
+
618
+ void Clear() { Data.Free(); }
619
+ UInt64 GetItem(size_t n) const
620
+ {
621
+ return Get64(Data + n * 8);
622
+ }
623
+ };
624
+
625
+
626
+
627
+ Z7_class_CHandler_final: public CHandlerImg
628
+ {
629
+ UInt64 _phySize;
630
+
631
+ CBat Bat;
632
+ CObjectVector<CByteBuffer> BitMaps;
633
+
634
+ unsigned ChunkRatio_Log;
635
+ size_t ChunkRatio;
636
+ size_t TotalBatEntries;
637
+
638
+ CMetaHeader Meta;
639
+ CHeader Header;
640
+
641
+ UInt32 NumUsedBlocks;
642
+ UInt32 NumUsedBitMaps;
643
+ UInt64 HeadersSize;
644
+
645
+ UInt32 NumLevels;
646
+ UInt64 PackSize_Total;
647
+
648
+ /*
649
+ UInt64 NumUsed_1MB_Blocks; // data and bitmaps
650
+ bool NumUsed_1MB_Blocks_Defined;
651
+ */
652
+
653
+ CMyComPtr<IInStream> ParentStream;
654
+ CHandler *Parent;
655
+ UString _errorMessage;
656
+ UString _creator;
657
+
658
+ bool _nonEmptyLog;
659
+ bool _isDataContiguous;
660
+ // bool _batOverlap;
661
+
662
+ CGuid _parentGuid;
663
+ bool _parentGuid_IsDefined;
664
+ UStringVector ParentNames;
665
+ UString ParentName_Used;
666
+
667
+ const CHandler *_child;
668
+ unsigned _level;
669
+ bool _isCyclic;
670
+ bool _isCyclic_or_CyclicParent;
671
+
672
+ void AddErrorMessage(const char *message);
673
+ void AddErrorMessage(const char *message, const wchar_t *name);
674
+
675
+ void UpdatePhySize(UInt64 value)
676
+ {
677
+ if (_phySize < value)
678
+ _phySize = value;
679
+ }
680
+
681
+ HRESULT Seek2(UInt64 offset);
682
+ HRESULT Read_FALSE(Byte *data, size_t size)
683
+ {
684
+ return ReadStream_FALSE(Stream, data, size);
685
+ }
686
+ HRESULT ReadToBuf_FALSE(CByteBuffer &buf, size_t size)
687
+ {
688
+ buf.Alloc(size);
689
+ return ReadStream_FALSE(Stream, buf, size);
690
+ }
691
+
692
+ void InitSeekPositions();
693
+ HRESULT ReadPhy(UInt64 offset, void *data, UInt32 size, UInt32 &processed);
694
+
695
+ bool IsDiff() const
696
+ {
697
+ // here we suppose that only HasParent() flag is mandatory for Diff archive type
698
+ return Meta.Is_HasParent();
699
+ // return _parentGuid_IsDefined;
700
+ }
701
+
702
+ void AddTypeString(AString &s) const
703
+ {
704
+ if (IsDiff())
705
+ s += "Differencing";
706
+ else
707
+ {
708
+ if (Meta.Is_LeaveBlockAllocated())
709
+ s += _isDataContiguous ? "fixed" : "fixed-non-cont";
710
+ else
711
+ s += "dynamic";
712
+ }
713
+ }
714
+
715
+ void AddComment(UString &s) const;
716
+
717
+ UInt64 GetPackSize() const
718
+ {
719
+ return (UInt64)NumUsedBlocks << Meta.BlockSize_Log;
720
+ }
721
+
722
+ UString GetParentSequence() const
723
+ {
724
+ const CHandler *p = this;
725
+ UString res;
726
+ while (p && p->IsDiff())
727
+ {
728
+ if (!res.IsEmpty())
729
+ res += " -> ";
730
+ res += ParentName_Used;
731
+ p = p->Parent;
732
+ }
733
+ return res;
734
+ }
735
+
736
+ bool AreParentsOK() const
737
+ {
738
+ if (_isCyclic_or_CyclicParent)
739
+ return false;
740
+ const CHandler *p = this;
741
+ while (p->IsDiff())
742
+ {
743
+ p = p->Parent;
744
+ if (!p)
745
+ return false;
746
+ }
747
+ return true;
748
+ }
749
+
750
+ // bool ParseLog(CByteBuffer &log);
751
+ bool ParseBat();
752
+ bool CheckBat();
753
+
754
+ HRESULT Open3();
755
+ HRESULT Open2(IInStream *stream, IArchiveOpenCallback *openArchiveCallback) Z7_override;
756
+ HRESULT OpenParent(IArchiveOpenCallback *openArchiveCallback, bool &_parentFileWasOpen);
757
+ virtual void CloseAtError() Z7_override;
758
+
759
+ public:
760
+ Z7_IFACE_COM7_IMP(IInArchive_Img)
761
+
762
+ Z7_IFACE_COM7_IMP(IInArchiveGetStream)
763
+ Z7_IFACE_COM7_IMP(ISequentialInStream)
764
+
765
+ CHandler():
766
+ _child(NULL),
767
+ _level(0),
768
+ _isCyclic(false),
769
+ _isCyclic_or_CyclicParent(false)
770
+ {}
771
+ };
772
+
773
+
774
+ HRESULT CHandler::Seek2(UInt64 offset)
775
+ {
776
+ return InStream_SeekSet(Stream, offset);
777
+ }
778
+
779
+
780
+ void CHandler::InitSeekPositions()
781
+ {
782
+ /* (_virtPos) and (_posInArc) is used only in Read() (that calls ReadPhy()).
783
+ So we must reset these variables before first call of Read() */
784
+ Reset_VirtPos();
785
+ Reset_PosInArc();
786
+ if (ParentStream)
787
+ Parent->InitSeekPositions();
788
+ }
789
+
790
+
791
+ HRESULT CHandler::ReadPhy(UInt64 offset, void *data, UInt32 size, UInt32 &processed)
792
+ {
793
+ processed = 0;
794
+ if (offset > _phySize
795
+ || offset + size > _phySize)
796
+ {
797
+ // we don't expect these cases, if (_phySize) was set correctly.
798
+ return S_FALSE;
799
+ }
800
+ if (offset != _posInArc)
801
+ {
802
+ const HRESULT res = Seek2(offset);
803
+ if (res != S_OK)
804
+ {
805
+ Reset_PosInArc(); // we don't trust seek_pos in case of error
806
+ return res;
807
+ }
808
+ _posInArc = offset;
809
+ }
810
+ {
811
+ size_t size2 = size;
812
+ const HRESULT res = ReadStream(Stream, data, &size2);
813
+ processed = (UInt32)size2;
814
+ _posInArc += size2;
815
+ if (res != S_OK)
816
+ Reset_PosInArc(); // we don't trust seek_pos in case of reading error
817
+ return res;
818
+ }
819
+ }
820
+
821
+
822
+ #define PAYLOAD_BLOCK_NOT_PRESENT 0
823
+ #define PAYLOAD_BLOCK_UNDEFINED 1
824
+ #define PAYLOAD_BLOCK_ZERO 2
825
+ #define PAYLOAD_BLOCK_UNMAPPED 3
826
+ #define PAYLOAD_BLOCK_FULLY_PRESENT 6
827
+ #define PAYLOAD_BLOCK_PARTIALLY_PRESENT 7
828
+
829
+ #define SB_BLOCK_NOT_PRESENT 0
830
+ #define SB_BLOCK_PRESENT 6
831
+
832
+ #define BAT_GET_OFFSET(v) ((v) & ~(UInt64)0xFFFFF)
833
+ #define BAT_GET_STATE(v) ((UInt32)(v) & 7)
834
+
835
+ /* The log contains only updates to metadata, bat and region tables
836
+ The log doesn't contain updates to start header, and 2 headers (first 192 KB of file).
837
+ The log is array of 4 KB blocks and each block has 4-byte signature.
838
+ So it's possible to scan whole log to find the latest entry sequence (and header for replay).
839
+ */
840
+
841
+ /*
842
+ struct CLogEntry
843
+ {
844
+ UInt32 EntryLength;
845
+ UInt32 Tail;
846
+ UInt64 SequenceNumber;
847
+ CGuid LogGuid;
848
+ UInt32 DescriptorCount;
849
+ UInt64 FlushedFileOffset;
850
+ UInt64 LastFileOffset;
851
+
852
+ bool Parse(const Byte *p);
853
+ };
854
+
855
+ bool CLogEntry::Parse(const Byte *p)
856
+ {
857
+ G32 (8, EntryLength);
858
+ G32 (12,Tail);
859
+ G64 (16, SequenceNumber);
860
+ G32 (24, DescriptorCount); // it's 32-bit, but specification says 64-bit
861
+ if (Get32(p + 28) != 0) // reserved
862
+ return false;
863
+ LogGuid.SetFrom(p + 32);
864
+ G64 (48, FlushedFileOffset);
865
+ G64 (56, LastFileOffset);
866
+
867
+ if (SequenceNumber == 0)
868
+ return false;
869
+ if ((Tail & 0xfff) != 0)
870
+ return false;
871
+ if (IS_NON_ALIGNED(FlushedFileOffset))
872
+ return false;
873
+ if (IS_NON_ALIGNED(LastFileOffset))
874
+ return false;
875
+ return true;
876
+ }
877
+
878
+
879
+ bool CHandler::ParseLog(CByteBuffer &log)
880
+ {
881
+ CLogEntry lastEntry;
882
+ lastEntry.SequenceNumber = 0;
883
+ bool lastEntry_found = false;
884
+ size_t lastEntry_Offset = 0;
885
+ for (size_t i = 0; i < log.Size(); i += 1 << 12)
886
+ {
887
+ Byte *p = (Byte *)(log + i);
888
+
889
+ if (Get32(p) != 0x65676F6C) // "loge"
890
+ continue;
891
+ const UInt32 crc = Get32(p + 4);
892
+
893
+ CLogEntry e;
894
+ if (!e.Parse(p))
895
+ {
896
+ return false;
897
+ continue;
898
+ }
899
+ const UInt32 entryLength = Get32(p + 8);
900
+ if (e.EntryLength > log.Size() || (e.EntryLength & 0xFFF) != 0 || e.EntryLength == 0)
901
+ {
902
+ return false;
903
+ continue;
904
+ }
905
+ SetUi32(p + 4, 0);
906
+ const UInt32 crc_calced = Crc32c_Calc(p, entryLength);
907
+ SetUi32(p + 4, crc); // we must restore crc if we want same data in log
908
+ if (crc_calced != crc)
909
+ continue;
910
+ if (!lastEntry_found || lastEntry.SequenceNumber < e.SequenceNumber)
911
+ {
912
+ lastEntry = e;
913
+ lastEntry_found = true;
914
+ lastEntry_Offset = i;
915
+ }
916
+ }
917
+
918
+ return true;
919
+ }
920
+ */
921
+
922
+
923
+ bool CHandler::ParseBat()
924
+ {
925
+ ChunkRatio_Log = kBitmapSize_Log + 3 + Meta.LogicalSectorSize_Log - Meta.BlockSize_Log;
926
+ ChunkRatio = (size_t)1 << (ChunkRatio_Log);
927
+
928
+ UInt64 totalBatEntries64;
929
+ const bool isDiff = IsDiff();
930
+ const UInt32 blockSize = (UInt32)1 << Meta.BlockSize_Log;
931
+ {
932
+ const UInt64 up = Meta.VirtualDiskSize + blockSize - 1;
933
+ if (up < Meta.VirtualDiskSize)
934
+ return false;
935
+ const UInt64 numDataBlocks = up >> Meta.BlockSize_Log;
936
+
937
+ if (isDiff)
938
+ {
939
+ // differencing table must be finished with bitmap entry
940
+ const UInt64 numBitmaps = (numDataBlocks + ChunkRatio - 1) >> ChunkRatio_Log;
941
+ totalBatEntries64 = numBitmaps * (ChunkRatio + 1);
942
+ }
943
+ else
944
+ {
945
+ // we don't need last Bitmap entry
946
+ totalBatEntries64 = numDataBlocks + ((numDataBlocks - 1) >> ChunkRatio_Log);
947
+ }
948
+ }
949
+
950
+ if (totalBatEntries64 > Bat.Data.Size() / 8)
951
+ return false;
952
+
953
+ const size_t totalBatEntries = (size_t)totalBatEntries64;
954
+ TotalBatEntries = totalBatEntries;
955
+
956
+ bool isCont = (!isDiff && Meta.Is_LeaveBlockAllocated());
957
+ UInt64 prevBlockOffset = 0;
958
+ UInt64 maxBlockOffset = 0;
959
+
960
+ size_t remEntries = ChunkRatio + 1;
961
+
962
+ size_t i;
963
+ for (i = 0; i < totalBatEntries; i++)
964
+ {
965
+ const UInt64 v = Bat.GetItem(i);
966
+ if ((v & 0xFFFF8) != 0)
967
+ return false;
968
+ const UInt64 offset = BAT_GET_OFFSET(v);
969
+ const unsigned state = BAT_GET_STATE(v);
970
+
971
+ /*
972
+ UInt64 index64 = v >> 20;
973
+ printf("\n%7d", i);
974
+ printf("%10d, ", (unsigned)index64);
975
+ printf("%4x, ", (unsigned)state);
976
+ */
977
+
978
+ remEntries--;
979
+ if (remEntries == 0)
980
+ {
981
+ // printf(" ========");
982
+ // printf("\n");
983
+ remEntries = ChunkRatio + 1;
984
+ if (state == SB_BLOCK_PRESENT)
985
+ {
986
+ isCont = false;
987
+ if (!isDiff)
988
+ return false;
989
+ if (offset == 0)
990
+ return false;
991
+ const UInt64 lim = offset + kBitmapSize;
992
+ if (lim < offset)
993
+ return false;
994
+ if (_phySize < lim)
995
+ _phySize = lim;
996
+ NumUsedBitMaps++;
997
+ }
998
+ else if (state != SB_BLOCK_NOT_PRESENT)
999
+ return false;
1000
+ }
1001
+ else
1002
+ {
1003
+ if (state == PAYLOAD_BLOCK_FULLY_PRESENT
1004
+ || state == PAYLOAD_BLOCK_PARTIALLY_PRESENT)
1005
+ {
1006
+ if (offset == 0)
1007
+ return false;
1008
+ if (maxBlockOffset < offset)
1009
+ maxBlockOffset = offset;
1010
+
1011
+ if (state == PAYLOAD_BLOCK_PARTIALLY_PRESENT)
1012
+ {
1013
+ isCont = false;
1014
+ if (!isDiff)
1015
+ return false;
1016
+ }
1017
+ else if (isCont)
1018
+ {
1019
+ if (prevBlockOffset != 0 && prevBlockOffset + blockSize != offset)
1020
+ isCont = false;
1021
+ else
1022
+ prevBlockOffset = offset;
1023
+ }
1024
+
1025
+ NumUsedBlocks++;
1026
+ }
1027
+ else if (state == PAYLOAD_BLOCK_UNMAPPED)
1028
+ {
1029
+ isCont = false;
1030
+ // non-empty (offset) is allowed
1031
+ }
1032
+ else if (state == PAYLOAD_BLOCK_NOT_PRESENT
1033
+ || state == PAYLOAD_BLOCK_UNDEFINED
1034
+ || state == PAYLOAD_BLOCK_ZERO)
1035
+ {
1036
+ isCont = false;
1037
+ /* (offset) is reserved and (offset == 0) is expected here,
1038
+ but we ignore (offset) here */
1039
+ // if (offset != 0) return false;
1040
+ }
1041
+ else
1042
+ return false;
1043
+ }
1044
+ }
1045
+
1046
+ _isDataContiguous = isCont;
1047
+
1048
+ if (maxBlockOffset != 0)
1049
+ {
1050
+ const UInt64 lim = maxBlockOffset + blockSize;
1051
+ if (lim < maxBlockOffset)
1052
+ return false;
1053
+ if (_phySize < lim)
1054
+ _phySize = lim;
1055
+ const UInt64 kPhyLimit = (UInt64)1 << 62;
1056
+ if (maxBlockOffset >= kPhyLimit)
1057
+ return false;
1058
+ }
1059
+ return true;
1060
+ }
1061
+
1062
+
1063
+ bool CHandler::CheckBat()
1064
+ {
1065
+ const UInt64 upSize = _phySize + kBitmapSize * 8 - 1;
1066
+ if (upSize < _phySize)
1067
+ return false;
1068
+ const UInt64 useMapSize64 = upSize >> (kBitmapSize_Log + 3);
1069
+ const size_t useMapSize = (size_t)useMapSize64;
1070
+
1071
+ const UInt32 blockSizeMB = (UInt32)1 << (Meta.BlockSize_Log - kBitmapSize_Log);
1072
+
1073
+ // we don't check useMap, if it's too big.
1074
+ if (useMapSize != useMapSize64)
1075
+ return true;
1076
+ if (useMapSize == 0 || useMapSize > ((size_t)1 << 28))
1077
+ return true;
1078
+
1079
+ CByteArr useMap;
1080
+ useMap.Alloc(useMapSize);
1081
+ memset(useMap, 0, useMapSize);
1082
+ // useMap[0] = (Byte)(1 << 0); // first 1 MB is used by headers
1083
+ // we can also update useMap for log, and region data.
1084
+
1085
+ const size_t totalBatEntries = TotalBatEntries;
1086
+ size_t remEntries = ChunkRatio + 1;
1087
+
1088
+ size_t i;
1089
+ for (i = 0; i < totalBatEntries; i++)
1090
+ {
1091
+ const UInt64 v = Bat.GetItem(i);
1092
+ const UInt64 offset = BAT_GET_OFFSET(v);
1093
+ const unsigned state = BAT_GET_STATE(v);
1094
+ const UInt64 index = offset >> kBitmapSize_Log;
1095
+ UInt32 numBlocks = 1;
1096
+ remEntries--;
1097
+ if (remEntries == 0)
1098
+ {
1099
+ remEntries = ChunkRatio + 1;
1100
+ if (state != SB_BLOCK_PRESENT)
1101
+ continue;
1102
+ }
1103
+ else
1104
+ {
1105
+ if (state != PAYLOAD_BLOCK_FULLY_PRESENT &&
1106
+ state != PAYLOAD_BLOCK_PARTIALLY_PRESENT)
1107
+ continue;
1108
+ numBlocks = blockSizeMB;
1109
+ }
1110
+
1111
+ for (unsigned k = 0; k < numBlocks; k++)
1112
+ {
1113
+ const UInt64 index2 = index + k;
1114
+ const unsigned flag = (unsigned)1 << ((unsigned)index2 & 7);
1115
+ const size_t byteIndex = (size_t)(index2 >> 3);
1116
+ if (byteIndex >= useMapSize)
1117
+ return false;
1118
+ const unsigned m = useMap[byteIndex];
1119
+ if (m & flag)
1120
+ return false;
1121
+ useMap[byteIndex] = (Byte)(m | flag);
1122
+ }
1123
+ }
1124
+
1125
+ /*
1126
+ UInt64 num = 0;
1127
+ for (i = 0; i < useMapSize; i++)
1128
+ {
1129
+ Byte b = useMap[i];
1130
+ unsigned t = 0;
1131
+ t += (b & 1); b >>= 1;
1132
+ t += (b & 1); b >>= 1;
1133
+ t += (b & 1); b >>= 1;
1134
+ t += (b & 1); b >>= 1;
1135
+ t += (b & 1); b >>= 1;
1136
+ t += (b & 1); b >>= 1;
1137
+ t += (b & 1); b >>= 1;
1138
+ t += (b & 1);
1139
+ num += t;
1140
+ }
1141
+ NumUsed_1MB_Blocks = num;
1142
+ NumUsed_1MB_Blocks_Defined = true;
1143
+ */
1144
+
1145
+ return true;
1146
+ }
1147
+
1148
+
1149
+
1150
+ HRESULT CHandler::Open3()
1151
+ {
1152
+ {
1153
+ const unsigned kHeaderSize = 512; // + 8
1154
+ Byte header[kHeaderSize];
1155
+
1156
+ RINOK(Read_FALSE(header, kHeaderSize))
1157
+
1158
+ if (memcmp(header, kSignature, kSignatureSize) != 0)
1159
+ return S_FALSE;
1160
+
1161
+ const Byte *p = &header[0];
1162
+ for (unsigned i = kSignatureSize; i < kHeaderSize; i += 2)
1163
+ {
1164
+ const wchar_t c = Get16(p + i);
1165
+ if (c < 0x20 || c > 0x7F)
1166
+ break;
1167
+ _creator += c;
1168
+ }
1169
+ }
1170
+
1171
+ HeadersSize = (UInt32)1 << 20;
1172
+ CHeader headers[2];
1173
+ Z7_memset_0_ARRAY(headers);
1174
+ {
1175
+ Byte header[kHeader2Size];
1176
+ for (unsigned i = 0; i < 2; i++)
1177
+ {
1178
+ RINOK(Seek2((1 << 16) * (1 + i)))
1179
+ RINOK(Read_FALSE(header, kHeader2Size))
1180
+ bool headerIsOK = headers[i].Parse(header);
1181
+ if (!headerIsOK)
1182
+ return S_FALSE;
1183
+ }
1184
+ }
1185
+ unsigned mainIndex;
1186
+ if (headers[0].SequenceNumber > headers[1].SequenceNumber) mainIndex = 0;
1187
+ else if (headers[0].SequenceNumber < headers[1].SequenceNumber) mainIndex = 1;
1188
+ else
1189
+ {
1190
+ /* Disk2vhd v2.02 can create image with 2 full copies of headers.
1191
+ It's violation of VHDX specification:
1192
+ "A header is current if it is the only valid header
1193
+ or if it is valid and its SequenceNumber field is
1194
+ greater than the other header's SequenceNumber".
1195
+ but we support such Disk2vhd archives. */
1196
+ if (!headers[0].IsEqualTo(headers[1]))
1197
+ return S_FALSE;
1198
+ mainIndex = 0;
1199
+ }
1200
+
1201
+ const CHeader &h = headers[mainIndex];
1202
+ Header = h;
1203
+ if (h.LogLength != 0)
1204
+ {
1205
+ HeadersSize += h.LogLength;
1206
+ UpdatePhySize(h.LogOffset + h.LogLength);
1207
+ if (!h.Guids[kHeader_GUID_Index_LogGuid].IsZero())
1208
+ {
1209
+ _nonEmptyLog = true;
1210
+ AddErrorMessage("non-empty LOG was not replayed");
1211
+ /*
1212
+ if (h.LogVersion != 0)
1213
+ AddErrorMessage("unknown LogVresion");
1214
+ else
1215
+ {
1216
+ CByteBuffer log;
1217
+ RINOK(Seek2(h.LogOffset));
1218
+ RINOK(ReadToBuf_FALSE(log, h.LogLength));
1219
+ if (!ParseLog(log))
1220
+ {
1221
+ return S_FALSE;
1222
+ }
1223
+ }
1224
+ */
1225
+ }
1226
+ }
1227
+ CRegion regions[2];
1228
+ Z7_memset_0_ARRAY(regions);
1229
+ int correctRegionIndex = -1;
1230
+
1231
+ {
1232
+ CByteBuffer temp;
1233
+ temp.Alloc(kRegionSize * 2);
1234
+ RINOK(Seek2((1 << 16) * 3))
1235
+ RINOK(Read_FALSE(temp, kRegionSize * 2))
1236
+ unsigned numTables = 1;
1237
+ if (memcmp(temp, temp + kRegionSize, kRegionSize) != 0)
1238
+ {
1239
+ AddErrorMessage("Region tables mismatch");
1240
+ numTables = 2;
1241
+ }
1242
+
1243
+ for (unsigned i = 0; i < numTables; i++)
1244
+ {
1245
+ // RINOK(Seek2((1 << 16) * (3 + i)));
1246
+ // RINOK(Read_FALSE(temp, kRegionSize));
1247
+ if (regions[i].Parse(temp))
1248
+ {
1249
+ if (correctRegionIndex < 0)
1250
+ correctRegionIndex = (int)i;
1251
+ }
1252
+ else
1253
+ {
1254
+ AddErrorMessage("Incorrect region table");
1255
+ }
1256
+ }
1257
+ if (correctRegionIndex < 0)
1258
+ return S_FALSE;
1259
+ /*
1260
+ if (!regions[0].IsEqualTo(regions[1]))
1261
+ return S_FALSE;
1262
+ */
1263
+ }
1264
+
1265
+ // UpdatePhySize((1 << 16) * 5);
1266
+ UpdatePhySize(1 << 20);
1267
+
1268
+ {
1269
+ const CRegion &region = regions[correctRegionIndex];
1270
+ HeadersSize += region.DataSize;
1271
+ UpdatePhySize(region.EndPos);
1272
+ {
1273
+ if (!region.Meta_Defined)
1274
+ return S_FALSE;
1275
+ const CRegionEntry &e = region.MetaEntry;
1276
+ if (e.Len == 0)
1277
+ return S_FALSE;
1278
+ {
1279
+ // static const kMetaTableSize = 1 << 16;
1280
+ CByteBuffer temp;
1281
+ {
1282
+ RINOK(Seek2(e.Offset))
1283
+ RINOK(ReadToBuf_FALSE(temp, e.Len))
1284
+ }
1285
+ if (!Meta.Parse(temp, temp.Size()))
1286
+ return S_FALSE;
1287
+ }
1288
+ // UpdatePhySize(e.GetEndPos());
1289
+ }
1290
+ {
1291
+ if (!region.Bat_Defined)
1292
+ return S_FALSE;
1293
+ const CRegionEntry &e = region.BatEntry;
1294
+ if (e.Len == 0)
1295
+ return S_FALSE;
1296
+ // UpdatePhySize(e.GetEndPos());
1297
+ {
1298
+ RINOK(Seek2(e.Offset))
1299
+ RINOK(ReadToBuf_FALSE(Bat.Data, e.Len))
1300
+ }
1301
+ if (!ParseBat())
1302
+ return S_FALSE;
1303
+ if (!CheckBat())
1304
+ {
1305
+ AddErrorMessage("BAT overlap");
1306
+ // _batOverlap = true;
1307
+ // return S_FALSE;
1308
+ }
1309
+ }
1310
+ }
1311
+
1312
+ {
1313
+ // do we need to check "parent_linkage2" also?
1314
+ FOR_VECTOR (i, Meta.ParentPairs)
1315
+ {
1316
+ const CParentPair &pair = Meta.ParentPairs[i];
1317
+ if (pair.Key.IsEqualTo("parent_linkage"))
1318
+ {
1319
+ _parentGuid_IsDefined = _parentGuid.ParseFromFormatedHexString(pair.Value);
1320
+ break;
1321
+ }
1322
+ }
1323
+ }
1324
+
1325
+ {
1326
+ // absolute paths for parent stream can be rejected later in client callback
1327
+ // the order of check by specification:
1328
+ const char * const g_ParentKeys[] =
1329
+ {
1330
+ "relative_path" // "..\..\path2\sub3\parent.vhdx"
1331
+ , "volume_path" // "\\?\Volume{26A21BDA-A627-11D7-9931-806E6F6E6963}\path2\sub3\parent.vhdx")
1332
+ , "absolute_win32_path" // "d:\path2\sub3\parent.vhdx"
1333
+ };
1334
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_ParentKeys); i++)
1335
+ {
1336
+ const int index = Meta.FindParentKey(g_ParentKeys[i]);
1337
+ if (index < 0)
1338
+ continue;
1339
+ ParentNames.Add(Meta.ParentPairs[index].Value);
1340
+ }
1341
+ }
1342
+
1343
+ if (Meta.Is_HasParent())
1344
+ {
1345
+ if (!Meta.Locator_Defined)
1346
+ AddErrorMessage("Parent locator is not defined");
1347
+ else
1348
+ {
1349
+ if (!_parentGuid_IsDefined)
1350
+ AddErrorMessage("Parent GUID is not defined");
1351
+ if (ParentNames.IsEmpty())
1352
+ AddErrorMessage("Parent VHDX file name is not defined");
1353
+ }
1354
+ }
1355
+ else
1356
+ {
1357
+ if (Meta.Locator_Defined)
1358
+ AddErrorMessage("Unexpected parent locator");
1359
+ }
1360
+
1361
+ // here we suppose that and locator can be used only with HasParent flag
1362
+
1363
+ // return S_FALSE;
1364
+
1365
+ _size = Meta.VirtualDiskSize; // CHandlerImg
1366
+
1367
+ // _posInArc = 0;
1368
+ // Reset_PosInArc();
1369
+ // RINOK(InStream_SeekToBegin(Stream))
1370
+
1371
+ return S_OK;
1372
+ }
1373
+
1374
+
1375
+ /*
1376
+ static UInt32 g_NumCalls = 0;
1377
+ static UInt32 g_NumCalls2 = 0;
1378
+ static struct CCounter { ~CCounter()
1379
+ {
1380
+ printf("\nNumCalls = %10u\n", g_NumCalls);
1381
+ printf("NumCalls2 = %10u\n", g_NumCalls2);
1382
+ } } g_Counter;
1383
+ */
1384
+
1385
+ Z7_COM7F_IMF(CHandler::Read(void *data, UInt32 size, UInt32 *processedSize))
1386
+ {
1387
+ // g_NumCalls++;
1388
+ if (processedSize)
1389
+ *processedSize = 0;
1390
+ if (_virtPos >= Meta.VirtualDiskSize)
1391
+ return S_OK;
1392
+ {
1393
+ const UInt64 rem = Meta.VirtualDiskSize - _virtPos;
1394
+ if (size > rem)
1395
+ size = (UInt32)rem;
1396
+ }
1397
+ if (size == 0)
1398
+ return S_OK;
1399
+ const size_t blockIndex = (size_t)(_virtPos >> Meta.BlockSize_Log);
1400
+ const size_t chunkIndex = blockIndex >> ChunkRatio_Log;
1401
+ const size_t chunkRatio = (size_t)1 << ChunkRatio_Log;
1402
+ const size_t blockIndex2 = chunkIndex * (chunkRatio + 1) + (blockIndex & (chunkRatio - 1));
1403
+ const UInt64 blockSectVal = Bat.GetItem(blockIndex2);
1404
+ const UInt64 blockOffset = BAT_GET_OFFSET(blockSectVal);
1405
+ const UInt32 blockState = BAT_GET_STATE(blockSectVal);
1406
+
1407
+ const UInt32 blockSize = (UInt32)1 << Meta.BlockSize_Log;
1408
+ const UInt32 offsetInBlock = (UInt32)_virtPos & (blockSize - 1);
1409
+ size = MyMin(blockSize - offsetInBlock, size);
1410
+
1411
+ bool needParent = false;
1412
+ bool needRead = false;
1413
+
1414
+ if (blockState == PAYLOAD_BLOCK_FULLY_PRESENT)
1415
+ needRead = true;
1416
+ else if (blockState == PAYLOAD_BLOCK_NOT_PRESENT)
1417
+ {
1418
+ /* for a differencing VHDX: parent virtual disk SHOULD be
1419
+ inspected to determine the associated contents (SPECIFICATION).
1420
+ we suppose that we should not check BitMap.
1421
+ for fixed or dynamic VHDX files: the block contents are undefined and
1422
+ can contain arbitrary data (SPECIFICATION). NTFS::pagefile.sys can use such state. */
1423
+ if (IsDiff())
1424
+ needParent = true;
1425
+ }
1426
+ else if (blockState == PAYLOAD_BLOCK_PARTIALLY_PRESENT)
1427
+ {
1428
+ // only allowed for differencing VHDX files.
1429
+ // associated sector bitmap block MUST be valid
1430
+ if (chunkIndex >= BitMaps.Size())
1431
+ return S_FALSE;
1432
+ // else
1433
+ {
1434
+ const CByteBuffer &bitmap = BitMaps[(unsigned)chunkIndex];
1435
+ const Byte *p = (const Byte *)bitmap;
1436
+ if (!p)
1437
+ return S_FALSE;
1438
+ // else
1439
+ {
1440
+ // g_NumCalls2++;
1441
+ const UInt64 sectorIndex = _virtPos >> Meta.LogicalSectorSize_Log;
1442
+
1443
+ #define BIT_MAP_UNIT_LOG 3 // it's for small block (4 KB)
1444
+ // #define BIT_MAP_UNIT_LOG 5 // speed optimization for large blocks (16 KB)
1445
+
1446
+ const size_t offs = (size_t)(sectorIndex >> 3) &
1447
+ (
1448
+ (kBitmapSize - 1)
1449
+ & ~(((UInt32)1 << (BIT_MAP_UNIT_LOG - 3)) - 1)
1450
+ );
1451
+
1452
+ unsigned sector2 = (unsigned)sectorIndex & ((1 << BIT_MAP_UNIT_LOG) - 1);
1453
+ #if BIT_MAP_UNIT_LOG == 5
1454
+ UInt32 v = GetUi32(p + offs) >> sector2;
1455
+ #else
1456
+ unsigned v = (unsigned)p[offs] >> sector2;
1457
+ #endif
1458
+ // UInt32 v = GetUi32(p + offs) >> sector2;
1459
+ const UInt32 sectorSize = (UInt32)1 << Meta.LogicalSectorSize_Log;
1460
+ const UInt32 offsetInSector = (UInt32)_virtPos & (sectorSize - 1);
1461
+ const unsigned bit = (unsigned)(v & 1);
1462
+ if (bit)
1463
+ needRead = true;
1464
+ else
1465
+ needParent = true; // zero - from the parent VHDX file
1466
+ UInt32 rem = sectorSize - offsetInSector;
1467
+ for (sector2++; sector2 < (1 << BIT_MAP_UNIT_LOG); sector2++)
1468
+ {
1469
+ v >>= 1;
1470
+ if (bit != (v & 1))
1471
+ break;
1472
+ rem += sectorSize;
1473
+ }
1474
+ if (size > rem)
1475
+ size = rem;
1476
+ }
1477
+ }
1478
+ }
1479
+
1480
+ bool needZero = true;
1481
+
1482
+ HRESULT res = S_OK;
1483
+
1484
+ if (needParent)
1485
+ {
1486
+ if (!ParentStream)
1487
+ return S_FALSE;
1488
+ // if (ParentStream)
1489
+ {
1490
+ RINOK(InStream_SeekSet(ParentStream, _virtPos))
1491
+ size_t processed = size;
1492
+ res = ReadStream(ParentStream, (Byte *)data, &processed);
1493
+ size = (UInt32)processed;
1494
+ needZero = false;
1495
+ }
1496
+ }
1497
+ else if (needRead)
1498
+ {
1499
+ UInt32 processed = 0;
1500
+ res = ReadPhy(blockOffset + offsetInBlock, data, size, processed);
1501
+ size = processed;
1502
+ needZero = false;
1503
+ }
1504
+
1505
+ if (needZero)
1506
+ memset(data, 0, size);
1507
+
1508
+ if (processedSize)
1509
+ *processedSize = size;
1510
+
1511
+ _virtPos += size;
1512
+ return res;
1513
+ }
1514
+
1515
+
1516
+ enum
1517
+ {
1518
+ kpidParent = kpidUserDefined
1519
+ };
1520
+
1521
+ static const CStatProp kArcProps[] =
1522
+ {
1523
+ { NULL, kpidClusterSize, VT_UI4},
1524
+ { NULL, kpidSectorSize, VT_UI4},
1525
+ { NULL, kpidMethod, VT_BSTR},
1526
+ { NULL, kpidNumVolumes, VT_UI4},
1527
+ { NULL, kpidTotalPhySize, VT_UI8},
1528
+ { "Parent", kpidParent, VT_BSTR},
1529
+ { NULL, kpidCreatorApp, VT_BSTR},
1530
+ { NULL, kpidComment, VT_BSTR},
1531
+ { NULL, kpidId, VT_BSTR}
1532
+ };
1533
+
1534
+ static const Byte kProps[] =
1535
+ {
1536
+ kpidSize,
1537
+ kpidPackSize
1538
+ };
1539
+
1540
+ IMP_IInArchive_Props
1541
+ IMP_IInArchive_ArcProps_WITH_NAME
1542
+
1543
+
1544
+ void CHandler::AddErrorMessage(const char *message)
1545
+ {
1546
+ if (!_errorMessage.IsEmpty())
1547
+ _errorMessage.Add_LF();
1548
+ _errorMessage += message;
1549
+ }
1550
+
1551
+ void CHandler::AddErrorMessage(const char *message, const wchar_t *name)
1552
+ {
1553
+ AddErrorMessage(message);
1554
+ _errorMessage += name;
1555
+ }
1556
+
1557
+
1558
+ static void AddComment_Name(UString &s, const char *name)
1559
+ {
1560
+ s += name;
1561
+ s += ": ";
1562
+ }
1563
+
1564
+ static void AddComment_Bool(UString &s, const char *name, bool val)
1565
+ {
1566
+ AddComment_Name(s, name);
1567
+ s.Add_Char(val ? '+' : '-');
1568
+ s.Add_LF();
1569
+ }
1570
+
1571
+ static void AddComment_UInt64(UString &s, const char *name, UInt64 v, bool showMB = false)
1572
+ {
1573
+ AddComment_Name(s, name);
1574
+ s.Add_UInt64(v);
1575
+ if (showMB)
1576
+ {
1577
+ s += " (";
1578
+ s.Add_UInt64(v >> 20);
1579
+ s += " MiB)";
1580
+ }
1581
+ s.Add_LF();
1582
+ }
1583
+
1584
+ static void AddComment_BlockSize(UString &s, const char *name, unsigned logSize)
1585
+ {
1586
+ if (logSize != 0)
1587
+ AddComment_UInt64(s, name, ((UInt64)1 << logSize));
1588
+ }
1589
+
1590
+
1591
+ void CHandler::AddComment(UString &s) const
1592
+ {
1593
+ AddComment_UInt64(s, "VirtualDiskSize", Meta.VirtualDiskSize);
1594
+ AddComment_UInt64(s, "PhysicalSize", _phySize);
1595
+
1596
+ if (!_errorMessage.IsEmpty())
1597
+ {
1598
+ AddComment_Name(s, "Error");
1599
+ s += _errorMessage;
1600
+ s.Add_LF();
1601
+ }
1602
+
1603
+ if (Meta.Guid_Defined)
1604
+ {
1605
+ AddComment_Name(s, "Id");
1606
+ Meta.Guid.AddHexToString(s);
1607
+ s.Add_LF();
1608
+ }
1609
+
1610
+ AddComment_UInt64(s, "SequenceNumber", Header.SequenceNumber);
1611
+ AddComment_UInt64(s, "LogLength", Header.LogLength, true);
1612
+
1613
+ for (unsigned i = 0; i < 3; i++)
1614
+ {
1615
+ const CGuid &g = Header.Guids[i];
1616
+ if (g.IsZero())
1617
+ continue;
1618
+ if (i == 0)
1619
+ s += "FileWrite";
1620
+ else if (i == 1)
1621
+ s += "DataWrite";
1622
+ else
1623
+ s += "Log";
1624
+ AddComment_Name(s, "Guid");
1625
+ g.AddHexToString(s);
1626
+ s.Add_LF();
1627
+ }
1628
+
1629
+ AddComment_Bool(s, "HasParent", Meta.Is_HasParent());
1630
+ AddComment_Bool(s, "Fixed", Meta.Is_LeaveBlockAllocated());
1631
+ if (Meta.Is_LeaveBlockAllocated())
1632
+ AddComment_Bool(s, "DataContiguous", _isDataContiguous);
1633
+
1634
+ AddComment_BlockSize(s, "BlockSize", Meta.BlockSize_Log);
1635
+ AddComment_BlockSize(s, "LogicalSectorSize", Meta.LogicalSectorSize_Log);
1636
+ AddComment_BlockSize(s, "PhysicalSectorSize", Meta.PhysicalSectorSize_Log);
1637
+
1638
+ {
1639
+ const UInt64 packSize = GetPackSize();
1640
+ AddComment_UInt64(s, "PackSize", packSize, true);
1641
+ const UInt64 headersSize = HeadersSize + ((UInt64)NumUsedBitMaps << kBitmapSize_Log);
1642
+ AddComment_UInt64(s, "HeadersSize", headersSize, true);
1643
+ AddComment_UInt64(s, "FreeSpace", _phySize - packSize - headersSize, true);
1644
+ /*
1645
+ if (NumUsed_1MB_Blocks_Defined)
1646
+ AddComment_UInt64(s, "used2", (NumUsed_1MB_Blocks << 20));
1647
+ */
1648
+ }
1649
+
1650
+ if (Meta.ParentPairs.Size() != 0)
1651
+ {
1652
+ s += "Parent:";
1653
+ s.Add_LF();
1654
+ FOR_VECTOR(i, Meta.ParentPairs)
1655
+ {
1656
+ const CParentPair &pair = Meta.ParentPairs[i];
1657
+ s += " ";
1658
+ s += pair.Key;
1659
+ s += ": ";
1660
+ s += pair.Value;
1661
+ s.Add_LF();
1662
+ }
1663
+ s.Add_LF();
1664
+ }
1665
+ }
1666
+
1667
+
1668
+
1669
+ Z7_COM7F_IMF(CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value))
1670
+ {
1671
+ COM_TRY_BEGIN
1672
+ NCOM::CPropVariant prop;
1673
+ switch (propID)
1674
+ {
1675
+ case kpidMainSubfile: prop = (UInt32)0; break;
1676
+ case kpidClusterSize: prop = (UInt32)1 << Meta.BlockSize_Log; break;
1677
+ case kpidSectorSize: prop = (UInt32)1 << Meta.LogicalSectorSize_Log; break;
1678
+ case kpidShortComment:
1679
+ case kpidMethod:
1680
+ {
1681
+ AString s;
1682
+ AddTypeString(s);
1683
+ if (IsDiff())
1684
+ {
1685
+ s += " -> ";
1686
+ const CHandler *p = this;
1687
+ while (p && p->IsDiff())
1688
+ p = p->Parent;
1689
+ if (!p)
1690
+ s += '?';
1691
+ else
1692
+ p->AddTypeString(s);
1693
+ }
1694
+ prop = s;
1695
+ break;
1696
+ }
1697
+ case kpidComment:
1698
+ {
1699
+ UString s;
1700
+ {
1701
+ if (NumLevels > 1)
1702
+ {
1703
+ AddComment_UInt64(s, "NumVolumeLevels", NumLevels);
1704
+ AddComment_UInt64(s, "PackSizeTotal", PackSize_Total, true);
1705
+ s += "----";
1706
+ s.Add_LF();
1707
+ }
1708
+
1709
+ const CHandler *p = this;
1710
+ for (;;)
1711
+ {
1712
+ if (p->_level != 0 || p->Parent)
1713
+ AddComment_UInt64(s, "VolumeLevel", p->_level + 1);
1714
+ p->AddComment(s);
1715
+ if (!p->Parent)
1716
+ break;
1717
+ s += "----";
1718
+ s.Add_LF();
1719
+ {
1720
+ s.Add_LF();
1721
+ if (!p->ParentName_Used.IsEmpty())
1722
+ {
1723
+ AddComment_Name(s, "Name");
1724
+ s += p->ParentName_Used;
1725
+ s.Add_LF();
1726
+ }
1727
+ }
1728
+ p = p->Parent;
1729
+ }
1730
+ }
1731
+ prop = s;
1732
+ break;
1733
+ }
1734
+ case kpidCreatorApp:
1735
+ {
1736
+ if (!_creator.IsEmpty())
1737
+ prop = _creator;
1738
+ break;
1739
+ }
1740
+ case kpidId:
1741
+ {
1742
+ if (Meta.Guid_Defined)
1743
+ {
1744
+ UString s;
1745
+ Meta.Guid.AddHexToString(s);
1746
+ prop = s;
1747
+ }
1748
+ break;
1749
+ }
1750
+ case kpidName:
1751
+ {
1752
+ if (Meta.Guid_Defined)
1753
+ {
1754
+ UString s;
1755
+ Meta.Guid.AddHexToString(s);
1756
+ s += ".vhdx";
1757
+ prop = s;
1758
+ }
1759
+ break;
1760
+ }
1761
+ case kpidParent: if (IsDiff()) prop = GetParentSequence(); break;
1762
+ case kpidPhySize: prop = _phySize; break;
1763
+ case kpidTotalPhySize:
1764
+ {
1765
+ const CHandler *p = this;
1766
+ UInt64 sum = 0;
1767
+ do
1768
+ {
1769
+ sum += p->_phySize;
1770
+ p = p->Parent;
1771
+ }
1772
+ while (p);
1773
+ prop = sum;
1774
+ break;
1775
+ }
1776
+ case kpidNumVolumes: if (NumLevels != 1) prop = (UInt32)NumLevels; break;
1777
+ case kpidError:
1778
+ {
1779
+ UString s;
1780
+ const CHandler *p = this;
1781
+ do
1782
+ {
1783
+ if (!p->_errorMessage.IsEmpty())
1784
+ {
1785
+ if (!s.IsEmpty())
1786
+ s.Add_LF();
1787
+ s += p->_errorMessage;
1788
+ }
1789
+ p = p->Parent;
1790
+ }
1791
+ while (p);
1792
+ if (!s.IsEmpty())
1793
+ prop = s;
1794
+ break;
1795
+ }
1796
+ }
1797
+ prop.Detach(value);
1798
+ return S_OK;
1799
+ COM_TRY_END
1800
+ }
1801
+
1802
+
1803
+ HRESULT CHandler::Open2(IInStream *stream, IArchiveOpenCallback *openArchiveCallback)
1804
+ {
1805
+ Stream = stream;
1806
+ if (_level >= (1 << 20))
1807
+ return S_FALSE;
1808
+
1809
+ RINOK(Open3())
1810
+
1811
+ NumLevels = 1;
1812
+ PackSize_Total = GetPackSize();
1813
+
1814
+ if (_child)
1815
+ {
1816
+ if (!_child->_parentGuid.IsEqualTo(Header.Guids[kHeader_GUID_Index_DataWriteGuid]))
1817
+ return S_FALSE;
1818
+ const CHandler *child = _child;
1819
+ do
1820
+ {
1821
+ /* We suppose that only FileWriteGuid is unique.
1822
+ Another IDs must be identical in in difference and parent archives. */
1823
+ if (Header.Guids[kHeader_GUID_Index_FileWriteGuid].IsEqualTo(
1824
+ child->Header.Guids[kHeader_GUID_Index_FileWriteGuid])
1825
+ && _phySize == child->_phySize)
1826
+ {
1827
+ _isCyclic = true;
1828
+ _isCyclic_or_CyclicParent = true;
1829
+ AddErrorMessage("Cyclic parent archive was blocked");
1830
+ return S_OK;
1831
+ }
1832
+ child = child->_child;
1833
+ }
1834
+ while (child);
1835
+ }
1836
+
1837
+ if (!Meta.Is_HasParent())
1838
+ return S_OK;
1839
+
1840
+ if (!Meta.Locator_Defined
1841
+ || !_parentGuid_IsDefined
1842
+ || ParentNames.IsEmpty())
1843
+ {
1844
+ return S_OK;
1845
+ }
1846
+
1847
+ ParentName_Used = ParentNames.Front();
1848
+
1849
+ HRESULT res;
1850
+ const unsigned kNumLevelsMax = (1 << 8); // Maybe we need to increase that limit
1851
+ if (_level >= kNumLevelsMax - 1)
1852
+ {
1853
+ AddErrorMessage("Too many parent levels");
1854
+ return S_OK;
1855
+ }
1856
+
1857
+ bool _parentFileWasOpen = false;
1858
+
1859
+ if (!openArchiveCallback)
1860
+ res = S_FALSE;
1861
+ else
1862
+ res = OpenParent(openArchiveCallback, _parentFileWasOpen);
1863
+
1864
+ if (res != S_OK)
1865
+ {
1866
+ if (res != S_FALSE)
1867
+ return res;
1868
+
1869
+ if (_parentFileWasOpen)
1870
+ AddErrorMessage("Can't parse parent VHDX file : ", ParentName_Used);
1871
+ else
1872
+ AddErrorMessage("Missing parent VHDX file : ", ParentName_Used);
1873
+ }
1874
+
1875
+
1876
+ return S_OK;
1877
+ }
1878
+
1879
+
1880
+ HRESULT CHandler::OpenParent(IArchiveOpenCallback *openArchiveCallback, bool &_parentFileWasOpen)
1881
+ {
1882
+ _parentFileWasOpen = false;
1883
+ Z7_DECL_CMyComPtr_QI_FROM(
1884
+ IArchiveOpenVolumeCallback,
1885
+ openVolumeCallback, openArchiveCallback)
1886
+ if (!openVolumeCallback)
1887
+ return S_FALSE;
1888
+ {
1889
+ CMyComPtr<IInStream> nextStream;
1890
+ HRESULT res = S_FALSE;
1891
+ UString name;
1892
+
1893
+ FOR_VECTOR (i, ParentNames)
1894
+ {
1895
+ name = ParentNames[i];
1896
+
1897
+ // we remove prefix ".\\', but client already can support any variant
1898
+ if (name[0] == L'.' && name[1] == L'\\')
1899
+ name.DeleteFrontal(2);
1900
+
1901
+ res = openVolumeCallback->GetStream(name, &nextStream);
1902
+
1903
+ if (res == S_OK && nextStream)
1904
+ break;
1905
+
1906
+ if (res != S_OK && res != S_FALSE)
1907
+ return res;
1908
+ }
1909
+
1910
+ if (res == S_FALSE || !nextStream)
1911
+ return S_FALSE;
1912
+
1913
+ ParentName_Used = name;
1914
+ _parentFileWasOpen = true;
1915
+
1916
+ Parent = new CHandler;
1917
+ ParentStream = Parent;
1918
+
1919
+ try
1920
+ {
1921
+ Parent->_level = _level + 1;
1922
+ Parent->_child = this;
1923
+ /* we could call CHandlerImg::Open() here.
1924
+ but we don't need (_imgExt) in (Parent). So we call Open2() here */
1925
+ Parent->Close();
1926
+ res = Parent->Open2(nextStream, openArchiveCallback);
1927
+ }
1928
+ catch(...)
1929
+ {
1930
+ Parent = NULL;
1931
+ ParentStream.Release();
1932
+ res = S_FALSE;
1933
+ throw;
1934
+ }
1935
+
1936
+ if (res != S_OK)
1937
+ {
1938
+ Parent = NULL;
1939
+ ParentStream.Release();
1940
+ if (res == E_ABORT)
1941
+ return res;
1942
+ if (res != S_FALSE)
1943
+ {
1944
+ // we must show that error code
1945
+ }
1946
+ }
1947
+
1948
+ if (res == S_OK)
1949
+ {
1950
+ if (Parent->_isCyclic_or_CyclicParent)
1951
+ _isCyclic_or_CyclicParent = true;
1952
+
1953
+ NumLevels = Parent->NumLevels + 1;
1954
+ PackSize_Total += Parent->GetPackSize();
1955
+
1956
+ // we read BitMaps only if Parent was open
1957
+
1958
+ UInt64 numBytes = (UInt64)NumUsedBitMaps << kBitmapSize_Log;
1959
+ if (openArchiveCallback && numBytes != 0)
1960
+ {
1961
+ RINOK(openArchiveCallback->SetTotal(NULL, &numBytes))
1962
+ }
1963
+ numBytes = 0;
1964
+ for (size_t i = ChunkRatio; i < TotalBatEntries; i += ChunkRatio + 1)
1965
+ {
1966
+ const UInt64 v = Bat.GetItem(i);
1967
+ const UInt64 offset = BAT_GET_OFFSET(v);
1968
+ const unsigned state = BAT_GET_STATE(v);
1969
+
1970
+ CByteBuffer &buf = BitMaps.AddNew();
1971
+ if (state == SB_BLOCK_PRESENT)
1972
+ {
1973
+ if (openArchiveCallback)
1974
+ {
1975
+ RINOK(openArchiveCallback->SetCompleted(NULL, &numBytes))
1976
+ }
1977
+ numBytes += kBitmapSize;
1978
+ buf.Alloc(kBitmapSize);
1979
+ RINOK(Seek2(offset))
1980
+ RINOK(Read_FALSE(buf, kBitmapSize))
1981
+ /*
1982
+ for (unsigned i = 0; i < (1 << 20); i+=4)
1983
+ {
1984
+ UInt32 v = GetUi32(buf + i);
1985
+ if (v != 0 && v != (UInt32)(Int32)-1)
1986
+ printf("\n%7d %8x", i, v);
1987
+ }
1988
+ */
1989
+ }
1990
+ }
1991
+ }
1992
+ }
1993
+
1994
+ return S_OK;
1995
+ }
1996
+
1997
+
1998
+ void CHandler::CloseAtError()
1999
+ {
2000
+ // CHandlerImg
2001
+ Clear_HandlerImg_Vars();
2002
+ Stream.Release();
2003
+
2004
+ _phySize = 0;
2005
+ Bat.Clear();
2006
+ BitMaps.Clear();
2007
+ NumUsedBlocks = 0;
2008
+ NumUsedBitMaps = 0;
2009
+ HeadersSize = 0;
2010
+ /*
2011
+ NumUsed_1MB_Blocks = 0;
2012
+ NumUsed_1MB_Blocks_Defined = false;
2013
+ */
2014
+
2015
+ Parent = NULL;
2016
+ ParentStream.Release();
2017
+ _errorMessage.Empty();
2018
+ _creator.Empty();
2019
+ _nonEmptyLog = false;
2020
+ _parentGuid_IsDefined = false;
2021
+ _isDataContiguous = false;
2022
+ // _batOverlap = false;
2023
+
2024
+ ParentNames.Clear();
2025
+ ParentName_Used.Empty();
2026
+
2027
+ Meta.Clear();
2028
+
2029
+ ChunkRatio_Log = 0;
2030
+ ChunkRatio = 0;
2031
+ TotalBatEntries = 0;
2032
+ NumLevels = 0;
2033
+ PackSize_Total = 0;
2034
+
2035
+ _isCyclic = false;
2036
+ _isCyclic_or_CyclicParent = false;
2037
+ }
2038
+
2039
+ Z7_COM7F_IMF(CHandler::Close())
2040
+ {
2041
+ CloseAtError();
2042
+ return S_OK;
2043
+ }
2044
+
2045
+
2046
+ Z7_COM7F_IMF(CHandler::GetProperty(UInt32 /* index */, PROPID propID, PROPVARIANT *value))
2047
+ {
2048
+ COM_TRY_BEGIN
2049
+ NCOM::CPropVariant prop;
2050
+
2051
+ switch (propID)
2052
+ {
2053
+ case kpidSize: prop = Meta.VirtualDiskSize; break;
2054
+ case kpidPackSize: prop = PackSize_Total; break;
2055
+ case kpidExtension: prop = (_imgExt ? _imgExt : "img"); break;
2056
+ }
2057
+
2058
+ prop.Detach(value);
2059
+ return S_OK;
2060
+ COM_TRY_END
2061
+ }
2062
+
2063
+
2064
+ Z7_COM7F_IMF(CHandler::GetStream(UInt32 /* index */, ISequentialInStream **stream))
2065
+ {
2066
+ COM_TRY_BEGIN
2067
+ *stream = NULL;
2068
+ // if some prarent is not OK, we don't create stream
2069
+ if (!AreParentsOK())
2070
+ return S_FALSE;
2071
+ InitSeekPositions();
2072
+ CMyComPtr<ISequentialInStream> streamTemp = this;
2073
+ *stream = streamTemp.Detach();
2074
+ return S_OK;
2075
+ COM_TRY_END
2076
+ }
2077
+
2078
+ REGISTER_ARC_I(
2079
+ "VHDX", "vhdx avhdx", NULL, 0xc4,
2080
+ kSignature,
2081
+ 0,
2082
+ 0,
2083
+ NULL)
2084
+
2085
+ }}