@opentrons/shared-data 0.1.7-alpha.0 → 0.2.0-alpha.0

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 (372) hide show
  1. package/.coveragerc +4 -0
  2. package/.flake8 +31 -0
  3. package/Config.in +11 -0
  4. package/LICENSE +202 -0
  5. package/Makefile +13 -14
  6. package/Makefile-python.mk +134 -0
  7. package/buildroot.mk +35 -0
  8. package/command/index.ts +16 -2
  9. package/command/schemas/12.json +65 -0
  10. package/command/schemas/13.json +7039 -0
  11. package/command/schemas/14.json +7254 -0
  12. package/command/types/annotation.ts +1 -1
  13. package/command/types/calibration.ts +7 -6
  14. package/command/types/gantry.ts +7 -6
  15. package/command/types/incidental.ts +1 -1
  16. package/command/types/index.ts +79 -20
  17. package/command/types/module.ts +98 -11
  18. package/command/types/pipetting.ts +9 -3
  19. package/command/types/robot.ts +98 -0
  20. package/command/types/setup.ts +8 -8
  21. package/command/types/support.ts +14 -2
  22. package/command/types/timing.ts +1 -1
  23. package/command/types/unsafe.ts +63 -1
  24. package/deck/definitions/5/ot2_short_trash.json +37 -0
  25. package/deck/definitions/5/ot2_standard.json +37 -0
  26. package/deck/definitions/5/ot3_standard.json +152 -51
  27. package/deck/index.ts +3 -6
  28. package/deck/schemas/5.json +46 -1
  29. package/errors/definitions/1/errors.json +12 -0
  30. package/errors/index.ts +2 -1
  31. package/labware/definitions/2/agilent_1_reservoir_290ml/3.json +80 -0
  32. package/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
  33. package/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
  34. package/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
  35. package/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
  36. package/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
  37. package/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
  38. package/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
  39. package/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +5116 -0
  40. package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +605 -0
  41. package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
  42. package/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
  43. package/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
  44. package/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
  45. package/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
  46. package/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
  47. package/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
  48. package/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
  49. package/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
  50. package/labware/definitions/2/nest_1_reservoir_290ml/3.json +80 -0
  51. package/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
  52. package/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
  53. package/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
  54. package/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
  55. package/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
  56. package/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +370 -0
  57. package/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +371 -0
  58. package/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +1149 -0
  59. package/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
  60. package/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
  61. package/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
  62. package/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
  63. package/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
  64. package/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
  65. package/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
  66. package/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
  67. package/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
  68. package/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +15 -9
  69. package/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
  70. package/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
  71. package/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
  72. package/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
  73. package/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
  74. package/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
  75. package/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +237 -0
  76. package/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
  77. package/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +1050 -0
  78. package/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +1202 -0
  79. package/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
  80. package/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +1037 -0
  81. package/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
  82. package/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
  83. package/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
  84. package/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
  85. package/labware/fixtures/2/fixture_user_volumes_prototype.json +1137 -0
  86. package/labware/fixtures/2/index.ts +4 -4
  87. package/labware/fixtures/3/fixture_2_plate.json +28 -11
  88. package/labware/fixtures/3/fixture_corning_24_plate.json +51 -34
  89. package/labware/fixtures/3/index.ts +4 -0
  90. package/labware/schemas/2.json +36 -1
  91. package/labware/schemas/3.json +115 -25
  92. package/lib/command/index.d.ts +4211 -2095
  93. package/lib/command/schemas/12.json +65 -0
  94. package/lib/command/schemas/13.json +7039 -0
  95. package/lib/command/schemas/14.json +7254 -0
  96. package/lib/command/types/annotation.d.ts +1 -1
  97. package/lib/command/types/calibration.d.ts +5 -5
  98. package/lib/command/types/gantry.d.ts +5 -4
  99. package/lib/command/types/incidental.d.ts +1 -1
  100. package/lib/command/types/index.d.ts +60 -14
  101. package/lib/command/types/module.d.ts +75 -13
  102. package/lib/command/types/pipetting.d.ts +8 -3
  103. package/lib/command/types/robot.d.ts +71 -0
  104. package/lib/command/types/setup.d.ts +5 -5
  105. package/lib/command/types/support.d.ts +3 -2
  106. package/lib/command/types/timing.d.ts +1 -1
  107. package/lib/command/types/unsafe.d.ts +44 -3
  108. package/lib/deck/definitions/5/ot2_short_trash.json +37 -0
  109. package/lib/deck/definitions/5/ot2_standard.json +37 -0
  110. package/lib/deck/definitions/5/ot3_standard.json +152 -51
  111. package/lib/deck/index.d.ts +3 -3
  112. package/lib/deck/schemas/5.json +46 -1
  113. package/lib/errors/definitions/1/errors.json +12 -0
  114. package/lib/errors/index.d.ts +1 -1
  115. package/lib/index.mjs +380872 -297265
  116. package/lib/js/constants.d.ts +45 -17
  117. package/lib/js/deck/index.d.ts +2 -2
  118. package/lib/js/fixtures.d.ts +78 -3
  119. package/lib/js/getLabware.d.ts +3 -3
  120. package/lib/js/gripper.d.ts +1 -1
  121. package/lib/js/helpers/__tests__/getMaxPushOutVolume.test.d.ts +1 -0
  122. package/lib/js/helpers/__tests__/getMmFromBottom.test.d.ts +1 -0
  123. package/lib/js/helpers/__tests__/getStackedItemsOnStartingDeck.test.d.ts +1 -0
  124. package/lib/js/helpers/__tests__/labwareSchemaShims.test.d.ts +1 -0
  125. package/lib/js/helpers/__tests__/liquidClasses.test.d.ts +1 -0
  126. package/lib/js/helpers/__tests__/pairsFromArray.test.d.ts +1 -0
  127. package/lib/js/helpers/__tests__/vectorMath.test.d.ts +1 -0
  128. package/lib/js/helpers/getFixedTrashLabwareDefinition.d.ts +2 -2
  129. package/lib/js/helpers/getLabwareDefURI.d.ts +3 -0
  130. package/lib/js/helpers/getLabwareDefinitionsByURIForProtocol.d.ts +6 -0
  131. package/lib/js/helpers/getLabwareInfoByLiquidId.d.ts +10 -0
  132. package/lib/js/helpers/getLiquidsByIdForLabware.d.ts +2 -0
  133. package/lib/js/helpers/getLoadedLabwareDefinitionsByUri.d.ts +2 -2
  134. package/lib/js/helpers/getMaxPushOutVolume.d.ts +2 -0
  135. package/lib/js/helpers/getMmFromBottom.d.ts +2 -0
  136. package/lib/js/helpers/getSimplestFlexDeckConfig.d.ts +1 -1
  137. package/lib/js/helpers/getStackedItemsOnStartingDeck.d.ts +50 -0
  138. package/lib/js/helpers/getStandardDeckViewLayerBlockList.d.ts +2 -0
  139. package/lib/js/helpers/getTipTypeFromTipRackDefinition.d.ts +2 -2
  140. package/lib/js/helpers/getWellFillFromLabwareId.d.ts +4 -0
  141. package/lib/js/helpers/getWellNamePerMultiTip.d.ts +3 -3
  142. package/lib/js/helpers/getWellRangeForLiquidLabwarePair.d.ts +6 -0
  143. package/lib/js/helpers/getWellTotalVolume.d.ts +2 -2
  144. package/lib/js/helpers/index.d.ts +25 -14
  145. package/lib/js/helpers/labwareInference.d.ts +3 -3
  146. package/lib/js/helpers/liquidClasses.d.ts +10 -0
  147. package/lib/js/helpers/matrixMath.d.ts +3 -0
  148. package/lib/js/helpers/pairsFromArray.d.ts +8 -0
  149. package/lib/js/helpers/parseAddressableArea.d.ts +1 -1
  150. package/lib/js/helpers/parseProtocolCommands.d.ts +5 -5
  151. package/lib/js/helpers/positionMath.d.ts +127 -0
  152. package/lib/js/helpers/validateCustomLabwareHelper.d.ts +2 -2
  153. package/lib/js/helpers/vectorMath.d.ts +14 -0
  154. package/lib/js/helpers/wellSets.d.ts +4 -4
  155. package/lib/js/labware.d.ts +10 -9
  156. package/lib/js/labwareTools/index.d.ts +1 -1
  157. package/lib/js/liquidClasses.d.ts +4 -0
  158. package/lib/js/modules.d.ts +2 -2
  159. package/lib/js/pipettes.d.ts +3 -2
  160. package/lib/js/types.d.ts +105 -38
  161. package/lib/labware/definitions/2/agilent_1_reservoir_290ml/3.json +80 -0
  162. package/lib/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
  163. package/lib/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
  164. package/lib/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
  165. package/lib/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
  166. package/lib/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
  167. package/lib/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
  168. package/lib/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
  169. package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +5116 -0
  170. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +605 -0
  171. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
  172. package/lib/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
  173. package/lib/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
  174. package/lib/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
  175. package/lib/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
  176. package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
  177. package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
  178. package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
  179. package/lib/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
  180. package/lib/labware/definitions/2/nest_1_reservoir_290ml/3.json +80 -0
  181. package/lib/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
  182. package/lib/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
  183. package/lib/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
  184. package/lib/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
  185. package/lib/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
  186. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +370 -0
  187. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +371 -0
  188. package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +1149 -0
  189. package/lib/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
  190. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
  191. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
  192. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
  193. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
  194. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
  195. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
  196. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
  197. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
  198. package/lib/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +15 -9
  199. package/lib/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
  200. package/lib/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
  201. package/lib/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
  202. package/lib/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
  203. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
  204. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
  205. package/lib/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +237 -0
  206. package/lib/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
  207. package/lib/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +1050 -0
  208. package/lib/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +1202 -0
  209. package/lib/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
  210. package/lib/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +1037 -0
  211. package/lib/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
  212. package/lib/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
  213. package/lib/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
  214. package/lib/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
  215. package/lib/labware/fixtures/2/fixture_user_volumes_prototype.json +1137 -0
  216. package/lib/labware/fixtures/2/index.d.ts +4 -4
  217. package/lib/labware/fixtures/3/fixture_2_plate.json +28 -11
  218. package/lib/labware/fixtures/3/fixture_corning_24_plate.json +51 -34
  219. package/lib/labware/fixtures/3/index.d.ts +3 -0
  220. package/lib/labware/schemas/2.json +36 -1
  221. package/lib/labware/schemas/3.json +115 -25
  222. package/lib/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +1957 -1406
  223. package/lib/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +1781 -1230
  224. package/lib/liquid-class/definitions/1/{water.json → water/1.json} +1567 -1082
  225. package/lib/liquid-class/fixtures/1/fixture_glycerol50.json +67 -48
  226. package/lib/liquid-class/schemas/1.json +40 -48
  227. package/lib/module/definitions/3/absorbanceReaderV1.json +20 -150
  228. package/lib/module/definitions/3/flexStackerModuleV1.json +31 -385
  229. package/lib/module/definitions/3/heaterShakerModuleV1.json +16 -357
  230. package/lib/module/definitions/3/magneticBlockV1.json +18 -148
  231. package/lib/module/definitions/3/magneticModuleV1.json +16 -398
  232. package/lib/module/definitions/3/magneticModuleV2.json +16 -398
  233. package/lib/module/definitions/3/temperatureModuleV1.json +16 -152
  234. package/lib/module/definitions/3/temperatureModuleV2.json +16 -152
  235. package/lib/module/definitions/3/thermocyclerModuleV1.json +16 -1339
  236. package/lib/module/definitions/3/thermocyclerModuleV2.json +18 -3616
  237. package/lib/module/schemas/3.json +111 -10
  238. package/lib/pipette/definitions/1/pipetteModelSpecs.json +336 -0
  239. package/lib/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
  240. package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +4 -0
  241. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +4 -0
  242. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
  243. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_6.json +4 -0
  244. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +11 -11
  245. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +12 -12
  246. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
  247. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
  248. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +5 -5
  249. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +5 -5
  250. package/lib/pipette/fixtures/name/index.d.ts +1 -1
  251. package/lib/protocol/fixtures/index.d.ts +2 -2
  252. package/lib/protocol/index.d.ts +7 -7
  253. package/lib/protocol/types/schemaV4.d.ts +1 -1
  254. package/lib/protocol/types/schemaV5.d.ts +1 -1
  255. package/lib/protocol/types/schemaV5Addendum.d.ts +1 -1
  256. package/lib/protocol/types/schemaV6/command/gantry.d.ts +4 -4
  257. package/lib/protocol/types/schemaV6/command/index.d.ts +5 -5
  258. package/lib/protocol/types/schemaV6/command/module.d.ts +1 -1
  259. package/lib/protocol/types/schemaV6/command/pipetting.d.ts +1 -1
  260. package/lib/protocol/types/schemaV6/command/setup.d.ts +1 -1
  261. package/lib/protocol/types/schemaV6/command/timing.d.ts +1 -1
  262. package/lib/protocol/types/schemaV6/index.d.ts +2 -2
  263. package/lib/protocol/types/schemaV7/command/annotation.d.ts +1 -1
  264. package/lib/protocol/types/schemaV7/command/calibration.d.ts +5 -5
  265. package/lib/protocol/types/schemaV7/command/gantry.d.ts +4 -4
  266. package/lib/protocol/types/schemaV7/command/incidental.d.ts +1 -1
  267. package/lib/protocol/types/schemaV7/command/index.d.ts +7 -7
  268. package/lib/protocol/types/schemaV7/command/module.d.ts +1 -1
  269. package/lib/protocol/types/schemaV7/command/pipetting.d.ts +1 -1
  270. package/lib/protocol/types/schemaV7/command/setup.d.ts +1 -1
  271. package/lib/protocol/types/schemaV7/command/timing.d.ts +1 -1
  272. package/lib/protocol/types/schemaV7/index.d.ts +2 -2
  273. package/lib/protocol/types/schemaV8/index.d.ts +18 -2
  274. package/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +1957 -1406
  275. package/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +1781 -1230
  276. package/liquid-class/definitions/1/{water.json → water/1.json} +1567 -1082
  277. package/liquid-class/fixtures/1/fixture_glycerol50.json +67 -48
  278. package/liquid-class/schemas/1.json +40 -48
  279. package/module/definitions/3/absorbanceReaderV1.json +20 -150
  280. package/module/definitions/3/flexStackerModuleV1.json +31 -385
  281. package/module/definitions/3/heaterShakerModuleV1.json +16 -357
  282. package/module/definitions/3/magneticBlockV1.json +18 -148
  283. package/module/definitions/3/magneticModuleV1.json +16 -398
  284. package/module/definitions/3/magneticModuleV2.json +16 -398
  285. package/module/definitions/3/temperatureModuleV1.json +16 -152
  286. package/module/definitions/3/temperatureModuleV2.json +16 -152
  287. package/module/definitions/3/thermocyclerModuleV1.json +16 -1339
  288. package/module/definitions/3/thermocyclerModuleV2.json +18 -3616
  289. package/module/schemas/3.json +111 -10
  290. package/mypy.ini +22 -0
  291. package/package.json +1 -1
  292. package/pipette/definitions/1/pipetteModelSpecs.json +336 -0
  293. package/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
  294. package/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +4 -0
  295. package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +4 -0
  296. package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
  297. package/pipette/definitions/2/geometry/single_channel/p50/3_6.json +4 -0
  298. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +11 -11
  299. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +12 -12
  300. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
  301. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
  302. package/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +5 -5
  303. package/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +5 -5
  304. package/pipette/fixtures/index.ts +12 -12
  305. package/pipette/fixtures/name/index.ts +1 -0
  306. package/protocol/fixtures/index.ts +2 -3
  307. package/protocol/index.ts +9 -8
  308. package/protocol/types/schemaV4.ts +4 -4
  309. package/protocol/types/schemaV5.ts +1 -1
  310. package/protocol/types/schemaV5Addendum.ts +1 -1
  311. package/protocol/types/schemaV6/command/gantry.ts +4 -4
  312. package/protocol/types/schemaV6/command/index.ts +6 -6
  313. package/protocol/types/schemaV6/command/module.ts +1 -1
  314. package/protocol/types/schemaV6/command/pipetting.ts +2 -1
  315. package/protocol/types/schemaV6/command/setup.ts +2 -2
  316. package/protocol/types/schemaV6/command/timing.ts +1 -1
  317. package/protocol/types/schemaV6/index.ts +3 -3
  318. package/protocol/types/schemaV7/command/annotation.ts +1 -1
  319. package/protocol/types/schemaV7/command/calibration.ts +7 -6
  320. package/protocol/types/schemaV7/command/gantry.ts +5 -5
  321. package/protocol/types/schemaV7/command/incidental.ts +1 -1
  322. package/protocol/types/schemaV7/command/index.ts +14 -14
  323. package/protocol/types/schemaV7/command/module.ts +1 -1
  324. package/protocol/types/schemaV7/command/pipetting.ts +2 -1
  325. package/protocol/types/schemaV7/command/setup.ts +2 -2
  326. package/protocol/types/schemaV7/command/timing.ts +1 -1
  327. package/protocol/types/schemaV7/index.ts +3 -3
  328. package/protocol/types/schemaV8/index.ts +32 -4
  329. package/pyproject.toml +119 -0
  330. package/pytest.ini +8 -0
  331. package/python_tests/__init__.py +1 -0
  332. package/python_tests/command/test_known_schema_ids.py +9 -0
  333. package/python_tests/conftest.py +108 -0
  334. package/python_tests/deck/__init__.py +0 -0
  335. package/python_tests/deck/test_list_names.py +12 -0
  336. package/python_tests/deck/test_position.py +101 -0
  337. package/python_tests/deck/test_typechecks.py +23 -0
  338. package/python_tests/errors/__init__.py +1 -0
  339. package/python_tests/errors/test_error_completeness.py +19 -0
  340. package/python_tests/errors/test_exceptions.py +74 -0
  341. package/python_tests/gripper/__init__.py +0 -0
  342. package/python_tests/gripper/test_definition.py +30 -0
  343. package/python_tests/gripper/test_load.py +19 -0
  344. package/python_tests/labware/__init__.py +13 -0
  345. package/python_tests/labware/test_typechecks.py +80 -0
  346. package/python_tests/liquid_classes/__init__.py +0 -0
  347. package/python_tests/liquid_classes/test_liquid_class_values.py +59 -0
  348. package/python_tests/liquid_classes/test_load.py +45 -0
  349. package/python_tests/liquid_classes/test_validations.py +192 -0
  350. package/python_tests/module/__init__.py +20 -0
  351. package/python_tests/module/test_load.py +49 -0
  352. package/python_tests/module/test_typechecks.py +26 -0
  353. package/python_tests/pipette/__init__.py +0 -0
  354. package/python_tests/pipette/test_load_data.py +109 -0
  355. package/python_tests/pipette/test_max_flow_rates_per_volume.py +112 -0
  356. package/python_tests/pipette/test_mutable_configurations.py +467 -0
  357. package/python_tests/pipette/test_pipette_definition.py +183 -0
  358. package/python_tests/pipette/test_pipette_load_name_conversions.py +244 -0
  359. package/python_tests/pipette/test_typechecks.py +47 -0
  360. package/python_tests/pipette/test_validate_schema.py +198 -0
  361. package/python_tests/protocol/__init__.py +7 -0
  362. package/python_tests/protocol/test_protocol_schema_v6.py +108 -0
  363. package/python_tests/protocol/test_protocol_schema_v7.py +35 -0
  364. package/python_tests/protocol/test_protocol_schema_v8.py +17 -0
  365. package/python_tests/protocol/test_typechecks.py +30 -0
  366. package/python_tests/robot/__init__.py +0 -0
  367. package/python_tests/robot/test_typechecks.py +13 -0
  368. package/lib/js/cypressUtils.d.ts +0 -1
  369. package/lib/js/helpers/getVectorDifference.d.ts +0 -2
  370. package/lib/js/helpers/getVectorSum.d.ts +0 -2
  371. /package/lib/js/{helpers/__tests__/getVectorDifference.test.d.ts → __tests__/fixtures.test.d.ts} +0 -0
  372. /package/lib/js/helpers/__tests__/{getVectorSum.test.d.ts → getLabwareInfoByLiquidId.test.d.ts} +0 -0
@@ -0,0 +1,210 @@
1
+ {
2
+ "ordering": [
3
+ ["A1", "B1", "C1"],
4
+ ["A2", "B2", "C2"],
5
+ ["A3", "B3", "C3"],
6
+ ["A4", "B4", "C4"]
7
+ ],
8
+ "brand": {
9
+ "brand": "Corning",
10
+ "brandId": ["3336", "3512", "3513"],
11
+ "links": [
12
+ "https://ecatalog.corning.com/life-sciences/b2c/US/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3513?clear=true"
13
+ ]
14
+ },
15
+ "schemaVersion": 2,
16
+ "version": 4,
17
+ "namespace": "opentrons",
18
+ "metadata": {
19
+ "displayName": "Corning 12 Well Plate 6.9 mL Flat",
20
+ "displayVolumeUnits": "mL",
21
+ "displayCategory": "wellPlate",
22
+ "tags": []
23
+ },
24
+ "dimensions": {
25
+ "xDimension": 127.89,
26
+ "yDimension": 85.6,
27
+ "zDimension": 20.02
28
+ },
29
+ "gripForce": 16,
30
+ "gripHeightFromLabwareBottom": 18.3,
31
+ "wells": {
32
+ "C1": {
33
+ "shape": "circular",
34
+ "depth": 17.399,
35
+ "diameter": 22.73,
36
+ "totalLiquidVolume": 6900,
37
+ "x": 24.94,
38
+ "y": 16.79,
39
+ "z": 2.49,
40
+ "geometryDefinitionId": "conicalWell"
41
+ },
42
+ "B1": {
43
+ "shape": "circular",
44
+ "depth": 17.399,
45
+ "diameter": 22.73,
46
+ "totalLiquidVolume": 6900,
47
+ "x": 24.94,
48
+ "y": 42.8,
49
+ "z": 2.49,
50
+ "geometryDefinitionId": "conicalWell"
51
+ },
52
+ "A1": {
53
+ "shape": "circular",
54
+ "depth": 17.399,
55
+ "diameter": 22.73,
56
+ "totalLiquidVolume": 6900,
57
+ "x": 24.94,
58
+ "y": 68.81,
59
+ "z": 2.49,
60
+ "geometryDefinitionId": "conicalWell"
61
+ },
62
+ "C2": {
63
+ "shape": "circular",
64
+ "depth": 17.399,
65
+ "diameter": 22.73,
66
+ "totalLiquidVolume": 6900,
67
+ "x": 50.95,
68
+ "y": 16.79,
69
+ "z": 2.49,
70
+ "geometryDefinitionId": "conicalWell"
71
+ },
72
+ "B2": {
73
+ "shape": "circular",
74
+ "depth": 17.399,
75
+ "diameter": 22.73,
76
+ "totalLiquidVolume": 6900,
77
+ "x": 50.95,
78
+ "y": 42.8,
79
+ "z": 2.49,
80
+ "geometryDefinitionId": "conicalWell"
81
+ },
82
+ "A2": {
83
+ "shape": "circular",
84
+ "depth": 17.399,
85
+ "diameter": 22.73,
86
+ "totalLiquidVolume": 6900,
87
+ "x": 50.95,
88
+ "y": 68.81,
89
+ "z": 2.49,
90
+ "geometryDefinitionId": "conicalWell"
91
+ },
92
+ "C3": {
93
+ "shape": "circular",
94
+ "depth": 17.399,
95
+ "diameter": 22.73,
96
+ "totalLiquidVolume": 6900,
97
+ "x": 76.96,
98
+ "y": 16.79,
99
+ "z": 2.49,
100
+ "geometryDefinitionId": "conicalWell"
101
+ },
102
+ "B3": {
103
+ "shape": "circular",
104
+ "depth": 17.399,
105
+ "diameter": 22.73,
106
+ "totalLiquidVolume": 6900,
107
+ "x": 76.96,
108
+ "y": 42.8,
109
+ "z": 2.49,
110
+ "geometryDefinitionId": "conicalWell"
111
+ },
112
+ "A3": {
113
+ "shape": "circular",
114
+ "depth": 17.399,
115
+ "diameter": 22.73,
116
+ "totalLiquidVolume": 6900,
117
+ "x": 76.96,
118
+ "y": 68.81,
119
+ "z": 2.49,
120
+ "geometryDefinitionId": "conicalWell"
121
+ },
122
+ "C4": {
123
+ "shape": "circular",
124
+ "depth": 17.399,
125
+ "diameter": 22.73,
126
+ "totalLiquidVolume": 6900,
127
+ "x": 102.97,
128
+ "y": 16.79,
129
+ "z": 2.49,
130
+ "geometryDefinitionId": "conicalWell"
131
+ },
132
+ "B4": {
133
+ "shape": "circular",
134
+ "depth": 17.399,
135
+ "diameter": 22.73,
136
+ "totalLiquidVolume": 6900,
137
+ "x": 102.97,
138
+ "y": 42.8,
139
+ "z": 2.49,
140
+ "geometryDefinitionId": "conicalWell"
141
+ },
142
+ "A4": {
143
+ "shape": "circular",
144
+ "depth": 17.399,
145
+ "diameter": 22.73,
146
+ "totalLiquidVolume": 6900,
147
+ "x": 102.97,
148
+ "y": 68.81,
149
+ "z": 2.49,
150
+ "geometryDefinitionId": "conicalWell"
151
+ }
152
+ },
153
+ "parameters": {
154
+ "format": "irregular",
155
+ "isTiprack": false,
156
+ "isMagneticModuleCompatible": false,
157
+ "loadName": "corning_12_wellplate_6.9ml_flat"
158
+ },
159
+ "groups": [
160
+ {
161
+ "wells": [
162
+ "A1",
163
+ "B1",
164
+ "C1",
165
+ "A2",
166
+ "B2",
167
+ "C2",
168
+ "A3",
169
+ "B3",
170
+ "C3",
171
+ "A4",
172
+ "B4",
173
+ "C4"
174
+ ],
175
+ "metadata": {
176
+ "wellBottomShape": "flat"
177
+ }
178
+ }
179
+ ],
180
+ "cornerOffsetFromSlot": {
181
+ "x": 0,
182
+ "y": 0,
183
+ "z": 0
184
+ },
185
+ "stackingOffsetWithLabware": {
186
+ "opentrons_aluminum_flat_bottom_plate": {
187
+ "x": 0,
188
+ "y": 0,
189
+ "z": 4.5
190
+ },
191
+ "corning_12_wellplate_6.9ml_flat": {
192
+ "x": 0,
193
+ "y": 0,
194
+ "z": 0.93
195
+ }
196
+ },
197
+ "innerLabwareGeometry": {
198
+ "conicalWell": {
199
+ "sections": [
200
+ {
201
+ "shape": "conical",
202
+ "topDiameter": 22.733,
203
+ "bottomDiameter": 22.098,
204
+ "topHeight": 17.399,
205
+ "bottomHeight": 0.0
206
+ }
207
+ ]
208
+ }
209
+ }
210
+ }
@@ -0,0 +1,342 @@
1
+ {
2
+ "ordering": [
3
+ ["A1", "B1", "C1", "D1"],
4
+ ["A2", "B2", "C2", "D2"],
5
+ ["A3", "B3", "C3", "D3"],
6
+ ["A4", "B4", "C4", "D4"],
7
+ ["A5", "B5", "C5", "D5"],
8
+ ["A6", "B6", "C6", "D6"]
9
+ ],
10
+ "brand": {
11
+ "brand": "Corning",
12
+ "brandId": ["3337", "3524", "3526", "3527", "3473", "3738", "3987"],
13
+ "links": [
14
+ "https://ecatalog.corning.com/life-sciences/b2c/US/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3738"
15
+ ]
16
+ },
17
+ "schemaVersion": 2,
18
+ "version": 4,
19
+ "namespace": "opentrons",
20
+ "metadata": {
21
+ "displayName": "Corning 24 Well Plate 3.4 mL Flat",
22
+ "displayVolumeUnits": "mL",
23
+ "displayCategory": "wellPlate",
24
+ "tags": []
25
+ },
26
+ "dimensions": {
27
+ "xDimension": 127.76,
28
+ "yDimension": 85.47,
29
+ "zDimension": 20.27
30
+ },
31
+ "wells": {
32
+ "D1": {
33
+ "shape": "circular",
34
+ "depth": 17.4,
35
+ "diameter": 16.26,
36
+ "totalLiquidVolume": 3400,
37
+ "x": 17.48,
38
+ "y": 13.77,
39
+ "z": 2.87,
40
+ "geometryDefinitionId": "conicalWell"
41
+ },
42
+ "C1": {
43
+ "shape": "circular",
44
+ "depth": 17.4,
45
+ "diameter": 16.26,
46
+ "totalLiquidVolume": 3400,
47
+ "x": 17.48,
48
+ "y": 33.07,
49
+ "z": 2.87,
50
+ "geometryDefinitionId": "conicalWell"
51
+ },
52
+ "B1": {
53
+ "shape": "circular",
54
+ "depth": 17.4,
55
+ "diameter": 16.26,
56
+ "totalLiquidVolume": 3400,
57
+ "x": 17.48,
58
+ "y": 52.37,
59
+ "z": 2.87,
60
+ "geometryDefinitionId": "conicalWell"
61
+ },
62
+ "A1": {
63
+ "shape": "circular",
64
+ "depth": 17.4,
65
+ "diameter": 16.26,
66
+ "totalLiquidVolume": 3400,
67
+ "x": 17.48,
68
+ "y": 71.67,
69
+ "z": 2.87,
70
+ "geometryDefinitionId": "conicalWell"
71
+ },
72
+ "D2": {
73
+ "shape": "circular",
74
+ "depth": 17.4,
75
+ "diameter": 16.26,
76
+ "totalLiquidVolume": 3400,
77
+ "x": 36.78,
78
+ "y": 13.77,
79
+ "z": 2.87,
80
+ "geometryDefinitionId": "conicalWell"
81
+ },
82
+ "C2": {
83
+ "shape": "circular",
84
+ "depth": 17.4,
85
+ "diameter": 16.26,
86
+ "totalLiquidVolume": 3400,
87
+ "x": 36.78,
88
+ "y": 33.07,
89
+ "z": 2.87,
90
+ "geometryDefinitionId": "conicalWell"
91
+ },
92
+ "B2": {
93
+ "shape": "circular",
94
+ "depth": 17.4,
95
+ "diameter": 16.26,
96
+ "totalLiquidVolume": 3400,
97
+ "x": 36.78,
98
+ "y": 52.37,
99
+ "z": 2.87,
100
+ "geometryDefinitionId": "conicalWell"
101
+ },
102
+ "A2": {
103
+ "shape": "circular",
104
+ "depth": 17.4,
105
+ "diameter": 16.26,
106
+ "totalLiquidVolume": 3400,
107
+ "x": 36.78,
108
+ "y": 71.67,
109
+ "z": 2.87,
110
+ "geometryDefinitionId": "conicalWell"
111
+ },
112
+ "D3": {
113
+ "shape": "circular",
114
+ "depth": 17.4,
115
+ "diameter": 16.26,
116
+ "totalLiquidVolume": 3400,
117
+ "x": 56.08,
118
+ "y": 13.77,
119
+ "z": 2.87,
120
+ "geometryDefinitionId": "conicalWell"
121
+ },
122
+ "C3": {
123
+ "shape": "circular",
124
+ "depth": 17.4,
125
+ "diameter": 16.26,
126
+ "totalLiquidVolume": 3400,
127
+ "x": 56.08,
128
+ "y": 33.07,
129
+ "z": 2.87,
130
+ "geometryDefinitionId": "conicalWell"
131
+ },
132
+ "B3": {
133
+ "shape": "circular",
134
+ "depth": 17.4,
135
+ "diameter": 16.26,
136
+ "totalLiquidVolume": 3400,
137
+ "x": 56.08,
138
+ "y": 52.37,
139
+ "z": 2.87,
140
+ "geometryDefinitionId": "conicalWell"
141
+ },
142
+ "A3": {
143
+ "shape": "circular",
144
+ "depth": 17.4,
145
+ "diameter": 16.26,
146
+ "totalLiquidVolume": 3400,
147
+ "x": 56.08,
148
+ "y": 71.67,
149
+ "z": 2.87,
150
+ "geometryDefinitionId": "conicalWell"
151
+ },
152
+ "D4": {
153
+ "shape": "circular",
154
+ "depth": 17.4,
155
+ "diameter": 16.26,
156
+ "totalLiquidVolume": 3400,
157
+ "x": 75.38,
158
+ "y": 13.77,
159
+ "z": 2.87,
160
+ "geometryDefinitionId": "conicalWell"
161
+ },
162
+ "C4": {
163
+ "shape": "circular",
164
+ "depth": 17.4,
165
+ "diameter": 16.26,
166
+ "totalLiquidVolume": 3400,
167
+ "x": 75.38,
168
+ "y": 33.07,
169
+ "z": 2.87,
170
+ "geometryDefinitionId": "conicalWell"
171
+ },
172
+ "B4": {
173
+ "shape": "circular",
174
+ "depth": 17.4,
175
+ "diameter": 16.26,
176
+ "totalLiquidVolume": 3400,
177
+ "x": 75.38,
178
+ "y": 52.37,
179
+ "z": 2.87,
180
+ "geometryDefinitionId": "conicalWell"
181
+ },
182
+ "A4": {
183
+ "shape": "circular",
184
+ "depth": 17.4,
185
+ "diameter": 16.26,
186
+ "totalLiquidVolume": 3400,
187
+ "x": 75.38,
188
+ "y": 71.67,
189
+ "z": 2.87,
190
+ "geometryDefinitionId": "conicalWell"
191
+ },
192
+ "D5": {
193
+ "shape": "circular",
194
+ "depth": 17.4,
195
+ "diameter": 16.26,
196
+ "totalLiquidVolume": 3400,
197
+ "x": 94.68,
198
+ "y": 13.77,
199
+ "z": 2.87,
200
+ "geometryDefinitionId": "conicalWell"
201
+ },
202
+ "C5": {
203
+ "shape": "circular",
204
+ "depth": 17.4,
205
+ "diameter": 16.26,
206
+ "totalLiquidVolume": 3400,
207
+ "x": 94.68,
208
+ "y": 33.07,
209
+ "z": 2.87,
210
+ "geometryDefinitionId": "conicalWell"
211
+ },
212
+ "B5": {
213
+ "shape": "circular",
214
+ "depth": 17.4,
215
+ "diameter": 16.26,
216
+ "totalLiquidVolume": 3400,
217
+ "x": 94.68,
218
+ "y": 52.37,
219
+ "z": 2.87,
220
+ "geometryDefinitionId": "conicalWell"
221
+ },
222
+ "A5": {
223
+ "shape": "circular",
224
+ "depth": 17.4,
225
+ "diameter": 16.26,
226
+ "totalLiquidVolume": 3400,
227
+ "x": 94.68,
228
+ "y": 71.67,
229
+ "z": 2.87,
230
+ "geometryDefinitionId": "conicalWell"
231
+ },
232
+ "D6": {
233
+ "shape": "circular",
234
+ "depth": 17.4,
235
+ "diameter": 16.26,
236
+ "totalLiquidVolume": 3400,
237
+ "x": 113.98,
238
+ "y": 13.77,
239
+ "z": 2.87,
240
+ "geometryDefinitionId": "conicalWell"
241
+ },
242
+ "C6": {
243
+ "shape": "circular",
244
+ "depth": 17.4,
245
+ "diameter": 16.26,
246
+ "totalLiquidVolume": 3400,
247
+ "x": 113.98,
248
+ "y": 33.07,
249
+ "z": 2.87,
250
+ "geometryDefinitionId": "conicalWell"
251
+ },
252
+ "B6": {
253
+ "shape": "circular",
254
+ "depth": 17.4,
255
+ "diameter": 16.26,
256
+ "totalLiquidVolume": 3400,
257
+ "x": 113.98,
258
+ "y": 52.37,
259
+ "z": 2.87,
260
+ "geometryDefinitionId": "conicalWell"
261
+ },
262
+ "A6": {
263
+ "shape": "circular",
264
+ "depth": 17.4,
265
+ "diameter": 16.26,
266
+ "totalLiquidVolume": 3400,
267
+ "x": 113.98,
268
+ "y": 71.67,
269
+ "z": 2.87,
270
+ "geometryDefinitionId": "conicalWell"
271
+ }
272
+ },
273
+ "parameters": {
274
+ "format": "irregular",
275
+ "isTiprack": false,
276
+ "isMagneticModuleCompatible": false,
277
+ "loadName": "corning_24_wellplate_3.4ml_flat"
278
+ },
279
+ "groups": [
280
+ {
281
+ "wells": [
282
+ "A1",
283
+ "B1",
284
+ "C1",
285
+ "D1",
286
+ "A2",
287
+ "B2",
288
+ "C2",
289
+ "D2",
290
+ "A3",
291
+ "B3",
292
+ "C3",
293
+ "D3",
294
+ "A4",
295
+ "B4",
296
+ "C4",
297
+ "D4",
298
+ "A5",
299
+ "B5",
300
+ "C5",
301
+ "D5",
302
+ "A6",
303
+ "B6",
304
+ "C6",
305
+ "D6"
306
+ ],
307
+ "metadata": {
308
+ "wellBottomShape": "flat"
309
+ }
310
+ }
311
+ ],
312
+ "cornerOffsetFromSlot": {
313
+ "x": 0,
314
+ "y": 0,
315
+ "z": 0
316
+ },
317
+ "stackingOffsetWithLabware": {
318
+ "opentrons_aluminum_flat_bottom_plate": {
319
+ "x": 0,
320
+ "y": 0,
321
+ "z": 4.15
322
+ },
323
+ "corning_24_wellplate_3.4ml_flat": {
324
+ "x": 0,
325
+ "y": 0,
326
+ "z": 1.32
327
+ }
328
+ },
329
+ "innerLabwareGeometry": {
330
+ "conicalWell": {
331
+ "sections": [
332
+ {
333
+ "shape": "conical",
334
+ "topDiameter": 16.256,
335
+ "bottomDiameter": 15.621,
336
+ "topHeight": 17.399,
337
+ "bottomHeight": 0.0
338
+ }
339
+ ]
340
+ }
341
+ }
342
+ }