ketcher-react 3.12.0-dev.1 → 3.12.0-rc.2

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 (35) hide show
  1. package/dist/cjs/index.css +1 -1
  2. package/dist/cjs/index.css.map +1 -1
  3. package/dist/cjs/index.js +1226 -524
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/{index.modern-b232add2.js → index.modern-0386b391.js} +4 -3
  6. package/dist/cjs/index.modern-0386b391.js.map +1 -0
  7. package/dist/cjs/script/editor/Editor.d.ts +19 -2
  8. package/dist/cjs/script/editor/tool/sgroup.d.ts +17 -0
  9. package/dist/cjs/script/editor/utils/customOnChangeHandler.test.d.ts +16 -0
  10. package/dist/cjs/script/ui/data/schema/sdata-schema.d.ts +1 -1
  11. package/dist/cjs/script/ui/state/functionalGroups/index.d.ts +1 -1
  12. package/dist/cjs/script/ui/state/notifications/index.d.ts +17 -0
  13. package/dist/cjs/script/ui/state/saltsAndSolvents/index.d.ts +1 -1
  14. package/dist/cjs/script/ui/views/components/ContextMenu/hooks/useMarkAs.d.ts +9 -0
  15. package/dist/cjs/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.constants.d.ts +2 -0
  16. package/dist/cjs/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.types.d.ts +6 -1
  17. package/dist/index.css +1 -1
  18. package/dist/index.css.map +1 -1
  19. package/dist/index.js +1228 -526
  20. package/dist/index.js.map +1 -1
  21. package/dist/{index.modern-06d576e1.js → index.modern-3f8330b9.js} +5 -4
  22. package/dist/index.modern-3f8330b9.js.map +1 -0
  23. package/dist/script/editor/Editor.d.ts +19 -2
  24. package/dist/script/editor/tool/sgroup.d.ts +17 -0
  25. package/dist/script/editor/utils/customOnChangeHandler.test.d.ts +16 -0
  26. package/dist/script/ui/data/schema/sdata-schema.d.ts +1 -1
  27. package/dist/script/ui/state/functionalGroups/index.d.ts +1 -1
  28. package/dist/script/ui/state/notifications/index.d.ts +17 -0
  29. package/dist/script/ui/state/saltsAndSolvents/index.d.ts +1 -1
  30. package/dist/script/ui/views/components/ContextMenu/hooks/useMarkAs.d.ts +9 -0
  31. package/dist/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.constants.d.ts +2 -0
  32. package/dist/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.types.d.ts +6 -1
  33. package/package.json +1 -1
  34. package/dist/cjs/index.modern-b232add2.js.map +0 -1
  35. package/dist/index.modern-06d576e1.js.map +0 -1
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import 'url-search-params-polyfill';
27
27
  import 'whatwg-fetch';
28
28
  import _classCallCheck$2 from '@babel/runtime/helpers/classCallCheck';
29
29
  import _createClass$2 from '@babel/runtime/helpers/createClass';
30
- import { KetSerializer, MolSerializer, KetcherLogger, ketcherProvider, defaultBondThickness, isClipboardAPIAvailable, notifyCopyCut, notifyRequestCompleted, isControlKey, StereLabelStyleType, StereoColoringType, ShowHydrogenLabels, ShowHydrogenLabelNames, SettingsManager, SdfSerializer, KETCHER_SAVED_OPTIONS_KEY, SUPERATOM_CLASS, Bond as Bond$2, Elements, AtomList, getAtomType, StereoLabel, isAttachmentBond, Atom as Atom$2, findStereoAtoms, RxnArrowMode, MULTITAIL_ARROW_TOOL_NAME, CREATE_MONOMER_TOOL_NAME, SimpleObjectMode, IMAGE_KEY, SGroup as SGroup$1, getSelectionFromStruct, identifyStructFormat, SupportedFormat, FormatterFactory, ChemicalMimeType, RenderStruct, Struct, ZoomTool, KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR, shortcutStr, MonomerMicromolecule, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, generateMenuShortcuts, Vec2, Scale, fromMultipleMove, FunctionalGroup, MULTITAIL_ARROW_KEY, CoordinateTransformation, mergeMapOfItemsToSet, fromSgroupDeletion, fromFragmentDeletion, vectorUtils, fromBondAddition, Action, fromAtomAddition, fromAtomsAttrs, checkOverlapping, fromSeveralSgroupAddition, expandSGroupWithMultipleAttachmentPoint, SgContexts, Pile, fromSgroupAction, fromItemsFuse, ReBond, setExpandSGroup, fromBondsAttrs, OperationType, ReStruct, imageReferencePositionToCursor, multitailArrowReferenceLinesToCursor, multitailReferencePositionToCursor, MultitailArrowRefName, fromMultitailArrowHeadTailMove, fromMultitailArrowHeadTailsResize, fromMultitailArrowMove, fromArrowResizing, fromPaste, fromImageResize, fromSimpleObjectResizing, getItemsToFuse, getHoverToFuse, fromTextDeletion, fromTextUpdating, fromTemplateOnCanvas, fromTemplateOnBondAction, fromTemplateOnAtom, BondAttr, AtomAttr, formatProperties, runAsyncAction, getStructStringFromClipboardData, getStructure, initHotKeys, keyNorm, Fragment as Fragment$1, fromRGroupAttachmentPointUpdate, fromOneBondDeletion, bondChangingAction, fromChain, removeInfoLabelFromAtoms, fromStereoFlagUpdate, fromOneAtomDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromRGroupAttachmentPointDeletion, fromImageDeletion, fromMultitailArrowDeletion, notifyItemsToMergeInitializationComplete, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromMultitailArrowCreation, fromPlusAddition, getRelSGroupsBySelection, RotateMonomerOperation, fromRotate, fromFlip, fromSimpleObjectAddition, fromTextCreation, fromImageMove, fromImageCreation, fromHighlightCreate, fromHighlightClear, getOptionsWithConvertedUnits, provideEditorSettings, fromNewCanvas, Render, Coordinates, isSingleRGroupAttachmentPoint, genericsList, getAttachmentPointLabelWithBinaryShift, AttachmentPointName, getAttachmentPointLabel, getAttachmentPointNumberFromLabel, getNextFreeAttachmentPoint, AtomLabel, AssignLeavingGroupAtomOperation, AssignAttachmentAtomOperation, setMonomerTemplatePrefix, getHELMClassByKetMonomerClass, fillNaturalAnalogueForPhosphateAndSugar, KetTemplateType, normalizeMonomerAtomsPositions, monomerFactory, MacromoleculesConverter, fromSgroupAddition, setMonomerGroupTemplatePrefix, getKetRef, KetMonomerClass, ReassignLeavingAtomOperation, ReassignAttachmentPointOperation, RemoveAttachmentPointOperation, fromDescriptorsAlign, atomGetAttr, fromBondFlipping, setExpandMonomerSGroup, fromMultitailArrowTailAdd, MultitailArrow, fromMultitailArrowTailRemove, AmbiguousMonomer, MonomerCreationAttachmentPointClickEvent, CoreEditor, compareByTitleWithNaturalFirst, getAtomCustomQuery, getFormatMimeTypeByFileName, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, legacyCopy as legacyCopy$1, b64toBlob, Generics, TextCommand, Ketcher, DefaultStructServiceOptions } from 'ketcher-core';
30
+ import { KetSerializer, MolSerializer, KetcherLogger, ketcherProvider, defaultBondThickness, isClipboardAPIAvailable, notifyCopyCut, notifyRequestCompleted, isControlKey, StereLabelStyleType, StereoColoringType, ShowHydrogenLabels, ShowHydrogenLabelNames, SettingsManager, SdfSerializer, KETCHER_SAVED_OPTIONS_KEY, SUPERATOM_CLASS, Bond as Bond$2, Elements, AtomList, getAtomType, StereoLabel, isAttachmentBond, Atom as Atom$2, findStereoAtoms, RxnArrowMode, MULTITAIL_ARROW_TOOL_NAME, CREATE_MONOMER_TOOL_NAME, SimpleObjectMode, IMAGE_KEY, SGroup as SGroup$1, getSelectionFromStruct, identifyStructFormat, SupportedFormat, FormatterFactory, ChemicalMimeType, RenderStruct, Struct, ZoomTool, KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR, shortcutStr, MonomerMicromolecule, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, generateMenuShortcuts, Vec2, Scale, fromMultipleMove, FunctionalGroup, MULTITAIL_ARROW_KEY, CoordinateTransformation, mergeMapOfItemsToSet, fromSgroupDeletion, fromFragmentDeletion, vectorUtils, fromBondAddition, Action, fromAtomAddition, fromAtomsAttrs, checkOverlapping, fromSeveralSgroupAddition, expandSGroupWithMultipleAttachmentPoint, SgContexts, Pile, fromSgroupAction, fromItemsFuse, ReBond, setExpandSGroup, fromBondsAttrs, OperationType, ReStruct, imageReferencePositionToCursor, multitailArrowReferenceLinesToCursor, multitailReferencePositionToCursor, MultitailArrowRefName, fromMultitailArrowHeadTailMove, fromMultitailArrowHeadTailsResize, fromMultitailArrowMove, fromArrowResizing, fromPaste, fromImageResize, fromSimpleObjectResizing, getItemsToFuse, getHoverToFuse, fromTextDeletion, fromTextUpdating, fromTemplateOnCanvas, fromTemplateOnBondAction, fromTemplateOnAtom, BondAttr, AtomAttr, formatProperties, runAsyncAction, getStructStringFromClipboardData, getStructure, initHotKeys, keyNorm, Fragment as Fragment$1, fromRGroupAttachmentPointUpdate, fromOneBondDeletion, bondChangingAction, fromChain, removeInfoLabelFromAtoms, fromStereoFlagUpdate, fromOneAtomDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromRGroupAttachmentPointDeletion, fromImageDeletion, fromMultitailArrowDeletion, notifyItemsToMergeInitializationComplete, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromMultitailArrowCreation, fromPlusAddition, getRelSGroupsBySelection, RotateMonomerOperation, fromRotate, fromFlip, fromSimpleObjectAddition, fromTextCreation, fromImageMove, fromImageCreation, fromHighlightCreate, fromHighlightClear, getOptionsWithConvertedUnits, provideEditorSettings, fromNewCanvas, Render, Coordinates, isSingleRGroupAttachmentPoint, genericsList, getAttachmentPointLabelWithBinaryShift, AttachmentPointName, getAttachmentPointLabel, getAttachmentPointNumberFromLabel, getNextFreeAttachmentPoint, AtomLabel, AssignLeavingGroupAtomOperation, AssignAttachmentAtomOperation, setMonomerTemplatePrefix, getHELMClassByKetMonomerClass, fillNaturalAnalogueForPhosphateAndSugar, KetTemplateType, normalizeMonomerAtomsPositions, monomerFactory, MacromoleculesConverter, fromSgroupAddition, setMonomerGroupTemplatePrefix, getKetRef, KetMonomerClass, ReassignLeavingAtomOperation, ReassignAttachmentPointOperation, RemoveAttachmentPointOperation, MonomerCreationComponentStructureUpdateEvent, fromDescriptorsAlign, atomGetAttr, fromBondFlipping, setExpandMonomerSGroup, fromMultitailArrowTailAdd, MultitailArrow, fromMultitailArrowTailRemove, AmbiguousMonomer, MonomerCreationAttachmentPointClickEvent, CoreEditor, compareByTitleWithNaturalFirst, getAtomCustomQuery, getFormatMimeTypeByFileName, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, legacyCopy as legacyCopy$1, b64toBlob, Generics, TextCommand, Ketcher, DefaultStructServiceOptions } from 'ketcher-core';
31
31
  export { EditorClassName, KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR } from 'ketcher-core';
32
32
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
33
33
  import _possibleConstructorReturn$2 from '@babel/runtime/helpers/possibleConstructorReturn';
@@ -52,7 +52,7 @@ import 'redux-logger';
52
52
  import { thunk } from 'redux-thunk';
53
53
  import useResizeObserver from 'use-resize-observer/polyfilled';
54
54
  import { useInView } from 'react-intersection-observer';
55
- import { IconButton as IconButton$1, Collapse, ClickAwayListener, Button as Button$1, Popover, ToggleButton, createFilterOptions, Autocomplete, TextField, Tooltip, MenuList, createTheme, ThemeProvider } from '@mui/material';
55
+ import { IconButton as IconButton$1, Collapse, ClickAwayListener, Button as Button$1, Popover, ToggleButton, createFilterOptions, Autocomplete, TextField, Tooltip, MenuList, createTheme, ThemeProvider, Snackbar } from '@mui/material';
56
56
  import { createSelector } from 'reselect';
57
57
  import { isIE } from 'react-device-detect';
58
58
  import _classPrivateFieldGet from '@babel/runtime/helpers/classPrivateFieldGet';
@@ -675,8 +675,8 @@ function exec(action) {
675
675
  return enabled;
676
676
  }
677
677
 
678
- function ownKeys$1F(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
679
- function _objectSpread$1F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1F(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
678
+ function ownKeys$1G(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
679
+ function _objectSpread$1G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1G(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
680
680
  var MeasurementUnits;
681
681
  (function (MeasurementUnits) {
682
682
  MeasurementUnits["Px"] = "px";
@@ -1018,7 +1018,7 @@ var optionsSchema = {
1018
1018
  title: 'Settings',
1019
1019
  type: 'object',
1020
1020
  required: [],
1021
- properties: _objectSpread$1F(_objectSpread$1F(_objectSpread$1F(_objectSpread$1F(_objectSpread$1F({}, editor), render), server), debug), miew)
1021
+ properties: _objectSpread$1G(_objectSpread$1G(_objectSpread$1G(_objectSpread$1G(_objectSpread$1G({}, editor), render), server), debug), miew)
1022
1022
  };
1023
1023
  function getDefaultOptions() {
1024
1024
  if (!optionsSchema.properties) return {};
@@ -1201,8 +1201,8 @@ function prefetchRender(tmpls, baseUrl, cacheEl) {
1201
1201
  });
1202
1202
  }
1203
1203
 
1204
- function ownKeys$1E(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1205
- function _objectSpread$1E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1E(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1204
+ function ownKeys$1F(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1205
+ function _objectSpread$1F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1F(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1206
1206
  var initOptionsState = {
1207
1207
  app: {
1208
1208
  server: false,
@@ -1232,7 +1232,7 @@ var initOptionsState = {
1232
1232
  getServerSettings: function getServerSettings() {
1233
1233
  var seriliazedServerOptions = getSerilizedServerOptions(this.settings);
1234
1234
  var defaultServerOptions = pick(SERVER_OPTIONS, this.settings);
1235
- return _objectSpread$1E(_objectSpread$1E({}, defaultServerOptions), seriliazedServerOptions);
1235
+ return _objectSpread$1F(_objectSpread$1F({}, defaultServerOptions), seriliazedServerOptions);
1236
1236
  }
1237
1237
  };
1238
1238
  function getSerilizedServerOptions(options) {
@@ -1265,7 +1265,7 @@ function getSerilizedServerOptions(options) {
1265
1265
  'render-stereo-style': renderStereoStyle
1266
1266
  };
1267
1267
  if (options.imageResolution === '600') {
1268
- newOptions = _objectSpread$1E(_objectSpread$1E({}, newOptions), {}, {
1268
+ newOptions = _objectSpread$1F(_objectSpread$1F({}, newOptions), {}, {
1269
1269
  'render-output-sheet-width': 11,
1270
1270
  'render-output-sheet-height': 8.5
1271
1271
  });
@@ -1343,29 +1343,29 @@ function optionsReducer() {
1343
1343
  var action = arguments.length > 1 ? arguments[1] : undefined;
1344
1344
  var type = action.type,
1345
1345
  data = action.data;
1346
- if (type === 'APP_OPTIONS') return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1347
- app: _objectSpread$1E(_objectSpread$1E({}, state.app), data)
1346
+ if (type === 'APP_OPTIONS') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
1347
+ app: _objectSpread$1F(_objectSpread$1F({}, state.app), data)
1348
1348
  });
1349
1349
  if (type === 'SAVE_SETTINGS') {
1350
- return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1351
- settings: _objectSpread$1E(_objectSpread$1E({}, state.settings), data)
1350
+ return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
1351
+ settings: _objectSpread$1F(_objectSpread$1F({}, state.settings), data)
1352
1352
  });
1353
1353
  }
1354
- if (type === 'SAVE_CHECK_OPTS') return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1354
+ if (type === 'SAVE_CHECK_OPTS') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
1355
1355
  check: data
1356
1356
  });
1357
- if (type === 'CHANGE_ANALYSE') return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1358
- analyse: _objectSpread$1E(_objectSpread$1E(_objectSpread$1E({}, state.analyse), data), {}, {
1357
+ if (type === 'CHANGE_ANALYSE') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
1358
+ analyse: _objectSpread$1F(_objectSpread$1F(_objectSpread$1F({}, state.analyse), data), {}, {
1359
1359
  loading: false
1360
1360
  })
1361
1361
  });
1362
- if (type === 'ANALYSE_LOADING') return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1363
- analyse: _objectSpread$1E(_objectSpread$1E({}, state.analyse), {}, {
1362
+ if (type === 'ANALYSE_LOADING') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
1363
+ analyse: _objectSpread$1F(_objectSpread$1F({}, state.analyse), {}, {
1364
1364
  loading: true
1365
1365
  })
1366
1366
  });
1367
- if (recognizeActions.includes(type)) return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1368
- recognize: _objectSpread$1E(_objectSpread$1E({}, state.recognize), data)
1367
+ if (recognizeActions.includes(type)) return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
1368
+ recognize: _objectSpread$1F(_objectSpread$1F({}, state.recognize), data)
1369
1369
  });
1370
1370
  return state;
1371
1371
  }
@@ -1658,8 +1658,8 @@ function firstKeyOf(obj) {
1658
1658
  }
1659
1659
  function getSdataDefault() {
1660
1660
  var schema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sdataSchema;
1661
- var context = arguments.length > 1 ? arguments[1] : undefined;
1662
- var fieldName = arguments.length > 2 ? arguments[2] : undefined;
1661
+ var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
1662
+ var fieldName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
1663
1663
  if (schema.key === 'Custom') {
1664
1664
  var _schema$properties$co;
1665
1665
  return (_schema$properties$co = schema.properties[context]) === null || _schema$properties$co === void 0 ? void 0 : _schema$properties$co["default"];
@@ -1669,8 +1669,8 @@ function getSdataDefault() {
1669
1669
  return schema[context][fieldName] ? schema[context][fieldName].properties.fieldValue["default"] : '';
1670
1670
  }
1671
1671
 
1672
- function ownKeys$1D(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1673
- function _objectSpread$1D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1D(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1672
+ function ownKeys$1E(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1673
+ function _objectSpread$1E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1E(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1674
1674
  var initSdata = function initSdata(schema) {
1675
1675
  var isCustomShema = schema.key === 'Custom';
1676
1676
  var context = isCustomShema ? getSdataDefault(sdataCustomSchema, 'context') : getSdataDefault(sdataSchema);
@@ -1708,7 +1708,7 @@ var onContextChange = function onContextChange(state, payload) {
1708
1708
  var fValue = fieldValue;
1709
1709
  if (fValue === state.result.fieldValue) fValue = getSdataDefault(sdataCustomSchema, 'fieldValue');
1710
1710
  return {
1711
- result: _objectSpread$1D(_objectSpread$1D({}, payload), {}, {
1711
+ result: _objectSpread$1E(_objectSpread$1E({}, payload), {}, {
1712
1712
  context: context,
1713
1713
  fieldName: fieldName,
1714
1714
  fieldValue: fValue
@@ -1722,7 +1722,7 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
1722
1722
  if (sdataSchema[context][fieldName]) fieldValue = getSdataDefault(sdataSchema, context, fieldName);
1723
1723
  if (fieldValue === state.result.fieldValue && sdataSchema[context][state.result.fieldName]) fieldValue = '';
1724
1724
  return {
1725
- result: _objectSpread$1D(_objectSpread$1D({}, payload), {}, {
1725
+ result: _objectSpread$1E(_objectSpread$1E({}, payload), {}, {
1726
1726
  fieldName: fieldName,
1727
1727
  fieldValue: fieldValue
1728
1728
  })
@@ -1730,29 +1730,29 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
1730
1730
  };
1731
1731
  function sdataReducer(state, action) {
1732
1732
  if (action.data.result.init) {
1733
- return correctErrors(_objectSpread$1D(_objectSpread$1D({}, state), {}, {
1734
- result: _objectSpread$1D(_objectSpread$1D({}, state.result), action.data.result)
1733
+ return correctErrors(_objectSpread$1E(_objectSpread$1E({}, state), {}, {
1734
+ result: _objectSpread$1E(_objectSpread$1E({}, state.result), action.data.result)
1735
1735
  }), action.data);
1736
1736
  }
1737
1737
  var actionContext = action.data.result.context;
1738
1738
  var actionFieldName = action.data.result.fieldName;
1739
1739
  var newstate = null;
1740
1740
  if (actionContext !== state.result.context) newstate = onContextChange(state, action.data.result);else if (actionFieldName !== state.result.fieldName) newstate = onFieldNameChange(state, action.data.result);
1741
- newstate = newstate || _objectSpread$1D(_objectSpread$1D({}, state), {}, {
1742
- result: _objectSpread$1D(_objectSpread$1D({}, state.result), action.data.result)
1741
+ newstate = newstate || _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1742
+ result: _objectSpread$1E(_objectSpread$1E({}, state.result), action.data.result)
1743
1743
  });
1744
1744
  return correctErrors(newstate, action.data);
1745
1745
  }
1746
1746
  function nucleotideComponentReducer(state, action) {
1747
- return _objectSpread$1D(_objectSpread$1D({}, state), {}, {
1748
- result: _objectSpread$1D(_objectSpread$1D(_objectSpread$1D({}, state.result), action.data.result), {}, {
1747
+ return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
1748
+ result: _objectSpread$1E(_objectSpread$1E(_objectSpread$1E({}, state.result), action.data.result), {}, {
1749
1749
  type: 'nucleotideComponent'
1750
1750
  })
1751
1751
  });
1752
1752
  }
1753
1753
 
1754
- function ownKeys$1C(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1755
- function _objectSpread$1C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1C(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1754
+ function ownKeys$1D(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1755
+ function _objectSpread$1D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1D(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1756
1756
  var formsState = {
1757
1757
  atomProps: {
1758
1758
  errors: {},
@@ -1882,14 +1882,14 @@ function formReducer(state, action) {
1882
1882
  var newType = (_action$data = action.data) === null || _action$data === void 0 || (_action$data = _action$data.result) === null || _action$data === void 0 ? void 0 : _action$data.type;
1883
1883
  if (newType === 'DAT') return sdataReducer(state, action);
1884
1884
  if (newType === 'SUP' && (state === null || state === void 0 || (_state$result = state.result) === null || _state$result === void 0 ? void 0 : _state$result.type) !== 'nucleotideComponent' && Object.values(SUPERATOM_CLASS).includes((_action$data2 = action.data) === null || _action$data2 === void 0 || (_action$data2 = _action$data2.result) === null || _action$data2 === void 0 ? void 0 : _action$data2["class"])) return nucleotideComponentReducer(state, action);
1885
- return _objectSpread$1C(_objectSpread$1C({}, state), action.data);
1885
+ return _objectSpread$1D(_objectSpread$1D({}, state), action.data);
1886
1886
  }
1887
1887
 
1888
1888
  var INDIGO_VERIFICATION = 'INDIGO_VERIFICATION';
1889
1889
  var ANALYZING_FILE = 'ANALYZING_FILE';
1890
1890
 
1891
- function ownKeys$1B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1892
- function _objectSpread$1B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1B(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1891
+ function ownKeys$1C(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1892
+ function _objectSpread$1C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1C(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1893
1893
  function indigoVerification(data) {
1894
1894
  return {
1895
1895
  type: INDIGO_VERIFICATION,
@@ -1914,13 +1914,13 @@ function requestReducer () {
1914
1914
  switch (type) {
1915
1915
  case INDIGO_VERIFICATION:
1916
1916
  {
1917
- return _objectSpread$1B(_objectSpread$1B({}, state), {}, {
1917
+ return _objectSpread$1C(_objectSpread$1C({}, state), {}, {
1918
1918
  indigoVerification: data
1919
1919
  });
1920
1920
  }
1921
1921
  case ANALYZING_FILE:
1922
1922
  {
1923
- return _objectSpread$1B(_objectSpread$1B({}, state), {}, {
1923
+ return _objectSpread$1C(_objectSpread$1C({}, state), {}, {
1924
1924
  isAnalyzingFile: data
1925
1925
  });
1926
1926
  }
@@ -1939,8 +1939,8 @@ var supportedSGroupTypes = {
1939
1939
  queryComponent: 'queryComponent'
1940
1940
  };
1941
1941
 
1942
- function ownKeys$1A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1943
- function _objectSpread$1A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1A(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1942
+ function ownKeys$1B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1943
+ function _objectSpread$1B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1B(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1944
1944
  var atom = {
1945
1945
  title: 'Atom',
1946
1946
  type: 'object',
@@ -2172,7 +2172,7 @@ var sgroup = {
2172
2172
  title: 'SGroup',
2173
2173
  type: 'object',
2174
2174
  required: ['type'],
2175
- oneOf: [_objectSpread$1A({}, sdataCustomSchema), {
2175
+ oneOf: [_objectSpread$1B({}, sdataCustomSchema), {
2176
2176
  key: 'MUL',
2177
2177
  title: 'Multiple group',
2178
2178
  type: 'object',
@@ -2321,12 +2321,12 @@ function matchCharge(charge) {
2321
2321
 
2322
2322
  var _excluded$D = ["aromaticity", "ringMembership", "ringSize", "connectivity", "chirality", "customQuery"],
2323
2323
  _excluded2$7 = ["type", "radiobuttons"];
2324
- function ownKeys$1z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2325
- function _objectSpread$1z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1z(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2324
+ function ownKeys$1A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2325
+ function _objectSpread$1A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1A(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2326
2326
  var DefaultStereoGroupNumber = 1;
2327
2327
  function fromElement(selem) {
2328
2328
  if (selem.label === 'R#') {
2329
- return _objectSpread$1z({
2329
+ return _objectSpread$1A({
2330
2330
  type: 'rlabel',
2331
2331
  values: fromRlabel(selem.rglabel)
2332
2332
  }, selem);
@@ -2435,7 +2435,7 @@ function toAtom(atom) {
2435
2435
  customQuery = _atom$customQuery === void 0 ? '' : _atom$customQuery,
2436
2436
  restAtom = _objectWithoutProperties(atom, _excluded$D);
2437
2437
  if (customQuery && customQuery !== '') {
2438
- return _objectSpread$1z(_objectSpread$1z({}, restAtom), {}, {
2438
+ return _objectSpread$1A(_objectSpread$1A({}, restAtom), {}, {
2439
2439
  label: 'A',
2440
2440
  atomList: null,
2441
2441
  pseudo: null,
@@ -2464,7 +2464,7 @@ function toAtom(atom) {
2464
2464
  }
2465
2465
  var pch = matchCharge(restAtom.charge);
2466
2466
  var charge = pch ? parseInt(pch[1] + pch[3] + pch[2]) : restAtom.charge;
2467
- var conv = _objectSpread$1z(_objectSpread$1z({}, restAtom), {}, {
2467
+ var conv = _objectSpread$1A(_objectSpread$1A({}, restAtom), {}, {
2468
2468
  isotope: restAtom.isotope ? Number(restAtom.isotope) : null,
2469
2469
  charge: restAtom.charge && charge !== 0 ? Number(charge) : null,
2470
2470
  alias: restAtom.alias || null,
@@ -2582,7 +2582,7 @@ function fromBond(sbond) {
2582
2582
  }
2583
2583
  function toBond(bond) {
2584
2584
  var isCustomQuery = bond.customQuery !== '';
2585
- return _objectSpread$1z({
2585
+ return _objectSpread$1A({
2586
2586
  topology: bond.topology,
2587
2587
  reactingCenterStatus: bond.center,
2588
2588
  customQuery: !isCustomQuery ? null : bond.customQuery
@@ -2647,7 +2647,7 @@ var bondCaptionMap = {
2647
2647
  }
2648
2648
  };
2649
2649
  function toBondType(caption) {
2650
- return _objectSpread$1z({}, bondCaptionMap[caption]);
2650
+ return _objectSpread$1A({}, bondCaptionMap[caption]);
2651
2651
  }
2652
2652
  function fromBondType(type, stereo) {
2653
2653
  for (var caption in bondCaptionMap) {
@@ -2671,7 +2671,7 @@ function fromSgroup(ssgroup) {
2671
2671
  fieldName: fieldName || getSdataDefault(sdataCustomSchema, 'fieldName'),
2672
2672
  fieldValue: fieldValue || getSdataDefault(sdataCustomSchema, 'fieldValue')
2673
2673
  } : {};
2674
- return _objectSpread$1z(_objectSpread$1z({
2674
+ return _objectSpread$1A(_objectSpread$1A({
2675
2675
  type: type
2676
2676
  }, ssgroup.attrs), sDataInitValue);
2677
2677
  }
@@ -2679,7 +2679,7 @@ function toSgroup(sgroup) {
2679
2679
  var type = sgroup.type,
2680
2680
  radiobuttons = sgroup.radiobuttons,
2681
2681
  props = _objectWithoutProperties(sgroup, _excluded2$7);
2682
- var attrs = _objectSpread$1z({}, props);
2682
+ var attrs = _objectSpread$1A({}, props);
2683
2683
  var absolute = 'absolute';
2684
2684
  var attached = 'attached';
2685
2685
  switch (radiobuttons) {
@@ -5916,8 +5916,8 @@ var errors = {
5916
5916
  codes: codes_1
5917
5917
  };
5918
5918
 
5919
- function ownKeys$1y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5920
- function _objectSpread$1y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1y(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5919
+ function ownKeys$1z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5920
+ function _objectSpread$1z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5921
5921
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5922
5922
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5923
5923
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
@@ -6345,7 +6345,7 @@ var AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {
6345
6345
  // the minimum depth. Otherwise those values would be too verbose compared
6346
6346
  // to the actual error message which contains a combined view of these two
6347
6347
  // input values.
6348
- return inspect(this, _objectSpread$1y(_objectSpread$1y({}, ctx), {}, {
6348
+ return inspect(this, _objectSpread$1z(_objectSpread$1z({}, ctx), {}, {
6349
6349
  customInspect: false,
6350
6350
  depth: 0
6351
6351
  }));
@@ -7869,8 +7869,8 @@ assert.strict.strict = assert.strict;
7869
7869
 
7870
7870
  var _excluded$C = ["rescale", "fragment"],
7871
7871
  _excluded2$6 = ["isPaste", "method"];
7872
- function ownKeys$1x(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7873
- function _objectSpread$1x(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1x(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1x(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7872
+ function ownKeys$1y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7873
+ function _objectSpread$1y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1y(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7874
7874
  function onAction(action) {
7875
7875
  if (action !== null && action !== void 0 && action.dialog) {
7876
7876
  return {
@@ -7926,7 +7926,7 @@ function load(struct, options) {
7926
7926
  errorHandler = editor.errorHandler;
7927
7927
  options = options || {};
7928
7928
  _options2 = options, isPaste = _options2.isPaste, method = _options2.method, otherOptions = _objectWithoutProperties(_options2, _excluded2$6);
7929
- otherOptions = _objectSpread$1x(_objectSpread$1x({}, serverSettings), otherOptions);
7929
+ otherOptions = _objectSpread$1y(_objectSpread$1y({}, serverSettings), otherOptions);
7930
7930
  dispatch(setAnalyzingFile(true));
7931
7931
  _context.prev = 9;
7932
7932
  _context.next = 12;
@@ -8070,8 +8070,8 @@ function openInfoModalWithCustomMessage(message) {
8070
8070
  };
8071
8071
  }
8072
8072
 
8073
- function ownKeys$1w(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8074
- function _objectSpread$1w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1w(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8073
+ function ownKeys$1x(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8074
+ function _objectSpread$1x(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1x(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1x(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8075
8075
  function checkServer() {
8076
8076
  return function (dispatch, getState) {
8077
8077
  var _getState = getState(),
@@ -8214,12 +8214,12 @@ function serverCall(editor, server, method, options, struct) {
8214
8214
  resetStereoFlagsPosition(currentStruct);
8215
8215
  }
8216
8216
  var ketSerializer = new KetSerializer();
8217
- var serializedStruct = ketSerializer.serialize(currentStruct, undefined, _objectSpread$1w(_objectSpread$1w({}, selection), {}, {
8217
+ var serializedStruct = ketSerializer.serialize(currentStruct, undefined, _objectSpread$1x(_objectSpread$1x({}, selection), {}, {
8218
8218
  atoms: selectedAtoms,
8219
8219
  bonds: selectedBonds
8220
8220
  }));
8221
8221
  return server.then(function () {
8222
- return server[method](_objectSpread$1w(_objectSpread$1w(_objectSpread$1w({
8222
+ return server[method](_objectSpread$1x(_objectSpread$1x(_objectSpread$1x({
8223
8223
  struct: serializedStruct
8224
8224
  }, method !== 'calculate' && method !== 'check' ? {
8225
8225
  output_format: ChemicalMimeType.KET
@@ -8473,7 +8473,7 @@ var zoom = {
8473
8473
 
8474
8474
  var openHelpLink = function openHelpLink() {
8475
8475
  var _window$open;
8476
- return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.12.0-dev.1\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
8476
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.12.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
8477
8477
  };
8478
8478
  var help = {
8479
8479
  help: {
@@ -8616,8 +8616,8 @@ var fullscreen = {
8616
8616
  }
8617
8617
  };
8618
8618
 
8619
- function ownKeys$1v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8620
- function _objectSpread$1v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1v(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8619
+ function ownKeys$1w(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8620
+ function _objectSpread$1w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1w(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8621
8621
  var disableIfViewOnly = function disableIfViewOnly(editor) {
8622
8622
  return !!editor.render.options.viewOnlyMode;
8623
8623
  };
@@ -8626,13 +8626,13 @@ var updateConfigItem = function updateConfigItem(item) {
8626
8626
  return item;
8627
8627
  } else if (typeof item.disabled === 'function') {
8628
8628
  var originalDisabled = item.disabled;
8629
- return _objectSpread$1v(_objectSpread$1v({}, item), {}, {
8629
+ return _objectSpread$1w(_objectSpread$1w({}, item), {}, {
8630
8630
  disabled: function disabled() {
8631
8631
  return disableIfViewOnly(arguments.length <= 0 ? undefined : arguments[0]) || originalDisabled.apply(void 0, arguments);
8632
8632
  }
8633
8633
  });
8634
8634
  } else {
8635
- return _objectSpread$1v(_objectSpread$1v({}, item), {}, {
8635
+ return _objectSpread$1w(_objectSpread$1w({}, item), {}, {
8636
8636
  disabled: disableIfViewOnly
8637
8637
  });
8638
8638
  }
@@ -8969,11 +8969,11 @@ var config = {
8969
8969
  }
8970
8970
  }
8971
8971
  };
8972
- var configWithNonViewOnlyActionsDisabled = Object.entries(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v({}, config), config$1), debugObj), tools), atoms), zoom), templates), functionalGroupsLib), fullscreen), help)).reduce(function (acc, _ref2) {
8972
+ var configWithNonViewOnlyActionsDisabled = Object.entries(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w({}, config), config$1), debugObj), tools), atoms), zoom), templates), functionalGroupsLib), fullscreen), help)).reduce(function (acc, _ref2) {
8973
8973
  var _ref3 = _slicedToArray$1(_ref2, 2),
8974
8974
  key = _ref3[0],
8975
8975
  item = _ref3[1];
8976
- return _objectSpread$1v(_objectSpread$1v({}, acc), {}, _defineProperty$1({}, key, updateConfigItem(item)));
8976
+ return _objectSpread$1w(_objectSpread$1w({}, acc), {}, _defineProperty$1({}, key, updateConfigItem(item)));
8977
8977
  }, {});
8978
8978
  function hasSelection(editor) {
8979
8979
  var selection = editor.selection();
@@ -13254,12 +13254,12 @@ var IconButtonBase = function IconButtonBase(_ref) {
13254
13254
  };
13255
13255
 
13256
13256
  var _excluded$B = ["iconName"];
13257
- function ownKeys$1u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13258
- function _objectSpread$1u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1u(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13257
+ function ownKeys$1v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13258
+ function _objectSpread$1v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1v(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13259
13259
  var IconButton = function IconButton(_ref) {
13260
13260
  var iconName = _ref.iconName,
13261
13261
  props = _objectWithoutProperties(_ref, _excluded$B);
13262
- return jsx(IconButtonBase, _objectSpread$1u(_objectSpread$1u({}, props), {}, {
13262
+ return jsx(IconButtonBase, _objectSpread$1v(_objectSpread$1v({}, props), {}, {
13263
13263
  children: jsx(StyledIcon$1, {
13264
13264
  name: iconName
13265
13265
  })
@@ -13267,12 +13267,12 @@ var IconButton = function IconButton(_ref) {
13267
13267
  };
13268
13268
 
13269
13269
  var _excluded$A = ["link"];
13270
- function ownKeys$1t(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13271
- function _objectSpread$1t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1t(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13270
+ function ownKeys$1u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13271
+ function _objectSpread$1u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1u(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13272
13272
  var IconButtonCustomIcon = function IconButtonCustomIcon(_ref) {
13273
13273
  var link = _ref.link,
13274
13274
  props = _objectWithoutProperties(_ref, _excluded$A);
13275
- return jsx(IconButtonBase, _objectSpread$1t(_objectSpread$1t({}, props), {}, {
13275
+ return jsx(IconButtonBase, _objectSpread$1u(_objectSpread$1u({}, props), {}, {
13276
13276
  children: jsx(StyledCustomIcon, {
13277
13277
  src: link,
13278
13278
  alt: props.title
@@ -13303,12 +13303,12 @@ var StyledButton = styled.button({
13303
13303
  });
13304
13304
 
13305
13305
  var _excluded$z = ["children"];
13306
- function ownKeys$1s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13307
- function _objectSpread$1s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1s(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13306
+ function ownKeys$1t(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13307
+ function _objectSpread$1t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1t(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13308
13308
  var Button = function Button(_ref) {
13309
13309
  var children = _ref.children,
13310
13310
  props = _objectWithoutProperties(_ref, _excluded$z);
13311
- return jsx(StyledButton, _objectSpread$1s(_objectSpread$1s({}, props), {}, {
13311
+ return jsx(StyledButton, _objectSpread$1t(_objectSpread$1t({}, props), {}, {
13312
13312
  children: children
13313
13313
  }));
13314
13314
  };
@@ -13376,10 +13376,10 @@ var StyledInput$1 = styled.input({
13376
13376
  }
13377
13377
  });
13378
13378
 
13379
- function ownKeys$1r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13380
- function _objectSpread$1r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1r(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13379
+ function ownKeys$1s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13380
+ function _objectSpread$1s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1s(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13381
13381
  var Input$2 = function Input(props) {
13382
- return jsx(StyledInput$1, _objectSpread$1r({}, props));
13382
+ return jsx(StyledInput$1, _objectSpread$1s({}, props));
13383
13383
  };
13384
13384
 
13385
13385
  var Container$1 = styled.div({
@@ -13475,8 +13475,8 @@ var InfoModal$1 = function InfoModal(_ref) {
13475
13475
  var styles$r = {"button-common-styles":"Dialog-module_button-common-styles__Xehyp","scrollbar":"Dialog-module_scrollbar__L8hUr","dialog":"Dialog-module_dialog__hiRBI","hide":"Dialog-module_hide__bbkvB","header":"Dialog-module_header__8QGek","btnContainer":"Dialog-module_btnContainer__ulrFM","buttonTop":"Dialog-module_buttonTop__91ha8","closeButton":"Dialog-module_closeButton__XyaAE","footer":"Dialog-module_footer__PliV0","ok":"Dialog-module_ok__BUQ6q","cancel":"Dialog-module_cancel__8d83c","withDivider":"Dialog-module_withDivider__YBKiQ","body":"Dialog-module_body__EWh4H","withMargin":"Dialog-module_withMargin__-zVS4"};
13476
13476
 
13477
13477
  var _excluded$y = ["children", "title", "params", "result", "valid", "buttons", "headerContent", "footerContent", "className", "buttonsNameMap", "needMargin", "withDivider", "focusable", "primaryButtons"];
13478
- function ownKeys$1q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13479
- function _objectSpread$1q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1q(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13478
+ function ownKeys$1r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13479
+ function _objectSpread$1r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1r(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13480
13480
  var Dialog = function Dialog(props) {
13481
13481
  var children = props.children,
13482
13482
  title = props.title,
@@ -13539,7 +13539,7 @@ var Dialog = function Dialog(props) {
13539
13539
  }
13540
13540
  };
13541
13541
  return (
13542
- jsxs("div", _objectSpread$1q(_objectSpread$1q({
13542
+ jsxs("div", _objectSpread$1r(_objectSpread$1r({
13543
13543
  ref: dialogRef,
13544
13544
  role: "dialog",
13545
13545
  "data-testid": 'info-modal-window',
@@ -14112,8 +14112,8 @@ function usePortalStyle(_ref) {
14112
14112
  return [portalStyle];
14113
14113
  }
14114
14114
 
14115
- function ownKeys$1p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14116
- function _objectSpread$1p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1p(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14115
+ function ownKeys$1q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14116
+ function _objectSpread$1q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1q(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14117
14117
  var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
14118
14118
  var id = props.id,
14119
14119
  options = props.options,
@@ -14188,7 +14188,7 @@ var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
14188
14188
  ref: ref,
14189
14189
  className: classes$N.root,
14190
14190
  "data-testid": "".concat(id, "-drop-down-button"),
14191
- children: [jsx(ActionButton, _objectSpread$1p(_objectSpread$1p({}, actionButtonProps), {}, {
14191
+ children: [jsx(ActionButton, _objectSpread$1q(_objectSpread$1q({}, actionButtonProps), {}, {
14192
14192
  className: className,
14193
14193
  name: iconName,
14194
14194
  action: configWithNonViewOnlyActionsDisabled[currentId],
@@ -14297,8 +14297,8 @@ var TemplatesList = function TemplatesList(props) {
14297
14297
  var classes$M = {"button-common-styles":"BottomToolbar-module_button-common-styles__PbtE9","scrollbar":"BottomToolbar-module_scrollbar__i1f8P","group":"BottomToolbar-module_group__b-pGt","root":"BottomToolbar-module_root__kjkSm"};
14298
14298
 
14299
14299
  var _excluded$x = ["className"];
14300
- function ownKeys$1o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14301
- function _objectSpread$1o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1o(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14300
+ function ownKeys$1p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14301
+ function _objectSpread$1p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1p(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14302
14302
  var Group$2 = function Group(_ref) {
14303
14303
  var children = _ref.children,
14304
14304
  className = _ref.className;
@@ -14314,22 +14314,22 @@ var BottomToolbar = function BottomToolbar(props) {
14314
14314
  "data-testid": "bottom-toolbar",
14315
14315
  className: clsx(classes$M.root, className),
14316
14316
  children: jsxs(Group$2, {
14317
- children: [jsx(TemplatesList, _objectSpread$1o({}, rest)), jsx(ToolbarGroupItem, _objectSpread$1o({
14317
+ children: [jsx(TemplatesList, _objectSpread$1p({}, rest)), jsx(ToolbarGroupItem, _objectSpread$1p({
14318
14318
  id: "template-lib"
14319
14319
  }, rest))]
14320
14320
  })
14321
14321
  });
14322
14322
  };
14323
14323
 
14324
- function ownKeys$1n(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14325
- function _objectSpread$1n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1n(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14324
+ function ownKeys$1o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14325
+ function _objectSpread$1o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1o(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14326
14326
  function openDialog(dispatch, dialogName, props) {
14327
14327
  return new Promise(function (resolve, reject) {
14328
14328
  dispatch({
14329
14329
  type: 'MODAL_OPEN',
14330
14330
  data: {
14331
14331
  name: dialogName,
14332
- prop: _objectSpread$1n(_objectSpread$1n({}, props), {}, {
14332
+ prop: _objectSpread$1o(_objectSpread$1o({}, props), {}, {
14333
14333
  onResult: resolve,
14334
14334
  onCancel: reject
14335
14335
  })
@@ -14348,14 +14348,14 @@ function modalReducer() {
14348
14348
  return null;
14349
14349
  }
14350
14350
  var formState = formReducer(state.form, action);
14351
- return _objectSpread$1n(_objectSpread$1n({}, state), {}, {
14351
+ return _objectSpread$1o(_objectSpread$1o({}, state), {}, {
14352
14352
  form: formState
14353
14353
  });
14354
14354
  }
14355
14355
  switch (type) {
14356
14356
  case 'MODAL_CLOSE':
14357
14357
  if (state !== null && state !== void 0 && state.parentModal) {
14358
- state.parentModal.prop = _objectSpread$1n(_objectSpread$1n(_objectSpread$1n({}, state.parentModal.prop), state.parentModal.form.result), {}, {
14358
+ state.parentModal.prop = _objectSpread$1o(_objectSpread$1o(_objectSpread$1o({}, state.parentModal.prop), state.parentModal.form.result), {}, {
14359
14359
  isRestoredModal: true
14360
14360
  });
14361
14361
  return state.parentModal;
@@ -14373,8 +14373,8 @@ function modalReducer() {
14373
14373
  }
14374
14374
  }
14375
14375
 
14376
- function ownKeys$1m(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14377
- function _objectSpread$1m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1m(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14376
+ function ownKeys$1n(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14377
+ function _objectSpread$1n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1n(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14378
14378
  function selectTmpl(tmpl) {
14379
14379
  return {
14380
14380
  type: 'TMPL_SELECT',
@@ -14442,7 +14442,7 @@ function editTmpl(tmpl) {
14442
14442
  tmpl: tmpl
14443
14443
  }).then(function (formData) {
14444
14444
  tmpl.struct.name = formData ? formData.name.trim() : tmpl.struct.name;
14445
- tmpl.props = formData ? _objectSpread$1m(_objectSpread$1m({}, tmpl.props || {}), formData.attach || {}) : tmpl.props;
14445
+ tmpl.props = formData ? _objectSpread$1n(_objectSpread$1n({}, tmpl.props || {}), formData.attach || {}) : tmpl.props;
14446
14446
  if (tmpl.props.group === 'User Templates') updateLocalStore(getState().templates.lib);
14447
14447
  }, function () {
14448
14448
  return null;
@@ -14482,7 +14482,7 @@ function saveUserTmpl(struct) {
14482
14482
  var name = _ref.name,
14483
14483
  attach = _ref.attach;
14484
14484
  tmpl.struct.name = name.trim();
14485
- tmpl.props = _objectSpread$1m(_objectSpread$1m({}, attach), {}, {
14485
+ tmpl.props = _objectSpread$1n(_objectSpread$1n({}, attach), {}, {
14486
14486
  group: 'User Templates'
14487
14487
  });
14488
14488
  var lib = getState().templates.lib.concat(tmpl);
@@ -14500,7 +14500,7 @@ function updateLocalStore(lib) {
14500
14500
  }).map(function (item) {
14501
14501
  return {
14502
14502
  struct: ketSerializer.serialize(item.struct),
14503
- props: _objectSpread$1m({}, omit(['group'], item.props) || {})
14503
+ props: _objectSpread$1n({}, omit(['group'], item.props) || {})
14504
14504
  };
14505
14505
  });
14506
14506
  storage.setItem('ketcher-tmpls', userLib);
@@ -14519,19 +14519,19 @@ var attachActions = ['INIT_ATTACH', 'SET_ATTACH_POINTS', 'SET_TMPL_NAME'];
14519
14519
  function templatesReducer() {
14520
14520
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initTmplsState;
14521
14521
  var action = arguments.length > 1 ? arguments[1] : undefined;
14522
- if (tmplActions.includes(action.type)) return _objectSpread$1m(_objectSpread$1m({}, state), action.data || {});
14522
+ if (tmplActions.includes(action.type)) return _objectSpread$1n(_objectSpread$1n({}, state), action.data || {});
14523
14523
  if (attachActions.includes(action.type)) {
14524
- var attach = _objectSpread$1m(_objectSpread$1m({}, state.attach), action.data || {});
14525
- return _objectSpread$1m(_objectSpread$1m({}, state), {}, {
14524
+ var attach = _objectSpread$1n(_objectSpread$1n({}, state.attach), action.data || {});
14525
+ return _objectSpread$1n(_objectSpread$1n({}, state), {}, {
14526
14526
  attach: attach
14527
14527
  });
14528
14528
  }
14529
14529
  if (action.type === 'TMPL_DELETE') {
14530
- var currentState = _objectSpread$1m({}, state);
14530
+ var currentState = _objectSpread$1n({}, state);
14531
14531
  var lib = currentState.lib.filter(function (value) {
14532
14532
  return value !== action.data.tmpl;
14533
14533
  });
14534
- return _objectSpread$1m(_objectSpread$1m({}, currentState), {}, {
14534
+ return _objectSpread$1n(_objectSpread$1n({}, currentState), {}, {
14535
14535
  lib: lib
14536
14536
  });
14537
14537
  }
@@ -14593,8 +14593,8 @@ function abbreviationLookupReducer() {
14593
14593
  }
14594
14594
  }
14595
14595
 
14596
- function ownKeys$1l(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14597
- function _objectSpread$1l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1l(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14596
+ function ownKeys$1m(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14597
+ function _objectSpread$1m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1m(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14598
14598
  var initialState$3 = {
14599
14599
  cursorPosition: {
14600
14600
  x: 0,
@@ -14617,7 +14617,7 @@ function commonReducer() {
14617
14617
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$3;
14618
14618
  var action = arguments.length > 1 ? arguments[1] : undefined;
14619
14619
  if (action.type === COMMON_ACTIONS.COMMON_UPDATE_CURSOR_POSITION) {
14620
- return _objectSpread$1l(_objectSpread$1l({}, state), {}, {
14620
+ return _objectSpread$1m(_objectSpread$1m({}, state), {}, {
14621
14621
  cursorPosition: {
14622
14622
  x: action.data.x,
14623
14623
  y: action.data.y
@@ -14628,8 +14628,8 @@ function commonReducer() {
14628
14628
  }
14629
14629
 
14630
14630
  var _excluded$w = ["type", "action"];
14631
- function ownKeys$1k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14632
- function _objectSpread$1k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1k(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14631
+ function ownKeys$1l(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14632
+ function _objectSpread$1l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1l(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14633
14633
  function execute(activeTool, _ref) {
14634
14634
  var action = _ref.action,
14635
14635
  editor = _ref.editor,
@@ -14689,7 +14689,7 @@ function actionStateReducer () {
14689
14689
  case 'ACTION':
14690
14690
  {
14691
14691
  var _activeTool;
14692
- activeTool = execute(state === null || state === void 0 ? void 0 : state.activeTool, _objectSpread$1k(_objectSpread$1k({}, params), {}, {
14692
+ activeTool = execute(state === null || state === void 0 ? void 0 : state.activeTool, _objectSpread$1l(_objectSpread$1l({}, params), {}, {
14693
14693
  action: action
14694
14694
  }));
14695
14695
  if (((_activeTool = activeTool) === null || _activeTool === void 0 ? void 0 : _activeTool.tool) === 'select') {
@@ -14985,8 +14985,8 @@ function setFunctionalGroupsTooltip(_ref) {
14985
14985
  showTooltip(editor, infoPanelData);
14986
14986
  }
14987
14987
 
14988
- function ownKeys$1j(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14989
- function _objectSpread$1j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1j(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14988
+ function ownKeys$1k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14989
+ function _objectSpread$1k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1k(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14990
14990
  var initialState$2 = {
14991
14991
  lib: [],
14992
14992
  functionalGroupInfo: null,
@@ -14994,14 +14994,14 @@ var initialState$2 = {
14994
14994
  };
14995
14995
  var functionalGroupsReducer = function functionalGroupsReducer() {
14996
14996
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$2;
14997
- var _ref = arguments.length > 1 ? arguments[1] : undefined,
14998
- type = _ref.type,
14999
- payload = _ref.payload;
14997
+ var action = arguments.length > 1 ? arguments[1] : undefined;
14998
+ var type = action.type,
14999
+ payload = action.payload;
15000
15000
  switch (type) {
15001
15001
  case 'FG_INIT':
15002
- return _objectSpread$1j(_objectSpread$1j({}, state), payload);
15002
+ return _objectSpread$1k(_objectSpread$1k({}, state), payload);
15003
15003
  case 'FG_HIGHLIGHT':
15004
- return _objectSpread$1j(_objectSpread$1j({}, state), {}, {
15004
+ return _objectSpread$1k(_objectSpread$1k({}, state), {}, {
15005
15005
  functionalGroupInfo: payload
15006
15006
  });
15007
15007
  default:
@@ -15028,7 +15028,7 @@ function notDebouncedHighlightFG(dispatch, group) {
15028
15028
  var highlightFG = memoizedDebounce(notDebouncedHighlightFG, TOOLTIP_DELAY / 3, [0]);
15029
15029
  function initFGTemplates() {
15030
15030
  return function () {
15031
- var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch) {
15031
+ var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch) {
15032
15032
  var provider, sdfSerializer, templates, functionalGroups;
15033
15033
  return _regeneratorRuntime.wrap(function _callee$(_context) {
15034
15034
  while (1) switch (_context.prev = _context.next) {
@@ -15036,8 +15036,8 @@ function initFGTemplates() {
15036
15036
  provider = FunctionalGroupsProvider.getInstance();
15037
15037
  sdfSerializer = new SdfSerializer();
15038
15038
  templates = sdfSerializer.deserialize(templatesRawData$1);
15039
- functionalGroups = templates.reduce(function (acc, _ref3) {
15040
- var struct = _ref3.struct;
15039
+ functionalGroups = templates.reduce(function (acc, _ref2) {
15040
+ var struct = _ref2.struct;
15041
15041
  return [].concat(_toConsumableArray(acc), [struct]);
15042
15042
  }, []);
15043
15043
  provider.setFunctionalGroupsList(functionalGroups);
@@ -15052,26 +15052,26 @@ function initFGTemplates() {
15052
15052
  }, _callee);
15053
15053
  }));
15054
15054
  return function (_x) {
15055
- return _ref2.apply(this, arguments);
15055
+ return _ref.apply(this, arguments);
15056
15056
  };
15057
15057
  }();
15058
15058
  }
15059
15059
 
15060
15060
  var templatesRawData = "acetic acid\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 acetic acid\nM END\n> <name>\nacetic acid\n\n> <abbreviation>\nacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetic anhydride\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1123 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1124 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4114 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 acetic anhydride\nM END\n> <name>\nacetic anhydride\n\n> <abbreviation>\nacetic anhydride\n\n> <group>\nSalts and Solvents\n\n$$$$\nformic acid\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 formic acid\nM END\n> <name>\nformic acid\n\n> <abbreviation>\nformic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethane sulphonic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 -0.9857 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.0143 0.5143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.9857 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 2 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methane sulphonic acid\nM END\n> <name>\nmethane sulphonic acid\n\n> <abbreviation>\nmethane sulphonic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\npropionic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0838 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 propionic acid\nM END\n> <name>\npropionic acid\n\n> <abbreviation>\npropionic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-propanediol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n -3.3587 -3.5057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0597 -2.7557 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0596 -1.2558 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7606 -3.5057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5384 -2.7557 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1,2-propanediol\nM END\n> <name>\n1,2-propanediol\n\n> <abbreviation>\n1,2-propanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,3-propanediol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 15.0779 -8.5508 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.3769 -9.3007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.6759 -8.5507 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 18.9750 -9.3007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 20.2740 -8.5507 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1,3-propanediol\nM END\n> <name>\n1,3-propanediol\n\n> <abbreviation>\n1,3-propanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,4-butanediol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8481 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1472 2.0491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,4-butanediol\nM END\n> <name>\n1,4-butanediol\n\n> <abbreviation>\n1,4-butanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1-butanol\nM END\n> <name>\n1-butanol\n\n> <abbreviation>\n1-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1-propanol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 1-propanol\nM END\n> <name>\n1-propanol\n\n> <abbreviation>\n1-propanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1714 2.7286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 2-butanol\nM END\n> <name>\n2-butanol\n\n> <abbreviation>\n2-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-ethylhexanol\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 10.7337 0.4167 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1355 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8365 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5375 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1355 1.9167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4345 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2384 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4345 2.6667 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9394 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 6 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 5 1 0 0 0 0\n 2 6 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 7 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 2-ethylhexanol\nM END\n> <name>\n2-ethylhexanol\n\n> <abbreviation>\n2-ethylhexanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisopropanol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1714 2.7286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 2-propanol\nM END\n> <name>\nisopropanol\n\n> <abbreviation>\n2-propanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methoxyethanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 2-methoxyethanol\nM END\n> <name>\n2-methoxyethanol\n\n> <abbreviation>\n2-methoxyethanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-pentanol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -5.1971 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.8980 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5991 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.0009 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3000 -1.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-pentanol\nM END\n> <name>\n2-pentanol\n\n> <abbreviation>\n2-pentanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nbenzyl alcohol\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 benzyl alcohol\nM END\n> <name>\nbenzyl alcohol\n\n> <abbreviation>\nbenzyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexanol\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 4.2990 2.0175 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 0.5175 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.2325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.2325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.7325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.7325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -2.4825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclohexanol\nM END\n> <name>\ncyclohexanol\n\n> <abbreviation>\ncyclohexanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nethanol\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 ethyl alcohol\nM END\n> <name>\nethanol\n\n> <abbreviation>\nethyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nethylene glycol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7256 0.4786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 ethane-1,2-diol\nM END\n> <name>\nethylene glycol\n\n> <abbreviation>\nethane-1,2-diol\n\n> <group>\nSalts and Solvents\n\n$$$$\nglycerol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.9915 2.6580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2906 1.9080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5896 2.6580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5897 4.1580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8887 1.9080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1878 2.6580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 glycerol\nM END\n> <name>\nglycerol\n\n> <abbreviation>\nglycerol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisoamyl alcohol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 -1.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 isoamyl alcohol\nM END\n> <name>\nisoamyl alcohol\n\n> <abbreviation>\nisoamyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisobutanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 2.7286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 isobutanol\nM END\n> <name>\nisobutanol\n\n> <abbreviation>\nisobutanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethanol\n -INDIGO-11302219142D\n\n 2 1 0 0 0 0 0 0 0 0999 V2000\n 0.0709 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5710 0.8536 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 methyl alcohol\nM END\n> <name>\nmethanol\n\n> <abbreviation>\nmethyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.0709 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5710 0.8536 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.4291 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0709 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0709 -0.6464 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 t-butanol\nM END\n> <name>\nt-butanol\n\n> <abbreviation>\nt-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nwater\n -INDIGO-11302219142D\n\n 1 0 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.9500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 1 1\nM SMT 1 water\nM END\n> <name>\nwater\n\n> <abbreviation>\nwater\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon dioxide\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n -1.2000 0.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7000 0.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.3000 0.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 carbon dioxide\nM END\n> <name>\ncarbon dioxide\n\n> <abbreviation>\ncarbon dioxide\n\n> <group>\nSalts and Solvents\n\n$$$$\nbenzene\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 benzene\nM END\n> <name>\nbenzene\n\n> <abbreviation>\nbenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\ncumene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 4.2989 1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 -2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 2 5 2 0 0 0 0\n 2 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 8 2 0 0 0 0\n 7 9 2 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 cumene\nM END\n> <name>\ncumene\n\n> <abbreviation>\ncumene\n\n> <group>\nSalts and Solvents\n\n$$$$\nmesitylene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 1.2991 3.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8971 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 2 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 7 9 2 0 0 0 0\n 2 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 mesitylene\nM END\n> <name>\nmesitylene\n\n> <abbreviation>\nmesitylene\n\n> <group>\nSalts and Solvents\n\n$$$$\ntoluene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 toluene\nM END\n> <name>\ntoluene\n\n> <abbreviation>\ntoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\nn,n-dimethylaniline\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 4.2989 1.8750 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 -2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 5 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 3 7 1 0 0 0 0\n 4 8 2 0 0 0 0\n 7 9 2 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 N,N-dimethylaniline\nM END\n> <name>\nn,n-dimethylaniline\n\n> <abbreviation>\nN,N-dimethylaniline\n\n> <group>\nSalts and Solvents\n\n$$$$\npyridine\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 pyridine\nM END\n> <name>\npyridine\n\n> <abbreviation>\npyridine\n\n> <group>\nSalts and Solvents\n\n$$$$\ntriethylamine\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2010 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.0980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 3 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 triethylamine\nM END\n> <name>\ntriethylamine\n\n> <abbreviation>\ntriethylamine\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetonitrile\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 3 0 0 0 0\n 1 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 acetonitrile\nM END\n> <name>\nacetonitrile\n\n> <abbreviation>\nacetonitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl acetamide\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2009 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 dimethyl acetamide\nM END\n> <name>\ndimethyl acetamide\n\n> <abbreviation>\ndimethyl acetamide\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl formamide\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 -0.7500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2009 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 DMF\nM END\n> <name>\ndimethyl formamide\n\n> <abbreviation>\nDMF\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl sulfoxide\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2010 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 DMSO\nM END\n> <name>\ndimethyl sulfoxide\n\n> <abbreviation>\nDMSO\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethylpropylene urea\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 3.4378 2.0544 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1388 1.3044 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1387 -0.1955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 -0.9455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4593 -0.1956 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4593 1.3044 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.7584 2.0545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 2.0544 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 3.5545 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\n 2 8 1 0 0 0 0\n 8 9 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 dimethylpropylene urea\nM END\n> <name>\ndimethylpropylene urea\n\n> <abbreviation>\ndimethylpropylene urea\n\n> <group>\nSalts and Solvents\n\n$$$$\nformamide\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.2485 -6.0342 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5476 -5.2841 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5476 -3.7842 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8467 -6.0341 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 formamide\nM END\n> <name>\nformamide\n\n> <abbreviation>\nformamide\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-methyl-2-pyrrolidone\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7500 3.8100 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3860 1.8953 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 1 6 1 0 0 0 0\n 4 7 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 N-methyl-2-pyrrolidone\nM END\n> <name>\nn-methyl-2-pyrrolidone\n\n> <abbreviation>\nN-methyl-2-pyrrolidone\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-methylformamide\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1009 0.5500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4000 1.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4000 2.8000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6990 0.5500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1981 1.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 N-methylformamide\nM END\n> <name>\nn-methylformamide\n\n> <abbreviation>\nN-methylformamide\n\n> <group>\nSalts and Solvents\n\n$$$$\npropane nitrile\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 6.8971 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 4 3 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 propane nitrile\nM END\n> <name>\npropane nitrile\n\n> <abbreviation>\npropane nitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\nsulfolane\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 3.6090 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.0673 3.5678 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 1 6 2 0 0 0 0\n 1 7 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 sulfolane\nM END\n> <name>\nsulfolane\n\n> <abbreviation>\nsulfolane\n\n> <group>\nSalts and Solvents\n\n$$$$\namyl acetate\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 5.8307 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.1297 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5316 -0.3786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8307 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2326 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9335 -0.3785 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.6345 0.3715 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.6646 -0.3785 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9636 0.3715 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 amyl acetate\nM END\n> <name>\namyl acetate\n\n> <abbreviation>\namyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nbutyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 7.5466 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8456 2.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9486 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6495 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.2476 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3505 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8456 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.1446 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 7 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 butyl acetate\nM END\n> <name>\nbutyl acetate\n\n> <abbreviation>\nbutyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl carbonate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7562 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0552 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 dimethyl carbonate\nM END\n> <name>\ndimethyl carbonate\n\n> <abbreviation>\ndimethyl carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl acetate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7079 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7079 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0070 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4089 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1099 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1891 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethyl acetate\nM END\n> <name>\nethyl acetate\n\n> <abbreviation>\nethyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl formate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 5.8087 -2.6404 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8087 -1.1506 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5094 -3.4018 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2098 -2.6486 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9103 -3.4018 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.1078 -3.3904 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 2 0 0 0 0\n 3 1 1 0 0 0 0\n 4 3 1 0 0 0 0\n 5 4 1 0 0 0 0\n 1 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethyl formate\nM END\n> <name>\nethyl formate\n\n> <abbreviation>\nethyl formate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl lactate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 3.5491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1471 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 -0.2009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 ethyl lactate\nM END\n> <name>\nethyl lactate\n\n> <abbreviation>\nethyl lactate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl propionate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 3.5491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1471 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 ethyl propionate\nM END\n> <name>\nethyl propionate\n\n> <abbreviation>\nethyl propionate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethylene carbonate\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 1.0323 3.5259 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0323 2.0259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2458 1.1443 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7823 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2824 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1813 1.1443 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethylene carbonate\nM END\n> <name>\nethylene carbonate\n\n> <abbreviation>\nethylene carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nisobutyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 4.4399 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4399 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7390 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -2.5929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7561 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 isobutyl acetate\nM END\n> <name>\nisobutyl acetate\n\n> <abbreviation>\nisobutyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nisopropyl acetate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4400 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7561 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 isopropyl acetate\nM END\n> <name>\nisopropyl acetate\n\n> <abbreviation>\nisopropyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl acetate\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7562 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methyl acetate\nM END\n> <name>\nmethyl acetate\n\n> <abbreviation>\nmethyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl formate\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 1.5821 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5821 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8812 -1.0929 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2831 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.0159 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methyl formate\nM END\n> <name>\nmethyl formate\n\n> <abbreviation>\nmethyl formate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl lactate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 7.6971 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3980 -2.8571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0991 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0991 -0.6071 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8000 -2.8571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5009 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8000 -4.3571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methyl lactate\nM END\n> <name>\nmethyl lactate\n\n> <abbreviation>\nmethyl lactate\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-octylacetate\n -INDIGO-11302219142D\n\n 12 11 0 0 0 0 0 0 0 0999 V2000\n 7.7009 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0000 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.2991 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.5980 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.8971 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1962 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.4953 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7942 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 18.0933 4.9462 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 19.3924 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 20.6913 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 19.3924 7.1962 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 1 0 0 0 0\n 10 12 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 4 9 10 11 12\nM SMT 1 n-octylacetate\nM END\n> <name>\nn-octylacetate\n\n> <abbreviation>\nn-octylacetate\n\n> <group>\nSalts and Solvents\n\n$$$$\npropyl acetate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 6.3403 -0.1607 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6395 2.0893 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7423 -0.1607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0413 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4433 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6395 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.9385 -0.1607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 4 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 6 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 propyl acetate\nM END\n> <name>\npropyl acetate\n\n> <abbreviation>\npropyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\npropylene carbonate\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.5661 -1.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5661 -0.3746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.6474 0.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1839 1.9338 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3160 1.9338 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1978 3.1472 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7797 0.5071 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 5 7 1 0 0 0 0\n 2 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 propylene carbonate\nM END\n> <name>\npropylene carbonate\n\n> <abbreviation>\npropylene carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 6.0125 -7.4927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.7134 -6.7427 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.7134 -5.2428 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4144 -7.4928 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1153 -6.7428 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8163 -5.9928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3653 -8.0418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8653 -5.4437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 5 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 t-butyl acetate\nM END\n> <name>\nt-butyl acetate\n\n> <abbreviation>\nt-butyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dimethoxyethane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -0.0857 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2133 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5124 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3848 -0.5786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8114 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.6838 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,2-dimethoxyethane\nM END\n> <name>\n1,2-dimethoxyethane\n\n> <abbreviation>\n1,2-dimethoxyethane\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,4-dioxane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,4-dioxane\nM END\n> <name>\n1,4-dioxane\n\n> <abbreviation>\n1,4-dioxane\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methyl tetrahydrofuran\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3860 1.8953 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-methyl tetrahydrofuran\nM END\n> <name>\n2-methyl tetrahydrofuran\n\n> <abbreviation>\n2-methyl tetrahydrofuran\n\n> <group>\nSalts and Solvents\n\n$$$$\nanisole\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 anisole\nM END\n> <name>\nanisole\n\n> <abbreviation>\nanisole\n\n> <group>\nSalts and Solvents\n\n$$$$\nbutyl carbitol\n -INDIGO-11302219142D\n\n 11 10 0 0 0 0 0 0 0 0999 V2000\n -0.2227 -3.0342 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0742 -3.7829 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3750 -3.0387 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6719 -3.7875 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9782 -3.0336 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.2751 -3.7823 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.5758 -3.0382 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8728 -3.7870 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 10.1792 -3.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.4761 -3.7817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7768 -3.0376 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 butyl carbitol\nM END\n> <name>\nbutyl carbitol\n\n> <abbreviation>\nbutyl carbitol\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclopentyl methyl ether\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5053 1.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3855 0.7467 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4886 -0.4632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9950 -0.6239 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 5 4 1 0 0 0 0\n 4 2 1 0 0 0 0\n 2 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclopentyl methyl ether\nM END\n> <name>\ncyclopentyl methyl ether\n\n> <abbreviation>\ncyclopentyl methyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndibutyl ether\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 5.4509 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7500 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.0491 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.3480 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.6470 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 11.9461 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 13.2452 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5441 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8432 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 dibutyl ether\nM END\n> <name>\ndibutyl ether\n\n> <abbreviation>\ndibutyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiethyl ether\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5019 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.6980 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 ether\nM END\n> <name>\ndiethyl ether\n\n> <abbreviation>\nether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiethylene glycol\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 7.7875 -1.4835 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4896 -2.2328 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1892 -1.4790 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8854 -2.2317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5884 -1.4840 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2906 -2.2333 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0845 -2.2313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 diethylene glycol\nM END\n> <name>\ndiethylene glycol\n\n> <abbreviation>\ndiethylene glycol\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiglyme\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n -0.0857 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2133 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5124 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3848 -0.5786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8114 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.6838 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.9828 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -5.2818 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -6.5809 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 diglyme\nM END\n> <name>\ndiethylene glycol dimethyl ether\n\n> <abbreviation>\ndiglyme\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiisopropyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 5.5971 2.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2980 3.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2980 5.1000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 2.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7000 3.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4009 2.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7000 5.1000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 diisopropyl ether\nM END\n> <name>\ndiisopropyl ether\n\n> <abbreviation>\ndiisopropyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl ether\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 4.2989 -0.3750 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5980 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9999 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 dimethyl ether\nM END\n> <name>\ndimethyl ether\n\n> <abbreviation>\ndimethyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiphenyl ether\n -INDIGO-11302219142D\n\n 13 14 0 0 0 0 0 0 0 0999 V2000\n 7.1190 1.0305 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8200 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8200 -1.2196 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5210 -1.9696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2219 -1.2195 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2219 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5209 1.0305 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.4181 0.2804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.7171 1.0304 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.0161 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.0161 -1.2194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.7170 -1.9694 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.4180 -1.2195 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 2 7 1 0 0 0 0\n 1 8 1 0 0 0 0\n 8 9 2 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 2 0 0 0 0\n 11 12 1 0 0 0 0\n 12 13 2 0 0 0 0\n 8 13 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 5 9 10 11 12 13\nM SMT 1 diphenyl ether\nM END\n> <name>\ndiphenyl ether\n\n> <abbreviation>\ndiphenyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nethoxybenzene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 0.0000 6.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 4.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 3.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 2 0 0 0 0\n 4 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 ethoxybenzene\nM END\n> <name>\nethoxybenzene\n\n> <abbreviation>\nethoxybenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl t-butyl ether\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5019 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0510 2.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5510 -0.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 methyl t-butyl ether\nM END\n> <name>\nmethyl t-butyl ether\n\n> <abbreviation>\nmethyl t-butyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-amyl methyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 6.8972 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8482 1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3482 -1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 3 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 t-amyl methyl ether\nM END\n> <name>\nt-amyl methyl ether\n\n> <abbreviation>\nt-amyl methyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butylethyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 2.3688 -7.1130 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0698 -7.8630 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2293 -7.1129 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5283 -7.8629 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8274 -8.6129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.2783 -6.5639 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7783 -9.1620 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 4 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 t-butylethyl ether\nM END\n> <name>\nt-butylethyl ether\n\n> <abbreviation>\nt-butylethyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ntetrahydrofuran\n -INDIGO-11302219142D\n\n 5 5 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 THF\nM END\n> <name>\ntetrahydrofuran\n\n> <abbreviation>\nTHF\n\n> <group>\nSalts and Solvents\n\n$$$$\ntriethylene glycol\n -INDIGO-11302219142D\n\n 10 9 0 0 0 0 0 0 0 0999 V2000\n 4.1520 3.8971 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4509 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7500 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.0491 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 9.3480 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.6471 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.9462 3.8971 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 13.2453 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5442 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8433 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 triethylene glycol\nM END\n> <name>\ntriethylene glycol\n\n> <abbreviation>\ntriethylene glycol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2,4-trichlorobenzene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 2.2506 -3.8983 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 -2.5989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2506 -1.2994 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7485 -1.2994 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -2.5989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7485 -3.8983 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -5.1978 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 6 2 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 9 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 8 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 1,2,4-trichlorobenzene\nM END\n> <name>\n1,2,4-trichlorobenzene\n\n> <abbreviation>\n1,2,4-trichlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dichlorobenzene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 0.9558 -0.8403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4581 -0.8408 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2048 0.4582 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4555 1.7560 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9571 1.7589 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2065 0.4576 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2078 3.0567 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2060 3.0573 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 6 2 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 8 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 1,2-dichlorobenzene\nM END\n> <name>\n1,2-dichlorobenzene\n\n> <abbreviation>\n1,2-dichlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dichloroethane\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n -0.2571 0.8286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0419 1.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3409 0.8286 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5562 1.5786 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 DCE\nM END\n> <name>\n1,2-dichloroethane\n\n> <abbreviation>\nDCE\n\n> <group>\nSalts and Solvents\n\n$$$$\n2,2,2-trifluoroethanol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.3661 -2.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 1.5000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4330 0.0000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5670 0.0000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 3 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2,2,2-trifluoroethanol\nM END\n> <name>\n2,2,2-trifluoroethanol\n\n> <abbreviation>\n2,2,2-trifluoroethanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2,3,4-trifluorotoluene\n -INDIGO-11302219142D\n\n 10 10 0 0 0 0 0 0 0 0999 V2000\n 4.0898 1.7173 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0899 1.7173 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5899 -0.8808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0898 -0.8807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8398 0.4183 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8399 -2.1798 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3399 0.4182 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5898 -0.8807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3399 -2.1798 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0899 -0.8808 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0 0\n 2 7 1 0 0 0 0\n 3 10 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 4 8 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 9 2 0 0 0 0\n 7 10 2 0 0 0 0\n 9 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 2,3,4-trifluorotoluene\nM END\n> <name>\n2,3,4-trifluorotoluene\n\n> <abbreviation>\n2,3,4-trifluorotoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon tetrachloride\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -1.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 carbon tetrachloride\nM END\n> <name>\ncarbon tetrachloride\n\n> <abbreviation>\ncarbon tetrachloride\n\n> <group>\nSalts and Solvents\n\n$$$$\nchloroacetic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 9.0626 -7.0246 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0626 -5.5268 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 10.3632 -7.7759 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4658 -7.0246 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.7666 -7.7759 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 2 0 0 0 0\n 3 1 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 chloroacetic acid\nM END\n> <name>\nchloroacetic acid\n\n> <abbreviation>\nchloroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nchlorobenzene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 chlorobenzene\nM END\n> <name>\nchlorobenzene\n\n> <abbreviation>\nchlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nchloroform\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -1.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 0.2500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 chloroform\nM END\n> <name>\nchloroform\n\n> <abbreviation>\nchloroform\n\n> <group>\nSalts and Solvents\n\n$$$$\ndichloromethane\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8500 1.5490 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3500 1.5490 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 DCM\nM END\n> <name>\ndichloromethane\n\n> <abbreviation>\nDCM\n\n> <group>\nSalts and Solvents\n\n$$$$\nfluorobenzene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 1.2991 3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 2 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 fluorobenzene\nM END\n> <name>\nfluorobenzene\n\n> <abbreviation>\nfluorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorocyclic ether\n -INDIGO-11302219142D\n\n 25 25 0 0 0 0 0 0 0 0999 V2000\n -1.9038 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9038 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4038 -4.5746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9038 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9395 -6.0662 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9395 -3.0827 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3099 -2.4726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5598 -1.1736 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5233 -1.5909 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3135 -3.5873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3173 -2.4726 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.5271 -4.4689 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5635 -4.8864 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7677 -5.7808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4224 -6.3797 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 8 10 1 0 0 0 0\n 8 11 1 0 0 0 0\n 11 12 1 0 0 0 0\n 11 13 1 0 0 0 0\n 11 14 1 0 0 0 0\n 14 15 1 0 0 0 0\n 14 16 1 0 0 0 0\n 16 17 1 0 0 0 0\n 17 18 1 0 0 0 0\n 17 19 1 0 0 0 0\n 17 20 1 0 0 0 0\n 20 21 1 0 0 0 0\n 20 22 1 0 0 0 0\n 20 23 1 0 0 0 0\n 14 23 1 0 0 0 0\n 23 24 1 0 0 0 0\n 23 25 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 8 17 18 19 20 21 22 23 24\nM SAL 1 1 25\nM SMT 1 perfluorocyclic ether\nM END\n> <name>\nperfluorocyclic ether\n\n> <abbreviation>\nperfluorocyclic ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorocyclohexane\n -INDIGO-11302219142D\n\n 18 18 0 0 0 0 0 0 0 0999 V2000\n 7.8482 2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5982 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5491 2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0490 2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5982 -0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.8482 -2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7500 2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0490 -2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5491 -2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7500 -2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7991 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5000 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7991 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5000 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 13 1 0 0 0 0\n 2 13 1 0 0 0 0\n 3 14 1 0 0 0 0\n 4 14 1 0 0 0 0\n 5 15 1 0 0 0 0\n 6 15 1 0 0 0 0\n 7 16 1 0 0 0 0\n 8 16 1 0 0 0 0\n 9 17 1 0 0 0 0\n 10 17 1 0 0 0 0\n 11 18 1 0 0 0 0\n 12 18 1 0 0 0 0\n 13 14 1 0 0 0 0\n 13 15 1 0 0 0 0\n 14 16 1 0 0 0 0\n 15 17 1 0 0 0 0\n 16 18 1 0 0 0 0\n 17 18 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 2 17 18\nM SMT 1 perfluorocyclohexane\nM END\n> <name>\nperfluorocyclohexane\n\n> <abbreviation>\nperfluorocyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorohexane\n -INDIGO-11302219142D\n\n 20 19 0 0 0 0 0 0 0 0999 V2000\n 6.1472 0.9240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6472 -1.6740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.9463 -0.9240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.4462 1.6740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3482 -2.4240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8482 0.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.7453 2.4240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 10.2453 -0.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0491 -3.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5490 -0.5760 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -2.6250 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 10.0444 3.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 11.5444 0.5760 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 12.0935 2.6250 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1963 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -1.1250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4953 1.1250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2991 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.7944 1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 15 1 0 0 0 0\n 2 15 1 0 0 0 0\n 3 16 1 0 0 0 0\n 4 16 1 0 0 0 0\n 5 17 1 0 0 0 0\n 6 17 1 0 0 0 0\n 7 18 1 0 0 0 0\n 8 18 1 0 0 0 0\n 9 19 1 0 0 0 0\n 10 19 1 0 0 0 0\n 11 19 1 0 0 0 0\n 12 20 1 0 0 0 0\n 13 20 1 0 0 0 0\n 14 20 1 0 0 0 0\n 15 16 1 0 0 0 0\n 15 17 1 0 0 0 0\n 16 18 1 0 0 0 0\n 17 19 1 0 0 0 0\n 18 20 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 4 17 18 19 20\nM SMT 1 perfluorohexane\nM END\n> <name>\nperfluorohexane\n\n> <abbreviation>\nperfluorohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorotoluene\n -INDIGO-11302219142D\n\n 15 15 0 0 0 0 0 0 0 0999 V2000\n 3.0000 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0982 2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 -2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 10 1 0 0 0 0\n 2 11 1 0 0 0 0\n 3 12 1 0 0 0 0\n 4 12 1 0 0 0 0\n 5 12 1 0 0 0 0\n 6 13 1 0 0 0 0\n 7 14 1 0 0 0 0\n 8 15 1 0 0 0 0\n 9 10 2 0 0 0 0\n 9 11 1 0 0 0 0\n 9 12 1 0 0 0 0\n 10 14 1 0 0 0 0\n 11 13 2 0 0 0 0\n 13 15 1 0 0 0 0\n 14 15 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 7 9 10 11 12 13 14 15\nM SMT 1 perfluorotoluene\nM END\n> <name>\nperfluorotoluene\n\n> <abbreviation>\nperfluorotoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrichloroacetic acid\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 4.3154 -3.6247 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.6336 -2.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.6336 -1.3688 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0543 -2.8010 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1051 -4.3218 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 4.3090 -5.1835 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.9579 -3.6120 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 1 0 0 0 0\n 3 2 2 0 0 0 0\n 4 1 1 0 0 0 0\n 5 1 1 0 0 0 0\n 6 1 1 0 0 0 0\n 7 2 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 trichloroacetic acid\nM END\n> <name>\ntrichloroacetic acid\n\n> <abbreviation>\ntrichloroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrichloroacetonitrile\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 4.5000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 1.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 3 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 trichloroacetonitrile\nM END\n> <name>\ntrichloroacetonitrile\n\n> <abbreviation>\ntrichloroacetonitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrifluoroacetic acid\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 1.0500 -4.9991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.3000 -3.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0500 -2.4009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -3.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7000 -3.7000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -2.2000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -5.2000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 4 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 trifluoroacetic acid\nM END\n> <name>\ntrifluoroacetic acid\n\n> <abbreviation>\ntrifluoroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrifluoromethylbenzene\n -INDIGO-11302219142D\n\n 10 10 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 3.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 1.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 1.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 7 9 1 0 0 0 0\n 7 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 trifluoromethylbenzene\nM END\n> <name>\ntrifluoromethylbenzene\n\n> <abbreviation>\ntrifluoromethylbenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methylpentane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.5471 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7520 -0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0509 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.3500 -0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -4.6491 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.3500 1.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-methylpentane\nM END\n> <name>\n2-methylpentane\n\n> <abbreviation>\n2-methylpentane\n\n> <group>\nSalts and Solvents\n\n$$$$\ncis-decalin\n -INDIGO-11302219142D\n\n 12 13 0 0 1 0 0 0 0 0999 V2000\n 2.6130 -0.7481 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0\n 2.6130 -2.2234 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0\n 1.3195 -3.0026 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3195 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8754 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8754 -2.9714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -0.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1948 -0.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1948 -2.2234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -2.2234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5583 0.8018 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6130 -3.6988 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 6 1 0 0 0 0\n 3 10 1 0 0 0 0\n 4 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 6 9 1 0 0 0 0\n 7 10 1 0 0 0 0\n 8 9 1 0 0 0 0\n 1 11 1 1 0 0 0\n 2 12 1 1 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 4 9 10 11 12\nM SMT 1 cis-decalin\nM END\n> <name>\ncis-decalin\n\n> <abbreviation>\ncis-decalin\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 cyclohexane\nM END\n> <name>\ncyclohexane\n\n> <abbreviation>\ncyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nisooctane\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1552 -0.4581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.6552 -0.4580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -0.2571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 2 6 1 0 0 0 0\n 2 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 isooctane\nM END\n> <name>\nisooctane\n\n> <abbreviation>\nisooctane\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethylcyclohexane\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -0.8000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methylcyclohexane\nM END\n> <name>\nmethylcyclohexane\n\n> <abbreviation>\nmethylcyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethylcyclopentane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 4.2136 0.4041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4271 -0.4776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0001 -0.4776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9636 -1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4636 -1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2136 1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 methylcyclopentane\nM END\n> <name>\nmethylcyclopentane\n\n> <abbreviation>\nmethylcyclopentane\n\n> <group>\nSalts and Solvents\n\n$$$$\nheptane\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.1014 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.4004 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 n-heptane\nM END\n> <name>\nheptane\n\n> <abbreviation>\nn-heptane\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.1014 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 n-hexane\nM END\n> <name>\nhexane\n\n> <abbreviation>\nn-hexane\n\n> <group>\nSalts and Solvents\n\n$$$$\npentane\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 2.5624 -4.3230 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1578 -4.3230 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8600 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4556 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2647 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 3 1 1 0 0 0 0\n 4 2 1 0 0 0 0\n 5 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 pentane\nM END\n> <name>\npentane\n\n> <abbreviation>\npentane\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-pentanone\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -1.5971 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2980 -3.4500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0009 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3000 -3.4500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5991 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3000 -1.9500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-pentanone\nM END\n> <name>\n2-pentanone\n\n> <abbreviation>\n2-pentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\n3-pentanone\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.6558 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9548 4.6539 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2538 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2539 6.9040 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5530 4.6539 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.8520 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 3-pentanone\nM END\n> <name>\n3-pentanone\n\n> <abbreviation>\n3-pentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetone\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 propanone\nM END\n> <name>\nacetone\n\n> <abbreviation>\npropanone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexanone\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -1.8786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 -2.6286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -1.8786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclohexanone\nM END\n> <name>\ncyclohexanone\n\n> <abbreviation>\ncyclohexanone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclopentanone\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 1.0323 3.5259 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0323 2.0259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2458 1.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7823 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2824 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1813 1.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 cyclopentanone\nM END\n> <name>\ncyclopentanone\n\n> <abbreviation>\ncyclopentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl ethyl ketone\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 MEK\nM END\n> <name>\nmethyl ethyl ketone\n\n> <abbreviation>\nMEK\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl isobutyl ketone\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.8399 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 1.8714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methyl isobutyl ketone\nM END\n> <name>\nmethyl isobutyl ketone\n\n> <abbreviation>\nmethyl isobutyl ketone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon disulfide\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 5.7990 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7989 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 3 2 0 0 0 0\n 2 3 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 carbon disulfide\nM END\n> <name>\ncarbon disulfide\n\n> <abbreviation>\ncarbon disulfide\n\n> <group>\nSalts and Solvents\n\n$$$$\nnitromethane\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 1.5009 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8000 1.5000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0991 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8000 3.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 2 0 0 0 0\nM CHG 2 2 1 3 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 nitromethane\nM END\n> <name>\nnitromethane\n\n> <abbreviation>\nnitromethane\n\n> <group>\nSalts and Solvents\n\n$$$$\no-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4481 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 o-xylene\nM END\n> <name>\no-xylene\n\n> <abbreviation>\no-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\nm-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4480 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 5 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 m-xylene\nM END\n> <name>\nm-xylene\n\n> <abbreviation>\nm-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\np-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 -0.0250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 p-xylene\nM END\n> <name>\np-xylene\n\n> <abbreviation>\np-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\nDIPEA\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n -1.5490 7.3145 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5490 8.8145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 6.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2500 6.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -4.1471 7.3145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 5.0645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0490 7.3145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2500 5.0645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 9.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 3 6 1 0 0 0 0\n 4 7 1 0 0 0 0\n 4 8 1 0 0 0 0\n 2 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 DIPEA\nM END\n> <name>\nn,n-diisopropylethylamine\n\n> <abbreviation>\nDIPEA\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,5-diazabicyclo[5.4.0]undec-7-ene\n -INDIGO-11302219142D\n\n 11 12 0 0 0 0 0 0 0 0999 V2000\n 1.6852 -0.3846 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3514 1.0778 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.7286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3515 1.0777 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.6852 -0.3847 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -3.1695 -0.6090 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7175 -2.0053 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7822 -3.1781 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2990 -2.9545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7500 -1.5574 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7500 -1.5574 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 2 0 0 0 0\n 10 5 1 0 0 0 0\n 10 11 1 0 0 0 0\n 11 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 DBU\nM END\n> <name>\n1,5-diazabicyclo[5.4.0]undec-7-ene\n\n> <abbreviation>\nDBU\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexamethylphosphoramide\n -INDIGO-11302219142D\n\n 11 10 0 0 0 0 0 0 0 0999 V2000\n 2.3174 -0.9012 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6235 -1.9903 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8900 -0.9145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5935 -3.2519 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5935 -4.7619 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0831 -3.2205 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 6.0654 -4.1562 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1687 -1.9999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1521 -3.2278 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3934 -4.5570 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0626 -2.3997 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\n 4 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 9 11 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 HMPA\nM END\n> <name>\nhexamethylphosphoramide\n\n> <abbreviation>\nHMPA\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexamethylphosphorous triamide\n -INDIGO-11302219142D\n\n 10 9 0 0 0 0 0 0 0 0999 V2000\n 0.0007 0.0004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6000 0.0000 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9000 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1992 0.0004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9000 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6031 -1.5008 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9032 -2.2490 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3053 -2.2531 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 4 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 8 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 HMPT\nM END\n> <name>\nhexamethylphosphorous triamide\n\n> <abbreviation>\nHMPT\n\n> <group>\nSalts and Solvents\n\n$$$$\nheavy water\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 0.0007 0.0004 0.0000 D 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5993 0.0004 0.0000 D 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 D2O\nM END\n> <name>\nheavy water\n\n> <abbreviation>\nD2O\n\n> <group>\nSalts and Solvents\n\n$$$$\nTRIS\n -INDIGO-03312512502D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 16.0940 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -10.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8260 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -9.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -11.2437 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.2280 -10.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.6921 -10.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8260 -8.7437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 1 6 1 0 0 0 0\n 3 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 TRIS\nM SDI 1 4 0.0000 0.0000 0.0000 0.0000\nM SDI 1 4 0.0000 0.0000 0.0000 0.0000\nM END\n> <name>\nTRIS\n\n> <abbreviation>\nTRIS\n\n> <group>\nSalts and Solvents\n\n$$$$\nTRIS HCl\n Ketcher 3312513372D 1 1.00000 0.00000 0\n\n 9 7 0 0 0 0 0 0 0 0999 V2000\n 15.7719 -6.6396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -6.1396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5040 -6.6396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -5.1396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -7.1396 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 14.9059 -6.1396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.3700 -6.1396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5040 -4.6396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6716 -7.9479 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 1 0 0 0\n 2 5 1 0 0 0\n 1 6 1 0 0 0\n 3 7 1 0 0 0\n 4 8 1 0 0 0\nM CHG 2 5 1 9 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 9 1 2 3 4 5 6 7 8 9\nM SMT 1 TRIS HCl\nM END\n\n> <name>\nTRIS HCl\n\n> <abbreviation>\nTRIS HCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nSodium-chloride\n Ketcher 3312513392D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.4963 -6.3500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.6713 -6.3500 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 NaCl\nM END\n\n> <name>\nSodium-chloride\n\n> <abbreviation>\nNaCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nSodium-acetate\n Ketcher 3312513462D 1 1.00000 0.00000 0\n\n 5 3 0 0 0 0 0 0 0 0999 V2000\n 15.0102 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8763 -10.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7423 -10.7437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8763 -9.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5182 -10.7687 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\nM CHG 2 3 -1 5 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 CH3COONa\nM END\n\n> <name>\nSodium-acetate\n\n> <abbreviation>\nCH3COONa\n\n> <group>\nSalts and Solvents\n\n$$$$\nPotassium-chloride\n Ketcher 3312513542D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.2390 -13.2275 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.4140 -13.2275 0.0000 K 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 KCl\nM END\n\n> <name>\nPotassium-chloride\n\n> <abbreviation>\nKCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nMonopotassium phosphate\n Ketcher 3312513582D 1 1.00000 0.00000 0\n\n 6 4 0 0 0 0 0 0 0 0999 V2000\n 15.0432 -14.6312 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 15.9093 -15.1312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0432 -13.6312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1772 -15.1312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0432 -15.6312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6098 -15.1562 0.0000 K 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 1 0 0 0\nM CHG 2 2 -1 6 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 KH2PO4\nM END\n\n> <name>\nMonopotassium phosphate\n\n> <abbreviation>\nKH2PO4\n\n> <group>\nSalts and Solvents\n\n$$$$\nLithium-chloride\n Ketcher 3312514 52D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.4828 -15.7375 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.6578 -15.7375 0.0000 Li 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 LiCl\nM END\n\n> <name>\nLithium-chloride\n\n> <abbreviation>\nLiCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nGuanidine HCl\n Ketcher 3312514 62D 1 1.00000 0.00000 0\n\n 5 3 0 0 0 0 0 0 0 0999 V2000\n 14.8573 -16.3937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7233 -15.8937 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.5893 -16.3937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7233 -14.8937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8653 -16.3937 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\nM CHG 2 3 1 5 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 GuHCl\nM END\n\n> <name>\nGuanidine HCl\n\n> <abbreviation>\nGuHCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nDisodium phosphate\n Ketcher 3312514 72D 1 1.00000 0.00000 0\n\n 7 4 0 0 0 0 0 0 0 0999 V2000\n 15.7195 -15.6812 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 16.5856 -16.1812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7195 -14.6812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.8535 -16.1812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7195 -16.6812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.2860 -16.2062 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1860 -16.1812 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 1 0 0 0\nM CHG 4 2 -1 4 -1 6 1 7 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 Na2HPO4\nM END\n\n> <name>\nDisodium phosphate\n\n> <abbreviation>\nNa2HPO4\n\n> <group>\nSalts and Solvents\n\n$$$$\nDisodium EDTA\n Ketcher 3312514 92D 1 1.00000 0.00000 0\n\n 22 19 0 0 0 0 0 0 0 0999 V2000\n 11.8472 -15.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7132 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 13.5792 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7132 -14.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.4453 -15.4313 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.4453 -14.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -13.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -12.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -14.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.0433 -15.9313 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.9094 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.0433 -16.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -17.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -18.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -16.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.7754 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 19.6414 -15.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.7754 -16.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5052 -16.9313 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 20.4552 -15.4313 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\n 3 5 1 0 0 0\n 5 6 1 0 0 0\n 5 7 1 0 0 0\n 7 8 1 0 0 0\n 8 9 2 0 0 0\n 8 10 1 0 0 0\n 6 11 1 0 0 0\n 11 12 1 0 0 0\n 12 13 1 0 0 0\n 12 14 1 0 0 0\n 14 15 1 0 0 0\n 15 16 2 0 0 0\n 15 17 1 0 0 0\n 13 18 1 0 0 0\n 18 19 1 0 0 0\n 18 20 2 0 0 0\nM CHG 4 17 -1 19 -1 21 1 22 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\nM SAL 1 7 16 17 18 19 20 21 22\nM SMT 1 Disodium EDTA\nM END\n\n> <name>\nDisodium EDTA\n\n> <abbreviation>\nDisodium EDTA\n\n> <group>\nSalts and Solvents\n\n$$$$\nAmmonium-sulfate\n Ketcher 3312514102D 1 1.00000 0.00000 0\n\n 7 4 0 0 0 0 0 0 0 0999 V2000\n 15.8979 -15.6813 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7639 -16.1813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8979 -14.6813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0319 -16.1813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8979 -16.6813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 13.7644 -16.2063 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.4894 -16.2063 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 2 0 0 0\nM CHG 4 2 -1 4 -1 6 1 7 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 (NH4)2SO4\nM END\n\n> <name>\nAmmonium-sulfate\n\n> <abbreviation>\n(NH4)2SO4\n\n> <group>\nSalts and Solvents\n\n$$$$";
15061
15061
 
15062
- function ownKeys$1i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15063
- function _objectSpread$1i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1i(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15062
+ function ownKeys$1j(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15063
+ function _objectSpread$1j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1j(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15064
15064
  var initialState$1 = {
15065
15065
  lib: [],
15066
15066
  mode: MODES.FG
15067
15067
  };
15068
15068
  var saltsAndSolventsReducer = function saltsAndSolventsReducer() {
15069
15069
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$1;
15070
- var _ref = arguments.length > 1 ? arguments[1] : undefined,
15071
- type = _ref.type,
15072
- payload = _ref.payload;
15070
+ var action = arguments.length > 1 ? arguments[1] : undefined;
15071
+ var type = action.type,
15072
+ payload = action.payload;
15073
15073
  if (type === 'SALTS_AND_SOLVENTS_INIT') {
15074
- return _objectSpread$1i(_objectSpread$1i({}, state), payload);
15074
+ return _objectSpread$1j(_objectSpread$1j({}, state), payload);
15075
15075
  }
15076
15076
  return state;
15077
15077
  };
@@ -15085,7 +15085,7 @@ var initSaltsAndSolvents = function initSaltsAndSolvents(lib) {
15085
15085
  };
15086
15086
  function initSaltsAndSolventsTemplates() {
15087
15087
  return function () {
15088
- var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch) {
15088
+ var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch) {
15089
15089
  var saltsAndSolventsProvider, functionalGroupsProvider, sdfSerializer, templates, saltsAndSolvents;
15090
15090
  return _regeneratorRuntime.wrap(function _callee$(_context) {
15091
15091
  while (1) switch (_context.prev = _context.next) {
@@ -15094,9 +15094,9 @@ function initSaltsAndSolventsTemplates() {
15094
15094
  functionalGroupsProvider = FunctionalGroupsProvider.getInstance();
15095
15095
  sdfSerializer = new SdfSerializer();
15096
15096
  templates = sdfSerializer.deserialize(templatesRawData);
15097
- saltsAndSolvents = templates.reduce(function (acc, _ref3) {
15098
- var struct = _ref3.struct,
15099
- props = _ref3.props;
15097
+ saltsAndSolvents = templates.reduce(function (acc, _ref2) {
15098
+ var struct = _ref2.struct,
15099
+ props = _ref2.props;
15100
15100
  struct.abbreviation = String(props.abbreviation);
15101
15101
  acc.push(struct);
15102
15102
  return acc;
@@ -15114,13 +15114,13 @@ function initSaltsAndSolventsTemplates() {
15114
15114
  }, _callee);
15115
15115
  }));
15116
15116
  return function (_x) {
15117
- return _ref2.apply(this, arguments);
15117
+ return _ref.apply(this, arguments);
15118
15118
  };
15119
15119
  }();
15120
15120
  }
15121
15121
 
15122
- function ownKeys$1h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15123
- function _objectSpread$1h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1h(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15122
+ function ownKeys$1i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15123
+ function _objectSpread$1i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1i(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15124
15124
  var initial = {
15125
15125
  freqAtoms: [],
15126
15126
  currentAtom: 0,
@@ -15141,7 +15141,7 @@ function updateVisibleTools(visibleTool, activeTool) {
15141
15141
  var matchesBondGroup = regExp.exec(key);
15142
15142
  if (!matchesBondGroup || menuHeight > 700) res[key] = visibleTool[key];
15143
15143
  return res;
15144
- }, _objectSpread$1h({}, activeTool));
15144
+ }, _objectSpread$1i({}, activeTool));
15145
15145
  }
15146
15146
  function initResize() {
15147
15147
  return function (dispatch, getState) {
@@ -15165,41 +15165,41 @@ function toolbarReducer () {
15165
15165
  case 'ACTION':
15166
15166
  {
15167
15167
  var visibleTool = toolInMenu(action.action);
15168
- return visibleTool ? _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15168
+ return visibleTool ? _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15169
15169
  opened: null,
15170
- visibleTools: _objectSpread$1h(_objectSpread$1h({}, state.visibleTools), visibleTool)
15171
- }) : _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15170
+ visibleTools: _objectSpread$1i(_objectSpread$1i({}, state.visibleTools), visibleTool)
15171
+ }) : _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15172
15172
  opened: null
15173
15173
  });
15174
15174
  }
15175
15175
  case 'ADD_ATOMS':
15176
15176
  {
15177
15177
  var newState = addFreqAtom(data, state.freqAtoms, state.currentAtom);
15178
- return _objectSpread$1h(_objectSpread$1h({}, state), newState);
15178
+ return _objectSpread$1i(_objectSpread$1i({}, state), newState);
15179
15179
  }
15180
15180
  case 'CLEAR_VISIBLE':
15181
15181
  {
15182
15182
  var activeTool = toolInMenu(action.data);
15183
15183
  var correctTools = updateVisibleTools(state.visibleTools, activeTool);
15184
- return _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15184
+ return _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15185
15185
  opened: null,
15186
- visibleTools: _objectSpread$1h({}, correctTools)
15186
+ visibleTools: _objectSpread$1i({}, correctTools)
15187
15187
  });
15188
15188
  }
15189
15189
  case 'OPENED':
15190
15190
  {
15191
- return data.isSelected && state.opened ? _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15191
+ return data.isSelected && state.opened ? _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15192
15192
  opened: null
15193
- }) : _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15193
+ }) : _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15194
15194
  opened: data.menuName
15195
15195
  });
15196
15196
  }
15197
15197
  case 'UPDATE':
15198
- return _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15198
+ return _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15199
15199
  opened: null
15200
15200
  });
15201
15201
  case 'MODAL_OPEN':
15202
- return _objectSpread$1h(_objectSpread$1h({}, state), {}, {
15202
+ return _objectSpread$1i(_objectSpread$1i({}, state), {}, {
15203
15203
  opened: null
15204
15204
  });
15205
15205
  default:
@@ -15242,8 +15242,8 @@ function hiddenAncestor(el, base) {
15242
15242
  return findEl;
15243
15243
  }
15244
15244
 
15245
- function ownKeys$1g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15246
- function _objectSpread$1g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1g(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15245
+ function ownKeys$1h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15246
+ function _objectSpread$1h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1h(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15247
15247
  var initialState = {
15248
15248
  visible: false,
15249
15249
  rotateHandlePosition: {
@@ -15260,15 +15260,45 @@ var updateFloatingTools = function updateFloatingTools(payload) {
15260
15260
  };
15261
15261
  var floatingToolsReducer = function floatingToolsReducer() {
15262
15262
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
15263
- var _ref = arguments.length > 1 ? arguments[1] : undefined,
15264
- type = _ref.type,
15265
- payload = _ref.payload;
15263
+ var action = arguments.length > 1 ? arguments[1] : undefined;
15264
+ var type = action.type,
15265
+ payload = action.payload;
15266
15266
  if (type === 'UPDATE_FLOATING_TOOLS') {
15267
- return _objectSpread$1g(_objectSpread$1g({}, state), payload);
15267
+ return _objectSpread$1h(_objectSpread$1h({}, state), payload);
15268
15268
  }
15269
15269
  return state;
15270
15270
  };
15271
15271
 
15272
+ function ownKeys$1g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15273
+ function _objectSpread$1g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1g(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15274
+ var initNotificationsState = {
15275
+ snackbarNotificationText: ''
15276
+ };
15277
+ function showSnackbarNotification(text) {
15278
+ return {
15279
+ type: 'SHOW_SNACKBAR_NOTIFICATION',
15280
+ data: text
15281
+ };
15282
+ }
15283
+ function selectSnackbarNotificationText(state) {
15284
+ return state.notifications.snackbarNotificationText;
15285
+ }
15286
+ function notificationsReducer() {
15287
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initNotificationsState;
15288
+ var action = arguments.length > 1 ? arguments[1] : undefined;
15289
+ if (action.type === 'SHOW_SNACKBAR_NOTIFICATION') {
15290
+ return _objectSpread$1g(_objectSpread$1g({}, state), {}, {
15291
+ snackbarNotificationText: action.data
15292
+ });
15293
+ }
15294
+ if (action.type === 'HIDE_SNACKBAR_NOTIFICATION') {
15295
+ return _objectSpread$1g(_objectSpread$1g({}, state), {}, {
15296
+ snackbarNotificationText: ''
15297
+ });
15298
+ }
15299
+ return state;
15300
+ }
15301
+
15272
15302
  var _excluded$v = ["type"],
15273
15303
  _excluded2$5 = ["buttons", "customButtons"];
15274
15304
  function ownKeys$1f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -15293,7 +15323,8 @@ var shared = combineReducers({
15293
15323
  functionalGroups: functionalGroupsReducer,
15294
15324
  saltsAndSolvents: saltsAndSolventsReducer,
15295
15325
  requestsStatuses: requestReducer,
15296
- floatingTools: floatingToolsReducer
15326
+ floatingTools: floatingToolsReducer,
15327
+ notifications: notificationsReducer
15297
15328
  });
15298
15329
  function getRootReducer(setEditor) {
15299
15330
  return function root(state, action) {
@@ -15336,7 +15367,8 @@ function createStore (options, server, setEditor) {
15336
15367
  customButtons: customButtons
15337
15368
  }),
15338
15369
  server: server || Promise.reject(new Error('Standalone mode!')),
15339
- templates: initTmplsState
15370
+ templates: initTmplsState,
15371
+ notifications: initNotificationsState
15340
15372
  };
15341
15373
  var middleware = [thunk];
15342
15374
  var rootReducer = getRootReducer(setEditor);
@@ -18125,194 +18157,334 @@ var SGroupTool = function () {
18125
18157
  }
18126
18158
  }
18127
18159
  }, {
18128
- key: "mouseup",
18129
- value: function mouseup(event) {
18130
- var _selection, _selection2;
18131
- var struct = this.editor.render.ctab;
18160
+ key: "isContractedFunctionalGroupClicked",
18161
+ value: function isContractedFunctionalGroupClicked(ci, functionalGroups) {
18162
+ return (ci === null || ci === void 0 ? void 0 : ci.map) === 'functionalGroups' && functionalGroups.size && FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups);
18163
+ }
18164
+ }, {
18165
+ key: "processSelectedAtoms",
18166
+ value: function processSelectedAtoms(selected, functionalGroups, struct, molecule, newSelected) {
18167
+ var atomsResult = [];
18168
+ var extraAtoms = false;
18169
+ if (!selected || !functionalGroups.size || !selected.atoms) {
18170
+ return {
18171
+ atomsResult: atomsResult,
18172
+ extraAtoms: extraAtoms
18173
+ };
18174
+ }
18132
18175
  var sgroups = struct.sgroups;
18133
- var molecule = struct.molecule;
18134
- var functionalGroups = molecule.functionalGroups;
18135
- var ci = this.editor.findItem(event, searchMaps);
18136
- var selected = this.editor.selection();
18137
- var newSelected = {
18138
- atoms: [],
18139
- bonds: []
18176
+ var _iterator6 = _createForOfIteratorHelper$f(selected.atoms),
18177
+ _step6;
18178
+ try {
18179
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
18180
+ var _struct$atoms$get3;
18181
+ var atom = _step6.value;
18182
+ var atomId = FunctionalGroup.atomsInFunctionalGroup(functionalGroups, atom);
18183
+ if (atomId == null) {
18184
+ extraAtoms = true;
18185
+ continue;
18186
+ }
18187
+ var atomFromStruct = (_struct$atoms$get3 = struct.atoms.get(atomId)) === null || _struct$atoms$get3 === void 0 ? void 0 : _struct$atoms$get3.a;
18188
+ if (!atomFromStruct) {
18189
+ continue;
18190
+ }
18191
+ var actualSgroupId = this.getActualSgroupId(atomFromStruct);
18192
+ if (this.isAtomInContractedGroup(atomFromStruct, sgroups, functionalGroups)) {
18193
+ this.addContractedGroupToSelection(atom, actualSgroupId, molecule, struct, newSelected);
18194
+ }
18195
+ atomsResult.push(atomId);
18196
+ }
18197
+ } catch (err) {
18198
+ _iterator6.e(err);
18199
+ } finally {
18200
+ _iterator6.f();
18201
+ }
18202
+ return {
18203
+ atomsResult: atomsResult,
18204
+ extraAtoms: extraAtoms
18140
18205
  };
18206
+ }
18207
+ }, {
18208
+ key: "getActualSgroupId",
18209
+ value: function getActualSgroupId(atomFromStruct) {
18141
18210
  var actualSgroupId;
18142
- var atomsResult = [];
18143
- var extraAtoms;
18211
+ var _iterator7 = _createForOfIteratorHelper$f(atomFromStruct.sgs.values()),
18212
+ _step7;
18213
+ try {
18214
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
18215
+ var sgId = _step7.value;
18216
+ actualSgroupId = sgId;
18217
+ }
18218
+ } catch (err) {
18219
+ _iterator7.e(err);
18220
+ } finally {
18221
+ _iterator7.f();
18222
+ }
18223
+ return actualSgroupId;
18224
+ }
18225
+ }, {
18226
+ key: "isAtomInContractedGroup",
18227
+ value: function isAtomInContractedGroup(atomFromStruct, sgroups, functionalGroups) {
18228
+ return FunctionalGroup.isAtomInContractedFunctionalGroup(atomFromStruct, sgroups, functionalGroups) || SGroup$1.isAtomInContractedSGroup(atomFromStruct, sgroups);
18229
+ }
18230
+ }, {
18231
+ key: "addContractedGroupToSelection",
18232
+ value: function addContractedGroupToSelection(atom, actualSgroupId, molecule, struct, newSelected) {
18233
+ var _struct$sgroups$get, _struct$sgroups$get2;
18234
+ if (actualSgroupId === undefined) {
18235
+ return;
18236
+ }
18237
+ var sgroupAtoms = SGroup$1.getAtoms(molecule, (_struct$sgroups$get = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get === void 0 ? void 0 : _struct$sgroups$get.item);
18238
+ var sgroupBonds = SGroup$1.getBonds(molecule, (_struct$sgroups$get2 = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get2 === void 0 ? void 0 : _struct$sgroups$get2.item);
18239
+ if (atom === sgroupAtoms[0]) {
18240
+ var _newSelected$atoms2, _newSelected$bonds2;
18241
+ (_newSelected$atoms2 = newSelected.atoms).push.apply(_newSelected$atoms2, _toConsumableArray(sgroupAtoms));
18242
+ (_newSelected$bonds2 = newSelected.bonds).push.apply(_newSelected$bonds2, _toConsumableArray(sgroupBonds));
18243
+ }
18244
+ }
18245
+ }, {
18246
+ key: "processSelectedBonds",
18247
+ value: function processSelectedBonds(selected, functionalGroups, molecule, struct) {
18144
18248
  var bondsResult = [];
18145
- var extraBonds;
18146
- var result = [];
18147
- if ((ci === null || ci === void 0 ? void 0 : ci.map) === 'functionalGroups' && functionalGroups.size && FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups)) return;
18148
- if (selected && functionalGroups.size && selected.atoms) {
18149
- var _iterator6 = _createForOfIteratorHelper$f(selected.atoms),
18150
- _step6;
18151
- try {
18152
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
18153
- var _struct$atoms$get3;
18154
- var atom = _step6.value;
18155
- var atomId = FunctionalGroup.atomsInFunctionalGroup(functionalGroups, atom);
18156
- if (atomId == null) {
18157
- extraAtoms = true;
18158
- }
18159
- var atomFromStruct = atomId !== null && ((_struct$atoms$get3 = struct.atoms.get(atomId)) === null || _struct$atoms$get3 === void 0 ? void 0 : _struct$atoms$get3.a);
18160
- if (atomFromStruct) {
18161
- var _iterator7 = _createForOfIteratorHelper$f(atomFromStruct.sgs.values()),
18162
- _step7;
18163
- try {
18164
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
18165
- var sgId = _step7.value;
18166
- actualSgroupId = sgId;
18167
- }
18168
- } catch (err) {
18169
- _iterator7.e(err);
18170
- } finally {
18171
- _iterator7.f();
18172
- }
18173
- }
18174
- if (atomFromStruct && (FunctionalGroup.isAtomInContractedFunctionalGroup(atomFromStruct, sgroups, functionalGroups) || SGroup$1.isAtomInContractedSGroup(atomFromStruct, sgroups))) {
18175
- var _struct$sgroups$get, _struct$sgroups$get2, _newSelected$atoms2, _newSelected$bonds2;
18176
- var sgroupAtoms = actualSgroupId !== undefined && SGroup$1.getAtoms(molecule, (_struct$sgroups$get = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get === void 0 ? void 0 : _struct$sgroups$get.item);
18177
- var sgroupBonds = actualSgroupId !== undefined && SGroup$1.getBonds(molecule, (_struct$sgroups$get2 = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get2 === void 0 ? void 0 : _struct$sgroups$get2.item);
18178
- atom === sgroupAtoms[0] && (_newSelected$atoms2 = newSelected.atoms).push.apply(_newSelected$atoms2, _toConsumableArray(sgroupAtoms)) && (_newSelected$bonds2 = newSelected.bonds).push.apply(_newSelected$bonds2, _toConsumableArray(sgroupBonds));
18179
- }
18180
- if (atomFromStruct) {
18181
- atomsResult.push(atomId);
18182
- }
18249
+ var extraBonds = false;
18250
+ if (!selected || !functionalGroups.size || !selected.bonds) {
18251
+ return {
18252
+ bondsResult: bondsResult,
18253
+ extraBonds: extraBonds
18254
+ };
18255
+ }
18256
+ var _iterator8 = _createForOfIteratorHelper$f(selected.bonds),
18257
+ _step8;
18258
+ try {
18259
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
18260
+ var _struct$bonds$get2;
18261
+ var bond = _step8.value;
18262
+ var bondId = FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, bond);
18263
+ if (bondId === null) {
18264
+ extraBonds = true;
18265
+ continue;
18266
+ }
18267
+ var bondFromStruct = (_struct$bonds$get2 = struct.bonds.get(bondId)) === null || _struct$bonds$get2 === void 0 ? void 0 : _struct$bonds$get2.b;
18268
+ if (bondFromStruct) {
18269
+ bondsResult.push(bondId);
18183
18270
  }
18184
- } catch (err) {
18185
- _iterator6.e(err);
18186
- } finally {
18187
- _iterator6.f();
18188
18271
  }
18272
+ } catch (err) {
18273
+ _iterator8.e(err);
18274
+ } finally {
18275
+ _iterator8.f();
18189
18276
  }
18190
- if (selected && functionalGroups.size && selected.bonds) {
18191
- var _iterator8 = _createForOfIteratorHelper$f(selected.bonds),
18192
- _step8;
18193
- try {
18194
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
18195
- var _struct$bonds$get2;
18196
- var bond = _step8.value;
18197
- var bondId = FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, bond);
18198
- if (bondId === null) {
18199
- extraBonds = true;
18200
- }
18201
- var bondFromStruct = bondId !== null && ((_struct$bonds$get2 = struct.bonds.get(bondId)) === null || _struct$bonds$get2 === void 0 ? void 0 : _struct$bonds$get2.b);
18202
- if (bondFromStruct) {
18203
- bondsResult.push(bondId);
18204
- }
18205
- }
18206
- } catch (err) {
18207
- _iterator8.e(err);
18208
- } finally {
18209
- _iterator8.f();
18277
+ return {
18278
+ bondsResult: bondsResult,
18279
+ extraBonds: extraBonds
18280
+ };
18281
+ }
18282
+ }, {
18283
+ key: "expandFunctionalGroupSelection",
18284
+ value: function expandFunctionalGroupSelection(atomsResult, bondsResult, functionalGroups, molecule, struct, newSelected) {
18285
+ this.expandAtomsToFunctionalGroups(atomsResult, functionalGroups, molecule, struct, newSelected);
18286
+ this.expandBondsToFunctionalGroups(bondsResult, functionalGroups, molecule, struct, newSelected);
18287
+ }
18288
+ }, {
18289
+ key: "expandAtomsToFunctionalGroups",
18290
+ value: function expandAtomsToFunctionalGroups(atomsResult, functionalGroups, molecule, struct, newSelected) {
18291
+ if (!atomsResult.length) {
18292
+ return;
18293
+ }
18294
+ atomsResult.forEach(function (id) {
18295
+ var _struct$sgroups$get3, _newSelected$atoms3;
18296
+ var fgId = FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, id);
18297
+ if (fgId === null) {
18298
+ return;
18299
+ }
18300
+ var sgroupAtoms = SGroup$1.getAtoms(molecule, (_struct$sgroups$get3 = struct.sgroups.get(fgId)) === null || _struct$sgroups$get3 === void 0 ? void 0 : _struct$sgroups$get3.item);
18301
+ (_newSelected$atoms3 = newSelected.atoms).push.apply(_newSelected$atoms3, _toConsumableArray(sgroupAtoms));
18302
+ });
18303
+ }
18304
+ }, {
18305
+ key: "expandBondsToFunctionalGroups",
18306
+ value: function expandBondsToFunctionalGroups(bondsResult, functionalGroups, molecule, struct, newSelected) {
18307
+ if (!bondsResult.length) {
18308
+ return;
18309
+ }
18310
+ bondsResult.forEach(function (id) {
18311
+ var _struct$sgroups$get4, _newSelected$bonds3;
18312
+ var fgId = FunctionalGroup.findFunctionalGroupByBond(molecule, functionalGroups, id);
18313
+ if (fgId === null) {
18314
+ return;
18210
18315
  }
18316
+ var sgroupBonds = SGroup$1.getBonds(molecule, (_struct$sgroups$get4 = struct.sgroups.get(fgId)) === null || _struct$sgroups$get4 === void 0 ? void 0 : _struct$sgroups$get4.item);
18317
+ (_newSelected$bonds3 = newSelected.bonds).push.apply(_newSelected$bonds3, _toConsumableArray(sgroupBonds));
18318
+ });
18319
+ }
18320
+ }, {
18321
+ key: "collectFunctionalGroupIds",
18322
+ value: function collectFunctionalGroupIds(atomsResult, bondsResult, extraAtoms, extraBonds, functionalGroups, molecule) {
18323
+ if (extraAtoms || extraBonds) {
18324
+ return [];
18211
18325
  }
18212
- if (atomsResult.length) {
18213
- atomsResult.forEach(function (id) {
18214
- var _struct$sgroups$get3, _newSelected$atoms3;
18326
+ var result = [];
18327
+ this.collectFunctionalGroupIdsFromAtoms(atomsResult, functionalGroups, result);
18328
+ this.collectFunctionalGroupIdsFromBonds(bondsResult, functionalGroups, molecule, result);
18329
+ return result;
18330
+ }
18331
+ }, {
18332
+ key: "collectFunctionalGroupIdsFromAtoms",
18333
+ value: function collectFunctionalGroupIdsFromAtoms(atomsResult, functionalGroups, result) {
18334
+ if (!atomsResult || !atomsResult.length) {
18335
+ return;
18336
+ }
18337
+ var _iterator9 = _createForOfIteratorHelper$f(atomsResult),
18338
+ _step9;
18339
+ try {
18340
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
18341
+ var id = _step9.value;
18215
18342
  var fgId = FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, id);
18216
- if (fgId === null) {
18217
- return;
18343
+ if (fgId !== null && !result.includes(fgId)) {
18344
+ result.push(fgId);
18218
18345
  }
18219
- var sgroupAtoms = SGroup$1.getAtoms(molecule, (_struct$sgroups$get3 = struct.sgroups.get(fgId)) === null || _struct$sgroups$get3 === void 0 ? void 0 : _struct$sgroups$get3.item);
18220
- (_newSelected$atoms3 = newSelected.atoms).push.apply(_newSelected$atoms3, _toConsumableArray(sgroupAtoms));
18221
- });
18346
+ }
18347
+ } catch (err) {
18348
+ _iterator9.e(err);
18349
+ } finally {
18350
+ _iterator9.f();
18351
+ }
18352
+ }
18353
+ }, {
18354
+ key: "collectFunctionalGroupIdsFromBonds",
18355
+ value: function collectFunctionalGroupIdsFromBonds(bondsResult, functionalGroups, molecule, result) {
18356
+ if (!bondsResult || !bondsResult.length) {
18357
+ return;
18222
18358
  }
18223
- if (bondsResult.length) {
18224
- bondsResult.forEach(function (id) {
18225
- var _struct$sgroups$get4, _newSelected$bonds3;
18359
+ var _iterator10 = _createForOfIteratorHelper$f(bondsResult),
18360
+ _step10;
18361
+ try {
18362
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
18363
+ var id = _step10.value;
18226
18364
  var fgId = FunctionalGroup.findFunctionalGroupByBond(molecule, functionalGroups, id);
18227
- if (fgId === null) {
18228
- return;
18365
+ if (fgId !== null && !result.includes(fgId)) {
18366
+ result.push(fgId);
18229
18367
  }
18230
- var sgroupBonds = SGroup$1.getBonds(molecule, (_struct$sgroups$get4 = struct.sgroups.get(fgId)) === null || _struct$sgroups$get4 === void 0 ? void 0 : _struct$sgroups$get4.item);
18231
- (_newSelected$bonds3 = newSelected.bonds).push.apply(_newSelected$bonds3, _toConsumableArray(sgroupBonds));
18232
- });
18368
+ }
18369
+ } catch (err) {
18370
+ _iterator10.e(err);
18371
+ } finally {
18372
+ _iterator10.f();
18233
18373
  }
18234
- if (extraAtoms || extraBonds) {
18235
- atomsResult = null;
18236
- bondsResult = null;
18374
+ }
18375
+ }, {
18376
+ key: "shouldRemoveSingleFunctionalGroup",
18377
+ value: function shouldRemoveSingleFunctionalGroup(functionalGroupIds) {
18378
+ return functionalGroupIds.length === 1;
18379
+ }
18380
+ }, {
18381
+ key: "determineSelection",
18382
+ value: function determineSelection(event, ci, newSelected, molecule) {
18383
+ if (this.lassoHelper.running(event)) {
18384
+ return this.handleLassoSelection(event, newSelected, molecule);
18237
18385
  }
18238
- if (atomsResult && atomsResult.length > 0) {
18239
- var _iterator9 = _createForOfIteratorHelper$f(atomsResult),
18240
- _step9;
18241
- try {
18242
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
18243
- var _id3 = _step9.value;
18244
- var fgId = FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, _id3);
18245
- if (fgId !== null && !result.includes(fgId)) {
18246
- result.push(fgId);
18247
- }
18386
+ return this.handleClickSelection(event, ci);
18387
+ }
18388
+ }, {
18389
+ key: "handleLassoSelection",
18390
+ value: function handleLassoSelection(event, newSelected, molecule) {
18391
+ var lassoSelection = this.lassoHelper.end(event);
18392
+ var selection = newSelected.atoms.length > 0 ? selMerge(lassoSelection, newSelected, false) : lassoSelection;
18393
+ var filteredAtomsAndBonds = filterNotPartOfSuperatomWithoutLabel({
18394
+ atoms: selection.atoms,
18395
+ bonds: selection.bonds
18396
+ }, molecule);
18397
+ selection = _objectSpread$15(_objectSpread$15({}, selection), {}, {
18398
+ atoms: filteredAtomsAndBonds.atoms,
18399
+ bonds: filteredAtomsAndBonds.bonds
18400
+ });
18401
+ this.editor.selection(selection);
18402
+ return {
18403
+ id: null,
18404
+ selection: selection
18405
+ };
18406
+ }
18407
+ }, {
18408
+ key: "handleClickSelection",
18409
+ value: function handleClickSelection(event, ci) {
18410
+ if (!ci) {
18411
+ return {
18412
+ id: null,
18413
+ selection: null
18414
+ };
18415
+ }
18416
+ this.editor.hover(this.editor.findItem(event, searchMaps), null, event);
18417
+ if (ci.map === 'atoms') {
18418
+ return {
18419
+ id: null,
18420
+ selection: {
18421
+ atoms: [ci.id]
18248
18422
  }
18249
- } catch (err) {
18250
- _iterator9.e(err);
18251
- } finally {
18252
- _iterator9.f();
18253
- }
18423
+ };
18254
18424
  }
18255
- if (bondsResult && bondsResult.length > 0) {
18256
- var _iterator10 = _createForOfIteratorHelper$f(bondsResult),
18257
- _step10;
18258
- try {
18259
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
18260
- var _id4 = _step10.value;
18261
- var _fgId2 = FunctionalGroup.findFunctionalGroupByBond(molecule, functionalGroups, _id4);
18262
- if (_fgId2 !== null && !result.includes(_fgId2)) {
18263
- result.push(_fgId2);
18264
- }
18425
+ if (ci.map === 'bonds') {
18426
+ var bond = this.editor.render.ctab.bonds.get(ci.id);
18427
+ return {
18428
+ id: null,
18429
+ selection: {
18430
+ atoms: [bond === null || bond === void 0 ? void 0 : bond.b.begin, bond === null || bond === void 0 ? void 0 : bond.b.end],
18431
+ bonds: [ci.id]
18265
18432
  }
18266
- } catch (err) {
18267
- _iterator10.e(err);
18268
- } finally {
18269
- _iterator10.f();
18270
- }
18433
+ };
18434
+ }
18435
+ if (ci.map === 'sgroups' || ci.map === 'sgroupData') {
18436
+ return {
18437
+ id: ci.id,
18438
+ selection: null
18439
+ };
18440
+ }
18441
+ return {
18442
+ id: null,
18443
+ selection: null
18444
+ };
18445
+ }
18446
+ }, {
18447
+ key: "shouldOpenDialog",
18448
+ value: function shouldOpenDialog(id, selection) {
18449
+ var _selection$atoms, _selection$bonds;
18450
+ var isAtomsOrBondsSelected = (selection === null || selection === void 0 || (_selection$atoms = selection.atoms) === null || _selection$atoms === void 0 ? void 0 : _selection$atoms.length) || (selection === null || selection === void 0 || (_selection$bonds = selection.bonds) === null || _selection$bonds === void 0 ? void 0 : _selection$bonds.length);
18451
+ return id !== null || isAtomsOrBondsSelected;
18452
+ }
18453
+ }, {
18454
+ key: "mouseup",
18455
+ value: function mouseup(event) {
18456
+ var struct = this.editor.render.ctab;
18457
+ var molecule = struct.molecule;
18458
+ var functionalGroups = molecule.functionalGroups;
18459
+ var ci = this.editor.findItem(event, searchMaps);
18460
+ var selected = this.editor.selection();
18461
+ if (this.isContractedFunctionalGroupClicked(ci, functionalGroups)) {
18462
+ return;
18271
18463
  }
18272
- if (result.length === 1) {
18464
+ var newSelected = {
18465
+ atoms: [],
18466
+ bonds: []
18467
+ };
18468
+ var _this$processSelected = this.processSelectedAtoms(selected, functionalGroups, struct, molecule, newSelected),
18469
+ atomsResult = _this$processSelected.atomsResult,
18470
+ extraAtoms = _this$processSelected.extraAtoms;
18471
+ var _this$processSelected2 = this.processSelectedBonds(selected, functionalGroups, molecule, struct),
18472
+ bondsResult = _this$processSelected2.bondsResult,
18473
+ extraBonds = _this$processSelected2.extraBonds;
18474
+ this.expandFunctionalGroupSelection(atomsResult, bondsResult, functionalGroups, molecule, struct, newSelected);
18475
+ var functionalGroupIds = this.collectFunctionalGroupIds(atomsResult, bondsResult, extraAtoms, extraBonds, functionalGroups, molecule);
18476
+ if (this.shouldRemoveSingleFunctionalGroup(functionalGroupIds)) {
18273
18477
  this.editor.selection(null);
18274
18478
  this.lassoHelper.cancel();
18275
18479
  this.editor.event.removeFG.dispatch({
18276
- fgIds: result
18480
+ fgIds: functionalGroupIds
18277
18481
  });
18278
18482
  return;
18279
18483
  }
18280
- var id = null;
18281
- var selection = null;
18282
- if (this.lassoHelper.running(event)) {
18283
- selection = newSelected.atoms.length > 0 ? selMerge(this.lassoHelper.end(event), newSelected, false) : this.lassoHelper.end(event);
18284
- var filteredAtomsAndBonds = filterNotPartOfSuperatomWithoutLabel({
18285
- atoms: selection.atoms,
18286
- bonds: selection.bonds
18287
- }, molecule);
18288
- selection = _objectSpread$15(_objectSpread$15({}, selection), {}, {
18289
- atoms: filteredAtomsAndBonds.atoms,
18290
- bonds: filteredAtomsAndBonds.bonds
18291
- });
18292
- this.editor.selection(selection);
18293
- } else {
18294
- if (!ci) {
18295
- return;
18296
- }
18297
- this.editor.hover(this.editor.findItem(event, searchMaps), null, event);
18298
- if (ci.map === 'atoms') {
18299
- selection = {
18300
- atoms: [ci.id]
18301
- };
18302
- } else if (ci.map === 'bonds') {
18303
- var _bond = this.editor.render.ctab.bonds.get(ci.id);
18304
- selection = {
18305
- atoms: [_bond === null || _bond === void 0 ? void 0 : _bond.b.begin, _bond === null || _bond === void 0 ? void 0 : _bond.b.end],
18306
- bonds: [ci.id]
18307
- };
18308
- } else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {
18309
- id = ci.id;
18310
- } else {
18311
- return;
18312
- }
18313
- }
18314
- var isAtomsOrBondsSelected = ((_selection = selection) === null || _selection === void 0 || (_selection = _selection.atoms) === null || _selection === void 0 ? void 0 : _selection.length) || ((_selection2 = selection) === null || _selection2 === void 0 || (_selection2 = _selection2.bonds) === null || _selection2 === void 0 ? void 0 : _selection2.length);
18315
- if (id !== null || isAtomsOrBondsSelected) {
18484
+ var _this$determineSelect = this.determineSelection(event, ci, newSelected, molecule),
18485
+ id = _this$determineSelect.id,
18486
+ selection = _this$determineSelect.selection;
18487
+ if (this.shouldOpenDialog(id, selection)) {
18316
18488
  this.editor.selection(selection);
18317
18489
  SGroupTool.sgroupDialog(this.editor, id);
18318
18490
  }
@@ -18649,7 +18821,10 @@ function customOnChangeHandler(action, handler) {
18649
18821
  return handler();
18650
18822
  }
18651
18823
  function handleMicroChanges(action, handler) {
18652
- action.operations.reverse().forEach(function (operation) {
18824
+ if (!(action !== null && action !== void 0 && action.operations) || !Array.isArray(action.operations)) {
18825
+ return handler(data);
18826
+ }
18827
+ _toConsumableArray(action.operations).reverse().forEach(function (operation) {
18653
18828
  var op = operation._inverted;
18654
18829
  switch (op.type) {
18655
18830
  case OperationType.ATOM_ADD:
@@ -21462,9 +21637,11 @@ function findCloseMerge(restruct, selected, options) {
21462
21637
  });
21463
21638
  selected.bonds.forEach(function (bid) {
21464
21639
  var bond = struct.bonds.get(bid);
21465
- pos.bonds.set(bid, Vec2.lc2(
21466
- struct.atoms.get(bond.begin).pp, 0.5,
21467
- struct.atoms.get(bond.end).pp, 0.5));
21640
+ if (bond) {
21641
+ pos.bonds.set(bid, Vec2.lc2(
21642
+ struct.atoms.get(bond.begin).pp, 0.5,
21643
+ struct.atoms.get(bond.end).pp, 0.5));
21644
+ }
21468
21645
  });
21469
21646
  var result = {
21470
21647
  atoms: new Map(),
@@ -25778,6 +25955,20 @@ var Editor$3 = function () {
25778
25955
  });
25779
25956
  this.render.update(true);
25780
25957
  }
25958
+ }, {
25959
+ key: "setRnaComponentAtoms",
25960
+ value: function setRnaComponentAtoms(componentKey, atomIds, bondIds) {
25961
+ var currentState = this.render.monomerCreationState;
25962
+ if (!currentState) return;
25963
+ var rnaComponentAtoms = currentState.rnaComponentAtoms || new Map();
25964
+ rnaComponentAtoms.set(componentKey, {
25965
+ atoms: atomIds,
25966
+ bonds: bondIds
25967
+ });
25968
+ this.render.monomerCreationState = _objectSpread$V(_objectSpread$V({}, currentState), {}, {
25969
+ rnaComponentAtoms: rnaComponentAtoms
25970
+ });
25971
+ }
25781
25972
  }, {
25782
25973
  key: "isMonomerCreationWizardActive",
25783
25974
  get: function get() {
@@ -26044,6 +26235,7 @@ var Editor$3 = function () {
26044
26235
  var _this2 = this;
26045
26236
  var forceAddNewLeavingGroupAtom = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
26046
26237
  var leavingAtomLabel = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : AtomLabel.H;
26238
+ var leavingAtomPosition = arguments.length > 6 ? arguments[6] : undefined;
26047
26239
  assert_1(this.monomerCreationState);
26048
26240
  var potentialLeavingAtoms = this.monomerCreationState.potentialAttachmentPoints.get(atomId);
26049
26241
  var leavingAtomId;
@@ -26073,7 +26265,7 @@ var Editor$3 = function () {
26073
26265
  stereo: Bond$2.PATTERN.STEREO.NONE
26074
26266
  }, atomId, {
26075
26267
  label: leavingAtomLabel
26076
- }),
26268
+ }, undefined, leavingAtomPosition),
26077
26269
  _fromBondAddition2 = _slicedToArray$1(_fromBondAddition, 4),
26078
26270
  bondAdditionAction = _fromBondAddition2[0],
26079
26271
  endAtomId = _fromBondAddition2[2],
@@ -26459,18 +26651,244 @@ var Editor$3 = function () {
26459
26651
  });
26460
26652
  return potentialLeavingAtoms;
26461
26653
  }
26654
+ }, {
26655
+ key: "getRnaComponentForAtom",
26656
+ value: function getRnaComponentForAtom(atomId) {
26657
+ var _this$monomerCreation;
26658
+ var rnaComponentAtoms = (_this$monomerCreation = this.monomerCreationState) === null || _this$monomerCreation === void 0 ? void 0 : _this$monomerCreation.rnaComponentAtoms;
26659
+ if (!rnaComponentAtoms) {
26660
+ return null;
26661
+ }
26662
+ var _iterator2 = _createForOfIteratorHelper$2(rnaComponentAtoms.entries()),
26663
+ _step2;
26664
+ try {
26665
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
26666
+ var _step2$value = _slicedToArray$1(_step2.value, 2),
26667
+ componentKey = _step2$value[0],
26668
+ componentData = _step2$value[1];
26669
+ if (componentData.atoms.includes(atomId)) {
26670
+ return componentKey;
26671
+ }
26672
+ }
26673
+ } catch (err) {
26674
+ _iterator2.e(err);
26675
+ } finally {
26676
+ _iterator2.f();
26677
+ }
26678
+ return null;
26679
+ }
26680
+ }, {
26681
+ key: "canAssignRnaComponent",
26682
+ value: function canAssignRnaComponent(bond) {
26683
+ var _this$monomerCreation2,
26684
+ _this6 = this;
26685
+ if (!((_this$monomerCreation2 = this.monomerCreationState) !== null && _this$monomerCreation2 !== void 0 && _this$monomerCreation2.rnaComponentAtoms)) {
26686
+ return false;
26687
+ }
26688
+ var beginAtomRnaComponent = this.getRnaComponentForAtom(bond.begin);
26689
+ var endAtomRnaComponent = this.getRnaComponentForAtom(bond.end);
26690
+ if (!beginAtomRnaComponent && !endAtomRnaComponent || beginAtomRnaComponent && endAtomRnaComponent && beginAtomRnaComponent !== endAtomRnaComponent) {
26691
+ return false;
26692
+ }
26693
+ var rnaComponentToAssign = beginAtomRnaComponent || endAtomRnaComponent;
26694
+ var struct = this.struct();
26695
+ var atomIdToStartFrom = beginAtomRnaComponent ? bond.begin : bond.end;
26696
+ var visitedAtomIds = new Set();
26697
+ var atomsToCheck = [atomIdToStartFrom];
26698
+ var hasConnectionToAnotherComponent = false;
26699
+ var hasConnectionToOriginalStructure = false;
26700
+ visitedAtomIds.add(atomIdToStartFrom);
26701
+ var _loop = function _loop() {
26702
+ var currentAtomId = atomsToCheck.pop();
26703
+ var currentAtom = isNumber(currentAtomId) ? struct.atoms.get(currentAtomId) : undefined;
26704
+ if (!currentAtom) {
26705
+ return 1;
26706
+ }
26707
+ currentAtom === null || currentAtom === void 0 || currentAtom.neighbors.forEach(function (neighbor) {
26708
+ var halfBond = struct.halfBonds.get(neighbor);
26709
+ if (hasConnectionToAnotherComponent || hasConnectionToOriginalStructure) {
26710
+ return;
26711
+ }
26712
+ if (!halfBond) {
26713
+ KetcherLogger.warn('Half-bond not found in structure');
26714
+ return;
26715
+ }
26716
+ var neighborAtomId = halfBond.begin === currentAtomId ? halfBond.end : halfBond.begin;
26717
+ if (visitedAtomIds.has(neighborAtomId)) {
26718
+ return;
26719
+ }
26720
+ visitedAtomIds.add(neighborAtomId);
26721
+ var neighborAtomRnaComponent = _this6.getRnaComponentForAtom(neighborAtomId);
26722
+ if (neighborAtomRnaComponent === rnaComponentToAssign) {
26723
+ return;
26724
+ }
26725
+ if (neighborAtomRnaComponent && neighborAtomRnaComponent !== rnaComponentToAssign) {
26726
+ hasConnectionToAnotherComponent = true;
26727
+ return;
26728
+ }
26729
+ var originalAtomId = _this6.selectedToOriginalAtomsIdMap.get(neighborAtomId);
26730
+ if (isNumber(originalAtomId) && _this6.originalStruct.atoms.has(originalAtomId)) {
26731
+ hasConnectionToOriginalStructure = true;
26732
+ return;
26733
+ }
26734
+ atomsToCheck.push(neighborAtomId);
26735
+ visitedAtomIds.add(neighborAtomId);
26736
+ });
26737
+ };
26738
+ while (atomsToCheck.length > 0) {
26739
+ if (_loop()) continue;
26740
+ }
26741
+ if (hasConnectionToAnotherComponent || hasConnectionToOriginalStructure) {
26742
+ return false;
26743
+ }
26744
+ return true;
26745
+ }
26746
+ }, {
26747
+ key: "autoAssignAtomToRnaComponent",
26748
+ value: function autoAssignAtomToRnaComponent(bondId) {
26749
+ var _this$monomerCreation3;
26750
+ var rnaComponentAtoms = (_this$monomerCreation3 = this.monomerCreationState) === null || _this$monomerCreation3 === void 0 ? void 0 : _this$monomerCreation3.rnaComponentAtoms;
26751
+ if (!rnaComponentAtoms) {
26752
+ return;
26753
+ }
26754
+ var struct = this.struct();
26755
+ var bond = struct.bonds.get(bondId);
26756
+ if (!bond) {
26757
+ KetcherLogger.warn('Bond not found in structure');
26758
+ return;
26759
+ }
26760
+ var beginAtomComponent = this.getRnaComponentForAtom(bond.begin);
26761
+ var endAtomComponent = this.getRnaComponentForAtom(bond.end);
26762
+ var componentToMark = beginAtomComponent || endAtomComponent;
26763
+ if (!componentToMark) {
26764
+ return;
26765
+ }
26766
+ var atomsIdsToMark = [];
26767
+ var bondIdsToMark = [];
26768
+ var bondIdsToCheck = [bondId];
26769
+ var visitedBonds = new Set();
26770
+ while (bondIdsToCheck.length > 0) {
26771
+ var currentBondId = bondIdsToCheck.pop();
26772
+ var currentBond = isNumber(currentBondId) ? struct.bonds.get(currentBondId) : undefined;
26773
+ if (!isNumber(currentBondId) || !currentBond || visitedBonds.has(currentBondId)) {
26774
+ continue;
26775
+ }
26776
+ bondIdsToMark.push(currentBondId);
26777
+ visitedBonds.add(currentBondId);
26778
+ var beginAtom = struct.atoms.get(currentBond.begin);
26779
+ var endAtom = struct.atoms.get(currentBond.end);
26780
+ var beginAtomRnaComponent = this.getRnaComponentForAtom(currentBond.begin);
26781
+ var endAtomRnaComponent = this.getRnaComponentForAtom(currentBond.end);
26782
+ var atomsToContinue = [];
26783
+ if (beginAtom && beginAtomRnaComponent !== componentToMark) {
26784
+ atomsIdsToMark.push(currentBond.begin);
26785
+ atomsToContinue.push(beginAtom);
26786
+ }
26787
+ if (endAtom && endAtomRnaComponent !== componentToMark) {
26788
+ atomsIdsToMark.push(currentBond.end);
26789
+ atomsToContinue.push(endAtom);
26790
+ }
26791
+ atomsToContinue.forEach(function (atom) {
26792
+ atom.neighbors.forEach(function (halfBondId) {
26793
+ var halfBond = struct.halfBonds.get(halfBondId);
26794
+ if (!halfBond) {
26795
+ KetcherLogger.warn('Half-bond not found in structure');
26796
+ return;
26797
+ }
26798
+ var nextBondId = halfBond.bid;
26799
+ var nextBond = struct.bonds.get(nextBondId);
26800
+ if (!nextBond || bondIdsToCheck.includes(nextBondId)) {
26801
+ KetcherLogger.warn('Bond not found in structure');
26802
+ return;
26803
+ }
26804
+ bondIdsToCheck.push(nextBondId);
26805
+ });
26806
+ });
26807
+ }
26808
+ this.addAtomsAndBondsToRnaComponent(componentToMark, atomsIdsToMark, bondIdsToMark);
26809
+ }
26810
+ }, {
26811
+ key: "updateRnaComponentStructureState",
26812
+ value: function updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds) {
26813
+ var _this$monomerCreation4;
26814
+ (_this$monomerCreation4 = this.monomerCreationState) === null || _this$monomerCreation4 === void 0 || (_this$monomerCreation4 = _this$monomerCreation4.rnaComponentAtoms) === null || _this$monomerCreation4 === void 0 || _this$monomerCreation4.set(componentKey, {
26815
+ atoms: updatedAtoms,
26816
+ bonds: updatedBonds
26817
+ });
26818
+ var eventData = {
26819
+ componentKey: componentKey,
26820
+ atomIds: updatedAtoms,
26821
+ bondIds: updatedBonds
26822
+ };
26823
+ window.dispatchEvent(new CustomEvent(MonomerCreationComponentStructureUpdateEvent, {
26824
+ detail: eventData
26825
+ }));
26826
+ }
26827
+ }, {
26828
+ key: "addAtomsAndBondsToRnaComponent",
26829
+ value: function addAtomsAndBondsToRnaComponent(componentKey, atomIds, bondIds) {
26830
+ var _this$monomerCreation5;
26831
+ if (!((_this$monomerCreation5 = this.monomerCreationState) !== null && _this$monomerCreation5 !== void 0 && _this$monomerCreation5.rnaComponentAtoms)) {
26832
+ return;
26833
+ }
26834
+ var componentData = this.monomerCreationState.rnaComponentAtoms.get(componentKey);
26835
+ if (!componentData) {
26836
+ return;
26837
+ }
26838
+ var updatedAtoms = _toConsumableArray(componentData.atoms);
26839
+ var updatedBonds = _toConsumableArray(componentData.bonds);
26840
+ atomIds.forEach(function (atomId) {
26841
+ if (!updatedAtoms.includes(atomId)) {
26842
+ updatedAtoms.push(atomId);
26843
+ }
26844
+ });
26845
+ bondIds.forEach(function (bondId) {
26846
+ if (!updatedBonds.includes(bondId)) {
26847
+ updatedBonds.push(bondId);
26848
+ }
26849
+ });
26850
+ this.updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds);
26851
+ }
26852
+ }, {
26853
+ key: "removeAtomsAndBondsFromRnaComponents",
26854
+ value: function removeAtomsAndBondsFromRnaComponents(atomIds, bondIds) {
26855
+ var _this$monomerCreation6;
26856
+ if (!((_this$monomerCreation6 = this.monomerCreationState) !== null && _this$monomerCreation6 !== void 0 && _this$monomerCreation6.rnaComponentAtoms)) {
26857
+ return;
26858
+ }
26859
+ var _iterator3 = _createForOfIteratorHelper$2(this.monomerCreationState.rnaComponentAtoms.entries()),
26860
+ _step3;
26861
+ try {
26862
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
26863
+ var _step3$value = _slicedToArray$1(_step3.value, 2),
26864
+ componentKey = _step3$value[0],
26865
+ componentData = _step3$value[1];
26866
+ var updatedAtoms = componentData.atoms.filter(function (atomId) {
26867
+ return !atomIds.includes(atomId);
26868
+ });
26869
+ var updatedBonds = componentData.bonds.filter(function (bondId) {
26870
+ return !bondIds.includes(bondId);
26871
+ });
26872
+ this.updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds);
26873
+ }
26874
+ } catch (err) {
26875
+ _iterator3.e(err);
26876
+ } finally {
26877
+ _iterator3.f();
26878
+ }
26879
+ }
26462
26880
  }, {
26463
26881
  key: "subscribeToChangeEventInMonomerCreationWizard",
26464
26882
  value: function subscribeToChangeEventInMonomerCreationWizard() {
26465
- var _this6 = this;
26883
+ var _this7 = this;
26466
26884
  if (this.changeEventSubscriber) {
26467
26885
  return;
26468
26886
  }
26469
26887
  var handleChangeEvent = function handleChangeEvent(data) {
26470
- if (!_this6.isMonomerCreationWizardActive || data.length === 0) {
26888
+ if (!_this7.isMonomerCreationWizardActive || data.length === 0) {
26471
26889
  return;
26472
26890
  }
26473
- _this6.collectChangesForMonomerCreationStateInvalidation(data);
26891
+ _this7.collectChangesForMonomerCreationStateInvalidation(data);
26474
26892
  };
26475
26893
  this.changeEventSubscriber = this.subscribe('change', handleChangeEvent);
26476
26894
  }
@@ -26491,9 +26909,11 @@ var Editor$3 = function () {
26491
26909
  var changesMap = new Map();
26492
26910
  data.forEach(function (entry) {
26493
26911
  switch (entry.operation) {
26912
+ case OperationType.ATOM_ADD:
26494
26913
  case OperationType.ATOM_DELETE:
26495
26914
  case OperationType.ATOM_ATTR:
26496
26915
  case OperationType.BOND_ADD:
26916
+ case OperationType.BOND_DELETE:
26497
26917
  case OperationType.BOND_ATTR:
26498
26918
  {
26499
26919
  if (entry.id !== undefined) {
@@ -26513,21 +26933,21 @@ var Editor$3 = function () {
26513
26933
  }, {
26514
26934
  key: "invalidateMonomerCreationWizardState",
26515
26935
  value: function invalidateMonomerCreationWizardState(changesMap) {
26516
- var _this7 = this;
26936
+ var _this8 = this;
26517
26937
  if (!this.monomerCreationState) {
26518
26938
  return;
26519
26939
  }
26520
- var _iterator2 = _createForOfIteratorHelper$2(changesMap.entries()),
26521
- _step2;
26940
+ var _iterator4 = _createForOfIteratorHelper$2(changesMap.entries()),
26941
+ _step4;
26522
26942
  try {
26523
- var _loop = function _loop() {
26524
- var _step2$value = _slicedToArray$1(_step2.value, 2),
26525
- operation = _step2$value[0],
26526
- ids = _step2$value[1];
26943
+ var _loop2 = function _loop2() {
26944
+ var _step4$value = _slicedToArray$1(_step4.value, 2),
26945
+ operation = _step4$value[0],
26946
+ ids = _step4$value[1];
26527
26947
  switch (operation) {
26528
26948
  case OperationType.ATOM_DELETE:
26529
26949
  {
26530
- var attachmentPointsToInvalidate = Array.from(_this7.monomerCreationState.assignedAttachmentPoints.entries()).filter(function (_ref11) {
26950
+ var attachmentPointsToInvalidate = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).filter(function (_ref11) {
26531
26951
  var _ref12 = _slicedToArray$1(_ref11, 2),
26532
26952
  atomPair = _ref12[1];
26533
26953
  return ids.has(atomPair[0]) || ids.has(atomPair[1]);
@@ -26543,67 +26963,68 @@ var Editor$3 = function () {
26543
26963
  attachmentAtomId = _atomPair5[0],
26544
26964
  leavingAtomId = _atomPair5[1];
26545
26965
  if (ids.has(attachmentAtomId)) {
26546
- var _this7$monomerCreatio;
26547
- (_this7$monomerCreatio = _this7.monomerCreationState) === null || _this7$monomerCreatio === void 0 || _this7$monomerCreatio.assignedAttachmentPoints["delete"](attachmentPointName);
26966
+ var _this8$monomerCreatio;
26967
+ (_this8$monomerCreatio = _this8.monomerCreationState) === null || _this8$monomerCreatio === void 0 || _this8$monomerCreatio.assignedAttachmentPoints["delete"](attachmentPointName);
26548
26968
  } else if (ids.has(leavingAtomId)) {
26549
- var potentialLeavingAtoms = _this7.findPotentialLeavingAtoms(attachmentAtomId);
26969
+ var potentialLeavingAtoms = _this8.findPotentialLeavingAtoms(attachmentAtomId);
26550
26970
  if (potentialLeavingAtoms.length === 0) {
26551
- var _this7$monomerCreatio2;
26552
- (_this7$monomerCreatio2 = _this7.monomerCreationState) === null || _this7$monomerCreatio2 === void 0 || _this7$monomerCreatio2.assignedAttachmentPoints["delete"](attachmentPointName);
26971
+ var _this8$monomerCreatio2;
26972
+ (_this8$monomerCreatio2 = _this8.monomerCreationState) === null || _this8$monomerCreatio2 === void 0 || _this8$monomerCreatio2.assignedAttachmentPoints["delete"](attachmentPointName);
26553
26973
  } else {
26554
- var _this7$monomerCreatio3;
26555
- var newLeavingAtomId = _this7.struct().atoms.keyOf(potentialLeavingAtoms[0]);
26974
+ var _this8$monomerCreatio3;
26975
+ var newLeavingAtomId = _this8.struct().atoms.keyOf(potentialLeavingAtoms[0]);
26556
26976
  assert_1(newLeavingAtomId !== null);
26557
- (_this7$monomerCreatio3 = _this7.monomerCreationState) === null || _this7$monomerCreatio3 === void 0 || _this7$monomerCreatio3.assignedAttachmentPoints.set(attachmentPointName, [attachmentAtomId, newLeavingAtomId]);
26977
+ (_this8$monomerCreatio3 = _this8.monomerCreationState) === null || _this8$monomerCreatio3 === void 0 || _this8$monomerCreatio3.assignedAttachmentPoints.set(attachmentPointName, [attachmentAtomId, newLeavingAtomId]);
26558
26978
  }
26559
26979
  }
26560
26980
  });
26561
- var potentialAttachmentPointsToInvalidate = Array.from(_this7.monomerCreationState.potentialAttachmentPoints.entries());
26981
+ var potentialAttachmentPointsToInvalidate = Array.from(_this8.monomerCreationState.potentialAttachmentPoints.entries());
26562
26982
  potentialAttachmentPointsToInvalidate.forEach(function (_ref15) {
26563
26983
  var _ref16 = _slicedToArray$1(_ref15, 2),
26564
26984
  attachmentAtomId = _ref16[0],
26565
26985
  leavingAtomIds = _ref16[1];
26566
26986
  if (ids.has(attachmentAtomId)) {
26567
- var _this7$monomerCreatio4;
26568
- (_this7$monomerCreatio4 = _this7.monomerCreationState) === null || _this7$monomerCreatio4 === void 0 || _this7$monomerCreatio4.potentialAttachmentPoints["delete"](attachmentAtomId);
26987
+ var _this8$monomerCreatio4;
26988
+ (_this8$monomerCreatio4 = _this8.monomerCreationState) === null || _this8$monomerCreatio4 === void 0 || _this8$monomerCreatio4.potentialAttachmentPoints["delete"](attachmentAtomId);
26569
26989
  } else {
26570
26990
  var updatedLeavingAtomIds = new Set(Array.from(leavingAtomIds).filter(function (id) {
26571
26991
  return !ids.has(id);
26572
26992
  }));
26573
26993
  if (updatedLeavingAtomIds.size === 0) {
26574
- var _this7$monomerCreatio5;
26575
- (_this7$monomerCreatio5 = _this7.monomerCreationState) === null || _this7$monomerCreatio5 === void 0 || _this7$monomerCreatio5.potentialAttachmentPoints["delete"](attachmentAtomId);
26994
+ var _this8$monomerCreatio5;
26995
+ (_this8$monomerCreatio5 = _this8.monomerCreationState) === null || _this8$monomerCreatio5 === void 0 || _this8$monomerCreatio5.potentialAttachmentPoints["delete"](attachmentAtomId);
26576
26996
  } else {
26577
- var _this7$monomerCreatio6;
26578
- (_this7$monomerCreatio6 = _this7.monomerCreationState) === null || _this7$monomerCreatio6 === void 0 || _this7$monomerCreatio6.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
26997
+ var _this8$monomerCreatio6;
26998
+ (_this8$monomerCreatio6 = _this8.monomerCreationState) === null || _this8$monomerCreatio6 === void 0 || _this8$monomerCreatio6.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
26579
26999
  }
26580
27000
  }
26581
27001
  });
27002
+ _this8.removeAtomsAndBondsFromRnaComponents([], _toConsumableArray(ids.values()));
26582
27003
  }
26583
27004
  break;
26584
27005
  case OperationType.BOND_ATTR:
26585
27006
  {
26586
- var _iterator3 = _createForOfIteratorHelper$2(ids.values()),
26587
- _step3;
27007
+ var _iterator5 = _createForOfIteratorHelper$2(ids.values()),
27008
+ _step5;
26588
27009
  try {
26589
- var _loop2 = function _loop2() {
26590
- var id = _step3.value;
26591
- var bond = _this7.struct().bonds.get(id);
27010
+ var _loop3 = function _loop3() {
27011
+ var id = _step5.value;
27012
+ var bond = _this8.struct().bonds.get(id);
26592
27013
  assert_1(bond);
26593
- var attachmentPointWithBond = Array.from(_this7.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref17) {
27014
+ var attachmentPointWithBond = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref17) {
26594
27015
  var _ref18 = _slicedToArray$1(_ref17, 2),
26595
27016
  atomPair = _ref18[1];
26596
27017
  return bond.begin === atomPair[0] && bond.end === atomPair[1] || bond.begin === atomPair[1] && bond.end === atomPair[0];
26597
27018
  });
26598
27019
  if (attachmentPointWithBond) {
26599
27020
  if (!Editor.isBondSuitableForAttachmentPoint(bond)) {
26600
- _this7.monomerCreationState.problematicAttachmentPoints.add(attachmentPointWithBond[0]);
27021
+ _this8.monomerCreationState.problematicAttachmentPoints.add(attachmentPointWithBond[0]);
26601
27022
  } else {
26602
- _this7.monomerCreationState.problematicAttachmentPoints["delete"](attachmentPointWithBond[0]);
27023
+ _this8.monomerCreationState.problematicAttachmentPoints["delete"](attachmentPointWithBond[0]);
26603
27024
  }
26604
27025
  }
26605
27026
  if (!Editor.isBondSuitableForAttachmentPoint(bond)) {
26606
- _this7.monomerCreationState.potentialAttachmentPoints.forEach(function (leavingAtomIds, attachmentAtomId) {
27027
+ _this8.monomerCreationState.potentialAttachmentPoints.forEach(function (leavingAtomIds, attachmentAtomId) {
26607
27028
  var updatedLeavingAtomIds = new Set(leavingAtomIds);
26608
27029
  var bondFromAttachmentAtom = bond.begin === attachmentAtomId && leavingAtomIds.has(bond.end);
26609
27030
  var bondToAttachmentAtom = bond.end === attachmentAtomId && leavingAtomIds.has(bond.begin);
@@ -26611,35 +27032,35 @@ var Editor$3 = function () {
26611
27032
  updatedLeavingAtomIds["delete"](bondFromAttachmentAtom ? bond.end : bond.begin);
26612
27033
  }
26613
27034
  if (updatedLeavingAtomIds.size === 0) {
26614
- var _this7$monomerCreatio7;
26615
- (_this7$monomerCreatio7 = _this7.monomerCreationState) === null || _this7$monomerCreatio7 === void 0 || _this7$monomerCreatio7.potentialAttachmentPoints["delete"](attachmentAtomId);
27035
+ var _this8$monomerCreatio7;
27036
+ (_this8$monomerCreatio7 = _this8.monomerCreationState) === null || _this8$monomerCreatio7 === void 0 || _this8$monomerCreatio7.potentialAttachmentPoints["delete"](attachmentAtomId);
26616
27037
  } else {
26617
- var _this7$monomerCreatio8;
26618
- (_this7$monomerCreatio8 = _this7.monomerCreationState) === null || _this7$monomerCreatio8 === void 0 || _this7$monomerCreatio8.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
27038
+ var _this8$monomerCreatio8;
27039
+ (_this8$monomerCreatio8 = _this8.monomerCreationState) === null || _this8$monomerCreatio8 === void 0 || _this8$monomerCreatio8.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
26619
27040
  }
26620
27041
  });
26621
27042
  }
26622
27043
  };
26623
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
26624
- _loop2();
27044
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
27045
+ _loop3();
26625
27046
  }
26626
27047
  } catch (err) {
26627
- _iterator3.e(err);
27048
+ _iterator5.e(err);
26628
27049
  } finally {
26629
- _iterator3.f();
27050
+ _iterator5.f();
26630
27051
  }
26631
27052
  break;
26632
27053
  }
26633
27054
  case OperationType.BOND_ADD:
26634
27055
  {
26635
- var _iterator4 = _createForOfIteratorHelper$2(ids.values()),
26636
- _step4;
27056
+ var _iterator6 = _createForOfIteratorHelper$2(ids.values()),
27057
+ _step6;
26637
27058
  try {
26638
- var _loop3 = function _loop3() {
26639
- var id = _step4.value;
26640
- var bond = _this7.struct().bonds.get(id);
27059
+ var _loop4 = function _loop4() {
27060
+ var id = _step6.value;
27061
+ var bond = _this8.struct().bonds.get(id);
26641
27062
  assert_1(bond);
26642
- var attachmentPointWithBondToLeavingAtom = Array.from(_this7.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref19) {
27063
+ var attachmentPointWithBondToLeavingAtom = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref19) {
26643
27064
  var _ref20 = _slicedToArray$1(_ref19, 2),
26644
27065
  _ref20$ = _slicedToArray$1(_ref20[1], 2),
26645
27066
  attachmentAtomId = _ref20$[0],
@@ -26649,55 +27070,72 @@ var Editor$3 = function () {
26649
27070
  if (attachmentPointWithBondToLeavingAtom) {
26650
27071
  var _attachmentPointWithB = _slicedToArray$1(attachmentPointWithBondToLeavingAtom, 1),
26651
27072
  attachmentPointName = _attachmentPointWithB[0];
26652
- _this7.monomerCreationState.assignedAttachmentPoints["delete"](attachmentPointName);
27073
+ _this8.monomerCreationState.assignedAttachmentPoints["delete"](attachmentPointName);
26653
27074
  }
26654
27075
  if (Editor.isBondSuitableForAttachmentPoint(bond)) {
26655
- if (_this7.monomerCreationState.potentialAttachmentPoints.has(bond.begin)) {
26656
- var leavingAtomIds = _this7.monomerCreationState.potentialAttachmentPoints.get(bond.begin);
27076
+ if (_this8.monomerCreationState.potentialAttachmentPoints.has(bond.begin)) {
27077
+ var leavingAtomIds = _this8.monomerCreationState.potentialAttachmentPoints.get(bond.begin);
26657
27078
  assert_1(leavingAtomIds);
26658
- var endAtom = _this7.struct().atoms.get(bond.end);
27079
+ var endAtom = _this8.struct().atoms.get(bond.end);
26659
27080
  if (endAtom && endAtom.neighbors.length === 1) {
26660
27081
  var updatedLeavingAtomIds = new Set(leavingAtomIds);
26661
27082
  updatedLeavingAtomIds.add(bond.end);
26662
- _this7.monomerCreationState.potentialAttachmentPoints.set(bond.begin, updatedLeavingAtomIds);
27083
+ _this8.monomerCreationState.potentialAttachmentPoints.set(bond.begin, updatedLeavingAtomIds);
26663
27084
  }
26664
27085
  }
26665
- if (_this7.monomerCreationState.potentialAttachmentPoints.has(bond.end)) {
26666
- var _leavingAtomIds = _this7.monomerCreationState.potentialAttachmentPoints.get(bond.end);
27086
+ if (_this8.monomerCreationState.potentialAttachmentPoints.has(bond.end)) {
27087
+ var _leavingAtomIds = _this8.monomerCreationState.potentialAttachmentPoints.get(bond.end);
26667
27088
  assert_1(_leavingAtomIds);
26668
- var beginAtom = _this7.struct().atoms.get(bond.begin);
27089
+ var beginAtom = _this8.struct().atoms.get(bond.begin);
26669
27090
  if (beginAtom && beginAtom.neighbors.length === 1) {
26670
27091
  var _updatedLeavingAtomIds = new Set(_leavingAtomIds);
26671
27092
  _updatedLeavingAtomIds.add(bond.begin);
26672
- _this7.monomerCreationState.potentialAttachmentPoints.set(bond.end, _updatedLeavingAtomIds);
27093
+ _this8.monomerCreationState.potentialAttachmentPoints.set(bond.end, _updatedLeavingAtomIds);
26673
27094
  }
26674
27095
  }
26675
27096
  }
27097
+ if (_this8.canAssignRnaComponent(bond)) {
27098
+ _this8.autoAssignAtomToRnaComponent(id);
27099
+ }
26676
27100
  };
26677
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
26678
- _loop3();
27101
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
27102
+ _loop4();
26679
27103
  }
26680
27104
  } catch (err) {
26681
- _iterator4.e(err);
27105
+ _iterator6.e(err);
26682
27106
  } finally {
26683
- _iterator4.f();
27107
+ _iterator6.f();
26684
27108
  }
26685
27109
  break;
26686
27110
  }
27111
+ case OperationType.BOND_DELETE:
27112
+ {
27113
+ _this8.removeAtomsAndBondsFromRnaComponents([], _toConsumableArray(ids.values()));
27114
+ break;
27115
+ }
26687
27116
  default:
26688
27117
  break;
26689
27118
  }
26690
27119
  };
26691
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
26692
- if (_loop()) continue;
27120
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
27121
+ if (_loop2()) continue;
26693
27122
  }
26694
27123
  } catch (err) {
26695
- _iterator2.e(err);
27124
+ _iterator4.e(err);
26696
27125
  } finally {
26697
- _iterator2.f();
27126
+ _iterator4.f();
26698
27127
  }
26699
27128
  this.monomerCreationState = _objectSpread$V({}, this.monomerCreationState || {});
26700
27129
  }
27130
+ }, {
27131
+ key: "setRnaMonomerCreationMode",
27132
+ value: function setRnaMonomerCreationMode(isActive) {
27133
+ if (!this.monomerCreationState) {
27134
+ KetcherLogger.warn('Monomer creation state is not initialized');
27135
+ return;
27136
+ }
27137
+ this.monomerCreationState.isRnaPresetMode = isActive;
27138
+ }
26701
27139
  }, {
26702
27140
  key: "selection",
26703
27141
  value: function selection(ci) {
@@ -26899,7 +27337,20 @@ var Editor$3 = function () {
26899
27337
  }, {
26900
27338
  key: "unsubscribe",
26901
27339
  value: function unsubscribe(eventName, subscriber) {
26902
- this.event[eventName].remove(subscriber.handler);
27340
+ switch (eventName) {
27341
+ case 'change':
27342
+ {
27343
+ ketcherProvider.getKetcher(this.ketcherId).changeEvent.remove(subscriber.handler);
27344
+ break;
27345
+ }
27346
+ case 'libraryUpdate':
27347
+ {
27348
+ ketcherProvider.getKetcher(this.ketcherId).libraryUpdateEvent.remove(subscriber.handler);
27349
+ break;
27350
+ }
27351
+ default:
27352
+ this.event[eventName].remove(subscriber.handler);
27353
+ }
26903
27354
  }
26904
27355
  }, {
26905
27356
  key: "findItem",
@@ -27035,17 +27486,17 @@ var Editor$3 = function () {
27035
27486
  return false;
27036
27487
  }
27037
27488
  var adjacencyList = new Map();
27038
- var _iterator5 = _createForOfIteratorHelper$2(atomIds),
27039
- _step5;
27489
+ var _iterator7 = _createForOfIteratorHelper$2(atomIds),
27490
+ _step7;
27040
27491
  try {
27041
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
27042
- var atomId = _step5.value;
27492
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
27493
+ var atomId = _step7.value;
27043
27494
  adjacencyList.set(atomId, []);
27044
27495
  }
27045
27496
  } catch (err) {
27046
- _iterator5.e(err);
27497
+ _iterator7.e(err);
27047
27498
  } finally {
27048
- _iterator5.f();
27499
+ _iterator7.f();
27049
27500
  }
27050
27501
  bondIds.forEach(function (bondId) {
27051
27502
  var bond = struct.bonds.get(bondId);
@@ -27067,19 +27518,19 @@ var Editor$3 = function () {
27067
27518
  if (nextAtomId !== undefined && !visited.has(nextAtomId)) {
27068
27519
  var _adjacencyList$get3;
27069
27520
  visited.add(nextAtomId);
27070
- var _iterator6 = _createForOfIteratorHelper$2((_adjacencyList$get3 = adjacencyList.get(nextAtomId)) !== null && _adjacencyList$get3 !== void 0 ? _adjacencyList$get3 : []),
27071
- _step6;
27521
+ var _iterator8 = _createForOfIteratorHelper$2((_adjacencyList$get3 = adjacencyList.get(nextAtomId)) !== null && _adjacencyList$get3 !== void 0 ? _adjacencyList$get3 : []),
27522
+ _step8;
27072
27523
  try {
27073
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
27074
- var neighbor = _step6.value;
27524
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
27525
+ var neighbor = _step8.value;
27075
27526
  if (!visited.has(neighbor)) {
27076
27527
  queue.push(neighbor);
27077
27528
  }
27078
27529
  }
27079
27530
  } catch (err) {
27080
- _iterator6.e(err);
27531
+ _iterator8.e(err);
27081
27532
  } finally {
27082
- _iterator6.f();
27533
+ _iterator8.f();
27083
27534
  }
27084
27535
  }
27085
27536
  }
@@ -27245,7 +27696,7 @@ function setHover(ci, visible, render) {
27245
27696
 
27246
27697
  var classes$F = {"button-common-styles":"StructEditor-module_button-common-styles__3P7PO","scrollbar":"StructEditor-module_scrollbar__SUs-o","spinnerOverlay":"StructEditor-module_spinnerOverlay__5H1IM","canvas":"StructEditor-module_canvas__LLnzh","measureLog":"StructEditor-module_measureLog__B2wuy","visible":"StructEditor-module_visible__3eFNB","intermediateCanvas":"StructEditor-module_intermediateCanvas__fR3ws","enableCursor":"StructEditor-module_enableCursor__Qla0A"};
27247
27698
 
27248
- var styles$p = {"button-common-styles":"ContextMenu-module_button-common-styles__pshYr","scrollbar":"ContextMenu-module_scrollbar__fCla5","contextMenu":"ContextMenu-module_contextMenu__oqyL-","icon":"ContextMenu-module_icon__KhXEk","contextMenuText":"ContextMenu-module_contextMenuText__j0O2-","sameGroup":"ContextMenu-module_sameGroup__0DPIX","devider":"ContextMenu-module_devider__-K9Bc"};
27699
+ var styles$p = {"button-common-styles":"ContextMenu-module_button-common-styles__pshYr","scrollbar":"ContextMenu-module_scrollbar__fCla5","contextMenu":"ContextMenu-module_contextMenu__oqyL-","icon":"ContextMenu-module_icon__KhXEk","markAsComponentIcon":"ContextMenu-module_markAsComponentIcon__oBjcI","contextMenuText":"ContextMenu-module_contextMenuText__j0O2-","sameGroup":"ContextMenu-module_sameGroup__0DPIX","devider":"ContextMenu-module_devider__-K9Bc"};
27249
27700
 
27250
27701
  var CONTEXT_MENU_ID;
27251
27702
  (function (CONTEXT_MENU_ID) {
@@ -27415,6 +27866,116 @@ var useDelete$1 = function useDelete() {
27415
27866
  return handler;
27416
27867
  };
27417
27868
 
27869
+ var MonomerTypeSelectConfig = [{
27870
+ value: KetMonomerClass.AminoAcid,
27871
+ label: 'Amino acid',
27872
+ iconName: 'peptide'
27873
+ }, {
27874
+ value: KetMonomerClass.Sugar,
27875
+ label: 'Sugar',
27876
+ iconName: 'sugar'
27877
+ }, {
27878
+ value: KetMonomerClass.Base,
27879
+ label: 'Base',
27880
+ iconName: 'base'
27881
+ }, {
27882
+ value: KetMonomerClass.Phosphate,
27883
+ label: 'Phosphate',
27884
+ iconName: 'phosphate'
27885
+ }, {
27886
+ value: KetMonomerClass.RNA,
27887
+ label: 'Nucleotide (monomer)',
27888
+ iconName: 'nucleotide'
27889
+ }, {
27890
+ value: 'rnaPreset',
27891
+ label: 'Nucleotide (preset)',
27892
+ iconName: 'preset'
27893
+ }, {
27894
+ value: KetMonomerClass.CHEM,
27895
+ label: 'CHEM',
27896
+ iconName: 'chem'
27897
+ }];
27898
+ var MAX_MODIFICATION_TYPES = 5;
27899
+ var NotificationMessages = {
27900
+ defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
27901
+ emptyMandatoryFields: 'Mandatory fields must be filled.',
27902
+ invalidSymbol: 'The monomer code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
27903
+ symbolExists: 'The code must be unique amongst peptide, RNA, or CHEM monomers.',
27904
+ editingIsNotAllowed: 'Editing of the structure is not allowed.',
27905
+ noAttachmentPoints: 'The monomer must have at least one attachment point.',
27906
+ incorrectAttachmentPointsOrder: 'Attachment point numbers must be in order, but R1 and R2 may be skipped.',
27907
+ creationSuccessful: 'The monomer was successfully added to the library.',
27908
+ creationRNASuccessful: 'The preset was successfully added to the library.',
27909
+ incontinuousStructure: 'All monomers must have a continuous structure.',
27910
+ notUniqueModificationTypes: 'Only one amino acid within a natural analogue can have the same modification type.',
27911
+ modificationTypeExists: 'Only one amino acid within a natural analogue can have the same modification type.',
27912
+ notMinimalViableStructure: 'Minimal monomer structure is two atoms connected via a single bond.',
27913
+ impureStructure: 'Monomer structure cannot contain S-groups, R-groups, special atoms, or any other query properties.',
27914
+ invalidHELMAlias: 'The HELM alias must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
27915
+ notUniqueHELMAlias: 'The HELM alias must be unique amongst peptide or RNA monomers.',
27916
+ invalidRnaPresetStructure: 'Structure of rna preset component contains issues. Please adjust the structure.',
27917
+ notUniquePresetCode: 'The preset code must be unique amongst other presets.',
27918
+ invalidPresetCode: 'The preset code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).'
27919
+ };
27920
+ var NotificationTypes = {
27921
+ defaultAttachmentPoints: 'info',
27922
+ emptyMandatoryFields: 'error',
27923
+ invalidSymbol: 'error',
27924
+ symbolExists: 'error',
27925
+ editingIsNotAllowed: 'error',
27926
+ noAttachmentPoints: 'error',
27927
+ incorrectAttachmentPointsOrder: 'error',
27928
+ creationSuccessful: 'info',
27929
+ creationRNASuccessful: 'info',
27930
+ incontinuousStructure: 'error',
27931
+ notUniqueModificationTypes: 'error',
27932
+ modificationTypeExists: 'error',
27933
+ notMinimalViableStructure: 'error',
27934
+ impureStructure: 'error',
27935
+ invalidHELMAlias: 'error',
27936
+ notUniqueHELMAlias: 'error',
27937
+ invalidRnaPresetStructure: 'error',
27938
+ notUniquePresetCode: 'error',
27939
+ invalidPresetCode: 'error'
27940
+ };
27941
+ var MonomerCreationExternalNotificationAction = 'MonomerCreationExternalNotification';
27942
+ var MonomerCreationMarkAsComponentAction = 'MonomerCreationMarkAsComponent';
27943
+
27944
+ var useMarkAs = function useMarkAs() {
27945
+ var _useAppContext = useAppContext(),
27946
+ ketcherId = _useAppContext.ketcherId;
27947
+ var handler = useCallback(function (componentType) {
27948
+ return function (_params) {
27949
+ window.dispatchEvent(new CustomEvent(MonomerCreationMarkAsComponentAction, {
27950
+ detail: componentType
27951
+ }));
27952
+ };
27953
+ }, []);
27954
+ var isVisible = useCallback(function () {
27955
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
27956
+ if (!editor.isMonomerCreationWizardActive) {
27957
+ return false;
27958
+ }
27959
+ var monomerCreationState = editor.monomerCreationState;
27960
+ return monomerCreationState === null || monomerCreationState === void 0 ? void 0 : monomerCreationState.isRnaPresetMode;
27961
+ }, [ketcherId]);
27962
+ var isDisabled = useCallback(function () {
27963
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
27964
+ var selection = editor.selection();
27965
+ var struct = editor.struct();
27966
+ if (!(selection !== null && selection !== void 0 && selection.atoms) || selection.atoms.length === 0) {
27967
+ return true;
27968
+ }
27969
+ var isContinuous = Editor$3.isStructureContinuous(struct, selection);
27970
+ return !isContinuous;
27971
+ }, [ketcherId]);
27972
+ return {
27973
+ handler: handler,
27974
+ isVisible: isVisible,
27975
+ isDisabled: isDisabled
27976
+ };
27977
+ };
27978
+
27418
27979
  var classes$E = {"button-common-styles":"ToggleButtonGroup-module_button-common-styles__wU4We","scrollbar":"ToggleButtonGroup-module_scrollbar__lvyIF","button":"ToggleButtonGroup-module_button__5nfNK","selected":"ToggleButtonGroup-module_selected__SAbod"};
27419
27980
 
27420
27981
  var BUTTON_HEIGHT = 28;
@@ -27778,6 +28339,10 @@ var AtomMenuItems = function AtomMenuItems(props) {
27778
28339
  handleStereo = _useAtomStereo2[0],
27779
28340
  stereoDisabled = _useAtomStereo2[1];
27780
28341
  var handleDelete = useDelete$1();
28342
+ var _useMarkAs = useMarkAs(),
28343
+ handleMarkAs = _useMarkAs.handler,
28344
+ markAsIsVisible = _useMarkAs.isVisible,
28345
+ markAsIsDisabled = _useMarkAs.isDisabled;
27781
28346
  var _useAppContext = useAppContext(),
27782
28347
  ketcherId = _useAppContext.ketcherId;
27783
28348
  var ketcher = ketcherProvider.getKetcher(ketcherId);
@@ -27847,8 +28412,43 @@ var AtomMenuItems = function AtomMenuItems(props) {
27847
28412
  }
27848
28413
  var editMenuItemTitle = (_props$propsFromTrigg7 = props.propsFromTrigger) !== null && _props$propsFromTrigg7 !== void 0 && _props$propsFromTrigg7.extraItemsSelected ? 'Edit selected atoms...' : 'Edit...';
27849
28414
  var disabledForMonomerCreation = editor.isMonomerCreationWizardActive;
28415
+ var showMarkAsMenu = markAsIsVisible();
28416
+ var markAsDisabled = markAsIsDisabled();
27850
28417
  return jsxs(Fragment, {
27851
- children: [makeAttachmentPointMenuItems && jsxs(Fragment, {
28418
+ children: [showMarkAsMenu && jsxs(Submenu, _objectSpread$T(_objectSpread$T({}, props), {}, {
28419
+ "data-testid": "Mark as a...-option",
28420
+ label: "Mark as a...",
28421
+ disabled: markAsDisabled,
28422
+ className: styles$p.subMenu,
28423
+ children: [jsxs(Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
28424
+ "data-testid": "Mark as Base-option",
28425
+ onClick: handleMarkAs('base'),
28426
+ children: [jsx(Icon, {
28427
+ name: "base",
28428
+ className: clsx(styles$p.icon, styles$p.markAsComponentIcon)
28429
+ }), jsx("span", {
28430
+ children: "Base"
28431
+ })]
28432
+ })), jsxs(Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
28433
+ "data-testid": "Mark as Sugar-option",
28434
+ onClick: handleMarkAs('sugar'),
28435
+ children: [jsx(Icon, {
28436
+ name: "sugar",
28437
+ className: clsx(styles$p.icon, styles$p.markAsComponentIcon)
28438
+ }), jsx("span", {
28439
+ children: "Sugar"
28440
+ })]
28441
+ })), jsxs(Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
28442
+ "data-testid": "Mark as Phosphate-option",
28443
+ onClick: handleMarkAs('phosphate'),
28444
+ children: [jsx(Icon, {
28445
+ name: "phosphate",
28446
+ className: clsx(styles$p.icon, styles$p.markAsComponentIcon)
28447
+ }), jsx("span", {
28448
+ children: "Phosphate"
28449
+ })]
28450
+ }))]
28451
+ })), makeAttachmentPointMenuItems && jsxs(Fragment, {
27852
28452
  children: [makeAttachmentPointMenuItems, jsx(Separator, {})]
27853
28453
  }), jsxs(Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
27854
28454
  "data-testid": editMenuItemTitle.concat('-option'),
@@ -28404,6 +29004,10 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
28404
29004
  _useCreateMonomer2 = _slicedToArray$1(_useCreateMonomer, 2),
28405
29005
  handleCreateMonomer = _useCreateMonomer2[0],
28406
29006
  createMonomerDisabled = _useCreateMonomer2[1];
29007
+ var _useMarkAs = useMarkAs(),
29008
+ handleMarkAs = _useMarkAs.handler,
29009
+ markAsIsVisible = _useMarkAs.isVisible,
29010
+ markAsIsDisabled = _useMarkAs.isDisabled;
28407
29011
  var highlightBondWithColor = function highlightBondWithColor(color) {
28408
29012
  var _props$propsFromTrigg, _props$propsFromTrigg2, _props$propsFromTrigg3;
28409
29013
  var bondIds = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.bondIds) || [];
@@ -28417,8 +29021,43 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
28417
29021
  });
28418
29022
  };
28419
29023
  var options = useSelector(optionsSelector);
29024
+ var showMarkAsMenu = markAsIsVisible();
29025
+ var markAsDisabled = markAsIsDisabled();
28420
29026
  return jsxs(Fragment, {
28421
- children: [jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
29027
+ children: [showMarkAsMenu && jsxs(Submenu, _objectSpread$P(_objectSpread$P({}, props), {}, {
29028
+ "data-testid": "Mark as a...-option",
29029
+ label: "Mark as a...",
29030
+ disabled: markAsDisabled,
29031
+ className: styles$p.subMenu,
29032
+ children: [jsxs(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
29033
+ "data-testid": "Mark as Base-option",
29034
+ onClick: handleMarkAs('base'),
29035
+ children: [jsx(Icon, {
29036
+ name: "base",
29037
+ className: clsx(styles$p.icon, styles$p.markAsComponentIcon)
29038
+ }), jsx("span", {
29039
+ children: "Base"
29040
+ })]
29041
+ })), jsxs(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
29042
+ "data-testid": "Mark as Sugar-option",
29043
+ onClick: handleMarkAs('sugar'),
29044
+ children: [jsx(Icon, {
29045
+ name: "sugar",
29046
+ className: clsx(styles$p.icon, styles$p.markAsComponentIcon)
29047
+ }), jsx("span", {
29048
+ children: "Sugar"
29049
+ })]
29050
+ })), jsxs(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
29051
+ "data-testid": "Mark as Phosphate-option",
29052
+ onClick: handleMarkAs('phosphate'),
29053
+ children: [jsx(Icon, {
29054
+ name: "phosphate",
29055
+ className: clsx(styles$p.icon, styles$p.markAsComponentIcon)
29056
+ }), jsx("span", {
29057
+ children: "Phosphate"
29058
+ })]
29059
+ }))]
29060
+ })), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
28422
29061
  "data-testid": "Edit selected bonds...-option",
28423
29062
  disabled: bondEditDisabled,
28424
29063
  onClick: handleBondEdit,
@@ -30103,78 +30742,6 @@ var AttachmentPointEditPopup = function AttachmentPointEditPopup(_ref) {
30103
30742
  });
30104
30743
  };
30105
30744
 
30106
- var MonomerTypeSelectConfig = [{
30107
- value: KetMonomerClass.AminoAcid,
30108
- label: 'Amino acid',
30109
- iconName: 'peptide'
30110
- }, {
30111
- value: KetMonomerClass.Sugar,
30112
- label: 'Sugar',
30113
- iconName: 'sugar'
30114
- }, {
30115
- value: KetMonomerClass.Base,
30116
- label: 'Base',
30117
- iconName: 'base'
30118
- }, {
30119
- value: KetMonomerClass.Phosphate,
30120
- label: 'Phosphate',
30121
- iconName: 'phosphate'
30122
- }, {
30123
- value: KetMonomerClass.RNA,
30124
- label: 'Nucleotide (monomer)',
30125
- iconName: 'nucleotide'
30126
- }, {
30127
- value: KetMonomerClass.CHEM,
30128
- label: 'CHEM',
30129
- iconName: 'chem'
30130
- }, {
30131
- value: 'rnaPreset',
30132
- label: 'Nucleotide (preset)',
30133
- iconName: 'preset'
30134
- }];
30135
- var MAX_MODIFICATION_TYPES = 5;
30136
- var NotificationMessages = {
30137
- defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
30138
- emptyMandatoryFields: 'Mandatory fields must be filled.',
30139
- invalidSymbol: 'The monomer code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
30140
- symbolExists: 'The code must be unique amongst peptide, RNA, or CHEM monomers.',
30141
- editingIsNotAllowed: 'Editing of the structure is not allowed.',
30142
- noAttachmentPoints: 'The monomer must have at least one attachment point.',
30143
- incorrectAttachmentPointsOrder: 'Attachment point numbers must be in order, but R1 and R2 may be skipped.',
30144
- creationSuccessful: 'The monomer was successfully added to the library.',
30145
- incontinuousStructure: 'All monomers must have a continuous structure.',
30146
- notUniqueModificationTypes: 'Only one amino acid within a natural analogue can have the same modification type.',
30147
- modificationTypeExists: 'Only one amino acid within a natural analogue can have the same modification type.',
30148
- notMinimalViableStructure: 'Minimal monomer structure is two atoms connected via a single bond.',
30149
- impureStructure: 'Monomer structure cannot contain S-groups, R-groups, special atoms, or any other query properties.',
30150
- invalidHELMAlias: 'The HELM alias must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
30151
- notUniqueHELMAlias: 'The HELM alias must be unique amongst peptide or RNA monomers.',
30152
- invalidRnaPresetStructure: 'Structure of rna preset component contains issues. Please adjust the structure.',
30153
- notUniquePresetCode: 'The preset code must be unique amongst other presets.',
30154
- invalidPresetCode: 'The preset code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).'
30155
- };
30156
- var NotificationTypes = {
30157
- defaultAttachmentPoints: 'info',
30158
- emptyMandatoryFields: 'error',
30159
- invalidSymbol: 'error',
30160
- symbolExists: 'error',
30161
- editingIsNotAllowed: 'error',
30162
- noAttachmentPoints: 'error',
30163
- incorrectAttachmentPointsOrder: 'error',
30164
- creationSuccessful: 'info',
30165
- incontinuousStructure: 'error',
30166
- notUniqueModificationTypes: 'error',
30167
- modificationTypeExists: 'error',
30168
- notMinimalViableStructure: 'error',
30169
- impureStructure: 'error',
30170
- invalidHELMAlias: 'error',
30171
- notUniqueHELMAlias: 'error',
30172
- invalidRnaPresetStructure: 'error',
30173
- notUniquePresetCode: 'error',
30174
- invalidPresetCode: 'error'
30175
- };
30176
- var MonomerCreationExternalNotificationAction = 'MonomerCreationExternalNotification';
30177
-
30178
30745
  var MONOMER_VALIDATION_RULES = [{
30179
30746
  monomerType: KetMonomerClass.AminoAcid,
30180
30747
  requirements: [{
@@ -30783,13 +31350,17 @@ var RnaPresetTabs = function RnaPresetTabs(props) {
30783
31350
  editor: editor
30784
31351
  });
30785
31352
  };
30786
- var handleClickCreateComponent = function handleClickCreateComponent(rnaComponentKey) {
31353
+ var handleClickCreateComponent = useCallback(function (rnaComponentKey) {
31354
+ var selection = editor.selection();
31355
+ var atomIds = (selection === null || selection === void 0 ? void 0 : selection.atoms) || [];
31356
+ var bondIds = (selection === null || selection === void 0 ? void 0 : selection.bonds) || [];
30787
31357
  wizardStateDispatch({
30788
31358
  type: 'SetRnaPresetComponentStructure',
30789
31359
  rnaComponentKey: rnaComponentKey,
30790
31360
  editor: editor
30791
31361
  });
30792
- };
31362
+ editor.setRnaComponentAtoms(rnaComponentKey, atomIds, bondIds);
31363
+ }, [editor, wizardStateDispatch]);
30793
31364
  var currentTabStructure = currentTabState === null || currentTabState === void 0 ? void 0 : currentTabState.structure;
30794
31365
  useEffect(function () {
30795
31366
  if (!currentTabStructure) {
@@ -30798,6 +31369,24 @@ var RnaPresetTabs = function RnaPresetTabs(props) {
30798
31369
  applyHighlights(selectedTab, isHighlightEnabled);
30799
31370
  editor.selection(null);
30800
31371
  }, [applyHighlights, currentTabStructure, editor, isHighlightEnabled, selectedTab]);
31372
+ useEffect(function () {
31373
+ return function () {
31374
+ editor === null || editor === void 0 || editor.highlights.clear();
31375
+ };
31376
+ }, [editor === null || editor === void 0 ? void 0 : editor.highlights]);
31377
+ useEffect(function () {
31378
+ var handleMarkAsComponent = function handleMarkAsComponent(event) {
31379
+ var componentType = event.detail;
31380
+ var tabIndex = RNA_COMPONENT_KEYS.indexOf(componentType) + 1;
31381
+ handleClickCreateComponent(componentType);
31382
+ setSelectedTab(tabIndex);
31383
+ applyHighlights(selectedTab, isHighlightEnabled);
31384
+ };
31385
+ window.addEventListener(MonomerCreationMarkAsComponentAction, handleMarkAsComponent);
31386
+ return function () {
31387
+ window.removeEventListener(MonomerCreationMarkAsComponentAction, handleMarkAsComponent);
31388
+ };
31389
+ }, [wizardState, handleClickCreateComponent, applyHighlights, selectedTab, isHighlightEnabled]);
30801
31390
  var hasErrorInTab = function hasErrorInTab(wizardState) {
30802
31391
  return Object.values(wizardState.errors).some(function (errorValue) {
30803
31392
  return Boolean(errorValue);
@@ -30939,6 +31528,18 @@ var initialRnaPresetWizardState = {
30939
31528
  }
30940
31529
  }
30941
31530
  };
31531
+ var getComponentSuffix = function getComponentSuffix(componentType) {
31532
+ switch (componentType) {
31533
+ case KetMonomerClass.Base:
31534
+ return 'B';
31535
+ case KetMonomerClass.Sugar:
31536
+ return 'S';
31537
+ case KetMonomerClass.Phosphate:
31538
+ return 'P';
31539
+ default:
31540
+ return '';
31541
+ }
31542
+ };
30942
31543
  var wizardReducer = function wizardReducer(state, action) {
30943
31544
  switch (action.type) {
30944
31545
  case 'SetFieldValue':
@@ -31040,6 +31641,14 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
31040
31641
  if (!action.rnaComponentKey) {
31041
31642
  return state;
31042
31643
  }
31644
+ if (action.type === 'UpdateRnaPresetComponentStructure') {
31645
+ return _objectSpread$G(_objectSpread$G({}, state), {}, _defineProperty$1({}, action.rnaComponentKey, _objectSpread$G(_objectSpread$G({}, state[action.rnaComponentKey]), {}, {
31646
+ structure: {
31647
+ atoms: action.atomIds,
31648
+ bonds: action.bondIds
31649
+ }
31650
+ })));
31651
+ }
31043
31652
  var rnaComponentKey = action.rnaComponentKey,
31044
31653
  restAction = _objectWithoutProperties(action, _excluded$o);
31045
31654
  if (action.type === 'SetNotifications') {
@@ -31082,7 +31691,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
31082
31691
  _updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
31083
31692
  base: _objectSpread$G(_objectSpread$G({}, _updatedState.base), {}, {
31084
31693
  values: _objectSpread$G(_objectSpread$G({}, _updatedState.base.values), {}, {
31085
- symbol: newPresetCode
31694
+ symbol: newPresetCode ? newPresetCode + getComponentSuffix(KetMonomerClass.Base) : ''
31086
31695
  })
31087
31696
  })
31088
31697
  });
@@ -31091,7 +31700,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
31091
31700
  _updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
31092
31701
  sugar: _objectSpread$G(_objectSpread$G({}, _updatedState.sugar), {}, {
31093
31702
  values: _objectSpread$G(_objectSpread$G({}, _updatedState.sugar.values), {}, {
31094
- symbol: newPresetCode
31703
+ symbol: newPresetCode ? newPresetCode + getComponentSuffix(KetMonomerClass.Sugar) : ''
31095
31704
  })
31096
31705
  })
31097
31706
  });
@@ -31100,7 +31709,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
31100
31709
  _updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
31101
31710
  phosphate: _objectSpread$G(_objectSpread$G({}, _updatedState.phosphate), {}, {
31102
31711
  values: _objectSpread$G(_objectSpread$G({}, _updatedState.phosphate.values), {}, {
31103
- symbol: newPresetCode
31712
+ symbol: newPresetCode ? newPresetCode + getComponentSuffix(KetMonomerClass.Phosphate) : ''
31104
31713
  })
31105
31714
  })
31106
31715
  });
@@ -31122,18 +31731,6 @@ var hasAllMandatoryPropertiesFilled = function hasAllMandatoryPropertiesFilled(v
31122
31731
  }
31123
31732
  return true;
31124
31733
  };
31125
- var getComponentSuffix = function getComponentSuffix(componentType) {
31126
- switch (componentType) {
31127
- case KetMonomerClass.Base:
31128
- return 'B';
31129
- case KetMonomerClass.Sugar:
31130
- return 'S';
31131
- case KetMonomerClass.Phosphate:
31132
- return 'P';
31133
- default:
31134
- return '';
31135
- }
31136
- };
31137
31734
  var getLeavingAtomForAttachmentPoint = function getLeavingAtomForAttachmentPoint(componentType, attachmentPointName) {
31138
31735
  switch (componentType) {
31139
31736
  case KetMonomerClass.Base:
@@ -31370,6 +31967,14 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
31370
31967
  _useState6 = _slicedToArray$1(_useState5, 2),
31371
31968
  leavingGroupDialogMessage = _useState6[0],
31372
31969
  setLeavingGroupDialogMessage = _useState6[1];
31970
+ var _useState7 = useState(null),
31971
+ _useState8 = _slicedToArray$1(_useState7, 2),
31972
+ pendingType = _useState8[0],
31973
+ setPendingType = _useState8[1];
31974
+ var _useState9 = useState(false),
31975
+ _useState10 = _slicedToArray$1(_useState9, 2),
31976
+ showTypeChangeDialog = _useState10[0],
31977
+ setShowTypeChangeDialog = _useState10[1];
31373
31978
  var isRnaPresetType = type === 'rnaPreset';
31374
31979
  var notifications = isRnaPresetType ? new Map([].concat(_toConsumableArray(rnaPresetWizardState.preset.notifications || []), _toConsumableArray(rnaPresetWizardState.sugar.notifications || []), _toConsumableArray(rnaPresetWizardState.base.notifications || []), _toConsumableArray(rnaPresetWizardState.phosphate.notifications || []))) : monomerWizardNotifications;
31375
31980
  useEffect(function () {
@@ -31402,37 +32007,71 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
31402
32007
  window.removeEventListener(MonomerCreationAttachmentPointClickEvent, attachmentPointClickHandler);
31403
32008
  };
31404
32009
  }, []);
31405
- var handleFieldChange = function handleFieldChange(fieldId, value) {
31406
- if (['type', 'naturalAnalogue'].includes(fieldId)) {
31407
- setModificationTypes([]);
31408
- }
31409
- if (fieldId === 'type') {
31410
- if ((type === 'rnaPreset' || value === 'rnaPreset') && type !== value) {
31411
- wizardStateDispatch({
31412
- type: 'ResetWizard'
31413
- });
31414
- rnaPresetWizardStateDispatch({
31415
- type: 'ResetWizard'
31416
- });
31417
- } else {
31418
- wizardStateDispatch({
31419
- type: 'SetFieldValue',
31420
- fieldId: 'aliasHELM',
31421
- value: ''
31422
- });
32010
+ useEffect(function () {
32011
+ var isValidRnaComponentKey = function isValidRnaComponentKey(key) {
32012
+ return key === 'base' || key === 'sugar' || key === 'phosphate';
32013
+ };
32014
+ var componentStructureUpdateHandler = function componentStructureUpdateHandler(event) {
32015
+ var updateData = event.detail;
32016
+ var componentKey = updateData.componentKey,
32017
+ atomIds = updateData.atomIds,
32018
+ bondIds = updateData.bondIds;
32019
+ if (!isValidRnaComponentKey(componentKey)) {
32020
+ return;
31423
32021
  }
32022
+ rnaPresetWizardStateDispatch({
32023
+ type: 'UpdateRnaPresetComponentStructure',
32024
+ rnaComponentKey: componentKey,
32025
+ atomIds: atomIds,
32026
+ bondIds: bondIds
32027
+ });
32028
+ };
32029
+ window.addEventListener(MonomerCreationComponentStructureUpdateEvent, componentStructureUpdateHandler);
32030
+ return function () {
32031
+ window.removeEventListener(MonomerCreationComponentStructureUpdateEvent, componentStructureUpdateHandler);
32032
+ };
32033
+ }, []);
32034
+ var applyTypeChange = function applyTypeChange(newType) {
32035
+ setModificationTypes([]);
32036
+ if ((type === 'rnaPreset' || newType === 'rnaPreset') && type !== newType) {
32037
+ wizardStateDispatch({
32038
+ type: 'ResetWizard'
32039
+ });
32040
+ rnaPresetWizardStateDispatch({
32041
+ type: 'ResetWizard'
32042
+ });
32043
+ } else {
31424
32044
  wizardStateDispatch({
31425
32045
  type: 'SetFieldValue',
31426
- fieldId: 'type',
31427
- value: value
32046
+ fieldId: 'aliasHELM',
32047
+ value: ''
31428
32048
  });
32049
+ }
32050
+ wizardStateDispatch({
32051
+ type: 'SetFieldValue',
32052
+ fieldId: 'type',
32053
+ value: newType
32054
+ });
32055
+ };
32056
+ var handleFieldChange = function handleFieldChange(fieldId, value) {
32057
+ if (fieldId === 'type') {
32058
+ if (type === 'rnaPreset' && value !== 'rnaPreset') {
32059
+ setPendingType(value);
32060
+ setShowTypeChangeDialog(true);
32061
+ return;
32062
+ }
32063
+ applyTypeChange(value);
31429
32064
  } else {
32065
+ if (fieldId === 'naturalAnalogue') {
32066
+ setModificationTypes([]);
32067
+ }
31430
32068
  wizardStateDispatch({
31431
32069
  type: 'SetFieldValue',
31432
32070
  fieldId: fieldId,
31433
32071
  value: value
31434
32072
  });
31435
32073
  }
32074
+ editor.setRnaMonomerCreationMode(value === 'rnaPreset');
31436
32075
  };
31437
32076
  useEffect(function () {
31438
32077
  var _editor$setMonomerCre;
@@ -31787,14 +32426,18 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
31787
32426
  });
31788
32427
  var bondBetweenSugarAndBase = _toConsumableArray(bondsBetweenSugarAndBase.values())[0];
31789
32428
  var bondBetweenSugarAndPhosphate = _toConsumableArray(bondsBetweenSugarAndPhosphate.values())[0];
31790
- var sugarR3AttachmentPointAtom = sugarStructure !== null && sugarStructure !== void 0 && (_sugarStructure$atoms5 = sugarStructure.atoms) !== null && _sugarStructure$atoms5 !== void 0 && _sugarStructure$atoms5.includes(bondBetweenSugarAndBase.begin) ? bondBetweenSugarAndBase.begin : bondBetweenSugarAndBase.end;
31791
- var sugarR2AttachmentPointAtom = sugarStructure !== null && sugarStructure !== void 0 && (_sugarStructure$atoms6 = sugarStructure.atoms) !== null && _sugarStructure$atoms6 !== void 0 && _sugarStructure$atoms6.includes(bondBetweenSugarAndPhosphate.begin) ? bondBetweenSugarAndPhosphate.begin : bondBetweenSugarAndPhosphate.end;
31792
- var baseR1AttachmentPointAtom = baseStructure !== null && baseStructure !== void 0 && (_baseStructure$atoms3 = baseStructure.atoms) !== null && _baseStructure$atoms3 !== void 0 && _baseStructure$atoms3.includes(bondBetweenSugarAndBase.begin) ? bondBetweenSugarAndBase.begin : bondBetweenSugarAndBase.end;
31793
- var phosphateR1AttachmentPointAtom = phosphateStructure !== null && phosphateStructure !== void 0 && (_phosphateStructure$a3 = phosphateStructure.atoms) !== null && _phosphateStructure$a3 !== void 0 && _phosphateStructure$a3.includes(bondBetweenSugarAndPhosphate.begin) ? bondBetweenSugarAndPhosphate.begin : bondBetweenSugarAndPhosphate.end;
31794
- editor.assignConnectionPointAtom(baseR1AttachmentPointAtom, AttachmentPointName.R1, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.base), rnaPresetWizardState.base.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Base, AttachmentPointName.R1));
31795
- editor.assignConnectionPointAtom(sugarR2AttachmentPointAtom, AttachmentPointName.R2, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.sugar), rnaPresetWizardState.sugar.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Sugar, AttachmentPointName.R2));
31796
- editor.assignConnectionPointAtom(sugarR3AttachmentPointAtom, AttachmentPointName.R3, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.sugar), rnaPresetWizardState.sugar.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Sugar, AttachmentPointName.R3));
31797
- editor.assignConnectionPointAtom(phosphateR1AttachmentPointAtom, AttachmentPointName.R1, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.phosphate), rnaPresetWizardState.phosphate.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Phosphate, AttachmentPointName.R1));
32429
+ var sugarR3AttachmentPointAtomId = sugarStructure !== null && sugarStructure !== void 0 && (_sugarStructure$atoms5 = sugarStructure.atoms) !== null && _sugarStructure$atoms5 !== void 0 && _sugarStructure$atoms5.includes(bondBetweenSugarAndBase.begin) ? bondBetweenSugarAndBase.begin : bondBetweenSugarAndBase.end;
32430
+ var sugarR3AttachmentAtom = struct.atoms.get(sugarR3AttachmentPointAtomId);
32431
+ var sugarR2AttachmentPointAtomId = sugarStructure !== null && sugarStructure !== void 0 && (_sugarStructure$atoms6 = sugarStructure.atoms) !== null && _sugarStructure$atoms6 !== void 0 && _sugarStructure$atoms6.includes(bondBetweenSugarAndPhosphate.begin) ? bondBetweenSugarAndPhosphate.begin : bondBetweenSugarAndPhosphate.end;
32432
+ var sugarR2AttachmentAtom = struct.atoms.get(sugarR2AttachmentPointAtomId);
32433
+ var baseR1AttachmentPointAtomId = baseStructure !== null && baseStructure !== void 0 && (_baseStructure$atoms3 = baseStructure.atoms) !== null && _baseStructure$atoms3 !== void 0 && _baseStructure$atoms3.includes(bondBetweenSugarAndBase.begin) ? bondBetweenSugarAndBase.begin : bondBetweenSugarAndBase.end;
32434
+ var baseR1AttachmentAtom = struct.atoms.get(baseR1AttachmentPointAtomId);
32435
+ var phosphateR1AttachmentPointAtomId = phosphateStructure !== null && phosphateStructure !== void 0 && (_phosphateStructure$a3 = phosphateStructure.atoms) !== null && _phosphateStructure$a3 !== void 0 && _phosphateStructure$a3.includes(bondBetweenSugarAndPhosphate.begin) ? bondBetweenSugarAndPhosphate.begin : bondBetweenSugarAndPhosphate.end;
32436
+ var phosphateR1AttachmentAtom = struct.atoms.get(phosphateR1AttachmentPointAtomId);
32437
+ editor.assignConnectionPointAtom(baseR1AttachmentPointAtomId, AttachmentPointName.R1, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.base), rnaPresetWizardState.base.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Base, AttachmentPointName.R1), sugarR3AttachmentAtom === null || sugarR3AttachmentAtom === void 0 ? void 0 : sugarR3AttachmentAtom.pp);
32438
+ editor.assignConnectionPointAtom(sugarR2AttachmentPointAtomId, AttachmentPointName.R2, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.sugar), rnaPresetWizardState.sugar.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Sugar, AttachmentPointName.R2), phosphateR1AttachmentAtom === null || phosphateR1AttachmentAtom === void 0 ? void 0 : phosphateR1AttachmentAtom.pp);
32439
+ editor.assignConnectionPointAtom(sugarR3AttachmentPointAtomId, AttachmentPointName.R3, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.sugar), rnaPresetWizardState.sugar.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Sugar, AttachmentPointName.R3), baseR1AttachmentAtom === null || baseR1AttachmentAtom === void 0 ? void 0 : baseR1AttachmentAtom.pp);
32440
+ editor.assignConnectionPointAtom(phosphateR1AttachmentPointAtomId, AttachmentPointName.R1, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.phosphate), rnaPresetWizardState.phosphate.structure, true, getLeavingAtomForAttachmentPoint(KetMonomerClass.Phosphate, AttachmentPointName.R1), sugarR2AttachmentAtom === null || sugarR2AttachmentAtom === void 0 ? void 0 : sugarR2AttachmentAtom.pp);
31798
32441
  }
31799
32442
  monomersToSave.forEach(function (monomerToSave) {
31800
32443
  var atomIdMap = new Map();
@@ -31812,7 +32455,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
31812
32455
  }
31813
32456
  monomerAssignedAttachmentPoints.set(attachmentPointKey, [mappedAttachmentAtomId, mappedLeavingGroupAtomId]);
31814
32457
  });
31815
- var shouldBeHidden = isRnaPresetType && !hasAllMandatoryPropertiesFilled(monomerToSave.values);
32458
+ var shouldBeHidden = isRnaPresetType;
31816
32459
  var valuesToSave = monomerToSave.values;
31817
32460
  if (shouldBeHidden) {
31818
32461
  valuesToSave = autoAssignPropertiesForHiddenMonomer(monomerToSave.values, rnaPresetWizardState.preset.name);
@@ -31836,6 +32479,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
31836
32479
  editor.finishNewMonomersCreation(monomersData, rnaPresetWizardState.preset.name);
31837
32480
  dispatch(onAction(selectRectangleAction));
31838
32481
  resetWizard();
32482
+ dispatch(showSnackbarNotification(isRnaPresetType ? NotificationMessages.creationRNASuccessful : NotificationMessages.creationSuccessful));
31839
32483
  }
31840
32484
  };
31841
32485
  var ketcherEditorRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
@@ -31924,7 +32568,40 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
31924
32568
  children: "Submit"
31925
32569
  })]
31926
32570
  })]
31927
- }), leavingGroupDialogMessage && ketcherEditorRootElement && createPortal(jsx("div", {
32571
+ }), showTypeChangeDialog && ketcherEditorRootElement && createPortal(jsx("div", {
32572
+ className: styles$o.dialogOverlay,
32573
+ children: jsx(Dialog, {
32574
+ className: styles$o.smallDialog,
32575
+ title: "Confirm type change",
32576
+ withDivider: true,
32577
+ valid: function valid() {
32578
+ return true;
32579
+ },
32580
+ params: {
32581
+ onOk: function onOk() {
32582
+ if (pendingType !== null) {
32583
+ applyTypeChange(pendingType);
32584
+ }
32585
+ setPendingType(null);
32586
+ setShowTypeChangeDialog(false);
32587
+ },
32588
+ onCancel: function onCancel() {
32589
+ setPendingType(null);
32590
+ setShowTypeChangeDialog(false);
32591
+ }
32592
+ },
32593
+ buttons: ['OK', 'Cancel'],
32594
+ buttonsNameMap: {
32595
+ OK: 'Yes',
32596
+ Cancel: 'Cancel'
32597
+ },
32598
+ primaryButtons: ['Cancel'],
32599
+ children: jsx("div", {
32600
+ className: styles$o.DialogMessage,
32601
+ children: "Changing the type will result in a loss of inputted data. Do you wish to proceed?"
32602
+ })
32603
+ })
32604
+ }), ketcherEditorRootElement), leavingGroupDialogMessage && ketcherEditorRootElement && createPortal(jsx("div", {
31928
32605
  className: styles$o.dialogOverlay,
31929
32606
  children: jsx(Dialog, {
31930
32607
  className: styles$o.smallDialog,
@@ -39702,7 +40379,7 @@ var Editor$1 = connect(function (state) {
39702
40379
  };
39703
40380
  }, mapDispatchToProps$1)(StructEditor);
39704
40381
 
39705
- var classes$1 = {"app":"App-module_app__8cgyF","canvas":"App-module_canvas__taJxn","top":"App-module_top__SBeSV","left":"App-module_left__2iz-i","right":"App-module_right__U7A5Q","bottom":"App-module_bottom__tQA2B"};
40382
+ var classes$1 = {"app":"App-module_app__8cgyF","canvas":"App-module_canvas__taJxn","top":"App-module_top__SBeSV","left":"App-module_left__2iz-i","right":"App-module_right__U7A5Q","bottom":"App-module_bottom__tQA2B","toastNotification":"App-module_toastNotification__o-bVV","toastNotificationText":"App-module_toastNotificationText__RXYHk","toastNotificationCloseIcon":"App-module_toastNotificationCloseIcon__REXMP"};
39706
40383
 
39707
40384
  var classes = {"lookupContainer":"AbbreviationLookup-module_lookupContainer__-JRMj","inputContainer":"AbbreviationLookup-module_inputContainer__6tJpn","input":"AbbreviationLookup-module_input__vCxY9","searchIcon":"AbbreviationLookup-module_searchIcon__DiK0c","optionItemContent":"AbbreviationLookup-module_optionItemContent__L1JlW","optionItem":"AbbreviationLookup-module_optionItem__dAhO-","noOptions":"AbbreviationLookup-module_noOptions__yKxml","listBox":"AbbreviationLookup-module_listBox__Y50AT"};
39708
40385
 
@@ -40002,10 +40679,16 @@ var muiTheme = createTheme({
40002
40679
  var App = function App(props) {
40003
40680
  var dispatch = useAppDispatch();
40004
40681
  var checkServer = props.checkServer;
40682
+ var snackbarNotificationText = useSelector(selectSnackbarNotificationText);
40005
40683
  useSubscriptionOnEvents();
40006
40684
  var _useAppContext = useAppContext(),
40007
40685
  ketcherId = _useAppContext.ketcherId,
40008
40686
  prevKetcherId = _useAppContext.prevKetcherId;
40687
+ var handleCloseSnackbarNotification = useCallback(function () {
40688
+ dispatch({
40689
+ type: 'HIDE_SNACKBAR_NOTIFICATION'
40690
+ });
40691
+ }, [dispatch]);
40009
40692
  useEffect(function () {
40010
40693
  checkServer();
40011
40694
  dispatch(initFGTemplates());
@@ -40038,7 +40721,26 @@ var App = function App(props) {
40038
40721
  }),
40039
40722
  jsx(AppClipArea, {}), jsx(ModalContainer, {
40040
40723
  ketcherId: ketcherId
40041
- }), jsx(AbbreviationLookupContainer, {})]
40724
+ }), jsx(AbbreviationLookupContainer, {}), jsx(Snackbar, {
40725
+ anchorOrigin: {
40726
+ vertical: 'bottom',
40727
+ horizontal: 'center'
40728
+ },
40729
+ open: Boolean(snackbarNotificationText),
40730
+ onClose: handleCloseSnackbarNotification,
40731
+ autoHideDuration: 6000,
40732
+ children: jsxs("div", {
40733
+ className: classes$1.toastNotification,
40734
+ children: [jsx("div", {
40735
+ className: classes$1.toastNotificationText,
40736
+ children: snackbarNotificationText
40737
+ }), jsx(IconButton, {
40738
+ iconName: "close",
40739
+ className: classes$1.toastNotificationCloseIcon,
40740
+ onClick: handleCloseSnackbarNotification
40741
+ })]
40742
+ })
40743
+ })]
40042
40744
  })
40043
40745
  });
40044
40746
  };
@@ -40217,8 +40919,8 @@ var KetcherBuilder = function () {
40217
40919
  cleanup = initApp(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, {
40218
40920
  buttons: buttons || {},
40219
40921
  errorHandler: errorHandler || null,
40220
- version: "3.12.0-dev.1" ,
40221
- buildDate: "2025-12-18T12:54:05" ,
40922
+ version: "3.12.0-rc.2" ,
40923
+ buildDate: "2026-01-27T21:17:45" ,
40222
40924
  buildNumber: '',
40223
40925
  customButtons: customButtons || []
40224
40926
  }, structService, resolve, togglerComponent);
@@ -40519,7 +41221,7 @@ var ModeControl = function ModeControl(_ref3) {
40519
41221
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
40520
41222
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
40521
41223
  var MacromoleculesEditorComponent = lazy(function () {
40522
- return import('./index.modern-06d576e1.js');
41224
+ return import('./index.modern-3f8330b9.js');
40523
41225
  });
40524
41226
  var Editor = function Editor(props) {
40525
41227
  var _useState = useState(false),