smallworld-re 1.0.0__tar.gz → 1.0.1__tar.gz

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 (172) hide show
  1. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/PKG-INFO +1 -1
  2. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/setup.py +1 -1
  3. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/__init__.py +1 -1
  4. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/PKG-INFO +1 -1
  5. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/LICENSE.txt +0 -0
  6. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/README.md +0 -0
  7. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/setup.cfg +0 -0
  8. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/__init__.py +0 -0
  9. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/analysis.py +0 -0
  10. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/code_coverage.py +0 -0
  11. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/colorizer.py +0 -0
  12. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/colorizer_summary.py +0 -0
  13. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/field_detection/__init__.py +0 -0
  14. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/field_detection/field_analysis.py +0 -0
  15. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/field_detection/guards.py +0 -0
  16. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/field_detection/hints.py +0 -0
  17. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/field_detection/malloc.py +0 -0
  18. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/forced_exec/__init__.py +0 -0
  19. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/forced_exec/forced_exec.py +0 -0
  20. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/underlays/__init__.py +0 -0
  21. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/underlays/basic.py +0 -0
  22. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/underlays/underlay.py +0 -0
  23. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/__init__.py +0 -0
  24. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/__init__.py +0 -0
  25. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/base.py +0 -0
  26. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/divergence.py +0 -0
  27. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/model.py +0 -0
  28. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/nwbt.py +0 -0
  29. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/typedefs.py +0 -0
  30. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/utils.py +0 -0
  31. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr/visitor.py +0 -0
  32. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/angr_nwbt.py +0 -0
  33. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/code_coverage.py +0 -0
  34. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/code_reachable.py +0 -0
  35. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/control_flow_tracer.py +0 -0
  36. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/analyses/unstable/pointer_finder.py +0 -0
  37. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/arch/__init__.py +0 -0
  38. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/arch/aarch64_arch.py +0 -0
  39. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/arch/amd64_arch.py +0 -0
  40. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/arch/i386_arch.py +0 -0
  41. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/__init__.py +0 -0
  42. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/__init__.py +0 -0
  43. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/angr.py +0 -0
  44. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/default.py +0 -0
  45. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/exceptions.py +0 -0
  46. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/exploration/__init__.py +0 -0
  47. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/exploration/bounds.py +0 -0
  48. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/exploration/default.py +0 -0
  49. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/exploration/terminate.py +0 -0
  50. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/factory.py +0 -0
  51. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/__init__.py +0 -0
  52. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/aarch64.py +0 -0
  53. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/amd64.py +0 -0
  54. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/arm.py +0 -0
  55. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/i386.py +0 -0
  56. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/machdef.py +0 -0
  57. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/mips.py +0 -0
  58. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/mips64.py +0 -0
  59. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/ppc.py +0 -0
  60. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/riscv.py +0 -0
  61. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/machdefs/xtensa.py +0 -0
  62. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/memory/__init__.py +0 -0
  63. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/memory/default.py +0 -0
  64. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/memory/fixups.py +0 -0
  65. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/memory/memtrack.py +0 -0
  66. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/scratch.py +0 -0
  67. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/simos.py +0 -0
  68. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/angr/utils.py +0 -0
  69. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/emulator.py +0 -0
  70. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/hookable.py +0 -0
  71. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/__init__.py +0 -0
  72. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/__init__.py +0 -0
  73. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/aarch64.py +0 -0
  74. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/amd64.py +0 -0
  75. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/arm.py +0 -0
  76. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/i386.py +0 -0
  77. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/machdef.py +0 -0
  78. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/mips.py +0 -0
  79. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/mips64.py +0 -0
  80. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/machdefs/ppc.py +0 -0
  81. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/panda/panda.py +0 -0
  82. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/__init__.py +0 -0
  83. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/__init__.py +0 -0
  84. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/aarch64.py +0 -0
  85. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/amd64.py +0 -0
  86. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/arm.py +0 -0
  87. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/i386.py +0 -0
  88. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/machdef.py +0 -0
  89. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/machdefs/mips.py +0 -0
  90. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/emulators/unicorn/unicorn.py +0 -0
  91. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/exceptions/__init__.py +0 -0
  92. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/exceptions/exceptions.py +0 -0
  93. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/exceptions/unstable/__init__.py +0 -0
  94. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/exceptions/unstable/exceptions.py +0 -0
  95. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/extern/__init__.py +0 -0
  96. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/extern/ctypes.py +0 -0
  97. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/extern/unstable/__init__.py +0 -0
  98. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/extern/unstable/ghidra.py +0 -0
  99. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/helpers.py +0 -0
  100. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/hinting/__init__.py +0 -0
  101. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/hinting/hinting.py +0 -0
  102. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/hinting/hints.py +0 -0
  103. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/hinting/unstable/__init__.py +0 -0
  104. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/hinting/utils.py +0 -0
  105. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/__init__.py +0 -0
  106. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/aarch64.py +0 -0
  107. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/arm.py +0 -0
  108. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/bsid.py +0 -0
  109. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/instructions.py +0 -0
  110. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/mips.py +0 -0
  111. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/instructions/x86.py +0 -0
  112. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/logging.py +0 -0
  113. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/platforms.py +0 -0
  114. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/py.typed +0 -0
  115. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/__init__.py +0 -0
  116. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/__init__.py +0 -0
  117. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/aarch64.py +0 -0
  118. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/amd64.py +0 -0
  119. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/arm.py +0 -0
  120. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/cpu.py +0 -0
  121. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/i386.py +0 -0
  122. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/mips.py +0 -0
  123. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/mips64.py +0 -0
  124. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/powerpc.py +0 -0
  125. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/riscv.py +0 -0
  126. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/cpus/xtensa.py +0 -0
  127. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/__init__.py +0 -0
  128. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/code.py +0 -0
  129. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/__init__.py +0 -0
  130. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/elf.py +0 -0
  131. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/__init__.py +0 -0
  132. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/aarch64.py +0 -0
  133. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/amd64.py +0 -0
  134. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/arm.py +0 -0
  135. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/i386.py +0 -0
  136. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/mips.py +0 -0
  137. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/ppc.py +0 -0
  138. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/rela.py +0 -0
  139. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/riscv64.py +0 -0
  140. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/rela/xtensa.py +0 -0
  141. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/elf/structs.py +0 -0
  142. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/heap.py +0 -0
  143. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/memory.py +0 -0
  144. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/__init__.py +0 -0
  145. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/aarch64.py +0 -0
  146. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/amd64.py +0 -0
  147. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/arm.py +0 -0
  148. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/i386.py +0 -0
  149. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/mips.py +0 -0
  150. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/mips64.py +0 -0
  151. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/ppc.py +0 -0
  152. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/riscv.py +0 -0
  153. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/stack.py +0 -0
  154. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/memory/stack/xtensa.py +0 -0
  155. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/__init__.py +0 -0
  156. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/mmio.py +0 -0
  157. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/model.py +0 -0
  158. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/posix.py +0 -0
  159. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/x86/__init__.py +0 -0
  160. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/x86/microsoftcdecl.py +0 -0
  161. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/models/x86/systemv.py +0 -0
  162. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/state.py +0 -0
  163. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/unstable/__init__.py +0 -0
  164. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/unstable/elf.py +0 -0
  165. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/state/x86_registers.py +0 -0
  166. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld/utils.py +0 -0
  167. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/SOURCES.txt +0 -0
  168. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/dependency_links.txt +0 -0
  169. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/entry_points.txt +0 -0
  170. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/not-zip-safe +0 -0
  171. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/requires.txt +0 -0
  172. {smallworld_re-1.0.0 → smallworld_re-1.0.1}/smallworld_re.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: smallworld-re
3
- Version: 1.0.0
3
+ Version: 1.0.1
4
4
  Summary: An emulation stack tracking library
5
5
  Home-page: https://github.com/smallworld-re/smallworld
6
6
  Author: MIT Lincoln Laboratory
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as f:
5
5
 
6
6
  setup(
7
7
  name="smallworld-re",
8
- version="1.0.0",
8
+ version="1.0.1",
9
9
  author="MIT Lincoln Laboratory",
10
10
  author_email="smallworld@ll.mit.edu",
11
11
  url="https://github.com/smallworld-re/smallworld",
@@ -1,6 +1,6 @@
1
1
  from importlib import metadata as __metadata
2
2
 
3
- metadata = __metadata.metadata("smallworld")
3
+ metadata = __metadata.metadata("smallworld-re")
4
4
 
5
5
  __title__ = metadata["name"]
6
6
  __description__ = metadata["Summary"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: smallworld-re
3
- Version: 1.0.0
3
+ Version: 1.0.1
4
4
  Summary: An emulation stack tracking library
5
5
  Home-page: https://github.com/smallworld-re/smallworld
6
6
  Author: MIT Lincoln Laboratory
File without changes
File without changes
File without changes